How I Became a Software Engineer (From Designer to Developer)

July 19, 2021 (3y ago)

How did I go from a designer to a developer? In this post, I'll share my overnight success story – ten years in the making. First, we have to go way back to 2007.

Learning Design

I was 14 and found myself fully immersed in the internet. Like many kids, I was an avid gamer. One of my favorites was Halo. I was on their gaming forums chatting with other Halo players. And for those around my age, you might remember something special at the bottom of every post - forum signature banners.

Old forum banners

These were so cool. I thought "I need to have one". Luckily, I happened to grow up in the internet age. YouTube was getting popular and you could find tutorials on anything your heart desired.

So, 14-year-old me managed to follow the sound advice of others online and download a completely legal version of Photoshop (thanks Pirate Bay) to create my own banners. I learned about vectors, brush packs, masking, typography, you name it. And before I knew it, I was actually pretty good at design.

Takeaway: Follow your curiosity.

Working as a Designer

I continued to use my Photoshop skills mostly for practical jokes, like photoshopping my friends into epic landscapes or other silly things. When I turned 16, I was looking for a summer job and realized I had actually developed marketable skills in the process of following my curiosity. A local t-shirt company was hiring designers to create vector illustrations for sports teams, events, schools, and more. You know, this kind.

Shirt designs

I applied, and surprisingly, I got hired. That summer, I churned out designs and learned more about Adobe Illustrator than I could have imagined. As high school graduation approached, it seemed natural I would continue with design in college (university). But a looming fear of a career as a designer led me to explore other options.

I was worried about job stability and the intense cirriculum for designers at my college. In retrospect, I didn't have great guidance (easy to say in hindsight). Ultimately, I made the jump for engineering.

Takeaway: Chase your passions. You might just learn some valuable skills along the way.

Becoming an Engineer

I started college and learned to code in 2011. I chose Computer Engineering because I built my own gaming computer once, and I was the "IT" person for my friends and family. Not exactly a strong foundation to build a career upon.

My first class was Introduction to Computer Programming. My professor asked, "How many have had prior programming experience?". More than half the class raised their hands. My hand stayed down. I became nervous.

I struggled throughout my first year of school, scraping by with average grades and low self-esteem. I wanted to quit. "I'm not smart enough to be a programmer", I thought. In hindsight, I was actually just learning the wrong things for me.

What Didn't Work For Me

In our curriculum, students started out by learning the C programming language. For me, C was not the most enjoyable language to work with. I would be fine never having to manually allocate memory ever again. The only part that sparked joy was visualizing command line output.

#include <stdio.h>

int main( int argc, char *argv[] )  {
   if( argc == 2 ) {
      printf("The argument supplied is %s\\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\\n");
   }
   else {
      printf("One argument expected.\\n");
   }
}

For example, if I ran the program above and forwarded hello on the command line, I'd see The argument supplied is hello. Incredible! While I dreaded almost everything about C, it did start teaching me the fundamentals of programming: variables, loops, functions, and more.

Next, we learned Java. This was a big improvement over C for me. No more manual memory management! And even more visual applications: Java Swing. Now we're talking!

Java Swing program

The next semester we learned web development. This is where the pieces began to fall into place for me. The visual aspect of the web felt like the missing link between design and development. The web felt like a place I could experiment, build, and most importantly share with anyone.

Takeaway: To learn what's right for you, cast a wide net. Try many things.

Humble Beginnings

Even though I was excited about the web, building web apps in 2012 wasn't as beginner-friendly as it is today. I learned HTML, CSS, JavaScript, jQuery, and even that Bootstrap library. Simple websites made sense, but then I was exposed to the world of back-end development... what in the world is a LAMP stack!? Impostor syndrome reared its ugly head again.

LAMP stack

Nevertheless, I passed my web development classes with higher marks and ended up landing an internship. It wasn't exactly what I wanted -- I was writing automated tests. But I got my foot in the door. I started to learn what a career as a Software Engineer looked like.

One internship led to two, and then three, and finally a full-time job after graduating with honors. Quite a turnaround from wanting to drop out and quit programming just a few years prior. My determination and perseverance paid off.

Takeaway: You're not a failure if your first job isn't at a well-known company. Every company will teach you something new about how to build software.

Exponential Growth

Tweet not found

The embedded tweet could not be found…

While I enjoyed web development, the front-end never fully clicked for me until I started using React a few years later in my first full-time job. Up until this point, most "modern web development" at the time seemed so complex. Learning React, and then starting to use Create React App, helped me finally break free from JavaScript build tool hell and focus on building great websites. This is when I started to grow exponentially as a developer.

Anatomy of a React component

Specializing on one specific thing (React) led to a snowball effect. Suddenly, I was becoming proficient in other related skills. Understanding the fundamentals led to faster adoption of the next layer of tools, and finally to understanding and creating my own backends and APIs.

Takeaway: Learning React is a safe bet. The principles of React have fundamentally changed how we build for the web.

The Present

I've now been working with React since 2015. Since then I've largely been a product engineer, working in financial tech and e-commerce. About three years ago, I realized I wanted to make a shift in my career.

I wanted to create. I wanted to write, record, stream, post, tweet, and grow a community. I wanted to help others learn and progress in their careers as developers. After teaching over 100,000 developers from around the world with courses and tutorials, I joined the team at Vercel and now lead Developer Relations.

Takeaway: It's never too late to change your trajectory. Your career is a marathon, not a sprint.

Takeaways & Advice

  1. Follow your curiosity.
  2. Chase your passions. You might just learn some valuable skills along the way.
  3. To learn what's right for you, cast a wide net. Try many things.
  4. You're not a failure if your first job isn't at a well-known company. Every company will teach you something new about how to build software. You'll probably only be working there for a few years anyway, on average at least.
  5. Learning React is a safe bet. The principles of React have fundamentally changed how we build for the web.
  6. It's never too late to change your trajectory. Your career is a marathon, not a sprint.

Also, share your work. Tell people what you're building or learning. It sounds obvious, but learning in public and sharing my findings helped me land multiple jobs in my career.

  • A good boot camp is better than an average degree (for programming).
  • You don't need formal education, but if you forego traditional structure and community, you must recreate it yourself.
  • Create an online presence. Showcase your work. Write. Share what you've learned. Attract other like-minded people. Create serendipity.

The best time to start was yesterday. The second best time is today.