by Amir Ghafouri

Why I learned to code instead of pursuing a career in finance

Last year I faced a major life and career decision: commit to pursuing a Chartered Financial Analyst designation or spend my time learning to code online at a website called freeCodeCamp. The CFA institute had been around for decades and its designation was sought by some of the world’s most successful business people. freeCodeCamp had been around for just a couple of years with a few token members who claimed they had landed jobs as junior software developers.

I spent 4 years studying business at Western University, graduated with honors, and accumulated a mountain of student loan debt along the way. My GMAT score was in the 95th percentile if I ever wanted to pursue an MBA. Why would I give up on my field of academic study before I had even started my career?

After consulting with friends, family, and other professionals, the advice I received was unanimous. Learning to code online and becoming a software developer without a computer science degree or any background in engineering was crazy-person talk. I should hurry up and register for the CFA Level I exam.

Software is becoming crucial to value creation

I had read the famous Marc Andreessen essay Why Software Is Eating The World, and 5 years later his message seemed only more true.

America’s largest industrial company, General Electric, had just announced that it was moving its headquarters. It was setting up in Boston’s tech hub in an effort to transform itself into a top 10 software company by 2020. CEO Jeff Immelt had some groundbreaking beliefs. He was convinced that the data they could capture while using their machinery might become more valuable than the machinery itself. GE needed to think of its competitors as Amazon and IBM. Later that year, he would announce that all new hires would learn to code (but I didn’t know that at the time).

As the New York Times elaborated, “Employees companywide have been making pilgrimages to San Ramon for technology briefings, but also to soak in the culture. Their marching orders are to try to adapt the digital wizardry and hurry-up habits of Silicon Valley to G.E.’s world of industrial manufacturing.”

Deloitte had launched a blockchain lab and JP Morgan was building its own blockchain platform. At Goldman Sachs, the percentage of employees who had a background in some area of technology had increased from 5% to 25% in recent years. This didn’t even count the software developers who worked for the startups it was investing in at an increasingly rapid pace.

The Economist stated that, “Not all that long ago, 600 people worked on a vast floor trading shares… Now, Goldman has 2 people who trade equities and another 200 software engineers who work on systems that, in effect, do the job on their own. Traditional investment-banking is ripe for change as well…Costly, redundant steps are being cut or, once again, automated.”

Bloomberg had its own thoughts on the matter: “Why would Goldman let these outsiders in? It needs them. The great innovations of our time aren’t emerging out of a Henry Cobb glass tower overlooking the Hudson River. They’re coming out of companies such as Kensho. Goldman needs to learn from them — to understand how they work, how they think, and how they plan to dismantle just about every industry Goldman makes money in, including its own.”

Software companies like Facebook and Google had rocketed to the top of the stock market in a very short amount of time, unseating incumbents which needed decades to get there.

Chart from Bloomberg

And it was hard to argue that those valuations were unjustified. The software these companies had built was enabling each of their employees to create so much more value.

This chart was tweeted by CB Insights with the caption: “Is this why every company from an old school industry is trying to reimagine itself as a tech company these days?”

Software is making the world a better place

I rely on software every single day to get around, organize my day, communicate with friends, stay in touch with relatives, and generally liberate me from having to do repetitive and cumbersome tasks. The internet had democratized access to information and knowledge, and I was using it to read and learn about anything I wanted.

But I knew that these benefits were nothing compared to what it was doing for other people and what it could do in the future. Chris Dixon wrote an article called Eleven Reasons to be Excited About the Future of Technology, which aggregated some of these potential breakthroughs. He discusses how self-driving cars could reduce accident-frequency rates by 80% (1.25 million people die from car-related injuries every year). He describes cancer-detection algorithms which could outperform human pathologists. He tells us about drones which could deliver medical supplies to remote villages.

Our World In Data
“Right now, a Masai warrior on a mobile phone in the middle of Kenya has better mobile communications than the president did 25 years ago. If he’s on a smart phone using Google, he has access to more information than the U.S. president did just 15 years ago.” — Peter Diamandis

Many software developers didn’t learn to code at a traditional university

I read a lot about these people. Ex-Goldman Sachs investment banker Preethi Kasireddy wrote about leaving her job as a venture capitalist at Andreessen Horowitz to enroll in a coding bootcamp. She became a software developer at Coinbase shortly after. Ex-poker pro Haseeb Qureshi described how he came up through the App Academy coding bootcamp to become a software developer at Airbnb. Then I heard about a guy named Andrew Charlebois. He used freeCodeCamp to go from carpenter with zero tech experience to software developer at a global advertising agency in under 5 months.

