The Non-standard Developer
I recently read this really awesome article written by a developer who had no formal education or background and his journey to becoming a front-end developer. Having gone through a somewhat similar transformation, I was inspired to also write about my own transition into programming without a traditional programming background.
Who are you anyway?
A fair question, and one I’m going to avoid almost entirely. Instead, I’m going to say that my formal education is in business, specifically accounting, and that my transition into pure development wasn’t radical, but a career evolution. When I graduated college, I was hired to an organization that had recently implemented a new ERP (enterprise resource planning - think Quickbooks on steroids) software package and wanted someone who knew both business concepts as well as technically/programming concepts. I had some minor self-taught programming experience by that point, which I had demonstrated during my school days and ultimately helped in securing the position.
I was able to get a handle on the application reasonably quick, but I didn’t know or understand much about this “object oriented programming” thing I was thrown into. Thankfully, this company also had a small programming department, and eventually I was brought into the fold of that team - working on a different application from anyone else, but still. I was quickly introduced to the concepts of agile, lean programming and application lifecycles, and during slow periods, when requests for changes for my application weren’t overwhelming, I was mentored in real programming. I was introduced to C#, taught best practices, and even assisted on some non-critical software projects the main programming department was involved with. I was exposed to more advanced patterns, both by reviewing the code written by my peers and by my own research.
As I learned more, I became more intrigued with the DevOps side of things. Sure, I enjoyed writing code; I had a few utilities I wrote for myself on my personal computer to help with some common tasks, and I was very proud that I was able to make a computer do what I wanted without (much) assistance from others. Within the ERP application I was in charge of I was even able to implement some advanced functionality that would not have been possible without the knowledge I had learned. But, with the support of those in charge, I was given an opportunity to explore the DevOps and application lifecycle side of things with the ultimate goal of being able to deploy changes made in a development environment to production in a way that was both SOX compliant and friendly to non-developers. I spent about a year putting it together, and ended up publishing a series of posts about it, which has been pretty well received by the community.
Ultimately, however, being in a constant ‘maintenance mode’ was draining, and new development opportunities were limited (by that time the programming department was all but eliminated), so I decided to leave and become a full-time C# developer.
Imposter Syndrome is real
Back to the article. One thing the author doesn’t really talk about directly is Imposter Syndrome, which is something I experienced for a while after starting my new role. For those who don’t know, this is the feeling that you are somewhere you don’t belong, despite all evidence to the contrary. I think there are many people who have to deal with this - especially in programming careers, where many people arrive in a programming role from non-traditional (non CS) backgrounds. There are many excellent resources around the subject which helped me, including books such as The Imposters Handbook, and even posts by people far more talented than me. Still, it was difficult moving to a “real” developer role, and it wasn’t easy to shake the imposter feeling. However, as I become more comfortable with my new collegues (and the codebase for that matter), I was able to move past it and focus on being a better developer. Now I’m in a position where I can share my knowledge and experiences and hopefully offer a unique perspective to others so we can build the best product we can.
What I’ve learned
- I think first and foremost, you don’t need a CS degree or formal education to become a programmer. I’m not saying that those programs are useless or that nobody should consider them, just that unlike other career choices (like accounting, for example) it’s not essential to take them to be a good developer. What matters more is the willingness to learn and share, being open to new ways of doing things, and having confidence in your abilities.
- Always be learning. New languages come out every day, new patterns are being shared, and things are always evolving. This doesn’t necessarily mean you shouldn’t have a primary or preferred language in which you operate, but at least understand what other languages exist to complement your chosen one and how to use them. Modern languages are also changing; new features are being added and new ways of doing things being thought of, so pay attention to those as well.
- Don’t be afraid to fight for what you think is right. When I first started my new role as a programmer, I was given a task to implement a new library into our product. However, after spending a day trying to tweak it and force it to work, I came to the conclusion that it wouldn’t work for us, and I said as much to the team. After some discussion we all agreed and ultimately we ended up writing our own library to handle the task, which both looks and operates much better than the original solution. It felt awkward for me to challenge something so early in my new role (especially since it was my first pure programming role), but looking back I’m glad I did, as it ended up being a much better product because of it.
Long Story Longer
At the end of the day, the biggest takeaway I can offer is that the path to being a programmer is much wider than other careers, and don’t be afraid to pursue it just because you don’t have the formal education in the field. Have the passion to learn and practice, and you’ll fit right in with the rest of us.