It’s possible to learn to code and get a job as a software engineer completely on your own - perhaps you’ve read the true stories of beginners learning to code and landing awesome jobs, but thousands more try and never succeed. Here are the most common mistakes you’re probably making and how to avoid them.
1. You Keep Switching Languages
2. You Don't Know the Effort Required
3. The Path You're Following Won't Get You a Job
4. You Need to Develop Your Job Searching Skills
5. You're Doing it Alone
You can’t be blamed for not being completely confident of which programming language you should start with - after all, you’re a beginner. But if you don’t stick to one, you’ll keep going in circles and fall into the “learning cycle of death”. What is the “learning cycle of death”?
It’s where you start on a path learning one programming language only to change your mind or become persuaded into switching to learning a different language. Perhaps your friend said you should learn Ruby because it’s syntactically beautiful, but another friend of yours suggested Python as it will prove useful in data-science (which sounds pretty cool), but a Google search said Java is the most in-demand.
However, if you were to focus this effort on one language and learn it entirely, you’d realize that all of those other languages share many of the same characteristics of the first language you learned.
They all have variables, data structures, loops, control flow, functions, etc. The goal here is to learn how to become a software engineer, which will eventually involve learning several languages, but you must go deep somewhere before you can go wide.
No one would advise you to learn two foreign languages at once, but once you’ve mastered one, picking up another will become much easier. To learn our advice on which language to start, check out the Technical Elements to Learn Before Starting section of our Learn to Code Guide.
Many beginners fail to learn to code well enough to get a job because they’re not prepared for how much effort it will actually take them. They end up becoming overwhelmed and quitting because it just doesn't feel like they’re making any progress. We recommend investing a minimum of 1000 hours into learning to code before you start applying for jobs.
This is perhaps the most daunting truth about all of this. There is no way to learn how to code to the point of employability without logging the hours with your fingers on the keyboard and eyes on the screen.
And by the way, just reading some books or watching some videos doesn’t count toward your 1000 hours. This is 1000 hours of working through coding problems, building applications, screwing them up, fixing bugs, asking for help and collaborating with others.
Don’t fret though, you can do this. In fact, this goal of logging 1000 hours should be freeing for you.
It means that there really is no magic sauce to all of this, you don’t need a certain kind of mathematical brain or a special degree, just experience.
The sooner you can commit to learning the hard way, the sooner you jump on it and start logging your hours.
You may ask, why 1000 hours? 1000 hours sounds like a lot, but if it were divided into 40 hour work weeks then that’s 25 weeks of work, roughly 6 months of experience.
And this 6 months of experience has to stand-up next to 4-year degrees, which it absolutely can (another topic entirely), but a solid 6 months is enough to get your foot in the door.
So get ready - if you really want to do this completely on your own, it’s going to have to be the most important thing in your life for the next year.
Learning to code is incredibly hard and as we’ve already noted, it will take 1000 hours or more of effort to be ready for a job. So nothing would be worse than spending that effort and those 1000 hours learning something that’s not going to get you a job and ultimately not help you reach your goal.
1. The Path Won’t Result in a Job
If you’re not already a software engineer, then you’re likely not qualified to figure out what your learning path looks like. For example, let’s imagine that you want to become a Ruby on Rails developer. You’ve seen many job postings for it and there are a ton of free online resources. You feel pretty confident that you can do this. However, here are some things you may not know about this path:
All in all, you could use your 1000 hours to learn Ruby on Rails, but you wouldn’t walk away with a job.
2. Your Path is Not Straight
It’s impossible to learn to code perfectly, even if you pick a language, framework, and ecosystem that is in-demand for entry-level positions. You’re going to waste some of those 1000 hours learning things the wrong way. That’s okay. But you need someone to help you understand the right learning path. Finding a mentor can solve this. Check out our guide on How to Find a Mentor.
We’ve seen beginner programmers who have 2X the skills of other beginners but settle for jobs making half the salary of those who are less qualified or, they’re not being able to find a job at all, solely based on their poor “job searching skills”. Here are the main elements of a successful job-search that you should work on cultivating.
A Unique and Genuine “Why”
In 2 to 3 sentences, you should be able to tell somewhere who you are, what your background is and what sets you apart as a great beginner software engineer.
A Solid Resume
A great resume tells a story about your skills and experience and it crafts an argument based on merit of why you are a good fit for the position you’re applying for. A base resume can be altered per job to fit the different positions you’ll be applying for.
A Professional Online Presence
Your LinkedIn, Github, Twitter, Facebook, Blog and wherever else you are online should reinforce this same story that’s woven in through your “why” and resume. Your online presence enables you to establish a personal brand and go a bit deeper.
Technical Interview Skills
A unique part of the “software engineer job search” is the technical interview. Your ability to take every interview as an opportunity to show what you know and your thinking process, regardless of whether or not you know the exact answer, can be the key element of your job search.
Soft Interview Skills
This is everything from navigating the “HR phone” screen, to answering questions like “what are your greatest strengths” and salary negotiation. Communicating confidence and humility is key here.
Frequency of Applications, Interviews and New Contacts
At some point, the job search can be boiled down to a numbers game. The more irons you have in the fire, the better chance you have to find a job. It will be extremely important for you to apply frequently and take the initiative to follow up often, to be a self-starter and to create new opportunities for yourself. It’s almost certain that you will not get your first job from a cold application but only through a personal contact.
Connections and Network
Regardless of whether you have a great network of connections or not, you can cultivate it in just a few weeks time. Job searching means that you’re active in the community, you’re attending events, meeting people and engaging online to keep a consistent pipeline of new leads.
Frequency of Coding Contributions
Perhaps one of the most underestimated pieces to your job search is actual coding. Even after you’ve learned the “base skills” you need a plan to continue getting better as a developer both for yourself and for the image you’ll project as an applicant. Companies want to see individuals who work on passion projects and who are constantly learning new things. More than that, you’ll want to stay sharp for when the coding challenges and technical interviews come your way.
Accountability and Coaching
Lastly, having someone to keep you accountable to pushing forward when you don’t want to and a coach to help you think through things when you’re lost will be a crucial step. Find someone who is willing to give you the tough love to get you there.
Finally, if you’re doing this all alone, you won’t make it. It’s impossible to be self-motivated. You need a community to help pick you up when you fall and encourage you when you’re feeling like you can’t do this. And someone else needs you to be that for them at times, too. Yes, you. Even you can help someone else on this journey. Plus, software isn’t built in a vacuum, but on a team. Get used to doing it with other people. We suggest plugging into a local Meetup group and getting to know others who are in your same situation.