It may come as a surprise to you, but many professional programmers are self-taught. And many of them have been able to reach fairly high positions in their career. Therefore, it is not only realistic to get into the software development profession without any formal programming qualifications, but it’s also possible to become successful within this industry.
Software development industry is probably the industry with the least amount of bureaucracy. Once you have some professional experience under your belt, very few companies would care what formal education you have. As long as you are able to demonstrate your programming skills during the recruitment process, you will be able to get a job as a software developer.
And there are many reasons why you may want to be a programmer. Smart technology is everywhere and its amount is only increasing; therefore software developers are in high demand and the demand for them is not going to go down any time soon. This makes a programmer one of the most highly paid professions.
However, if you don’t have any formal qualifications related to programming, there is one problem. If you don’t have any professional experience, how would you get in? After all, your resume will be competing with people who do have either formal qualifications or professional experience.
Once you complete a computer science degree, you will be eligible to apply for a graduate job that has been specifically designed for university graduates who don’t have any real job experience yet. But if you either haven’t been to university or have studied something completely unrelated to programming, you won’t be able to apply for those kind of jobs. So, how would you get your first programming job in this situation?
Luckily, it is possible and this is exactly what I will be talking about in this article. I am a self-taught software developer myself who now holds a job title of a lead software developer, so I have relevant experience in this area. Also, during my career, I have met many other self-taught developers who have shared their own career stories with me.
But before I start, I’ll have to give you a little disclaimer. Everything described in this article is based purely on my personal experience and experience of people I have personally met. Therefore there might be more effective ways of getting into the software development career, but I am not aware of any. And my conclusions are based on a fairly limited sample size.
As far as I know, nobody has ever done a proper scientific study of how self-taught developers start their career and what processes work the most effectively in this area. Therefore we have no choice but to rely on anecdotal evidence. But in the absence of any other evidence, anecdotal evidence is still good evidence.
So, let’s begin.
Common misconceptions about self-taught developers
Before we go into how to get your first software development job, I need to dispel some common misconceptions about being a self-taught developer.
Becoming self-taught software isn’t easier than getting a computer science degree from a university. Very often, it’s harder. Yes, you can learn to code on your own with a single year, while a university degree would take a couple of years to complete. But still, most people would find university degree a lot easier.
When you are at university, you are being instructed on what to study and where to find the learning material. You also have the grading system that motivates you. The structure of your entire course is well known in advance. And there are tutors that can answer most of your questions if any of the subject areas aren’t clear enough to you.
When you are learning to code on your own, you don’t have any of that. You will need to have a tremendous level of self-discipline, as you probably have to do your practice while having other commitments. You won’t know what are the best sources of the learning material. The internet is full of free information on programming and you will have to use a lot of trial and error to distinguish good information from bad. You will probably feel frustrated at times, as it will take a while to produce any meaningful indicators of your progress.
So yes, while it is possible to learn enough in a year to become a real software developer, the process of doing so requires a tremendous amount of discipline and patience. Also, be prepared to have virtually no spare time while you are doing so.
On the other hand, as a self-taught developer, you can focus on only those skills that are actually being used in the real world industries, while university students learn a lot of material that they will never apply after they’ll graduate. Some of it is because university curriculum cannot keep up with the pace of change in the actual industry, so university students end up studying various practices, technologies, algorithms and other things that will never be used in the real world.
Another reason for it is that there are many specialities within software development and university courses don’t focus on just a single one. The students will probably learn a little bit of every main software development niche, but university degree will not make them masters in any single one of them.
This is what can give self-taught software developers an advantage over university graduates. As a self-taught software developer, you can focus on any specific niche and get to know it in as much depth as you want.
For example, you may become really knowledgeable about web application development, but know absolutely nothing about firmware development or mobile application development. A university graduate, on the other hand, would know the basics of web development, mobile development and firmware development. But if you then both apply for a web development position, you would be able to outcompete him, because your knowledge of web development will be a lot deeper, while knowing anything at all about other software types won’t matter in this situation.
That, of course, is based on an assumption that the university graduate hasn’t been doing any self study beyond the mandatory university material. Of course, if you have completed a university degree and have gained a lot of additional knowledge on your own, you will have a massive competitive advantage over most of people. But only a tiny number of people actually do this.
So, as we have now got a realistic picture of what being a self-taught developer entails, let’s talk about getting your first programming job.
The most reliable method of getting your first programming job
So, before further ado, here is the most reliable method of getting your first job as a self-taught software developer:
- Get into any office-based role in a company that has a software development team.
- Tell the developers that you can code and volunteer to help them with their tasks.
- If successful, gradually transition into a full-time software development role.
After all, there are many office-based jobs that don’t require any special qualifications to get in. Likewise, if you have studied something unrelated to software development, your education certificate would still be able to open the door for you into an office-based job.
I know that this may sound counter-intuitive. Also, this may be different from what you have been told about getting your first job by other bloggers. But, as someone with a reasonably long software development career, this is the only way I have ever seen working.
Of course, there are some other ways that come to mind. For example, you may think of a successful completion of a coding boot camp or a being a major participant in an open-source project as good evidence of your coding skills for your first programming job. Unfortunately, I have never met anyone who have managed to obtain a real programming job via these routes.
I am not advocating against participating in open-source projects or learning how to code via a boot camp. Both of these will give you useful skills that will put you ahead of the competition.
Open source projects will give you an opportunity to practice what you have learned. And, because you will be collaborating with real software developers, this is one of the best ways for you to learn skills beyond knowledge of programming languages, such as writing clean code, design patterns, SOLID principles, etc. Experienced developers will simply not allow you to commit badly written code into the code base and they will explain why your code doesn’t meet the required standard.
Boot camps are also really good way to learn how to write code. They pull you out of your comfort zone and force you to study non-stop for a period of time while giving you all necessary guidance throughout the process. Boot camp will probably teach you a lot more than you could ever do on your own within the same time period.
So, if those things are so beneficial, why are they unlikely to land you your first real programming job? The answer is simple.
I, as a lead developer, would certainly consider a candidate who lacks any official job experience but has a certificate from a reputable boot camp or and impressive commit history from a well-written open source project. However, chances are that I won’t even receive their resume to start with.
Even though senior developers do get involved at looking at candidates’ resumes, they won’t be looking at every single resume that comes in. Only a small number of resumes would normally get through to the actual development team. The rest would be filtered out by HR and management. And those will probably include all resumes that don’t have any jobs with the titles of “software developer”, “software engineer” or “programmer” in the career history.
So, if you have successfully completed a difficult coding boot camp or have already gained good programming skills by participating in an open source project, you are more than capable of being a professional software developer, at least at a junior level. However, without any official relevant work experience, chances of progressing your application through the HR filters are slim. So, unless you personally know somebody who can hire you, you will probably still need to go through the process of getting a non-programming job first.
My own story
I have already touched upon my own story of getting into the software development career in this article. But I will briefly outline it here.
I have graduated from a university, but my degree had nothing to do with programming. My honors degree was in environmental biology and my masters degree was in environmental informatics.
The masters degree was somewhat related to computer science, but only vaguely. I did study a little bit about project management, relational databases and geographic information systems (GIS), but I haven’t studied anything about coding. So, when I started to learn how to code, I was starting from scratch.
And I didn’t even originally intend to become a software developer. Software and technology was something that I have always been interested in, but my intention, at the time of graduation, was to have a career related to the subjects that I have actually studied. And I did manage to get into a graduate scheme that was directly related to those.
The company I ended up working for was in the business of water and environmental engineering and I was given a role of an assistant analyst. My role entailed analyzing large quantities of hydrological data to assess risk of flooding in any given area.
Quite a lot of the tasks I was doing were tedious and repetitive as I was copying large volumes of data into Excel spreadsheets. That was until my colleagues hinted at me that Excel has an in-built programming language called VBA, which stands for Visual Basic for Application. This was the language that could automate quite a lot of what I was doing. So, I started actively learning it.
Later, I found out that the software development team within that company was using a different flavor of the same language called VB.NET to write their own software in. And, as I was now able to automate most of my daily tasks away, I started asking them if I could help them with their projects.
The overworked software development team has gladly accepted my help and I gradually started doing more and more work that involved real software development. The types of software I was focusing on at the time were simple desktop applications and plug-ins for GIS software.
Long story short, my salary within that organization was very low. And I found out that the same goes for most salaries within the industry I was in. So, I have then made a decision to become a pure software developer and ditch environmental sector for good.
Once I have made this decision, I have started researching the market for software development jobs. I found out that C# and web development were niches that had more local vacancies than anything else. So, I have started learning those in my own spare time.
Luckily, learning your second programming language is always much easier than learning your first. You will only have to learn the particularities of the language syntax. Other language structures, such as functions, control flow, conditional logic, etc. you will already know from studying your first language. So, even though C# and VB had very different syntax, getting to know C# was relatively easy.
Once I was confident enough with C#, I have started submitting my applications to various software development roles. And I have secured a web developer role very shortly. It took me roughly 18 months between starting the graduate scheme and getting a pure software development role elsewhere.
Since then, I had a fairly successful software development career. I now hold a senior role and teach others how to code.
Similar stories of other software developers
Throughout my career, I have met a number of self-taught software developers and they had very similar stories. The details were different, but the general principle of getting the first software development job was always the same.
In the water engineering company, there was a person whose story was very similar to mine. He also originally came from environmental science background, have learned VBA to automate his daily tasks and gradually became a software developer.
I have also worked with a self-taught developer who has originally studies law. After getting into a graduate scheme for a legal organization, he found out that the career in law is nowhere near as exciting as he has expected it to be. He then started trying other things and one of them was software development.
The legal organization had a heavy software development workload and not enough people who could reduce it, so he was allowed to liaise with software development team to ease the workload for them. And the rest is history. He is now a successful programmer.
There were also self-taught software developers I worked with that didn’t have any degree at all. Most of them started their career by applying for tech support roles. Luckily, many of such roles don’t require any specific qualifications. And, even without university degrees, these people have managed to become software developers.
The specific of their stories are different. Some have gradually moved from first line support to a way more technical third line support before becoming professional software developers. Others skipped a few steps. But all of them have eventually got there.
And, even without any qualifications related to programming, some of these people have managed to do very well in their career. Some of them have got into senior positions within relatively short period of time. I even know one person who became a technical architect within only couple of years of teaching himself how to code.
Wrapping up
So, based on my knowledge, the most effective way of getting your first programming job as a self-taught software developer is this:
- Get into any office-based role in a company that has a software development team.
- Tell the developers that you can code and volunteer to help them with their tasks.
- If successful, gradually transition into a full-time software development role.
Of course, although I have consistently seen these principles working in real life, my conclusion is based on a fairly limited sample size. Therefore, there may be other effective ways of getting your first job that haven’t been mentioned here.
If you have been successful in entering software development career by different means or know someone else who did, I would love to see your story in the comments.