loading...

A Detailed Breakdown of My 8 Year Journey to Senior Engineer

colinsoleim profile image Colin Soleim ・6 min read

Intro

When I was first teaching myself how to code, I was always looking for step by step walkthroughs of other people's journeys from first coding introduction to full-time engineering roles. Last week, I accepted an offer as a Senior Software Developer, so following the idea that you should write about what you would have found helpful, I thought I'd give an outline of my 8 year journey from my first codeacademy.com class to accepting this job offer.

I'm not sure how well this information can be extrapolated, so I'll intentionally avoid giving too much advice, and instead offer my story as one data point of a possible career trajectory.

Beginning/College (2012-2014):

  • I started coding when I found codeacademy and immediately started doing HTML, CSS, Javascript, and Ruby courses.
  • I attempted to create a Twitter bot that would automate tweets for me, but failed for about a dozen reasons. Researching how to interact with the Twitter API led me to Michael Hartl's Rail Tutorial book.
  • I read the first 5 or so chapters of Michael Hartl's Rail Tutorial book. The information was so exciting that I only made it 1/3 of the way through before going back to building personal projecs.
  • I attempted to create a Rails website of daily drink specials in my hometown. This failed because I didn't know how databases worked and tried to hardcode all of the drink specials which became tedious after awhile.
  • I took Comp Sci 101 at my college and learned some basic Java
  • As a final project for that class, I created a Rails app that displayed jsfiddle embeds of very simple Javascript games. This looked horrible and had no database, but I did manage to deploy it to Heroku, and I think I got an A on the project.
  • I created a personal Rails website, once again this did not use a database at all. This looks awful now that I see it again but technically I consider this my first success because it was deployed to Heroku and I hooked it up to a Namecheap domain. It looks like the herokuapp is actually still online (please ignore the photobucket watermarks and everything else wrong with the site) https://colinsoleim.herokuapp.com/

Transition After College

At this point I had deployed several websites to Heroku, but they were all glorified HTML sites. However, I was 22 years old, and so I was extremely overconfident in my abilities. I applied to a few jobs and interviewed at 2. The first was a full time job at a startup and the other was an internship at a startup accelerator. The startup traveled me in for an interview, but as soon as I showed up, it was pretty obvious I had none of the skills needed for the job. Even though I had technically created Rails apps, I had no idea about ActiveRecord, MVC architecture, CSS frameworks like Bootstrap, and a dozen other things. I remember they paid me $250 for the 8 hours of coding I did, and I was thrilled! That was technically the first dollar I made from programming.

The interview for the internship was just a quick phone screening. The interviewer was a former non-technical founder, so in this case my misplaced confidence helped me a lot. He asked me if I was familiar with databases, common frameworks (Rails/Django), Javascript, etc. I replied I was very comfortable with all of them, and he didn't ask any follow-ups. In my defense, I thought that I was familiar with these technologies, and it wouldn't be until I started the job that I realized how wrong I was in assessing my abilities.

Internship Program (2014):

  • I started with trying to write tests for an ember application, but failed miserably and had a small breakdown after work on the second day after getting nowhere. I had finally realized just how much about the world of web development I didn't know, and although it was an awful realization at the time, I also consider this the turning point of my career.
  • Because of my inexperience, I was dropped from that project and a senior Rails engineer who was working on a separate project paired with me for a couple days and taught me how to actually use Rails
  • After a couple days of pairing, I was comfortable enough to work on small tickets on my own for that senior developer
  • From that point through the rest of the summer, the only thing I can remember doing was coding. It's hard to know exactly how much I was working, but in my memory I was putting in around 80 hours a week. On some level I was having fun, but I also had a fair amount of anxiety and desire to prove myself mixed in there.
  • At this internship, I also technically had my first contribution to open source, which at the time I was very excited about. I was building a scripting tool to calculate something from the SEC. I was using a Ruby gem that wrapped around the SEC's EDGAR database and some nil values were crashing my queries, so I submitted a PR with this rather ugly fix (https://github.com/tyrauber/sec_query/commit/004d9c494bf72d6b3fe50a1d4bdfaf7a0fba9714).

Transition Into Job Market

After that internship, I was firmly in the camp of a beginner web developer. I had a rough understanding of databases, MVC architecture, AJAX, some common gems, HTML/CSS and Javascript.

At the accelerator's launch event, I met someone who was looking for a developer to build a website, and over the course of the next month I built a Rails site for him. Overall the project went ok, the site looked nice thanks to Bootstrap and technically it worked. Of course, under the hood, the code was a mess of huge controllers, random gems being used incorrectly, and several other issues, but the client was ok with the result and I got paid around $3000. At the time, this was a huge amount of money for me and I started to realize the value a programmer can create.

After that I was approached by a consulting company I had worked under during my internship. They asked if I was interested in working for them in a contractor role (the first year I worked hourly, then switched to a fixed 40-hour/week model).

Consulting Company Contractor (2015-2019):

  • I started at this company building a Rails app for the Shopify App Store. Like the previous site I built, the launch of this project went ok, but looking back at the code now, it was a total mess, huge controllers, huge jQuery files, etc.
  • My next project at this company was a large 8 month Rails app building an event marketplace where users could hire entertainers directly for their weddings, parties, etc. This was the first site I pushed to production that had decent traffic and it exposed a lot of the problems with how I was writing Rails apps. Even with just a few dozen concurrent users, there were performance issues with both speed and memory issues.
  • While debugging these performance issues, I found Sandi Metz and Thoughtbot. Both of these resources taught me the importance of testing and good object oriented design. With these resources, I was able to refactor the major issues in my last 2 projects over the following few months. Learning how to write good tests specifically reduced the day to day stress of my life as a developer considerably.
  • My final big project at this company was an 18 month engagement doing lots of different things at a large e-commerce startup. In this role, I was a bit of a jack of all trades. I primarily managed their custom Shopify theme designs but also built a number of private apps to add custom features for their site.

Post Contractor Position (2019-2020)

My work in the contractor role was 100% remote and in most cases I was the only programmer on the teams I was working with. After 4 years of this, I decided to look for a role with some in-person component where I would have the chance to work more closely with other developers. Before actively looking for new jobs, I decided to take a few months off. After several months without coding, I started slowly getting back into the habit through open source.

Specifically I found the Ruby for Good organization which creates Rails websites for non-profits free of charge. After several months of fun contributing to various Ruby for Good projects, I started actively job hunting. There are many posts specifically outlining tips for the job hunt, so I'll just say that mine was pretty average. I sent out 20-30 resumes over the course of a week. I had a stressful two weeks where I heard back from nobody, then in one week I got requests for screenings from 5-6 different companies. From those I eventually received two offers, the one I accepted was for a consulting company which had many of the qualities I was looking for, e.g. mostly remote but with an office to check-in weekly, a small team environment, and the ability to continue working with Rails and React.

So that's been my journey from a high level. Hopefully, some people who are beginning or in the middle of their web development careers find it helpful. If you have questions or are looking for advice, I love to receive messages on dev.to or by email. I also love meeting people in Pittsburgh for coffee, if you're near the city.

Posted on Jun 17 by:

colinsoleim profile

Colin Soleim

@colinsoleim

Senior Software Engineer most often building Rails websites. Always happy to chat!

Discussion

markdown guide
 

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.

 

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.

 

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

 

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.

 

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.