Navigating a Career Change to Become a Web Developer

June 5, 2020

NO_IMG

Junji Zhi

Senior Software Engineer

Canada

From a linguist to a programmer in 12 months

The offer email arrived in Lilian’s inbox at 10:09 pm on a chilly Friday night in late October. She printed, signed, scanned, attached, and hit “Send.” After hearing the Apple mail “whoosh” sound, she officially landed her first developer job.

I want to share my wife’s story of changing careers to become a web developer in hopes that it will help others on a similar journey.

She wanted change

Lilian has a master’s degree in linguistics from the University of Toronto. After graduation, she taught Mandarin at a private school in Toronto to mostly professional adult students taking night classes to learn a new language.

The headmaster had spent 20 years teaching and running the school. She started at noon, spoke non-stop in three to four back-to-back classes, and still wished each student a warm goodbye at 9:30 pm. She genuinely believes that teaching is fun.

But that wasn’t the case for Lilian. Being with people for a long time was exhausting, and she often arrived home late, collapsed onto the sofa with her face glued to the phone screen. After a year, she quit her job and joined an EdTech Customer Success department.

She answered inquiries from clients around the world. She didn’t have to teach anymore, but the job was intrusive and demanding. Since clients were in different timezones, she often took calls at night and patiently explained information about North American university program requirements. She received a bonus for the highest client retention rate among the team, but after four months, she decided the job wasn’t for her.

She wanted something that required less interaction with people.

What about coding?

Lilian has superior skills for shopping and decorating. I’m amazed that with just one glance, she can single out an outfit among hundreds of others that suits me perfectly. She’s excellent with colors, layouts, and other visual patterns. I thought she might enjoy making web pages.

To test my hypothesis, I showed her some HTML source code. I launched Chrome and went to one of her favorite fashion websites, Sephora, and opened the dev-tools on the right side of the page by selecting View>Developer>Inspect Elements. Then, I hovered the cursor over images, buttons, and text. As I did that, the dev-tools auto-focused on that HTML section.

“To make this image, you simply put together these codes. Let me show you how to change the button colors.” I chose a button, clicked on the Styles tab, and changed the color to #ffc0cb (pink), her favorite. “See? Making websites isn’t that hard, and you can make your site yourself with whatever you choose.”

Next, we needed to find a way for her to learn more. I had a full-time job as a full stack Ruby developer, so homeschooling her would not be possible. And reading books was slow and boring.

We decided on Udemy because they had many intro-level classes with huge discounts, something like 90% off. We basically paid less than $20 for a course with three hours of video, covering HTML / CSS / JavaScript. That’s really cheap!

I selected a few of the highest-rated classes with large student counts:

For a programming newbie, she would definitely come across concepts and jargon that were completely unknown to her. When that happened, I told her to make a note and move on. Later, we went through her questions together.

The good thing about online courses was that she could play back the video where she became lost. Or, she could switch to another instructor, explaining the same problem differently. Lilian was still working full-time, so she only had nights and weekends. Nevertheless, our strategy worked. In two weeks, she could:

  • Recognize the basic HTML elements, like a, img, input
  • Use VS Code to edit the CSS stylesheets of an existing web page
  • Write the basic Javascript statements, including if-else, for-loop, etc.

Going through these exercises built her confidence. By seeing the underlying mechanics, coding became something tangible, sort of like Legos, that she could tinker with and assemble to make new things.

But recognizing the elements was only the first step, and she still looked things up from time to time. To advance, she would need to use those elements more often to form working memory. Two weeks is a very short time for a brain to absorb all that knowledge after all.

Part-time courses

To qualify as a front end developer, she would at least need two things:

  • hands-on experience of building real websites,

  • master one front end framework, like React.

We came across a Juno (formerly known as HackerYou) coding bootcamp. A friend, who graduated from there and landed a job not long after, highly recommended it.

However, the next session didn’t start for two months, and the tuition was $12K, a price we seriously needed to consider. She was also hesitant because she wasn’t sure whether web dev was the right fit. To reduce the risk, we decided to take a slower approach.

Juno offered a part-time course designed for newbies to prep for the full-time bootcamps. The curriculum covered HTML / CSS / JavaScript / jQuery. It was hands-on, project-based learning with classes from 6-9 pm, Tuesdays and Thursdays. It cost $1,200, which wasn’t cheap, but she could deduct it from the bootcamp tuition if she eventually enrolled. So, she signed up.

It turned out to be a great decision. For the next two months, experienced teachers explained the concepts and required her to write several PSD conversions, translating a design into responsive landing pages with HTML / CSS.

By the end of the course, she had a solid working knowledge of CSS, including:

  • flex / grid
  • media queries / responsive
  • accessibility (HackerYou was big on this)

The part-time course covered some Vanilla JavaScript, but it wasn’t the focus. Nevertheless, I was glad to see she knew how to make good-looking landing pages. When the course was over, she took the bootcamp coding challenge. It had two questions. One was for modifying given HTML / CSS files to implement a visual effect. The second question was writing jQuery to manipulate the DOM to implement a dynamic effect.

She did well with the first question but struggled on the second, making her realize that she needed more work on JavaScript. For the following three months, she retook the Udemy courses and went over the videos involving JavaScript.

