Founder & CEO at Microverse (YC S19), the global school for remote software developers.
If you are trying to become a software developer and you find the process really hard, you are not alone. Learning to code is hard, and a lot of people fail at it, especially people learning online.
So what’s the difference between those who fail and those who succeed?
Some people think they are not made for it.
Others think it’s about having the best content, and that’s why they spend thousands of dollars going to college or to a bootcamp to find great teachers.
Many other people think they need to know technology X, Y, and Z, and a couple of weeks later they realize they were learning the wrong thing and switch to something new. They keep going on in this vicious cycle and they never get to learn anything well enough.
But let me tell you the truth…the quality of the content and the technology stack you pick barely matter at the end, and almost everyone is smart enough to code.
Not really, because the only thing that matters is much simpler to understand, and much harder to achieve…
Even though learning to code is damn hard, and even if choosing one tech stack or teacher versus another makes little difference, the only thing that really matters is commitment.
Here is a direct consequence of that statement: almost every person who sticks to learning to code long enough eventually makes a career out of it.
So the real question becomes:
“How do you keep yourself motivated and supported long enough so you can make it to the end?”
Schools, universities, and bootcamps normally have low dropout rates compared to online courses. Think about it for a moment. Why is that?
The main reason is that they give you the support, guidance, and accountability necessary for you to stick to doing the same thing for a long time:
Do you have all those things on your journey to becoming a software developer? If you don’t, chances are that you won’t make it.
For the lucky ones who can afford it and live in a place with access to great schools and bootcamps, the solution is easy.
But what about everyone else?
I run an online school for remote software developers where students learn as part of small distributed teams doing remote pair programming for 8 hours every day. They are holding each other accountable while working together.
We made our training program 100% distributed because we wanted to break geographical barriers.
We decided to not charge students until they finish the program and start making money as developers because we wanted to break the financial barriers.
But what happens if you don’t want to attend any school and you still want to find motivation and support to stick to learning to code long enough?
Here are 6 tips to help you in that process.
Even though some languages are more popular than others, things change really fast. So don’t overthink this decision, just pick something you really like or whatever everyone else seems to be doing and stick to it.
Try to choose general languages (e.g. Python, Java, Ruby) and also learn the most popular framework for that language (e.g. Ruby on Rails).
If you have time, learn one frontend JS framework (e.g. React, Angular, Vue.js).
However, between all those alternatives, there is no real difference if you can’t make it to the end.
Do you have the opportunity to learn full-time? Then do it. Otherwise, just make sure you are realistic when determining how many hours you can dedicate per day.
Define a recurring daily and weekly schedule that you can follow, and think about it as going to classes at a university.
Learning from a noisy and crowded place with a million distractions around you is definitely not the right choice. Go to the near library, or to a coworking space. Use headphones with some instrumental music in the background, disable all notifications on your computer and phone, etc.
Use those times as a reference to make a plan. If a given section is supposed to take 20 hours, think if that includes practical work (i.e. coding ) or not. If it does, just add 15% of extra time. If it doesn’t, multiply that time by 2–3x, because you should spend much more time coding than watching videos or reading.
After that, divide the number of hours that it will take you to complete that section by the number of available hours you are dedicating to learn every day. Now you know when you are supposed to finish that section. Create a calendar event as a reminder. That’s your deadline.
Tip #5: Find a coding partner
This part is pretty hard, and it’s one of the things we do well at Microverse. You need someone that is as committed as you are, as defined by the number of hours that she is willing to dedicate to learning to code every day.
Find someone that has similar goals and availability, and create a plan together. If possible, have a common schedule so you can start your learning time with a short call where you hold each other accountable.
Even better, you should try pair programming. It’s an amazing way of learning while holding each other accountable. You will see how your productivity reaches a level that you were never able to reach before.
In can be someone in your same town, or far away. As long as the goals, schedules and experience levels are similar, it will work like magic.
If you happen to live in the same city, agree to meet in the same physical space every day. The transportation time is totally worth it. If you don’t, just do a video conference every day.
Easier said than done. Finding a good mentor is hard. But as part of your learning experience, you should be networking, because eventually, you will need those connections to find a job. Among all the people that you meet, ask them if they could do a code review of your work every once in a while.
Follow a strict gitflow while working so you can share those Pull Requests where your mentor can leave comments line by line.
Motivation, commitment, accountability and a superhuman willpower are not things that will magically come to you. You need to make a plan for it.
Are you ready to take this seriously?