The demand for software engineers has reached unprecedented levels and it’s likely that it won’t be slowing down anytime soon. There are a plethora of reasons why you might be interested in switching careers to pursue one of these high-reward opportunities. I was in this position just 5 years ago when I was a struggling personal trainer looking to make the switch. During this transition, I wasted months trying to carve my path because I lacked the necessary information to get me where I wanted to be (you can learn more about that story here).
In this newsletter, I hope to answer any questions you might have if you’re looking to become a software engineer in 2024.
*Please note that the titles Software Developer and Software Engineer are typically used interchangeably. If I use one or the other just know I’m referring to the same thing.
Do I need to go to school to become a developer?
No. I dropped out of college and taught myself entirely on my own. Getting a computer science degree probably wouldn’t hurt but it is by all means not necessary to land a job.
I will admit that in the first few months at my first dev job, I experienced quite a bit of imposter syndrome. I felt out of place working with a bunch of people who had studied computer science at a university. This feeling went away after about a year and a half when the company I was working for at the time hired a new junior developer that came straight from university and I realized that I was much further ahead than he was. What I learned from this was that getting a degree can certainly make it easier to land your first job, but how much you know and how good of an engineer you are is a completely separate conversation.
What kind of development should I get into?
I wasted months on this question.
When I first started, I was so confused. Instead of choosing a specific field of development, I decided just to learn the “most popular coding language 2019”. Although it was a good introduction to coding and prepared me for the path I would eventually choose, it turned out to be a mistake as I spent 8 months learning Python only to find out that it wasn’t what I wanted to pursuit.
As you can see, there are a ton of different software engineering roles. I won’t spend time going over each of these. Instead, I’ll explain exactly what I would do if I were starting all over:
Do some research on the different kinds of development.
Watch some “day in the life of a Data Scientist” videos on YouTube.
Look up the average salary in your area.
Research jobs and make sure there is demand.
After the 8 wasted months I spent learning a language I’ve never even used in a professional setting, I finally went through the process I’m outlining above and inevitably chose web development as my preferred path. I chose this path because the demand was (and is!) high, I’m a visual person and I liked the idea of building something people can use/see, and web developers get paid well.
What language(s) do I need to learn?
Once you figure out what kind of development you want to study, this question becomes a lot more straightforward. For me, it was as simple as googling “How to become a web developer”. There are hundreds if not thousands of videos and articles explaining what you need to do to become a web developer.
There is no perfect course or reading material and a big part in deciding what you choose to consume and learn from will be largely dependent on who/what you connect with most. Don’t get overwhelmed by the results in your search. Start with the most popular/most viewed and continue vetting for an instructor until one resonates with you. An instructor that I enjoy learning from might not give you that same level of connection.
As a web developer, the primary languages you need to learn are HTML, CSS, and JavaScript. It’s recommended that you learn a framework as well, React is a popular one and the one I decided to teach myself. Once mastered, with the combination of these tools you will be ready to apply to junior web developer roles.
How long will it take me to learn these tools & languages?
Depends! I can’t speak to all tools and languages because I haven't used them. Regardless, some factors that will play into how long it will take you to learn:
How motivated are you?
How much time are you going to dedicate to learning each day/week?
How many tools/languages are required to get into the field that you’re interested in?
If you’ve chosen to learn web development, these are some good estimates:
HTML: 1-2 months
CSS: 1-2 months
JavaScript: 4-6 months
React (or other framework): 3-6 months
Other misc. tools I won’t confuse you with right now: 1-2 months
If you’re motivated and are dedicated to learning every day, you can expect to be ready to apply for roles within 10 months-1 year.
Where can I learn all of this stuff?
The internet. Everything you need to know to be a software engineer can be accessed on the same device that you’re reading this newsletter right now, and most times for free. You may find yourself needing to enroll in some courses along the way. I went through quite a few of them actually and I enjoyed them because they provided some structure that I was lacking (I never paid more than $20 USD for a single course).
Here are some of the courses I took when I was first starting:
The great part about these courses is that typically you’ll be building projects alongside your instructor which is amazing because at the end not only will you have learned a bunch but you’ll also have something tangible to add to your portfolio to showcase once you’re ready to apply to jobs.
Being self-taught can be a bit daunting. It isn't like an organized college program or boot camp. You’re pretty much in complete control of your curriculum and it’s up to you to pick and choose where you want to learn it.
I learned everything I know from some combination of YouTube, misc articles, $12-$20 courses on Udemy, and books. There is an abundance of information and so many people who have created an entire career teaching this stuff.
How often should I study?
That’s up to you. I recommend as often as possible, ideally at least one hour a day. You must remember you’re learning a completely new language and it takes time and iteration to get decent.
How and when do I get a job?
I recommend that once you feel some level of competence with all of the tools/languages that you need to know, you should start applying. The market will tell you if you’re ready or not. I spent so much time interviewing and getting denied by companies, and every time I did a coding interview that went wrong, I was given instant feedback on what I needed to work on. After 10’s (probably closer to 100) iterations of failed interviews, I finally passed and landed a job. I would have never gotten a chance if I listened to my fear and waited to start applying when I felt “ready”. I think this is a problem with a lot of junior developers. Interviewing should be used as a part of your learning journey. Getting a job is the end goal, but there’s no way for you to know what you suck at unless someone actually tells you.
What else?
I think I’ve touched on just about all of the questions that I wish I had answers to when I was first starting. One last recommendation that I think is super valuable is that while you’re going through this journey taking courses and hopefully building things, try to document as much as you can whether it be publicly on Twitter or in a personal journal. Sometimes when we’re constantly trying to learn and better ourselves, it’s hard to remember where we came from and realize our progress. Software development is hard and there will be times when you feel like such an idiot even 6 months into learning (5 years into it and I still feel like an idiot all the time). It’s important to recognize that you’ve made progress. If you ever feel down because what you’re learning is hard, just remember that if this was easy then everyone would do it.
If you have any questions that I didn’t acknowledge feel free to leave a comment below and I’d be happy to help.
Postcard
La Capella, Puerto Vallarta
Bye for now,
Brandon
Love it!!