Jumping from CSS to JavaScript, she just couldn’t understand why JavaScript had such abstract concepts like objects or functions and why she couldn’t see what the program did. Lilian was not interested in printing logs with console.log() and couldn’t see using JavaScript to implement dazzling visual effects like CSS.

I don’t blame her. For newbies, JavaScript is a beast. Without experience, it’s hard to fully understand why things were written a certain way. And, there is no remedy for lack of experience other than increasing exposure to more code. I used different ways to explain to her why people invented this. When she was confused, I advised her to let it go, and everything would make more sense when she learned more frameworks like React.

Web development bootcamp

The part time course ended. Lilian couldn’t wait to learn more. The natural next step was the web development bootcamp. To decide whether it was worth it, we looked at the bootcamp intro page again. A few keywords stood out: immersive, best practices, and high employment rate.

I went through the curriculum again and saw that they taught React, which was nice. If she could get enough exposure to React, she would be able to build modern, component-based frameworks. She then could deliver stand-alone web apps and complete her front end stack. From there, she could branch out to learn more things like Redux, testing, and Storybook or learn more on the server side, such as NodeJS and Bash/Linux. At a minimum, knowing a little React would probably land her a job. We finally decided to sign her up for the bootcamp. She borrowed money from her parents and paid the tuition.

There were about 45 days before the bootcamp started. During that time, she worried that the bootcamp would be too fast-paced, and she wouldn’t be able to keep up. To prep for that, she took more online courses from Pluralsight.com. She took the time to go over all the JavaScript basics again, including objects, functions, scopes, and event loops. By the time the bootcamp started, she was very familiar with Vanilla JavaScript. The only new thing would be React.

The bootcamp pace was fast, just as she predicted. Juno teachers spent the first three weeks covering HTML / CSS / JavaScript and then started teaching React. Some of her classmates were still scratching their heads about objects and functions by Week 4.

But Lilian’s prep paid off, and she understood most of the lectures and only focused on the parts that she missed or was fuzzy about. For the milestone projects, she used different ways to write functions, while her partners struggled with the basics.

Near the bootcamp’s end, she signed up for the Visibility:Hidden coding contest. The “traditional” Juno event went like this: Given a PSD image, each contestant had to write a landing page on his/her own laptop. The laptop was connected to a rendering screen that faced the audience, meaning the developers couldn’t see the screen. They could only write code based on their memory and familiarity with HTML and CSS.

The first prize went to an experienced dev who graduated years ago. Lilian won SECOND PRIZE! When Heather, Juno CEO, was giving the prize, she announced that Lilian was the only currently enrolled student to enter the contest final. “Lilian’s graduating soon. If your company is hiring, she’s right here!” The crowd cheered loudly. Hearing those words, I bottom-up’ed my beer bottle and couldn’t stop feeling proud.

During the bootcamp, Lilian built five projects. She started with a make-up picker site that used REST API and jQuery to implement a simple dynamic effect. Next was a StackOverflow web app, built with React and Redux. See the complete list on her website.

As she practiced more, ES6 syntax became second nature, and she started to appreciate how Redux made her code more organized. She couldn’t believe that just two months ago, she had a hard time explaining callback functions. At the end of Week 9, she submitted her final project zip, and the intense bootcamp ended. She was ready to find a job.

Interview prep

For a newbie in tech, coding interviews are challenging. To prep her for the last mile, we did quite a few things together:

  • We set the expectation that her target role was a junior position.

  • Solved two or three LeetCode questions (level: easy) every day to practice algorithmic thinking.

  • Kept learning other frameworks and tools, including React router, redux-saga, Jest / Enzyme, and Storybook.

  • Took every interview seriously. Whenever she had an upcoming interview, we did a few mock interviews. I asked her to do whiteboarding, solve puzzles, and explain her recent projects.

Tech scenes were booming in Toronto in 2019. But for junior developers, getting interviews from local companies wasn’t easy. Most of them wanted 3+ years of experience, which creates a bootstrap problem for juniors.

Lilian sent out 20+ cover letters and only received a few rejections. Most HR departments didn’t bother to reply. But one month later, she had a referral from a friend at a dev agency. It was a good opportunity that we took seriously. We prepared for the interview together the night before. I asked all the questions I could think of. The entire process took three hours, but it was worth it. The next day during the on-site interview, her performance impressed the Director. They weren’t planning to hire a junior dev, but they made an exception for her. She received an offer.

Closing thoughts

I’m so glad to see Lilian succeed. Quite a few of her bootcamp classmates quit or went back to their old job afterward, but she didn’t. It was not easy when others expressed doubt about what she was doing. She deserves praise for her courage, determination, and persistence over the past year. Check out her website.

Also, it’s a judgment call. We tried to balance her interests with the resources / time / money / connections we had at the time. We were lucky to find something she likes doing on our first try.

Another lesson I learned is patience. After making a decision, don’t overthink it. Sometimes, we simply have to accept a leap of faith. Things don’t always appear to be moving ahead, but patience wins at the end.

Keep trying!

Update: Lilian has been a full-time developer for the last six months, and she loves it!

This article was originally published on my personal blog

(Edited by Samantha Mason