Up to September 2016, at 37 years old, all my professional experiences were around sales and marketing. In November I started to study web development full-time. In June 2017 I was hired as a junior front-end web developer at a medium-sized startup. I want to share what I was thinking in October, the month I decided to change careers.
A decision based on passion and money
This would be the title if I were to share this post on LinkedIn redacted by a BuzzFeed editor with a penchant for soap operas. And a very misguided title it would be. Basing a professional decision in potential money is not a very good idea. Basing a professional decision in passion is a terrible idea.
Passion frames the decision the wrong way and is detrimental to the point, joy provides a better context. The lure to advise someone to follow their passion on their career decision is understandable. Passion is both clickbaity and aspirational, making it the sugar of processed career advice. It tricks your brain into making you think that you should care about whatever is consumed with it. The little truth in this advice is that how you feel about a profession should indeed count on the decision. But passion gives you a context of absolute, urgent feelings welded to present-time circumstances. For decisions that will shape years in your future, it is better to base them on more relative, perennial feelings aligned with more fundamental values.
I believe a better concept might be 'joy'. Do you enjoy the everyday activities you will be executing in this profession? But it is tricky. Joy is a feeling and feelings change a lot and we project them through all dimensions of our lives. So it helps to think relative to other potential professional choices, not comparing to leisure activities or in absolute terms. On a good day, when you are happy with your friends and family, it is a great sunny day out there and you have to work: would you prefer to be coding or working in one of your other career options? And on a bad day, feeling sad and confused with some personal issues you don't know how to solve and you have to work: would you still prefer to be coding than the other work options?
Money is part of the equation, but a too narrow focus on it is counterproductive. Money fulfills a useful role as a goal and, for some people, as motivation. But obsessing about it increases the ever-present pernicious risk of letting the outcome overshadow the process. The practical effect of it is to make us think we deserve the outcome and not that we should earn it, which nearly guarantees a life of under-achievement and frustration. Software development is full of high paying jobs, but money is the outcome of job performance and career choices. Small digression: Luck is also a factor, but it is a constant of the equation, not a variable we can control. Office politics is yet another factor, but even if some people can use it as a controllable variable to earn more money, it is more of a constant when considering the decision of changing careers. End of digression, back to thinking about career choices and job performance.
So consider what are your career choices on software development. A good start is to answer this question: "How good are the jobs in my area that would be suitable for me?" Your area can be your city or your country if you are ok with relocation. It is hard to start as a junior developer in another country, the same for remote jobs. Don't include these possibilities in your decision. Understand what kind of software development jobs are more suitable for you to start your career. Machine learning and AI is in very high demand and pays well, but it demands a very strong math and statistics knowledge and significantly more time of study to get the basics than web development for example. Check job boards for quantity and quality of companies hiring for junior roles. Don't stress about the intimidating list of requirements in these posts, they matter much less than you think. Find out how much companies are paying junior developers, but also senior developers. Understand that "senior" is a term for which each company has its own meaning. A good heuristic is to consider that the lower range of salaries companies are paying senior developers is how much you could be earning in 3 years and the upper range is how much you could be earning in 6 years. You end up with a very realistic view of your prospects. Do you see yourself progressing through this career satisfactorily?
Job performance in software development is about knowledge and work ethics. There is a lot to learn about software development. The body of knowledge grows constantly and fast. It may look intimidating like a crowd marching out of a stadium, so you have to keep moving with it. The worst reaction is paralysis. Are you in good terms with the idea that you will have to be learning new things for your job all the time? Forever? This should feel exciting for a software developer, so if you feel lazy just to think about it, software developing may not be for you. It derives from this that your work ethic should reflect the will and diligence to learn. Other than that, you will likely bring with you the same behavior on the other aspects of your work ethics, like commitment, time allocation, teamwork, and transparency. Your self-awareness on this topic will become more relevant when you start looking for jobs, something I am planning to write about in future posts. But it doesn't affect a lot your career decision to become a developer at this point.
If the suitable job opportunities you found look interesting and you see yourself capable of working hard and studying hard for several years to perform well in these jobs, then you have a good fit with the career of software development.
A decision based on joy and career fit
So, how do you know you will enjoy coding? You don't until you try it. My first contact with code happened a couple of years before my decision to go all-in. I was focused in founding a startup and I decided that learning to code would be useful in my endeavor. I didn't have the goal of becoming a developer at the time, I just wanted to know the very basics and be better prepared to communicate with actual developers that would build my product. I spent around 2 months studying part-time C# and .Net and loved every minute. I was building a very simple web app that would act as a medication organizer for people who take 5, 6 or more pills every day. I remember being eager for Monday to arrive. I never felt that so many times in any job. So, when October came, after failing my startup and being frustrated with marketing jobs in general, I knew I would enjoy being a developer.
And how do you know you will perform well in software development jobs? You can't possibly know before your first job, but there are signs. A great sign is if you can actually build something that works. While facing the huge, intimidating mountain of knowledge you don't understand, you still manage to find some of the small, more graspable rocks and actually build something with it. It counts less if you just follow command by command a detailed tutorial that shows each tiny step of the way. It counts more if you go further and ship a working prototype to be available on the web, hosted and deployed. Your code will be terrible, be sure of that. But if you can imagine, learn some tech, build something on top of things you are barely recognizing and it actually works! That's a good sign that you are capable of learning and overcoming obstacles to deliver value through software.
I built a few projects, like a to-do list with a creative UI, a search tool for animated gifs, a Facebook Messenger bot, a note-taking web app for personal development; a page that would show random, old, upvoted Hacker News comments. All of them with terrible code, no polishment to have a chance as a real product, but all of them working and deployed. This gave me a lot of confidence that I could deliver value to a company as a web developer. I could learn things and use this knowledge to build something else.
I knew I would enjoy coding every day, I knew I had a good chance of being a capable developer, I was ok with the prospect of having to study hard in order to keep growing, I didn't have any illusions about the kind of jobs that I would get (no glamorous job at Silicon Valley for me), I knew which jobs I would like to avoid. I discussed all of that with my wife and we decided that I would quit my job and start studying full time to become a web developer. I'm pretty sure it was the best professional decision of my life so far.
My next post will be about the 7 months I was full-time studying web development. I will explain my belief that you shouldn't pay for anything until you are capable of deciding for yourself if that course/book/bootcamp is worth its price in knowledge. And discuss some things I didn't know I didn't know while studying by myself. And the next post after that will be about the search for my first job as a software developer.
Thank you for your time and I hope my experience and thoughts can help. If you want to contact me, and I would love to hear from you, use my github handler with gmail.