Say that you jumped on the “Everyone needs to learn how to code” train. And you like writing code so much that you now envision it as a career. What do you need to know in order to get your first job in the field? Is it even possible to do that without any formal training? I’ve been there. Over the years, I’ve also hired many junior developers so I will try to help you navigate this route with a few tips and tricks.
Companies that you want to work for
Let’s start this with a word of caution. There are many companies out there that legitimately are looking for novice programmers. They require some work done (and that’s the basis for hiring someone!) but along the way, they will also help you grow in your job. These are the ones you want to work for. On the other hand, there are also a ton of companies advertising junior positions and when you get to read the job description, you find this line: 5 years experience required. It’s easy to feel as if there’s no chance for you out there because let’s be frank here: the crushing majority of job listings are like this one. Don’t be discouraged, though. When you have about 1500 days of professional programming experience, you are not junior-level any longer. These companies are not really looking for entry-level programmers anyway, so don’t feel bad about it. They are just trying to pay a junior wage for an experienced developer. There even is a subreddit dedicated to these types of job postings. I read it sometimes. It makes me laugh.
So, again, don’t start feeling worthless if all you can seem to find are such openings. If you can solve problems with code, you are worth something and there are people out there looking for you right now. You just haven’t met them yet.
What is a junior developer anyway?
There is no definitive description for what a junior developer is so I will give you mine. Junior developers are people who know the basics of programming. They know the idiomatic constructs of at least one programming language and are used to navigating the language’s documentation for its standard library. Their main tasks include supporting users, identifying issues, documenting processes, and refactoring code where needed under the supervision of a more experienced developer. In some cases and as they grow, they will be asked to develop new features for an existing software product.
I have seen too many new programmers expecting to be hired to develop new apps using the flashiest new technology that they spent months reading about and experimenting with. The reality is that they will mostly be asked to work on legacy code to fix bugs, sometimes using a technology two or three versions behind the current one. That’s what one must go through at the start of a career, and you should keep that in mind or you’ll be very disappointed.
What you need to know
This list is based on my own experience. It is by no means comprehensive as different industries require different sets of skills but I believe that if you are comfortable with these points, there are no reasons that you wouldn’t get a job.
Know the basics
Obviously, you will need to know what coding is and the major techniques used in programming. If you learned an object-oriented language, you are expected to know what a class is and how to create objects out of it. The basic concepts such as functions, conditional statements, looping logic, and these other low-level components should be familiar to you.
You should also be familiar with the basic algorithms used in programming. Sorting a list of values is one of them, for example. Although I am not a big fan of whiteboard interviews (where you are asked to “program” on a whiteboard in front of an audience), they serve a purpose: to highlight how someone thinks about a problem and goes about solving it. One of the favorite questions is usually a variation of “how would you revert the characters in a string without using the sorting function provided by the language?” Try googling for junior coding interview algorithms. This should give you a starting point.
Another basic point that is often overlooked is to know how to search for answers. I liked to ask candidates what are their favorite resources for finding answers. “Google” will not cut it as an answer. Be ready to speak about which online communities you frequent and where you ask your questions.
This is general theory but it ties into my next point: languages.
Know at least one language
You can code, right? So you know at least one language. And if you know more than one, you probably are more comfortable with one of them. Opinions vary on this one but I would focus my research on job postings that mention that language. You will need to demonstrate that not only you are fluent with the tasks mentioned in the previous point but that you also know how to navigate the documentation for it. In the case of languages that evolve rapidly, you will also be expected to know how previous versions of the language works. I said it earlier, a junior programmer job involves a lot of bug fixing on legacy code. Not everyone has the chance to work for a Silicon Valley startup on a greenfield project. Actually, this is the exception rather than the norm.
In some fields, web development being one of them, you will be asked to know at least one framework. Whether it is React, Rails, Angular, Flask or ASP.NET or any other popular one, you will need to demonstrate that you can be proficient with a framework even if the job at hand doesn’t require it. This is to show that you can learn how to work with an external package.
Your troubleshooting and testing skills are great
Junior developers spend the majority of their time on code that was written by someone else. Not only you should be good at reading and understanding code that is already written, but you should also be familiar with the common troubleshooting methods. Break points in step-by-step execution, verifying assumptions, and so on.
It is recommended to know at least one testing framework for your language of choice and being able to explain how do you use it. But even if this is not part of your skill set, make sure that you can demonstrate how you can write bits of code to test your assumptions (the expected result) when something goes wrong. Senior developers, like any developer, like to create and build new awesome stuff, not fix their previous mistakes. Impress them by showing them that you can take the troubleshooting tasks away from them!
Master the lingo
You will most likely not work alone in a silo, doing your own thing. As a junior developer, you will be part of a team and be attending (sometimes too many!) meetings. You will need to be able to communicate with your team and that means knowing the vocabulary. Say the arguments passed to the function XYZ rather than the stuff that this XYZ thing needs.
It may seem trivial but as a senior developer drowning in an infinite ocean of things to do, getting help from a junior programmer means being able to communicate effectively around a technical topic or this will quickly turn into a waste of time rather than getting meaningful help.
Collaboration is key
As an echo to the previous point, you will also need to know how to collaborate on an existing code base. That means mastering collaboration tools to a degree. For example, make sure that you know at least one source control system. Knowing how to work with Git and GitHub is a safe bet. You can easily demonstrate that you possess this skill when showing your portfolio (more on that later). Participating even slightly in an open-source project goes a long way to impress!
Bring in some domain knowledge
This is probably the most important point and surprisingly, it gets overlooked by many job-seeking programmers. You will never be hired to write code for the sake of writing code! Programming is all about solving problems and automating tasks. However beautiful your coding style is, if it doesn’t solve anything, you will never be hired.
If your background is in the travel industry, try targeting online travel agencies. If you know everything about shipping containers across the oceans, target companies that are active in the field of logistics. If you studied accounting, try to break into the FinTech industry. If… well… I guess you got it.
Don’t get me wrong. It is very common for programmers to be hired in an industry they don’t know anything about. But it is very unlikely to happen for a first programming position. You need to bring something to the table and obviously, it won’t be your years of experience in coding professionally.
Showing that you can do it
Each time a company hires someone, they are taking a bet that the selected candidate is the person for the job. You can help sway the decision in your favor using several tips. Here are two of them that usually impress me when I’m in the recruiting position:
- Have a portfolio: this is especially important if you are self-taught as you won’t have any fancy degree that could put the recuiter mind at ease. Come with several personal projects that you have worked on. Explain them and why you made certain technical decisions. Bonus point: your portfolio is available on GitHub and your code is fully documented. Extra bonus point: your portfolio includes your participation in an open-source project and you can demonstrate that you can collaborate with other developers.
- Come prepared: again a trivial point but so many times overlooked. Come to an interview with diagrams, screenshots of your apps, technical architecture of your project(s). This serves to demonstrate that you can think about code but also explain the reasoning behind it. And of course, it makes you look engaged because you took the time to prepare something.
The job market for programmers is thriving. In many industries, the demand exceeds the supply. Code is everywhere and although you may think that everyone is doing it (this is a normal bias because of the time you are spending in coding circles), just go ring the bell of the people living in your street and ask them if they can code professionally. You will notice that you are a rare commodity after all.
I hope these few tips can help you on your journey to become a programmer and make a living out of it. If you are still at the beginning of your learning journey, I’ve recently produced a course on programming called Thinking & Creating with Code that is available at the EPFL Extension School — and I discuss it on this podcast episode. It’s all about getting these basic needed skills.