Hey everyone! 🌈 The seasons are changing, and September is the perfect month to focus on new goals and start new adventures. Maybe you've been on vacation, enjoyed the sun 🌞 or the mountains, and you're ready to dive back into work.

New adventures are sometimes unexpected. But I hope that when you saw the title of this blog post, you decided to embark with me on this extraordinary adventure of becoming a software engineer.

How Can You Learn to Code in 6 Months?

Learning to code is a marathon, not a 100m sprint. You need to become a lifelong learner, and the more you know, the longer will be the list of things that you feel the need to discover.

But (there's a but), if we're talking about changing careers, I think it's totally possible to become a Software Engineer (entry-level or junior) in 6 months or less. You just need to quickly acquire a good set of entry-level skills.

How do I know that it's possible?

Simple. I did it in 2017. And I'm not the only one. If you search for it, you'll find lots of people who've accomplished the same feat.

How to Learn to Web Development Basics Quickly

Now, to get this done in 6 months or less you need to be 100% dedicated to it.

So, this time frame will likely make sense for those who are jobless and have the resources to remain so while studying, or those who have quite a bit of free time. It's also helpful if you're looking for new opportunities and are passionate about tech, computers, and creating new things.

Spoiler alert: expect to invest somewhere around 8 to 12 hours per day learning and studying.

For those who have a job currently, but want to become a software engineer, just keep reading! You can apply this process over a longer time frame and gradually transition in over the course of 9, 12, 18 or even 24 months. No pressure at all.

How do I start learning to code?

This is a simple question. Despite the fact that there are lots of bootcamps out there – some paid, some free – freeCodeCamp is one of the best (if not the best) places to start.

The freeCodeCamp curriculum has a well defined roadmap (you can just follow the path, not worrying about what to learn and in which order) and a great, diverse, and inclusive community spread across Discord, the Forum, Twitter and YouTube.

So, start by signing-up for freeCodeCamp and get yourself comfortable.

Before that, make sure you grab a cup of your favourite tea or coffee! β˜•

Start the freeCodeCamp Curriculum

Well, during the first four months, you need to focus on grokking the fundamentals. What you need to do is to invest heavily in the 3 first certifications:

  1. Responsive Web Design Certification (300 hours)
  2. JavaScript Algorithms and Data Structures Certification (300 hours)
  3. Front End Development Libraries Certification (300 hours).

We're talking about 900 hours, which, divided by 10 hours/day, gives us 90 days of intensive study. Yes, intensive.

Of course it might take a bit more of time if you decide to invest 8 hours a day. 900  / 8 is more or less 113 days. So it still fits in 4 months.

My suggestion here is that you divide your time between tackling the challenges, reading, watching talks, and listening to podcasts or ebooks. This way you avoid getting frustrated or bored while always doing the same thing.

Follow freeCodeCamp's advice: "Read, Search, Ask".

This is the formula to success. You'll improve the way you search on Google, you'll discover interesting articles, talks, and books, and you'll eventually reach out for help somewhere online. Focus on this process. πŸ™

Soon you'll be able to get yourself unstuck and this is one of the best skills a programmer can have.

Start Networking and Find Tech Communities to Join

The 5th month represents an inflection point in your journey. You'll need to raise your head up from the keyboard and look around.

Invest some time in networking. Create a LinkedIn and a Twitter account. Start building your social image and personal brand. State that you're learning to code and that soon you'll be looking for an entry-level/junior role in a tech company.

Interact with people, meet people, and ask questions (no matter how dumb they are. The truth is that there aren't any dumb questions, and once you know the answer, you might be able to help someone later with the same doubts).

If there's any tech-focused community group around you, mingle with the people and get to know them. If there isn't anything local, well, you can always create one.

That's what I did and it went great (maybe I'll write another article about it πŸ’‘).

At this point your basic tech stack is: HTML, CSS, JavaScript, and React. It will be pretty easy to fit in a lot of companies/teams as a front end developer.

The tech industry usually hires for the short-term, and nowadays frameworks are the dish of the day, so React skills can definitely help pay your first salary. πŸ’°

You'll also need to invest in some other skills in the meanwhile:

  1. Learn Git. Invest at least one week in trying to understand how Git and version control in general works and how valuable it is to work in a team, remotely or not.
  2. Invest a bit of time in mastering your OS so that you feel comfortable while working. This involves VSCode config, terminal config, account config, and so on. Try to do online meetings with friends and share your screen or use a whiteboard. Google Meet is great to train you in this skill.
  3. Learn a bit about note-taking and pick an app to help you manage your notes. Notion, Obsidian, or even VSCode are great tools for that. It doesn't need to be perfect, just start by organizing your notes somehow and later you'll find out what fits you the best.
  4. If English is not your main language, sharpen your English skills. Read books and listen to talks and podcasts, so that you can get used to people's accents.

In the meantime, don't stop coding. This is the perfect time to polish up your certification projects.

At this point you should have the following projects done:

  1. Responsive Web Design Projects
  • Tribute Page
  • Survey From
  • Product Landing Page
  • Technical Documentation Page
  • Personal Portfolio Webpage

2. JavaScript Algorithms and Data Structures Projects

  • Palindrome Checker
  • Roman Numeral Converter
  • Caesars Cipher
  • Telephone Number Validator
  • Cash Register

3. Front End Development Libraries Projects

  • Random Quote Machine
  • Markdown Previewer
  • Drum Machine
  • JavaScript Calculator
  • 25 + 5 Clock

Wow...you've already done so much! Take a few days to breathe and to treat yourself well. Recognize the achievements and how proud you are of yourself!

Show family and friends what you've been working on, and share it on your social networks. Everyone should be proud of you at this point.

Build Your Developer Portfolio

Okay folks. Now we're in the game.

Now you're going to build your portfolio. This is extremely important because the people and companies who might be interested in hiring you will want to check it out.

They're not necessarily looking for expertise, or for a very knowledgeable or experienced person. They're looking for passion, effort, knowing how far can you go alone, learning to code with some community support, on your own.

These are definitely the 3 things you must show:

  1. Passion
  2. Energy
  3. Capacity (to evolve and learn "alone")

Move all your projects to GitHub, and make sure you add some good README.md files, with good descriptions about what you've done in each project. If you wish you can add a small list of things you want to improve in the near future.

But don't stop there – keep improving and polishing your projects. Put yourself in the shoes of the people who are hiring, and give some love to details that make the difference (this is how you can show the 3 things above: passion, energy, capacity).

Show that you know how to create good layouts, well-spaced content, the right colors, readable fonts, and so on. Make things look as great as you're able to.

Take a look at other projects and see how are people solving the same problems. Getting inspiration from their ideas (just please don't blindly copy code without understanding what it means) is not cheating and you can learn a lot by doing that.

Evolve your Personal Portfolio Project and make it your homepage (landing page). Make sure to share your contacts and to state that you're available for work. Share all your other projects in your homepage.

Keep polishing your work, keep coding and learning everyday, improve the relationships with all the new friends you've made, and try to find opportunities through social networks.

Apply for Jobs and Prepare for Interviews

You'll need to invest a lot of time in applying for jobs and getting interviews. You need to practice interviewing and I bet that soon, much sooner than you expect, magic will happen! πŸͺ„

Applying for Jobs

Don't worry about failing. It's absolutely normal that you might fail your first interviews. And that's okay – you're learning some good tricks for the next ones.

Now, it depends a bit on what your goals are for this job and for your career. If you want to apply to a FAANG company, the bar is high (very, very, high). You'll need to pass hard technical interviews.

But no worries, freeCodeCamp has your back. You'll find a lot of resources so that you can sharpen your skills in the Coding Interview Prep Section.

If you're applying to any other company, you might not need to know quite as much about Algorithms and Data Structures. Rely on your portfolio and show the interviewer you're a confident person who is able to communicate, to show passion, and to put effort into whatever you do.

The Interview Experience

People have different opinions about what makes a good, effective interview. Personally I don't like timed or live coding challenges. My anxiety grows and my ability to focus and to solve problems drops to less than zero.

Plus, the best companies shouldn't be worried about how fast you're doing something. They usually prefer that you take twice as long, but do it that much better, making sure you think about each detail that a certain feature needs.

I usually prefer take home challenges. I can make myself comfortable, with a nice cup of tea or coffee, and I can investigate properly and do my best.

My recommendation here is that you go the extra mile. Care a lot about what you do and why you do it.

Write some documentation about why you've picked A or B, what's missing, or what you'd do in the future to improve your code.

Usually interviews have 3-4 parts:

  • Screening: people want to get to know you. To hear you speaking and discover what's your superpower (motivation, resilience, perseverance)
  • Test assignment: it can be a timed challenge, a pair-programming challenge where you're the driver (real time), or a take home assignment.
  • Discussion of the assignment and a few technical questions. Possibly know how much you expect to earn.
  • Offer / Rejection (this is usually a video call, in case they have an offer, or a simple "thank you" e-mail, in case you're rejected).

Sometimes there are interviews with more than one part of the team. Some teams like to pick people that fit well and they want to see if you're able to cope with them for a while.

Expect some off-the-wall questions, such as Star Wars trivia, or if you prefer tabs or spaces. There are usually no wrong answers, but people look for a sense of belonging while discussing these things with you.

The funniest thing that happened to me was a set of questions that I needed to answer quickly, without thinking. So the guys started:"React or Vue?", "Emacs or VS Code?", "Tabs or spaces? ", "Semi-colons or no semi-colons?", "Beer or wine?!?" Yeah, all these are important issues! 🀣

Final Words

If you get a job, don't forget to reach out to tell me how it went. I love to read these stories and I feel proud of every single person who did it.

Maybe 6 months wasn't enough time to get through this big list of things (even though, at first glance, they may seem pretty easy to accomplish – they aren't ❀️).

Just remember to treat yourself well and don't push yourself too hard.

Also, if it takes you longer than 6 months, don't worry: You can do it. You just might need more time for whatever reason.

When people start to learn how to code, they start in very different situations. Some have a PhD in Math or Engineering, some are coming from History or Philosophy, or from McDonalds (which also provides you with great soft skills: talking to people, being polite and kind, having compassion, being organized, doing things on time, tracking and controlling processes, and much more).

So whatever your background, just remember – it doesn't matter where you started. What matters is where you're going!

I'm sure that at this point, if you forget the 6 month time barrier, you will get there. And as I said in the beginning, learning to code isn't a 100m sprint, it's a marathon. So keep focused and keep doing your work.

Don't forget about your body! Drink water, don't spend too much time sitting in your chair. Try to have a good posture, exercise, and get out of your home. People need a bit of sun and fresh air. The way you treat your brain is very important. Never forget about this.

Last but not least, be kind to yourself and to every human being. You're great! ❀️

I'm Edo and you can follow me on Twitter. I usually tweet about code and career change.