Originally posted on samshito.com

Embarking on a career after university can be a daunting task.

When I first started my master’s degree in clinical engineering at U of T in the fall of 2015, being new and curious in academic research, I contemplated with the idea of transferring to a PhD program. It didn’t take long when I realized that I didn’t have enough passion in research to commit to the academia path. At the time of graduation, my ideal job was an applied research position in the medical device industry. Such opportunities were few, I knew. Most engineering job openings I came across required programming skills which I lacked. After two months, I ran out of suitable positions to apply to and gave up.

I started digging into career profiles of my LinkedIn connections from university to seek insights on my career direction. It turned out that most of those who studied programming had made decent progress since graduation, while those who studied other disciplines had less success. After receiving affirmation from a couple of mentors, I decided to spend a few months self-studying programming, and re-test the job market with my upgraded skill set.

I went on edX and picked a few online courses focused on the fundamentals of computer sciences, such as object-oriented programming, data structures, algorithms, and web development. I began getting through the lectures, problem sets, and projects. This took me about five months to complete while balancing other duties.

After acquiring the new skills, I knew that I still need to sell them to land a job. Without work experience in programming, getting a job still won’t be easy, yet the only way to get work experience is to get a job first. I updated my resume and created profiles on job posting sites. I wrote a cover letter template with only minor tweaks needed for different applications. I started my personal website and blog to display my past projects, online learning certificates, and promote my personal and professional brand. Finally, I braced myself for the technical interview by doing problems on the Cracking the Coding Interview book.

Will these be enough? I was anxious to find out. I searched for all the junior developer positions in the Greater Toronto Area and applied in batches. It didn’t take long until I got a few phone calls from employers and three onsite interviews. I received an ‘offer’ from one company, but after hearing that the contract terms included a four-month training period followed by a placement with $40k/year of salary and 2 years of commitment, I turned it down without hesitation and continued the search.

In August, I discovered Hatchways, a two-person company that offers coaching and job matching for aspiring developers. Through them, I received assistance in interview prep and got vouched for interviews at tech startups. After a crazy week during which I attended five interviews in three days, I felt good about my chance of receiving at least one offer, and possibly multiple. Up until then I had been spending 50-60 hours a week on job search for three months. In need of a break, I took the next week off to relax while waiting anxiously for the result. When the result finally came out, none of the companies extended me an offer. The worst-case scenario happened.

At this point I felt hopeless. I had maximized my time and energy spent on job hunting, but got stuck in a vicious cycle where the pressure of unemployment drains my morale, which leads to reduced productivity and keeps me from getting an offer.

I reached out to a friend working at Intel for a referral. The interviews consisted of two rounds of technical assessments, and the selectivity of each round was about 1 in 5. Knowing this was a precious opportunity, I gave myself a month of preparation time, and did more than 150 practice questions on Cracking the Coding Interview and LeetCode. I made it through the first round which was a big confidence boost. I spent another month studying before going to the second round. This time the interview lasted an entire afternoon and the questions were more difficult, though I thought I handled most of them well and performed 90% of my capability. Three days later, I got the rejection email. I cried, because I gave my absolute best efforts yet still didn’t succeed. But I believe that I gained a lot from this experience, as my interview skills improved, and I became better at handling pressure.

The week after my Intel interview fell through, I went to HealthTO, a bi-monthly health tech networking event which I had been attending since I began my job search. At the open-mic session, I volunteered to give a speech to sell myself as a self-taught developer looking for employment. The speech drew attention from many in the audience, as it was an effective pitch despite my apparent speech impediment. During the ensuing break, several people came to talk to me, and I got invited to an on-site interview. The following week, I received an offer for a full-time software developer position. I didn’t negotiate the compensation at all, as by this time I just wanted to be done with job search.

I officially signed the offer on December 21, 2018. What a sweet Christmas present after a year of hard work!

Here’s some advice based on my experience that could help someone in a similar situation:

Know your motivation. Making a career change involves a difficult process. Without a strong motivation, it would not be worth going through it. To me, I knew that the computer engineering profession is by far the best career choice for myself to maximize my career potential. It not only has plentiful job opportunities and generous pay, but also utilizes my above-average intelligence and minimizes my disadvantages of speech impediment. This holds true no matter how many rejections I get. Thus, I shall persevere.

Make a plan. During my job search process, I created monthly and daily plans and documented them. The monthly plan would look like: “May: data structures and algorithms online course”, “June: launch personal website and blog, edit resume and online profile”. The daily plan includes more measurable items such as “solve 5 LeetCode medium difficulty problems”, “attend Startup Open House event”. Monthly goals set the big picture and a timeline, while the daily goals allow tracking and auditing of progress.

Start applying at the right time. Every computer engineering job opening has a technical assessment in the interview process, so if you are new to programming, a study period is necessary. The best time to start applying is as soon as you feel that you can handle the technical interviews. Applying too soon you could waste opportunities by being under-prepared. Waiting too long lengthens the unemployment gap and drains motivation. Exactly when is the best time, is a judgement call for the individual.

Can't do it alone. Unemployment is an emotionally vulnerable time of life, but you shouldn’t shy away from reaching out to connections and making new ones. Professional connections who give advice and social connections who provide distractions are both instrumental. To me, having a few mentors who are computer engineers and a running group who know little about my career were big parts of what got me through.