How I got my dream job in the tech industry without a CS degree
When I graduated university, I spent 6 months doing 100+ interviews at 50+ companies, and ended up landing a job with a salary that paid 3x the average salary of my graduating class.
This is the story of how I broke into the tech industry without a Computer Science degree. I hope that sharing my story will help you navigate the changes in your own career too.
How I taught myself to code
I found myself, a 12-year-old kid with a keyboard, wielding enough power to thwart a $3.57 billion corporation.
My grade 7 science teacher wanted us to research a topic in physics and present it to the class. I hadn’t used computers that much before, but our school just got new computers pre-installed with Microsoft FrontPage which I wanted to play around with. I picked a template from the gallery and added a personal touch:
Art isn’t fun until you can show someone your masterpiece—I needed to get the files onto the Internet somehow. I didn’t have a credit card so I searched for “free website hosting”, and found GeoCities.
Not completely free however, as GeoCities made money by displaying ads alongside your website. I was unhappy with this, as I didn’t want the ads to distract my classmates when I presented. So I went back to MS FrontPage, and started digging.
Eventually, I found a toggle which let you switch between the drag-and-drop editor and the “code view”. Now this was cool! Seeing the code felt like performing open-heart surgery on the beating muscle that pumped pixels through my website.
Wanting to be a good surgeon, I immediately started slicing the arteries at random. No big deal, I could always Ctrl-Z out of my dead patient. The code had some familiar vocabulary: changing the number after a
width attribute caused a box to resize. I was now unshackled from simple drag-and-drop.
An afternoon of disembowelling my website had passed before I eventually found what I was looking for: by changing a few lines of CSS, I could hack the layout of the page to push all the ads off the screen. Yahoo had already acquired GeoCities back then,1 and I found myself, a 12-year-old kid with a keyboard, wielding enough power to thwart a $3.57 billion dollar corporation. I was hooked on code.
Doing math with chainsaws
In high school I was struggling to understand my linear algebra teacher so I looked online for tutorials. I found a YouTube playlist with a few hundred views by Sal Khan, a man whose voice was as soothing as his math lectures. He was by far the best teacher I ever met, and I didn’t even know what he looked like.2
Sal was so good at teaching math that he did something no other teacher did for me before: he made learning math fun. Sal armed me with a 5-horsepower chainsaw, to be used against the standardized tests which expected me wield a hedge trimmer.
By senior year, I was looking at universities. A major in Computer Science seemed logical; after all, programming interested me and thanks to Sal my best grades were in math class. But it didn’t make sense: I would be crammed into a lecture hall with 400 other students listening to a professor who probably wasn’t as articulate or interesting as Sal. Plus I had to pay the professor a few thousand dollars—whereas Sal was free.
I decided I would learn programming on my own, which allowed me to cut the price to zero and cut the time required in half, because I no longer needed to do homework whose purpose was not to challenge me and expand my knowledge but to rank me against my classmates.
At the same time, I recognized the limitations of learning from YouTube and ebooks. There are some skills that the Internet can never teach you: skills such as persuading others, managing a team, negotiating effectively, and resolving conflicts. You can only master these skills offline.
To this end, I attended the Smith School of Business at Queen’s University, which is widely known to be the best business school in Canada. The reputation is deserved for good reason: we would learn real business skills.
In one marketing class, my professor brought in local business owners who needed help. We formed teams and developed real marketing campaigns that the local business could implement. The winning team would both get higher grades and earn real money from an honorarium that the business owner paid for our work. Without the name of a university behind you, it would otherwise be difficult to get a business owner to consider taking advice from a college freshman.3 For this experience, it was worth paying a few thousand dollars.
The unspoken aspiration of most people who attend business schools (and laws schools) is to gain status and wealth by landing internships at companies with mahogany conference room tables and marble lobby fountains.
But think about what you actually do at these internships: you’re not trying to win new customers and you’re not fighting to get product to market. You’re being paid to format PowerPoints for your boss. You’d learn a lot more by trying to build your own McKinsey instead of working for McKinsey, even if you fail at the former.4
Therefore, I went ahead and started my own McKinsey. Instead of looking for internships, I started introducing myself as a consultant. If I could get people to pay money for my work, it would grant me credibility that would be better than any credibility siphoned off the brand name of a huge company—a company that wouldn’t care if I dropped dead tomorrow.5
But before I could convince anyone to pay for my skills, I had to build a portfolio. And to build a quality portfolio, I had to spend a lot of time programming.
Do a huge volume of work. It is only by going through a volume of work that you’re going to catch up. And the work you’re making will be as good as your ambitions.
The six words “Do a huge volume of work” was the banner under which I marched. I wanted to get 5,000 of my 10,000 hours done by the time I graduated university, and that meant I had to spend most of my summers coding, learning algorithms, or studying documentation. I forced myself to turn down anything else that did not directly help me become a better developer.
An incredible, once-in-a-lifetime opportunity landed in my lap: I received a job offer from Julien Smith, the New York Times bestselling author, to work directly with him at a fast-growing startup. I made the hard decision to say no: working with Julien would have been an amazing experience for me to learn from someone I consider as one of my heroes, but it took time away from coding.
My friend and classmate Riley recommended I apply to the Recurse Center. Riley was an alumnus and he thought that I would benefit from the mentorship. I applied but didn’t get in. So I did what I thought was the obvious next step: I started my own Recurse Center in my backyard.
I began organizing meetups in Toronto and invited my friends from the Queen’s Coding Club. People showed up, so I kept organizing them, which attracted more people to show up. Meetups turned into talks, and then into hackathons. I made sure to spend time at every meeting getting feedback on my code quality, and I learned as much as I could from senior developers about the unwritten knowledge they had gained tacitly.
Through this process of coding, getting feedback, and improving my code, I built several apps that I showed off on my portfolio. These apps were simple at first, but got progressively more complex:
One of them even made the frontpage of Hacker News:
I posted each app I made on Facebook. Eventually one of my Facebook friends noticed my rapidly improving programming ability and contacted me to ask if he can pay me to make a website. I immediately said yes. I had my first client!
Then another friend reached out and asked to hire me on retainer for a week. I said yes to that too. This was exciting! I had my first paid clients and my portfolio started to look more legit. I printed business cards, and set out to seriously look for more clients.
I bought tickets for around 20 high-profile tech conferences in Toronto. At each conference, I introduced myself to as many people as I could and found a handful of clients who were interested in signing me on for their projects. At the same time, my old clients started referring me to other clients and everything snowballed into a big, unstoppable avalanche of steady consulting work. I took this as a clear sign that I found my calling in life.
No one owes you a great career […] you need to earn it—and the process won’t be easy.
— Cal Newport: So Good They Can’t Ignore You
Now that I was confident with the flow of consulting work, I began looking for a full-time job. The traditional job search process was insane: I would submit a résumé online, re-type everything into a text box, then click “Apply” and cross my fingers that my résumé didn’t disappear into a black hole.
I decided to take a different approach. Instead of emailing as many black holes as possible, I would spend a week deeply researching a company and the business problems it faced, then put together a working prototype that I would cold-email to the CEO as a product improvement:
My strategy was working!
I made my cold-emails insanely customized: for the language-learning company Duolingo I sent them a video of me speaking four languages:
Getting attention is only the first step. The next step is to interview.
After drawing on data from thousands of technical interviews, it’s become clear to us that technical interviewing is a process whose results are nondeterministic and often arbitrary.
— Aline Lerner (founder of interviewing.io)
I met Aline in San Francisco and she remains to this day the best recruiter I’ve ever worked with. Not only did she personally introduce me to companies, she helped me recognize that the recruiting practices of top Silicon Valley companies are largely based on superstition. This meant that if I wanted to interview well, I had to put in an unreasonable amount of practice.
I bought all the popular technical interviewing guidebooks and read them cover-to-cover. I asked Hacker News if anyone wanted to practice with me, and got about 30 replies. Slowly but surely, I was improving, and advancing further through the phone screens and onsites. My friend Jeremy happened to be looking for a job around the same time as well, so we spent three hours a week asking each other some of the hardest interview questions on the planet.6
At the same time, I continued to scour Hacker News and AngelList for companies with open positions, and continued to cold-email CEOs. I also signed up for Hired7 which ended up having the best response rate—their platform is where I eventually found my current job.
There’s not much more to say other than I continued to interview, improve my skills, and build my portfolio. I knew that I was going to stay for a long time at the company I chose to work for, and I probably took more time than most other candidates did to ensure that my skills would be a good fit in the long run. Here’s the geographic breakdown of the companies I was in contact with:
In the end, after hundreds of awkward sales calls, hundreds of rejections, and thousands of hours coding, I was able to choose a company that best aligned with my personal values.
I consider myself incredibly lucky, as I recognize that many, many of my friends are still trying to find work that they enjoy. Friends who have read drafts of this essay told me that hearing my story helped them immensely in planning a fulfilling career. My journey was long and winding with many detours, and I hope that this essay will help you in your journey as well.
My path was not walked alone. I’m incredibly grateful for the support I’ve received along the way. I’m thankful for my friends in both California and Canada who helped me with couches, connections, and candid feedback throughout the years.† It was my network who helped me march forward during the “down” parts of the ups and downs in my career. Thank you for continuing to believe in me.
It is also through honest feedback that this blog continues to grow. I’m humbled every time I get replies from you, my subscribers.
Your encouragement is a big part of why I continue to write. I only publish half of my writing publicly. If this essay helped you in some way, you can read the rest of my essays on my private email list: billmei.net/follow (Subscribing is free, no spam ever, and you can safely unsubscribe anytime)
An enormous thank you goes out to Scott Bacon for being a fantastic mentor, for having the wisdom and foresight to help me turn down that first offer, and for introducing me to my current job. Thank you Aline Lerner for your guidance in navigating the job market. Special mention goes to Jeremy De Mello for the hundred hours you spent mock interviewing with me. Thanks Phil Schleihauf and Chris Cooper for (re)starting QCC and introducing me to an awesome community of hackers. Thank you to Tracey Mallen, Drew Soleyn, and Brian Taguchi from the Queen’s Business Career Centre for teaching me how to plan my career. Thanks Audrey Shepherd for moving mountains. Thanks goes out to Clarence Leung, David Hu, Brennan Foo, and Shenglong Gao for hosting me on your couches in a time of need. Thank you to the hundreds of people I’ve bought coffee for over the years for taking time to tell me about the raw, honest experiences of what makes your job fun or boring. Your feedback has shaped me into the person I am today.
There are many more examples of just how hands-on my courses were. My sales professor hired a trained actor to pose as a business owner to whom we had to sell payroll software. My negotiations professor divided the class into buyers and sellers, then graded us depending on how good of a deal we got negotiating with our other classmates. Some people criticized this as too much pressure, but I saw it differently—in real life you have real money at stake so you should get used to the pressure before you face real consequences. ↩
I did also start a startup around this time, it was a bus company called the Kingston Rocket. I cut this story from the essay because it was too much of a tangent. In the future, I might write about this experience in running an early-stage startup if there is enough interest on my email list. ↩
Another reason it’s so dangerous to rely on someone else for credibility: what if they screw it all up? Lots of ambitious people thought it was a great idea to gain credibility by working for prestigious companies like Arthur Anderson, Enron, Theranos, or Zenefits, right up until those companies torpedoed every employee’s résumé with a scandal. When you secede control of your career to someone else’s whims, you don’t share in just the successes. You have very little control over the ethics of thousands of your coworkers. But if the source of your credibility comes from yourself, you have 100% control. So I find it ironic when people say that working for large companies is “less risky”. ↩
One example of an interview question we asked each other: “I’m sorry but we’re looking for someone with more experience than you for this position”. We would then challenge each other to turn the conversation around.
Unbelievably, I later experienced this exact example for real, and was able to use the prior training to turn the interview into a success. ↩
Full disclosure: That’s my referral link for Hired. Here is a non-monetized link if you prefer. Hired has not paid me to write this essay or contacted me about my writing in any way. I am free to write whatever I want about them and my opinions are my own.
2021 Update: Hired drastically changed their business model and they are no longer good because they don’t match you with a talent advocate. Now I do not recommend them anymore. ↩