DEV Community

Colin Soleim
Colin Soleim

Posted on • Edited on

A Detailed Breakdown of My 8 Year Journey to Senior Engineer

Intro

When I was teaching myself to code, I constantly searched for detailed, step-by-step stories of other people's journeys from beginner coding classes to full-time engineering jobs. Last week, I accepted an offer as a Senior Software Developer. Following the advice to write about what you wished existed, I wanted to share my own eight-year path from my first codeacademy.com class to landing this role.

I'm not sure how broadly applicable this will be, so instead of offering generalized advice, I'll simply present my journey as one data point of what's possible.

Beginning/College (2012-2014)

I began coding with Codecademy, learning HTML, CSS, JavaScript, and Ruby.

I tried creating a Twitter bot to automate tweets, but failed for numerous reasons. However, researching Twitter's API led me to Michael Hartl's Rails Tutorial. I eagerly read the first five chapters before getting excited and returning to my personal projects.

My first Rails project was a site listing daily drink specials in my hometown. This failed quickly because I didn't understand databases and tried hardcoding each special—tedious and unsustainable.

In college, I took a basic Java course (Comp Sci 101). My final project was a Rails app embedding jsfiddle demos of simple JavaScript games. It looked terrible, had no database, but I managed to deploy it to Heroku and even got an A.

I also created a personal Rails website without a database, deploying it to Heroku and connecting it to a Namecheap domain.

After College Work

By this point, I'd deployed a few basic HTML-style websites to Heroku and was overly confident at 22. I applied to a couple of jobs and interviewed at two startups. One was a full-time role, and the other an internship. The full-time job flew me in for an interview, quickly revealing I lacked crucial skills like ActiveRecord, MVC architecture, and CSS frameworks. But they generously paid me $250 for eight hours of work—my first earnings from programming.

The internship interview was simpler, conducted by a non-technical founder. My misplaced confidence helped—I claimed comfort with databases, Rails/Django, and JavaScript, which was true to my understanding at the time. It wasn't until starting the internship that I recognized how little I actually knew.

Internship Program (2014)

My internship began with a struggle: I failed miserably at writing Ember tests and experienced a small breakdown after my second day. This humbling moment marked the turning point of my career.

Thankfully, a senior Rails engineer took me under his wing, pairing with me for a few days until I could handle smaller tasks independently. For the rest of the summer, I remember coding relentlessly—around 80 hours a week—driven by enthusiasm, anxiety, and a strong desire to prove myself.

During this internship, I contributed my first open-source pull request to a Ruby gem that queried the SEC database. It was a small and admittedly messy fix, but I was incredibly proud at the time (https://github.com/tyrauber/sec_query/commit/004d9c494bf72d6b3fe50a1d4bdfaf7a0fba9714).

Entering the Job Market

By the end of the internship, I had a foundational grasp of web development: databases, MVC architecture, AJAX, common Rails gems, HTML/CSS, and JavaScript.

At a launch event, I met someone who needed a website. Over the next month, I built a Rails site using Bootstrap. The project went fine, though behind the scenes, the code was messy. Nonetheless, the client was satisfied, and I earned around $3000—an eye-opening sum at the time, showing me the value developers could create.

Shortly after, a consulting company from my internship approached me with a contract offer (hourly initially, then full-time fixed hours).

Consulting Company Contractor (2015-2019)

My first project was a Rails app for the Shopify App Store. The site launched successfully, but looking back, the code had major issues—huge controllers, enormous jQuery files, and other poor practices.

My next major project was an eight-month Rails app—an event marketplace for entertainers. It was my first high-traffic production site, and performance issues quickly surfaced, highlighting flaws in my coding style.

While addressing these issues, I discovered Sandi Metz and Thoughtbot, who taught me about testing and good object-oriented design. Refactoring my previous projects using these new skills drastically reduced my daily stress.

My final large project at this company was an 18-month engagement with an e-commerce startup. I managed their custom Shopify theme designs and built several private apps, serving as a jack-of-all-trades developer.

Post Contractor Position (2019-2020)

After four years of entirely remote work and often being the sole developer on projects, I decided to seek roles with in-person collaboration opportunities. I first took a few months off from coding, then gradually returned through contributing to Ruby for Good, building Rails sites for nonprofits.

When I actively began job hunting, I sent out 20-30 resumes within a week, experienced two stressful weeks of silence, then received multiple interview invitations simultaneously. Eventually, I accepted an offer from a consulting company that provides custom software and Devops solutions to a small portfolio of clients.

That's been my journey so far. I hope this is helpful to anyone starting or in the middle of their web development career. Feel free to reach out on dev.to or email—I enjoy giving advice and meeting for coffee if you're in Pittsburgh.

Top comments (5)

Collapse
 
thebuildguy profile image
Tulsi Prasad

Your story is inspiring Colin. I tremendously appreciate you acknowledging how many times you've literally failed while making some applications and how you came over them and started working for companies and building up skill sets alongside working. This is what happens most of the time to me while making projects and sometimes I get low because of this but still looking back over time, without them I wouldn't be having more knowledge and understanding as ever.

Collapse
 
colinsoleim profile image
Colin Soleim

Thanks for the comment! I definitely agree that failure along with reflection on those failures is a huge part of getting started with web development.

I think it's also important to not be too hard on yourself, and recognize what you learned with each project. For example, my first few projects were total failures from a backend perspective, but each one got me more familiar with HTML/CSS. And I think that's generally true of all projects. Even if it's technically a failure in its original goal, if you learned about a new library, got better at writing tests, etc., it's still a partial success.

Collapse
 
thebuildguy profile image
Tulsi Prasad

You put together, even better than I did! Thanks ⚡

Collapse
 
sdil profile image
Fadhil Yaacob

This is really motivating. God bless the senior Rails engineer you worked with during your internship. I had a great mentor/senior engineer guiding me during my internship also 3 years ago. Feel so blessed.

Collapse
 
colinsoleim profile image
Colin Soleim

Totally agree! I think mentorship is super important, especially for developers who are teaching themselves without a bootcamp or formal college education. I'm sure it would have taken me another 2-3 years to learn what that engineer taught me in 2-3 days of pairing.