My Journey to Software Engineer
• • ☕️☕️ 8 min readRecently I’ve been thinking a lot about what I’ve learned over the last 7 years of being a professional software engineer. There are so many lessons I want to share, so much so that I get writers block just trying to think about what level of depth to add to these posts. I’ve done a little bit of everything over the years & I think I have a unique set of experience that would be helpful to many people. With the current job market around tech I think it may be useful to share what I’ve done, how I got to where I am, and what lessons I have learned.
Minecraft
When I was 12 years old in 2010 (I know I’m young!) Minecraft had just entered Alpha. Like many others my age I became extremely fixated on the game, sinking thousands of hours into it over the years. At first it was a fun game to play on my own, I could share my builds with friends, show them my world, etc. There was truly nothing like it at the time. I soon found out there were online servers that allowed you to play with friends! First I started by playing the creative mode hosted on Minecraft’s website (Minecraft Classic?) but eventually moved on to full blown Minecraft servers.
I learned that there were “online mods” that could change the way you play the game. They added concepts such as protected land, towns, wars, additional monsters and games. Being the internet child I was, I wanted to start my very own Minecraft server with my own online mods. I would come to find out these were not actually “mods” but rather plugins. After some amount of time I started to write my very first Bukkit plugins.
While Bukkit as a system isn’t really used anymore due to some DCMA drama back in the day, some of the listings still exist:
After writing these & running a server on my own I learned just how possible it is to have a career in software development.
Highschool
All throughout highschool I continued to write Minecraft plugins, eventually switching from Bukkit to Spigot. I even skipped out on my entire first semester of highschool to write code all day (I took online school but didn’t attend class). I then started to think about how we could integrate something like Minecraft with the web. A team of indie hackers and I set off to build an integration between a custom plugin and a custom website. While the project never got off the ground & died due to funding issues I am happy to report that we actually did get that working. A user would sign in, choose a mini game, and be auto-magically entered into that game in their Minecraft client. It was really neat & really on the bleeding edge at the time.
Anyways…
After doing all of this Java work I started to dive deeper into HTML/CSS/Javascript at school & at home. Whether it be working on a project for my web design class or trying to get literally anyone to let me make them a website for free to build my portfolio, I was constantly writing code throughout highschool. I am incredibly lucky with regard to the fact that I was able to find & focus on what I love at an early age.
When senior year hit we had something called “passage” where we’d have to either work on a big project or take an internship as a class that year. Naturally, I did both.
Internship
I called & emailed 12 different web design & development studios around Indianapolis in order to find an internship. 1 got back with me. DeveloperTown was more than willing to help me come on as an unpaid intern to work on some internal projects they had. I had never been in a professional repository - I had no clue what to expect. I had major imposter syndrome. I had many days where I though I am not cut out for this. This was all as an unpaid intern.
I held a job at my local Sonic Drive-In while also doing the internship so that I could pay for gas to get to the north side of the city. The internship was more than worth it. I feel indebted to DeveloperTown for taking a chance on me at that time.
Once the school year wrapped up my internship oficially ended in May 2016.
DeveloperTown
Later that year, in early June, I got my very first offer letter to be a paid intern at DeveloperTown. I started out making $12/hr, which beat $8/hr at Sonic. I came in and started immediately working on a new version of the same internal project I had been working on the year prior. I over stayed my welcome, I worked a lot of hours & really put in the time to learn how to do this job. I knew then that I had the opportunity of a lifetime & I wasn’t going to let it pass me by.
In August 2016 I started college attending IUPUI (Indiana University Purdue University Indianapolis) where I would enroll in their software engineering program.
But then, reality hit. After that first semester I would struggle with grades. I would ace my software development courses while barely passing general studies like math & public speaking.
I took a database class over the summer that I completed in about 15 minutes every week, but had to re-take algebra.
During this time one of the founders of DeveloperTown started a sister company called DT Starts that would focus on early stage startups. I requested a transfer to that business & it was granted.
DT Starts
I think DT Starts is where I got the majority of my hard skills I have today. Critical thinking skills, social skills, the art of the argument were all taught to me implicitly here. I loved & still love the team I worked with at DT Starts.
After transferring in May 2017 I got a raise to $17/hr, which was absolutely amazing for me at the time. After working at DT Starts for the summer one of the portfolio companies offered me a full time position to work on their product. Much to my benefit DT Starts matched their offer & hired me on full time at $53,000 a year (this will be the last time I mention my salary). I decided at that time to drop out of college & start working full time.
At DT starts I was a full stack engineer, quite literally. I was working primarily in React at first, then moved onto Node.js development. It was the expectation that I would be given some vague task & had to fill in the blanks. I think that is what has given me a leg up all these years later - it is a skill that is incredibly sought after. Some people say “I don’t want to hold your hand” or equate it to speed of development, but what they are actually saying is they want you to be able to be given 50–90% of the task & fill in the other 10–50% on your own. This is a hard skill that will take you far on its own.
As I started to refine my skills as a software engineer I began to get more & more responsibility. I eventually started leading database architecture & system architecture discussions. When our CTO left to start his own company I filled his shoes as best as I could.
I worked in many different industries, from fintech to book reselling & everything inbetween. It was an incredible grind, working 16+ hours some days just to make a good impression at a meeting, or to show the founders how commited I was. It was awesome but unsustainable. Over time I was able to replace raw grind with experience & be able to impress consistently in an 8 hour work day. Short term sacrifice for long term happiness. Today most people wouldn’t recommend that path, and it is absolutely not the right path for everyone, but it’s what worked for me.
I went on to spend about 5 years total at DT Starts. We did many amazing things together but I had to leave. As the companies were growing larger my lack of experience scaling a team was causing me to get passed on for opportunities to move up. I had to go get the experience I was missing. After an emotional exit I moved on to Swarm Solutions.
From here on out, my story isn’t all that different from lots of other engineers. I continually gained experience working in different tech all the time. Working at Swarm Solutions was the first time I really felt like a senior software engineer. I was called upon to do a lot of problem solving in a room full of other smart & fully capable engineers. I have been able to work on some of the largest websites in the world & some of the smallest.
Takeaway
I think I have a few lessons I learned here:
- Get your foot in the door any way you can & be ready when your opportunity comes.
- If you’re not passionate about programming like I am, push yourself to stay up to date with technology. Do not let the industry pass you by.
- Add to the conversation - speak up when you have solutions to problems. This will pay dividends in your life inside & outside of tech. (Be Alexander Hamilton, not Aaron Burr)
- Challenge yourself - our brains are all rotting in our skulls the older we get. We owe it to ourselves to stay sharp.
I sincerely hope you learned something from this, and if you have any suggestions, comments, or corrections, you can find my Twitter below.
Thanks for reading! For more content, or for any questions or comments, please reach out to me via Twitter