Last Updated: 30 September 2023
My name is James and I went from an underwater construction worker to a self-taught Sr. Software engineer at a large multinational company making more money than I ever imagined as a history major that ended up in construction.
I’m going to share with you the exact strategies that I used to quickly learn software development. The fastest way to become a software developer. The programming language and tech stack you should learn in 2021. The learning resources you should use. The stuff you should avoid. How to make yourself more competitive so that you can get your first programming job.
The key to success is to work smart, not hard. These are the strategies and tips I wish I someone had told me.
When I took the leap into programming, my first thought was to go back to school and get another degree. But that didn’t make much sense, it was going to take too much time and money and I already had a family to take care of.
So I did what a lot of self-taught programmers do, I looked at a computer science degree curriculum and started mapping out all of the things I needed to learn so that I could hopefully compete with computer science grads.
This was a huge mistake. I was feeling so overwhelmed by the amount of stuff I needed to learn that I never finished writing out that plan. Instead, I decided to focus on smaller chunks. I started working my way through a c sharp book and bought a book on algorithms.
I started spreading myself thin looking into too many complex topics and within a couple of weeks I had given up. My first attempt at learning to code failed.
Fortunately, when I was doing underwater construction work, I was not in a good place. The next couple of years sucked. Things were tight financially and I did not enjoy what I was doing. I felt trapped and it was taking an emotional toll on me. Enough so that I decided to try programming one more time. Failure was not an option.
This time, I would do things differently. I needed to figure out the fastest way to become a software developer. My approach needed to be laser focused. Pay attention here. This is the first strategy for success.
Don’t try to compete with computer science grads. There are a lot of them and they have the paper to back them up. Instead, you need to focus on becoming an expert in an area they are usually weak at. In a minute I will share the exact programming language and tech stack to focus on, so stick around.
At this phase of learning it is super important to fight the gnawing feeling that you need to know everything to be competitive. That’s just not true. Taking the jack of all trades approach will mean you are just a mediocre dev without a degree.
Imagine a situation where an employer is looking for a specific skillset for a very real need. If you are good at that skill, you stand a great chance at beating out even a computer science generalist.
The second tip is to make sure you specialize in an area that is growing, has high demand and not enough good software developers. When you go laser focused in an area that is not saturated by computer science degrees, you have the best shot at breaking into the industry.
Now let’s talk some specifics. I’ll share my recommended tech stack and then we’ll go even more narrow and I’ll share what specific areas to focus on.
Comp sci graduates typically spend most of their time in school learning C, C++, Java, Python, Scala and other languages common to the back end. If you try to get your first programming job with one of these languages, you are competing against them and will likely fail.
However, most comp sci grads don’t learn much frontend stuff in school so this is a great area to focus on. It also fits the criteria of growing with high demand with not enough good web developers. It is also cool, because you don’t have to have deep math skills to be successful.
But these front-end development skills are still not focused enough. There is too much to learn. You need to get even more focused.
Tip three is to pick a popular framework that has a lot of demand.
What is a framework? As a programmer, there are things you do over and over again. Some of these can be complex. A framework does this stuff for you and gives you a simpler way to do things.
Frameworks also make it easier for developers jump into different projects because they are already familiar with how the basics of the application work.
Two of the most widely used frameworks are Angular and React.
The cool thing is, even if computer science grads are familiar with frameworks like Angular and React, if you learn a front framework well, you can still compete with them.
My suggestion is that you focus 100% on becoming a specialist in React. It is the best option to choose right now. When I was starting, Angular.js was the popular framework and this strategy worked out well. It is how I got my first interview and got a job offer from that interview.
So, focus on React. To do that you need to also learn Javascript, HTML and some CSS. HTML is kind of like lego blocks. They provide structure to the web page or application. CSS is short for cascading style sheets. CSS defines the shape, size, color and animations for the HTML lego blocks.
Javascript is the programming language of the front-end. It is the glue that holds everything together. It allows you to get data and interact with the page.
Learning HTML is pretty easy to learn.
CSS has a lot of quirks. Fortunately, you don’t have to be a css wizard at first. Working at a website mill or marketing agency will be more heavy on CSS. Larger projects at enterprise companies usually have component libraries.
Unless you are contributing to the library, you will probably not do much deep CSS stuff on a regular basis. So focus on getting good at the basics.
There is a lot to JavaScript. Much of it you will rarely use. One of my biggest regrets was reading several JavaScript books cover to cover. I could have greatly sped up my learning process by using a more targeted approach. You can learn that other stuff later.
At this stage, don’t spend much time on backend. Use a service like firebase or some other alternative that handles most of the backend stuff for you.
So that you can avoid wasting time. Here are the courses I would start with. I will also point out the specific things I would focus on. Then we’ll get to some tips for getting your first job.
A warning about courses. Skip the everything you need to know about xyz type courses. Similar to programming books, it is just too easy to get lost in the sea of information that you will most likely forget.
And perhaps the most important piece of advice. Actually do the projects. Attempt them on your own before looking at the examples. There is no substitute for real coding.
The first place to go is theodinproject.com
The next place to go is freecodecamp.org
In the video above, I go into more specifics about what areas to focus on in each of these courses.
Don’t get ahead of yourself by jumping into the complex stuff too quickly. Build up to it or you will burn out, get demotivated and likely give up. Lots of small successes are better than one big success.
Once you have specialized and are ready to look for a job, the best way to compete agains computer science and bootcamp grads is to have a nice looking portfolio of quality projects.
You don’t want to just fill it up with super simplistic projects, but it is better to have several high quality mid difficulty projects than one mediocre super difficult project. The visual impact of multiple projects is a real thing. A single project by itself just screams newbie.
Start small and build up. Each time, pick something a little harder. This will reinforce what you already know and introduce new things. Go too complex too fast and you will likely get yourself lost and end up wasting too much time.
Pick projects that solve problems you have in your hobbies and interests. This will help differentiate your projects from the grads who will likely have similar looking portfolios. The fastest way to excel is building apps to solve real world problems.
When you do start applying for jobs, don’t be idle waiting for a response. Build websites for family, try some freelancing, in your spare time, build things for your current employer. Do anything to get practical experience, keep your skills sharp and grow your portfolio.
Don’t set your heart on FAANG companies just yet. Get your foot in the door where you can. Plan to work for a year to 18 months and then go somewhere else for more pay and more experience. Don’t stay too long at your first job. It will slow your career growth.
On your resume, sell yourself as proficient on the areas you have specialized in. Be confident in your ability to learn things you don’t know. Be persistent and patient and you will find success.
Be sure to have a polished LinkedIn profile and get in touch with recruiters. Just remember that it is 10 times more effective to get a resume directly into the hands of a hiring manager rather than applying through a website.
When you interview, if you get stuck on a question, don’t be afraid to acknowledge you don’t know that one thing, but then talk about everything you do know about the problem and how you would solve it. Use every opportunity to focus on what you do know.
I look forward to your success. P.S. my first interview was weird. You can watch it here.