I started looking at the job postings for software developers and noticed that many seemed impartial towards any particular bachelor’s degree. Some companies would explicitly leave out any mention of a degree in the requirements section, and instead expressed a preference for open-source portfolios.

I also started going to tech events where I met actual software developers and CTOs for the first time. Many — if not most — told me they had never studied computer science or engineering at a university.

All of this was confirmed when I found the results of Stack Overflow’s 2016 survey of over 50,000 software developers. More than half of the respondents did not have a bachelor’s degree in Computer Science or a related discipline, and 13% claimed to be entirely self-taught.

My decision

I continued applying to a wide range of more traditional jobs. I wanted to appease my father, but I was also worried that I would run out of savings before I could land a job as a software developer.

Despite this, the path to take was clear: I believed that software was the future and wanted to learn how to help build some of it. Even if I didn’t become a professional, at least I’d finally be able to wrap my head around how all this magic was possible. I didn’t want to rely on something I had never even made an effort to understand. In fact, it felt irresponsible to do so.

Learning to code

I spent 8 months, 24/7, learning to code. I followed the freeCodeCamp curriculum and read books like Eloquent Javascript. I watched Udemy and Udacity videos, Googled StackOverflow answers, asked questions on the freeCodeCamp chat room. And I went to as many Node School workshops and Coffee’n’Code meet ups as I could.

After 8 months I had put together a portfolio of simple client-side web applications. I had also started learning about server-side web applications and data persistence. I began applying for junior software developer positions. It was amazing how much interest I received despite being fully transparent about my lack of skill and experience.

Eventually, a startup called Shoelace brought me in for an interview. They asked me afterwards if I would be willing to do a two week paid trial. At the end of the two weeks, the CTO told me that they wanted to hire me. I was very junior, but they felt that I had the potential to learn quickly and grow into the role.


I have been working full-time at Shoelace as a software developer for over a year. I’ve learned quickly since I work with other experienced developers whom I can ask for help. They introduced me to tools and patterns that would have taken me way longer to find out about on my own.

Most importantly, working on an app that’s actually in production has exposed me to some of the more practical aspects of software development. I’ve learned about sprint planning, working with a product manager’s specification, version control, testing, code review, deployment, error logging and app monitoring. These were all things I had never really thought about while I was learning to code on my own.

Earlier this year, I built a web app called Spotifest to help my friends and me create Spotify playlists based off of music festival lineups. Nothing feels better than building something and watching people use it to become faster or better at something they were doing manually before.

Watching the company grow

When I started working at Shoelace, I was the 3rd full-time employee. Now we are hiring and will soon have 18 people. I’ve been able to witness a small team come up with new ideas everyday and then rapidly develop product to attract new users and raise venture capital.

Earlier this year, we were accepted into the 500 Startups seed program. The founders of my company gave us all the opportunity to spend a month living in San Francisco and working out of the offices there. Experiencing the energy of Silicon Valley and the Bay Area for the first time was exhilarating!

The Canadian companies in the 500 batch on demo day in San Francisco (I’m sitting down in a red hoodie about to clap).
The rest of the team watching the livestream of demo day online back in Toronto at our office in the Ryerson DMZ tech incubator.
Hanging out with some of my coworkers after a day at Shopify’s Unite conference in San Francisco.

I’m not sure that I’ll choose to make my living as a software developer forever, but I know that my ability to code will always be a significant asset. I think that every company is becoming a tech company. An increasing number of roles are going to require at least a basic understanding of software development in order to make strategic decisions and manage teams effectively.

Life is great, and I’m so glad I made the effort do this. Fixing bugs can be stressful, and writing unit tests can be tedious. But overall, I really enjoy this new-found ability to bring my ideas to life with code.

As Paul Graham said: “In 1970 a company president meant someone in their fifties, at least. If they had technologists working for them, they were treated like a racing stable: prized, but not powerful. But as technology has grown more important, the power of nerds has grown to reflect it. Now it’s not enough for a CEO to have someone smart they can ask about technical matters. Increasingly, they have to be that person themselves.”

If you enjoyed this article, please give me some claps so more people see it.

And you can follow me on Twitter here. Thanks!