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.
- 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
- 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/
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.
- 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).
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).
- 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.
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.