Most of the concepts we use as programmers are universal. No matter the language we use or the business domain we use it for, clean code has some basic rules and the skills we gain from writing code over time are transferable. However, even if the building blocks of programming are the same, each industry and technology stack has its own quirks and features and sometimes they even require a different approach to solving problems. These differences are the reason why programmers can’t switch between tech stacks just by learning how “if” and “for” statements are written compared to their previous programming language. So what do you do when you decide you want to make that exact change?
Let’s say you worked as a programmer for a couple of years and you realize that you don’t like your industry or the coding language you use. Maybe you had this feeling from the start but you thought that once you’ll get better in that path you will enjoy it more. Now you know that it’s not the case and it is time for a change. How do you proceed to leave behind the skills you gained that are only applicable in your current niche and then learn new things to become relevant in your desired domain? In today’s article I will discuss what I did when I made the decision to switch from Automotive using C++ to Web development using Java and hopefully after reading this you will be able to make smarter and more efficient choices than I did. These are the lessons I learned:
So you have decided that what you are doing right now as a programmer does not fulfill you. That is one great first step, but what is the second?
That would be deciding what you want to pursue next, what is the domain you want to write code for and what would be the technologies you wish to use. Depending on your experience so far, this might or might not be an easy task. If you have already tried different stacks, you probably have a feeling of what you enjoyed the most and you can use that as a starting point. I strongly recommend you to take some time and think not only about what you would like to do, but also about what you want to avoid. What is it exactly that you dislike from your current job?
Maybe right now you write code for a specific hardware which is not that popular and because of this you don’t have a lot of documentation available and you feel like this is holding you back the most. If that’s the case, then you should make sure that your new career path has a strong community and plenty of learning resources. Don’t rush this step because it might take some time.
What helped me most where follow-along tutorials. After I would decide I am curious about a technology stack, I would search for a tutorial where somebody builds an application using it. Just following the tutorial and writing every line of code by hand was usually enough to decide if I’m still curious about that stack or if I should look for something else. Make sure to approach this in a practical way because without experiencing first hand what it’s like to work with different tools you can’t tell for sure what you’ll like.
Plans are great. They take a lot of the guesswork out of the equation and if you plan well, it is very easy to track progress and keep yourself accountable. After you decide the new direction you want to follow, make a list of all the requirements you will have to meet. What worked best for me was to decide on an application idea that I wanted to build and then learn everything along the way. I had a list with all the skills I had to practice and I made sure that finishing the application would not be possible without checking everything off that list. Another upside of learning in this way is that as you build these apps you can add them to your CV and show your commitment for the new technologies in a practical way. A similar idea to this is contributing to open source projects, but it’s not something that I did so I can’t speak from experience. Your learning strategy can be whatever fits you best, but please have a plan so you can measure your progress. Make sure your plan has a timeline, it doesn’t have to be strict, but it will help you avoid wasting time.
Learning new things is challenging, but in this specific case you will have to be very focused in order to pull through. You already have a job as a programmer which requires a lot of effort and after you make the decision that you don’t see a future in that specific domain, meeting the expectations your current employer has until you learn the required skills for the new job will be very strenuous. On top of that, In your free time you will have to work on your new pursuit and you’ll most likely feel like you live and breathe programming. When you’ll start to apply for jobs in the new niche you will encounter situations where the recruiters will tell you that you don’t have enough experience for the position you applied for, however they have an opening for a position in your current area of expertise. All of these are distractions and you have to realize it’s only temporary. Allow yourself time to learn and experiment and go to interviews without rushing the process as it won’t happen overnight, but keep in mind that no matter how many bad experiences you have, it only takes one offer to change it all. Your daily work routine that you dread, your feelings of not making enough progress, the lack of opportunities, everything can change if you manage to stay focused for a number of months. Keep your eyes on the prize and you will make it.
This is where I may sound a bit confusing. I talked previously about making a plan, which is something you should do, but I have to also mention that plans change. Not only do plans change, but most of the time you will only realize that you need to modify them when you’ll already feel some disappointment.
When I decided I wanted to make the switch from Automotive to Web I was really excited to have Python as my weapon of choice. It seemed like a fun language to use everyday with an amazing community and enough learning resources to keep me busy for a life time. I started to learn (I had some experience with it, but not for the Web) and it all seemed great. Couple of months later and I start searching for jobs to apply for. To my surprise, in my city, the large majority of jobs involving Python were in the realm of machine learning and usually for senior level. I searched the web for job postings but after almost two months of applying resulted in only one interview, I realized that “Python Web Developer” was not going to be my next job title. This is where knowing the direction I want rather than having a fixed plan came to help. I knew the criteria I want my new job to fit into, so I just had to find a new technology that matches it and then make sure there is enough demand for it where I live. This is how I decided on Java and after another two or three months of adapting my plans I had a job offer that I accepted. If I had a fixed plan without allowing room for improvements or if my decision to learn Python was made without understanding what I’m actually looking for, I would most likely still be searching for that elusive Python Web Developer job. Remember, plans change, but your direction stays the same!
I would like to end this article by saying that all programming jobs are not created equal. If you don’t like your current workflow, maybe it’s not because you are a bad programmer or because programming is not for you. Sometimes all you need is a change of environment and you might be surprised how much fun you can have when you are writing code for a different purpose, I know I was. Don’t think that just because your experience is tailored to a specific industry you have to stay there. With some extra effort you can make the switch and you can regain that enthusiasm you had in your early days of learning to code.
Good luck!
Alexandru Tudor - Java Software Engineer @ mindit.io