Around the time I turned 30, software development had entered onto my radar as a career path. I had been studying and working in civil engineering and biomedical research for around twelve years (undergrad, grad school, and industry work) and was ready for a change. Now that I have been working as a web developer for over two years—and in doing so realized my long-standing dream of moving to a ski town—here is a reflection on my experience in tech thus far.
First, tech is ubiquitous. It has touched almost every industry. There is an app for basically everything these days (web or mobile) with more coming every day. We live in a high-tech world. This means tremendous opportunity for those who can code or who have ideas that can be brought to life via code. As such, the job market in software development is very healthy, in contrast to some of the other industries I worked in.
I started my oil-and-gas engineering career as a new grad in Calgary in late 2011. Three years later, my employer announced massive layoffs, which I took as an opportunity to go to grad school in biomedical engineering. (Here is my thesis: “Intercellular Gap Junction Communication in the Bovine Annulus Fibrosus”.) This was career pivot number one. I actually returned to the same employer for a few months following my successful MSc. defence. At that time, there were only scraps of work to be found in the oil patch, so salaried job offers were hard to come by. Almost all employees were offered contracts with no guarantee of full-time work. My intention was to use this as a stepping stone into something else—software.
This was perhaps the tail end of the last major boom cycle in Alberta’s heavily resource-biased economy. Once-hopping downtown Calgary office space reached around a 30 percent vacancy rate. Many skyscrapers had empty floors, cleared of cubicle partitions, that could be seen straight through. On a recent trip back to the city, I drove past one of the downtown offices I spent three years working in, a giant “For Lease” sign in the window.
The second time around, I left my engineering job on my own terms. (For more details on my non-linear career path, see How to Find Out What to Do With Your Life.) As I was only four years of actual work experience into engineering, there was less friction in making the switch than, say, a senior engineer a decade plus into his or her career.
Note that when I refer to “engineering” in this piece, I mean the more traditional forms of engineering such as civil, mechanical, electrical, chemical, et cetera. The reason for this is two-fold: first, to make a clearer distinction between my civil-engineering career and my software-development career, and, second, to respect the Professional Engineer designation. In most countries, studying engineering, getting four years of relevant work experience, and writing one or more exams will allow you to become a licensed Professional Engineer (P.Eng. in Canada or PE in the U.S.), letting you officially stamp construction drawings. This is a way of assuming professional liability, like a doctor’s signature. Boot-camp graduates who call themselves software engineers dilute the professional engineering designation. I have heard of non-professional engineers being told by regulatory authorities to cease calling themselves engineers. In my opinion, you should call yourself a software engineer only if you graduated from an officially accredited engineering program and have received your professional designation. Let’s try to uphold the engineering title and prefer the term developer in software. I am eligible to apply for my P.Eng. but never got around to it as I don’t see it helping my software-development career.
I had dabbled in website design and development as far back as high school—I graduated in 2007—building basic websites with custom WordPress themes. Software development was different back then, when desktop applications were primarily distributed by CDs, and web development was a smaller subset of software as a whole. Since then, the web has experienced a meteoric rise in popularity and functionality. It’s quite amazing what you can build in a browser now, from responsive web sites, to 3D games, to even running neural networks.
Coding boot camps are all the rage these days, so I took one. The goal was to expand my programming skills and break into the tech industry. Here is my experience taking a Canadian web dev boot camp.
When I took the web dev boot camp in July to October 2019 (twelve weeks), I went with the dominant player in coding boot camps in Canada. A tech recruiter had recommended this boot camp, and I talked to a graduate of the no-longer-offered iOS boot camp, who had good things to say about her experience (incidentally, another former engineer).
The iOS boot camp, marketed as slightly more difficult than the web dev boot camp, was phased out due to the changing job market. After the explosion of Apple’s App Store, mobile development plateaued enough that demand for dedicated iOS devs dropped. Furthermore, the creation of cross-platform frameworks like React Native and Flutter obviated the need for native iOS and Android developers (fluent in Swift or Objective-C, and Kotlin, respectively). Since graduating from the web-dev program, the boot-camp company has extended their offerings to include data science and cybersecurity, both burgeoning areas in tech at the moment.
From this ever-in-flux job market, two concerns arise: first, that software development will require ongoing learning to stay current, and, second, that if you are considering a career in software, do some research as to which area you’d like to specialize in. At a high level, web dev is about creating apps or websites, while data science is more about examining a data set and trying to extract insights from it. Cybersecurity is about preventing attacks and phishing. Only the web dev program was offered in Calgary at the time, so that’s what I took. Web dev ended up being a good fit for my interests as I enjoy the creative aspects of building pretty, functional user interfaces and seeing tangible progress of my work at the end of a day.
Prior to starting the boot camp, some 80 hours of prep work is assigned. It is to your benefit to do all of this and more—seriously, don’t take shortcuts here. If you can’t squeeze all the prep work in, delay the start of your boot camp until the next one a few months later. Better to delay your start until you are ready than to rush in and flounder. I had previously dabbled in web dev, building basic web pages in WordPress (PHP) and jQuery. While I had picked up a few tricks, my fundamentals were shaky, which the prep work helped with. There was a stretch project that I didn’t get around to, but do consider doing some kind of self-assigned project. Also, try to attend the demo days (all virtual now) of other students presenting their final projects to get an idea of what you’ll be able to build after the twelve weeks.
Given that I took the boot camp pre-pandemic, the course was held in person in an office building in downtown Calgary, out of a co-working space. With the high vacancy rate, office space could be leased for little more than the cost of utilities. Twelve of us started in the summer, and ten made it through the program. I’m not sure how an online experience, the only kind currently available, would compare. It might be a good intro to fully remote work.
Each day of the boot camp was scheduled. This included all five weekdays (no long weekends, unfortunately) and some weekend work. Each weekday featured a lecture, followed by a given set of tasks had to be completed by the end of the day, all done via an online learning system. Future days in the online learning system would not be unlocked until their actual calendar date, preventing working ahead. Some days had stretch work in case you finished everything else. I did part of this extra work but not all of it.
We had a full-time mentor during the weekdays, and additional mentors would arrive around six PM (after working their day jobs) to provide support for students. We were told to bring dinners to school as typical days could go well into the evening. However, having survived two engineering degrees, I found the pace quite reasonable, and often finished the daily work by mid-afternoon. A trip to the gym in the building usually followed (gotta take advantage of freebies).
This was perhaps not a typical experience. Indeed, many students drop out or retake the boot camp due to not being able to keep up with the pace. The pace was roughly comparable to that of an engineering degree, so twelve weeks of boot camp was basically another semester of undergrad engineering—no sweat after having already done eight. I am probably sandbagging here, however, as I am usually able to pick up technical concepts quickly (I graduated my undergrad with distinction and once wrote the MCAT, scoring in the 92nd percentile). Unless you have a similar technical background, budget to struggle a bit more in the boot camp. I don’t mean this smugly—just don’t underestimate the boot camp.
The short time commitment was another appealing aspect of the boot camp. In the case of it not working out, I’d only be out the price of tuition and three months of my time, not an additional year or two of post-secondary education. The University of Calgary now offers a one-year Master of Engineering in software, which I would have considered had I not already gone to grad school.
Another survival trick like my weekday gyms visits was to take a full day off on the weekends, preferably spent outside. Clear your head, and think about anything besides code for a day. In my undergrad, I’d usually waste Saturdays procrastinating and half-studying then repeating the process on Sundays having not achieved enough progress the previous day—not the best way to keep on top of the workload.
Many job postings will advertise positions for full-stack developers. In practice, however, web developers tend to specialize in either front-end or back-end development. Developers who are exceptionally talented in both disciplines are rare. More often, developers will be proficient in one discipline, and have a working knowledge—but less mastery—of the other. Take the boot camp as an opportunity to explore both and see which you prefer.
There is a distinction between web development and web design. In website and app development, there is a large visual design component in creating good-looking, intuitive user interfaces. If you specialize in front-end dev, you will likely collaborate with graphic designers, unless you also have design talent (many developers do not). Most web dev boot camps will only skim the surface of design as it is a separate skill set. Years ago—during my engineering career—I took an evening course in graphic design and leveraged it as a value-adding skill when applying to tech jobs (more on the job hunt in a minute). Don’t worry if you cannot design beautiful websites, though—there are plenty of other opportunities in software development.
In addition to the technical skills, we learned about soft skills and the interview process. Unlike other industries, tech interviews frequently include a technical component that tests your coding expertise such as a short quiz, a whiteboard problem, or a take-home challenge. We practiced all of these in the boot camp, and updated our résumés as well as attended networking events.
I had a great experience in the boot camp, further validating my decision to change careers. My final project, done with a partner, was a Battleship clone (repo link), my first-ever attempt at game development.
This now brings us to the job hunt.
The first job is always the hardest to land. I had somewhat incorrectly assumed that boot camps would take you from zero to hero in the course of three months. In reality, they told us that your first year on the job is an extension of boot camp. While the boot camps teach you enough to build basic full-stack apps, there will be a learning curve at your first job, and your code quality will need refining for legibility and maintainability. Whether writing words or code, you can tell when something is well written and organized or sloppy and incomprehensible. Coding is a skill that can take a few years to master.
This requires mentorship—or at least happens much faster with mentorship. It can be hard for companies to hire junior developers, especially boot-camp grads, as mentoring them to the point of being independently productive will take time away from senior developers. This indirectly uses company resources in addition to paying your salary. While checking references for junior/intermediate developers, a common feedback is the slow pace at which such developers complete tasks. I found my productivity to greatly increase after two years on the job, fixing bugs in minutes that previously stumped me for hours.
In light of this, many companies offered internships to boot-camp grads, where you’d be paid $15/hour (all amounts CAD) for your first three months (equivalent to $30k/year). Typical new-grad junior dev salaries in Canada ranged from $40k to as high as $80k. In my experience, about one student per class of twelve got a starting offer in the higher range.
Post boot camp is the time to hustle if you don’t have a job offer lined up. To keep up learning, you can either continue taking courses, or, better yet, give yourself a project and teach yourself how to problem solve once you get stuck. If you didn’t give yourself a project before the boot camp, now is the time for one. Google “code project ideas” if you need inspiration.
In search of such a project, I attended a health-care hackathon called Innovation4Health, looking to combine my interests of coding and health science. (The hackathon was initiated by my grad-school classmates—kudos to them for dreaming it up.) Here, I coded a proof-of-concept app called VisitER (repo link), which I eventually demoed in the job interview that lead to the first offer I accepted.
The boot camp went into great detail on how to craft a dev résumé and establish your GitHub profile. I won’t repeat all the details here other than to encourage you to build a personal portfolio. Especially if you are applying for front-end dev jobs, a basic personal portfolio will outshine applicants without one. It need not be complicated: find and customize a basic Gatsby template to demonstrate your chops with headless content-management systems and automatic deployments. (Or try SvelteKit—see That New-Website Look.)
Having now been on the opposite side of the interview table, I appreciate when someone has put effort into their personal website. Bonus points if you can write about technical dev topics. Communicating about software practices or technology can help solidify your understanding of it. As assignments in the boot camp, I wrote HTTP/2 and Website Optimization and Ruby on Rails in 2019, the latter of which received over ten-thousand views on Medium.
Software-development jobs generally fall into one of two categories: dev shops and software-as-a-service (SAAS) companies. Dev shops contract projects from external clients, using their in-house talent to build and ship the projects, while SAAS companies build and maintain a single software product or suite of related products attached to some sort of revenue model (e.g. paying subscribers). My first job was at a dev shop, and my second is at a non-government, not-for-profit, public-safety organization with SAAS offerings, whose products I use on an almost daily basis.
Focus on landing any kind of job as your first dev role. It may or may not be a good long-term fit. Once you’ve got some experience, you will be very employable.
Now that I have a few years of experience, I could likely double or triple my salary by working for a large US tech company. While this is on occasion tempting, I’m not sure how many managers at such companies would ask the following in the middle of a work week: “Hey, want to take tomorrow off and go for a twelve-hour alpine mountain bike ride?” (See the photos from that one.) This, instead of, “Want to work overtime?” Insert your preferred cliché here about money not being everything. (Note that this does not happen every week.)
Tech companies will look at culture fit when hiring. The idea is to see how well you align with the company’s vision and also how you’ll integrate with the team you work on. These are the people you’ll be spending a lot of time with. Given the previous paragraph, I’m classifying the culture fit of my current role as quite strong.
Tech is not for everyone, however. Coding itself can be especially frustrating to those not used to thinking in the hyper-logical way of computers. It is quite defeating when you spend all day—or longer—trying to quash some recalcitrant bug and not finding a solution. Or when someone comments about how inconvenient it is to make two extra clicks in your app that turns into a three-day fix. A large part of your time will be spent independently writing code. For those so inclined, this is not an unpleasant way to spend time—as I discovered with my dabbling in web dev during high school. For others, though, software has lead to many a clump of pulled hair or an airborne laptop.
With skills I’ve now learned or sharpened on the job, I have worked on some side projects. One is my personal website, and the feature I’ll highlight here is my event gallery from various outdoor trips from over the years. It’s a terrific way to remember all the wild places I’ve explored while being more personal and unique than a shared Google Photos album or similar. While this project has no capacity to generate revenue, do not underestimate the importance of tinkering. Passion projects or side hustles can become the next startups, to say nothing of the skills you’ll learn in taking them on.
This is where I find the most satisfaction in software development: the creation of something that didn’t previously exist, that somehow induces delight, built using tools that have only recently become available. Perhaps I am being idealistic here; cynics may dismiss this as a Silicon Valley platitude, up there with Steve Job’s reflection that “Technology alone is not enough. It’s technology married with the liberal arts, married with the humanities, that yields the results that make our hearts sing.” While technology has its downsides—creepily targeted advertising, addiction, anti-social behaviour, algorithmically manipulated content on social networks—I still believe that good can come from it when used responsibly.
Achieving senior status usually means working in a supervisory capacity over other developers. For the driven, senior status, a somewhat fuzzy qualification, can be accomplished in as little as three years in the right environment. For most, it will take longer. The important part here is to keep improving your technical skills and also appreciating the business problems you are trying to solve with software. You have a technical skill set, but the whole point behind building software is to solve real-world problems (ideally, anyway).
With experience comes opportunity. Gone are the days of spending your entire career at the same company. Developers can change jobs as often as every two to three years; this is the quickest way to ramp up your salary if you are so inclined. As your experience increases, new doors will open. Apply for work at your dream organization, take up contracting, work for a startup—or even found a startup.
When visiting a large-scale web app such as Facebook, Gmail, online banking, or similar, most users take it for granted that theses apps will work any time of day, any day of the year. A lot goes on behind the scenes to ensure this, however. Websites are served on the “cloud,” but, despite the popularity of the term, most people have only a superficial understanding of how it actually works beyond knowing that data centres exist. Without getting into the technical details, think of the cloud as analogous to physical infrastructure, like roads or waterworks: utilities subject to fluctuating usage demands from the public. Too many users can cause traffic jams or capacity issues. Developers must optimize the reliability and scalability of websites, similar to how civil engineers solve traffic problems or design water-distribution systems. A sub-speciality of website development known as DevOps specializes in this area.
As I mentioned in the intro, tech is booming right now. Recruiters are always pestering me on LinkedIn (sorry to those I ignore—I know you’re people trying to do a job too). I have also done a few freelance projects and occasionally turn down freelance work as I like to keep my evenings and weekends free for outdoor pursuits.
The sheer volume of job opportunities in tech is in stark contrast to the oil patch when I left. My salary has now caught up to what I made as an engineer-in-training in oil and gas (not adjusted for inflation—and wow, does a dollar today go nowhere near as far as in 2013), and I get to live, work, and play in a delightful mountain town. I have zero regrets with my career change.
Web development is always changing. The websites that I built back in late 2000s are quite different than the websites that I now build professionally. From server-rendered pages, to single-page applications (SPAs), to modern hybrid apps (SPAs with server-side rendering and cloud functions), the standard practices and tools in web development are constantly in motion. To keep on top of all this beyond on-the-job mentorship, I use a few different strategies, namely email newsletters, podcasts, online courses, and self-assigned projects.
While normally quite aggressive about unsubscribing from email newsletters, here are four that I have found quite useful:
It may initially seem counter-intuitive, but I have found podcasts to be surprisingly effective at reinforcing technical concepts. Learning to code directly from a podcast would likely be challenging, but listening to a podcast on a topic you’ve already been exposed to can strengthen it. I regularly tune in to Syntax.fm and Machine Learning Guide. Podcasts are also a great way of keeping a pulse on the larger tech industry too (for example, the Syntax episode on Wordle).
The plethora of online resources on web development can be overwhelming. Free tutorials and YouTube videos are beyond count, so focus on quality here. I’ve found that the best resources are ones that you pay a few dollars for, as these instructors are more intent on providing quality content than maximizing their article or video view counts. One of my favourites is Frontend Masters, and O’Reilly has great stuff too (both require paid subscriptions). Be sure to ask potential employers about their strategies for ongoing professional development.
Often the best way to learn is by doing. I’ve mentioned a few times now the benefits of giving yourself a project and learning problem-solving as you work toward a goal. It really is a terrific way to learn—and may even bear fruit beyond pedagogic value.
Let’s now take a moment to examine the larger tech industry. If the salaries mentioned earlier are any indication (see “Job Hunt”), it may be easy to dismiss Canada’s tech scene as playing second fiddle to Silicon Valley, where starting salaries are often over six figures—and in USD. Yet, coming from Alberta’s depressed oil-and-gas industry, the Canadian tech scene appears especially vibrant. As part of the post-boot-camp job hustle, I attended a teeming networking event downtown (pre-pandemic) called Launch Party for 15 of Calgary’s hottest tech startups—a brimming oasis of food, drink, music, and energy in antithesis to the desiccated oil patch, where Christmas parties hadn’t been held in a few years.
The tech industry has been through many periods. After the dot-com bubble of the late 1990s, mobile phones facilitated the app-store craze. Lean startup methodology followed, with entrepreneurs trying to tease out efficiencies in every imaginable aspect of our lives and businesses.
On its way to ubiquity, certain trends emerged in tech: the cult of the leader (and reality-distortion fields), nerd culture, patriarchy, and financial excess, among others. HBO’s show Silicon Valley satirizes many of these ideas and is worth a few laughs. In season one, episode four, tech investor Peter Gregory’s mispronunciation of rapper Flo Rida’s name (I won’t spoil it if you haven’t seen it yet) while thanking him in front of a boozy foundation party is utterly fantastic.
Readers of my website will know, however, of my preference for the written word over the TV screen. As such, my book recommendation on this topic is Uncanny Valley: A Memoir by Anna Wiener, the autobiography of a liberal arts graduate who worked in non-developer roles at a few Silicon Valley companies. The book is written in an unstructured format, with many short, untitled anecdotes providing insight into Silicon Valley culture, mentioning companies with thinly veiled descriptions such as “the social network everyone hates,” and the “open-source company.” Here are a few memorable passages:
As [the CTO and I] walked back to the office, I told him about my friends in New York, and how they didn’t seem to understand the appeal of working in technology. In the elevator, we joked about building an app that might interest them, one that would algorithmically suggest pairings of cocktail recipes and literature, according to a given book’s mood, era, and themes. I returned to my desk and didn’t think about it again—until the following afternoon, when the CTO messaged me in the company chat room and told me he had built it.
San Francisco had tipped into a full-blown housing crisis. Whenever the media reported that a new tech company had filed an S-1 with the SEC, people started comparing notes on tenants’ rights. Buy a house before the next IPO, my coworkers joked. It wasn’t a joke because it was funny; it was a joke because the overnight-wealthy were bidding 60 percent over asking on million-dollar starter homes, and paying in cash.
At a Male Allies Plenary Panel, a group of women engineers circulated hundreds of handmade bingo boards among attendees. Inside each square was a different indictment: Mentions his mother. Says “That would never happen in my company.” Wearables. Asserts another male executive’s heart is in the right place. Says feminist activism scares women away from tech. At the center of the board was a square that just said Pipeline. I had heard the pipeline argument, that there simply weren’t enough women and underrepresented minorities in STEM fields to fill open roles. Having been privy to the hiring process, I found it incredibly suspect.
What’s the wearable thing, I asked an engineer sitting in my row. “Oh, you know,” she said, waving dismissively toward the stage, with its rainbow-lit scrim. “Smart bras. Tech jewelry. They’re the only kind of hardware these guys can imagine women caring about.” What would a smart bra even do? I wondered, touching the band of my dumb underwire.
The male allies, all trim, white executives, took their seats and began offering wisdom on how to manage workplace discrimination. “The best thing you can do is excel,” said a VP at the search-engine giant whose well-publicized hobby was stratosphere jumping. “Just push through whatever boundaries you see in front of you, and be great.”
Don’t get discouraged, another implored—just keep working hard. Throughout the theater, pencils scratched.
“Speak up, and be confident,” said a third. “Speak up, and be heard.”
Engineers tended to complexify things, the stratosphere jumper said—like pipelines.
A woman in the audience slapped her pencil down. “Bingo!” she called out.
Be sure to check out Uncanny Valley for more vignettes such as these.
Stephen King wrote in On Writing: A Memoir of the Craft, “People love to read about work. God knows why, but they do.” That’s all I’ve done here: written about my work. This piece has summarized my entire work history after undergrad, from oil-and-gas engineering, to grad school, to tech.
In a way, website development has come full circle in my professional career. I would never have guessed that building websites for fun in high school would turn into the major direction of my career—but I am thrilled that it has. There is something rewarding about bringing ideas into existence via code.
If you’ve made it this far, hopefully the various bits in this piece have assembled into a larger image of the tech scene (pun intended, as usual). I hope you’ve enjoyed coming along for the ride.
UPDATE May 12, 2022: Here is a quick addendum that came to me recently. This is perhaps more for juniors who are hitting walls in their daily work—somewhere I have certainly been. After graduating from boot camp or school and starting your first job, you are still very much on the learning curve. You may not yet know what is possible with code, or where to start solving a complex problem. One example from my professional work was creating a map with transparent polygons representing different geographical areas. The map was interactive: individual polygons could be lassoed together and combined into a larger region. This seemed overwhelming at first, but with the help of a mentor, we pieced together the logic and built the app. As my work involves many such geospatial dashboards, I got more practice with additional projects and explored different ways to organize the logic (including state machines via XState). As you progress along the technical learning curve, I hope that you too encounter such a change in perspective: going from feeling stumped and being reliant on someone with more experience, to eventually knowing multiple different ways to implement a solution and understanding each option’s respective pros and cons—all before even starting to code. This kind of zoomed-out view is essential in establishing software architecture, which is empowering once you get to it. Be patient—it will come.