What I Learned in My First Five Years as a Software Engineer
A timeline of my career with lessons learned along the way.
Okay — to be honest, I was an intern for the first two years of my career. Many wouldn’t include an internship in years of experience. That is fair enough. If you fall in that camp, think of this as “What I Learned in My First Three Years as a Software Engineer.”
Considering the circumstances, it feels valid to me to call this the first two years of my career. I was working year round. 20 hours a week when school was in, and 40 hours a week during my breaks. I was treated like an entry level developer and worked on my organization’s core set of APIs. It was real work to me then, and it’s real work to me now.
Stars aligned for me to get this internship. I had a lot of things holding me back. I didn’t have reliable transportation so I needed somewhere I could reasonably walk or ride my bike to (remote internships weren’t exactly around then). I also wasn’t a perfect student from a GPA, involvement, and accolades perspective.
What I did have going for me was that I built a portfolio of personal projects before I began applying to internships. My first organization’s hiring manager was impressed by them and decided to take a chance on me.
Lesson #1: Having a portfolio of personal projects as a university student is an excellent way to distinguish yourself for internships. It proves you’re capable of and interested in doing software engineering work.
I decided to focus on frontend projects for my portfolio, even though I was more interested in backend jobs at the time. They’re easier to “show off.” I had a simple website running on GitHub Pages, and two jQuery plugins published to npm. I demo’d them in my website. I figured a website with animations is a lot more digestible than backend code in a GitHub repository. I’m convinced this is what set me apart from other applicants.
Lesson #2: Your resume and portfolio need to impress recruiters and HR people, not other developers. They are going to be your first point of contact and your foot in the door. The actual interview is your opportunity to impress other developers.
I graduated with more software engineering job experience than a lot of the other computer science students around me. It was a bit of sacrifice. 20 hours a week of working on top of my courses didn’t leave me much time for more “traditional” university extracurriculars like student government, honors societies, and other miscellaneous clubs. In hindsight, I’m disappointed I missed out on those. I think they would have been very interesting and enriching experiences.
I was hired full time by the organization I interned for. I actually received the offer over a semester before I graduated, which definitely made life as a student a lot less stressful. Getting a job as a fresher (a college graduate or someone breaking into the field with no prior full time experience) is incredibly difficult right now.
When I first started full time, I attended every single software engineering and startup meetup that I was aware of. Not many of them are in person anymore, but I still think they’re a great medium for networking. I met other software engineers, software engineering managers, project managers, recruiters, and startup founders in my town. I wasn’t looking for a new job at the time, but if I was, I would have started there.
Lesson #3: Meetups are a very intimidate networking opportunity. You can find them online or download the “meetup” app and search for them. Even if you aren’t looking for a new job, it’s nice to see how other organizations and other developers do things.
My first 3.5 years at this organization (including my 2 years as an intern), there wasn’t as much deviation in my day to day as I would have liked. A quote that I love by Reid Hoffman: “for many people, ‘twenty years of experience’ is really one year of experience repeated twenty times.”
Lesson #4: Never stop learning.
I ended up switching to a software engineering role in another department within that same organization. I stayed in this role for 1.5 years. I got a lot of exposure to new technologies, new team dynamics, and new problems. I learned about things I never thought I’d touch in my career and I think I’m a much better software engineer and thinker because of it.
After 5 years total at my first organization I ended up leaving. I’ve been at my current organization for around 6 months now.
Leaving was terrifying. My heart was beating out of my chest as I told my manager I had accepted another offer (he is a nice guy, I was just anxious). My entire perception of what being a software engineer meant was in the scope of that organization. I would ask myself questions like, “will I succeed at another organization?”
I’m doing fine, fortunately.
2021 was a big year for me. I moved to a new city, moved in with my girlfriend, changed jobs, and got another cat. I do attribute these big changes in my life to digging me out of the rut that COVID-19 had put me in.
Lesson #5: Only a radical change in your environment or your habits is going to result in a radical change in the way you feel.
5 important lessons I learned in the first 5 years of my career:
- Having a portfolio of personal projects as a university student is an excellent way to distinguish yourself for internships. It proves you’re capable of and interested in doing software engineering work.
- Your resume and portfolio need to impress recruiters and HR people, not other developers. They are going to be your first point of contact and your foot in the door. The actual interview is your opportunity to impress other developers.
- Meetups are a very intimidate networking opportunity. You can find them online or download the “meetup” app and search for them. Even if you aren’t looking for a new job, it’s nice to see how other organizations and other developers do things.
- Never stop learning.
- Only a radical change in your environment or your habits is going to result in a radical change in the way you feel.
Thank you for reading!