I thought about writing this a couple of times but never bothered trying until one of my tweets was shared by freeCodeCamp. More than one of you asked me to write down how I transitioned from a career in finance to a fully employed software engineer. Taking that as a sign, I decided that now was the right time to put it all down and hopefully help the rest of you in this scary, yet exciting transition into software development. I hope you enjoy it.
I sat stunned in my chair as I heard my boss give me the news. “Your employment is terminated immediately.” I had just gotten back from my vacation in Maine and my boss let me know that he wanted me to call him back as soon as he could. Just before my vacation, it had come up that I had made an error in a client's account. It was not a small error, but it had been caught in time to fix everything and I assumed that it would have all blown over by the time I got back from my vacation. I was wrong.
The next month would turn out to be one of the most difficult months I would ever have. I was a “superstar” at my firm. I worked as a compliance officer and in the world of compliance, there is a lot of low-hanging fruit where software automation is concerned. I had risen through the ranks on my ability to write custom excel macros in VBA. I was sought after and had a lot of connections pretty high up in a couple of firms. I assumed that, despite this setback, I would land on my feet quickly. I was wrong.
In finance, when you are let go, the reason you are let go is made public record. Because of that, no one wanted to give me the time of day. A former boss, who had tried to poach me to her new firm the year prior, pulled as many strings as she could to get me a job. Unfortunately, she was still unable to get someone to hire me. I was an outcast and I had no way to get a job.
After months of looking, it became very clear that no matter how much I looked, I would not be getting a job in finance again. It was at this time that my wife pointed me to something very important. She reminded me that the part I enjoyed most about my job was not actually in my job description. The thing that got me excited every day was not financial related at all. It was the opportunity to code up new solutions to problems I had encountered.
She reminded me that I had often talked about making the leap into software development, but I was too scared of the loss of income that would happen while transitioning to a new career. “That’s not a roadblock anymore, you should just go for it.” So I did.
It’s easy enough to say you want to do it, but it was another thing to know what to do and in what order to do it. I started off working through the lectures and assignments of Harvard's free online course: CS50. This helped me gain some foundational CS knowledge, but I still was not anywhere closer to knowing what to do to be a software engineer. I found courses on Udemy and Udacity but still felt like I didn’t have a plan on how I was going to bridge the gap to being someone that would even be considered for a position as a developer. I started to feel like I was never going to make it.
By chance, I found an article about the best places to learn to code, and freeCodeCamp came up as a recommendation. I looked into it and at first, I wasn’t sure about it. How good could a free course be? The more I looked into it though, the more sure I felt about it. It not only provided a path of knowledge to learn, but it also provided an opportunity to do real resume-building work for non-profits when I completed all the required coursework and assignments.
It wasn’t until I started on the first projects that I learned the real power of freeCodeCamp’s curriculum. They don’t tell you how to do them. The projects are just a list of user requirements and that’s it. Every project is a greenfield project, with nothing started for you. If you don’t know how to do something, there is no “solution” that you can go look at to find the answer. You were on your own to figure out how to make the project work.
They did provide some community pages, but other than that you had to figure everything out by yourself. I learned an important skill every developer needs: how to google. If I didn’t understand the problem, I didn’t know how to ask the question.
Even though I was left to myself to find the answers, I never felt like I was in the deep end. I was never “comfortable” either. I was challenged just enough to go learn something new, the kind of things that can only be taught by experience.
I now was on a path that would get me to where I needed. I had found the bridge and I just needed to cross it. The next big question was when should I start putting myself out there. I was working away, but I never felt good enough to start applying for jobs. How would I know when I am good enough to start looking.
One of the other great things that freeCodeCamp did was to get me started reading medium articles. I regularly received emails of content, some of which were written by freeCodeCamp members and some were just curated content that they felt would help people like me. This helped me find resources outside of freeCodeCamp to learn about my new industry.
One of those articles helped me find a YouTube interview with Quincy Larson, founder of freeCodeCamp. He was asked that very question that was bothering me: When should you start applying for software developer jobs. He basically answered, right away. There is not a “perfect” time to start. You won’t be punished for applying for jobs you aren’t yet ‘qualified’ for and in fact, you will learn a lot about what you should know by interviewing.
So I made up my mind, made a resume to the best of my ability, and started applying. By this point, I was halfway through the curriculum. I typically received no answer to my job applications and the ones I did were generic, “we decided to go with another applicant whose skills better matched the job requirements” type of email. I felt what I was learning had more to do with how to handle rejection than it did with technical skills.
As I finished more of the curriculum and projects, my portfolio started to increase in size and I started getting recruiters who were willing to do phone screenings with me, but then nothing else would come of them. One time I even spoke to the CTO of a start-up and he asked me my salary requirements, after giving him what I felt was a fair range from what I had researched, he asked me with astonishment, “You think you are worth that?” My self-esteem took a big hit that day.
When I had finished almost all the full stack projects, I was finally asked to come in for an interview. I went through the technical interview and felt I held my own. I proceeded to be interviewed by the manager and felt everything went great. They let me know I would hear back in a week. One week later, I was being offered my first paid job as a software engineer. I had finally made it. Six months of working, learning, and being told I wasn’t good enough finally paid off. I was a software developer.
Later on, I asked what was it that made them choose to bring me in despite my lack of experience. They told me it was my active Github profile. I had projects of my code and showed that I was actively developing. I couldn’t help but feel grateful for freeCodeCamp again. They had required that I checked my projects into GitHub. Without freeCodeCamp, I doubt I would have made it far enough to get an interview, let alone a job.
I have said it before and I will say it again: freeCodeCamp was the single best resource in helping me transition to a job as a software developer. I owe them everything.