With the availability of online education improving constantly, the field of computer science has had to deal with an increasing influx of self-taught programmers. For people teaching themselves how to code, this path often comes with a lot of self-doubt and rejection by employers. Having been through this myself, I am hoping that sharing my point of view will let people see that being an impostor might not be such a bad thing.
My story
I work in tech. I have been a professional programmer for over two years now. But I am an impostor, or at least I get to feel like one on a nearly daily basis. I do not have a computer science degree. I have a B.A. in psychology, another B.A. in history and a Master’s degree in history. My programming education came in the form of online courses. What’s more, I have never had a passion for technology. I was certainly never afraid of it but I have never seen myself as a techie or dreamed of becoming a programmer. It was after realizing that my career options were limited and that going back to school was not realistic that I decided to try my hand at web development. I discovered freeCodeCamp and realized that technology was not only a good career and learning opportunity, but it could be used to do good things. I was hooked.
In the following months, I would take any free time I could to continue learning, often waking up as early as 5am on weekends just to get some work done. I started hanging out with tech community groups and kept going. Even after I started working as a web developer, I continued to learn constantly. Work would often highlight some holes in my knowledge that were just another opportunity for me to learn.
Still, in the world of professional programming, I am often seen as an impostor or a pale copy of a ‘real’ programmer. I have failed many interviews. Despite having a lot of practical knowledge, I am easily stumped by some basic computer science concepts. I have never had to write any exams or learn anything by heart, so my answer to a lot of questions would be to google it and figure it out. There are many things that I know are lacking in my knowledge. There are surely still a lot more that I am not even aware that I lack. This is all a work in progress.
However, I am not alone in this situation. According to Stack Overflow’s latest survey, 1 out of 4 programmers do not have a university degree, and of those who do have a degree, 1 out of 3 have it in a field other than computer science or software engineering. Every day, more and more people try their luck at their first line of code and start their journey as a self-taught developer. To alleviate some of the doubt that might plague them along the way (and still affects me more often than it should), I would like to present the ways in which having an unusual path to a programming career can also be a great perk. Although it is hard to make general statements about such broad groups of people, in my case, I see my background as an advantage in many ways.
Keeping the “why” in mind
For me, programming has never been about technology for technology’s sake. Technology is a tool. I am interested in creating cool, useful things with it. This is not to say that I have no interest in the theory. I love learning about algorithms, the underpinning of how javascript works, how to properly structure code. These help me get better at thinking about the problems I need to solve and write clean, maintainable code (what good is a cool app if you can’t maintain it?). However, these theories will never overshadow the need for the code to be useful first and foremost. For many self-taught developers, the basic computer science theory might be lacking, but the approach of learning-by-doing really puts the “why” of every line of code in the front of our mind.
Continued learning
Although the phrase “I don’t know” is one that I utter all the time, it is almost always followed by “… but I can figure it out.” Lack of knowledge is not an insurmountable obstacle, more like a small detour. By learning online, I have had to figure things out from day one. I got stuck constantly, got frustrated quite often and always made it through somehow. I learned how to identify problems and where to find the information I needed. I learned it the hard way, repeatedly. As the years went by, I continued to get stuck, but on more and more complex problems. I have also become more efficient in solving these issues.
I have also had to learn new javascript tools constantly and I have gained experience not only in those particular tools but in the best ways to learn them. I know what works for me to learn a new tool or technique, and I want nothing more than an excuse to do it again and again.
If you taught yourself programming, no matter how you might feel about your abilities, you would not have made it that far without becoming a resourceful learner and problem solver.
Seeing from the point of view of a lay-person (or beginner)
One of the advantages I see of not being a ‘techie’ (or at least not having been one for long) is that I can more easily relate what I am doing to non-techie people. Furthermore, my experience of going from an absolute beginner to a professional programmer make it easier for me to empathize with more junior programmers and teach from their standpoint. Although my two years experience still put me a ways away from ‘senior’ status, it is my goal that in reaching towards this, I will be able to work as a guide to more junior members of my team to help bring out their potential. For many self-taught programmers, this is a second career and they can bring to the table a point of view that is different from that of a lifelong techie along with empathy towards – and desire to help – more junior members of their teams.
Overall, my point here was not to downplay the benefits of a formal computer science education, but to argue that programmers with an unusual background can help widen the diversity of points of view and bring unique skills to the table. For those beginning on this journey, the road ahead is difficult, both in terms of learning and of job recognition, but more and more companies are seeing the value of hiring driven, self-motivated learners to their teams. Keep your chin up, and don’t let being an impostor keep you from getting real work done.
I work with javascript, sometimes as a front-end or back-end web development or as a software developer. Above all, I am passionate about learning and interested in using technology for good.