This post is a lot different from my other ones, and probably not that interesting.
I don’t remember ever being asked to do a career interview for someone while in college, but apparently this is a popular thing now. Over the last six months I’ve been asked for one three times, most recently just last night. I’ve decided to just answer all the questions publicly. Feel free to use it for your classes, if you have additional questions let me know and I’ll update it.
Starting at 15, I had a variety of part time jobs, including fast food, video store clerk, camp counselor. Standard teenager stuff. I learned a few things from those jobs, including how shitty people could be to retail employees (and how not to be) and how much it sucks to toil in menial jobs for minimal pay. I struggled through my first job just long enough to afford to buy my first computer, which kind of put me on the path to where I am today.
Mostly what I wanted the computer for was to play games, but I also got really into playing MUDs. My first exploration into software development was scripting for MudMaster to play Medevia.
I went to school for Computer Science. I didn't learn too much relevant to software development as a practice, but I did learn a wide variety of smaller details that would occasionally become useful over the years. Most of the valuable dev experience I got in college was from side jobs, everything else was post-college on the job learning.
I feel like the philosophy courses I took in college, although not directly related to software development, were pretty foundational for me. A lot of learning how to think logically, how to evaluate ideas, how to communicate, and how to debate your position.
I also got a masters degree part time taking classes during my first job, but it was a waste, strongly recommend against that unless you’re going into research or academia.
I kind of lucked into my first job. The guy I had done my summer internship for introduced me to someone, and I basically waltzed through the interview. The job was terrible in a banal way, extremely corporate development at a place that was paralyzed by poor management and half-assed offshoring/onshoring. I didn’t learn much there except for how terrible a software development job could get.
The best thing that happened to me there was a round of layoffs plus voluntary departures caused by a merger. I was one of the few remaining people on a critical project for the merger and I had the opportunity to learn to take responsibility for a lot of different stuff.
I stumbled through a few other jobs over the next few years, mainly referred by friends who had left whatever company I was working for at the time, including a job at a startup. I worked really hard there and learned a lot of skills, but it was literally damaging to my health. I ended up leaving there before I could get a big payoff.
Once again I stumbled into a new job; I had been traveling overseas and met a friend who had moved to London, he introduced me to a recruiter at FAANG and got me an interview. The interview was the most stressful day of my life, but it got me a job.
I spent about 7 years doing all kinds of things, learning all kinds of stuff. A lot of it was Java dev work, but I also did Android, iOS, Dart, Go, and Python. I did ad tech, research, machine learning, site reliability eng, reporting, finally ending up on a cloud product. I was one of the most senior people on the team of about 8 people, but I managed to do mainly project work, until the lead left.
I had done lead work on previous teams, but for a smaller scope, and for less challenging projects. Over the next couple of years I learned the fine art of leading a small team, while still doing a fair bit of individual work myself. Over time, my eng manager gained scope over more teams and I had to take over some of his work, which kept me learning new skills.
I’m not a very ambitious guy, and I avoided a promotion to the next level to prevent having to do more of that kind of work (difference in pay is small, not worth the stress). Eventually though, the TL above me got promoted, and I was the best fit to replace them.
I’m the lead for a team of 30-ish engineers for several products at a large company. My job is mostly writing strategy docs, tracking project progress, evaluating technical design docs from engineers on the team, and representing the team outwards (to neighboring teams) and upwards (to leadership).
I no longer do much, if any, software development directly. Everything I need done is filtered through (at least) one other person before it gets built.
I attend a lot of meetings, and read a lot of documents. It’s a very different kind of challenge than earlier in my career. Here are the kinds of things I’m concerned about:
Do our current projects align with the strategic aim of the wider org (500+ people)? Does leadership know what we’re doing, and do they approve?
Will our projects be delivered on time, with sufficient quality, and fulfill the requirements of our customers? If not, what can we cut, who can we shuffle, to make the timeline work.
Do the eng managers have the proper understanding of upcoming work so they can staff appropriately?
Are the projects allocated to people appropriate for their career goals and capabilities? Have they been over allocated ‘shit work’ in the past and deserve special consideration for upcoming projects?
Is our product healthy in terms of SLO? Oncall load? Customer satisfaction?
Looking forward 1+ years, do we have a plan for where the technical direction of the product is going? Does it align with the product manager’s goals?
Sometimes it’s very frustrating, sometimes it’s rewarding. Compared to earlier in my career, it’s trading the tactical success of a feature being delivered, for the strategic success of the product. My achievements are measured over the course of a year or more, as opposed to a few months.
But I had gotten very complacent in my previous role, having mastered all the things I needed to succeed there. Work is uncomfortably exciting once again.
Challenges / Rewards
Earlier in my career, the challenges and rewards were very straightforward. We need a thing done, do the thing. Some things were harder to do than others. The rewards were respect from colleagues and satisfaction of fulfilling customer needs. And money.
The challenges now are very different, because most of the job is dealing with other people. You have to be assertive, but not domineering. Knowledgeable, but flexible to new ideas. Make sure leadership is in the loop, but don’t overwhelm their attention. Monitor your juniors, but don’t micromanage them. Rely on your subordinate TLs to own things, but stay in the loop to provide guidance.
I was going to say the rewards are less frequent, but I guess that’s not true. It’s rewarding for a junior to thank you for helping them with career guidance. To catch a critical error in a design doc early and save them a lot of time finding out the hard way. To present some aspect of technical expertise to a large group of people.
The reward that’s less frequent is the feel good aspect of launching something. That only happens once every six months or so now, because 12 different mini-projects need to wrap up to complete a major feature that it feels like I really contributed to.
My work no longer gives me the outlet I need for directly building things, so I mostly do work on the side. Over the last few years, that’s been in the web3 space; if you’re interested in the specifics, I’ve written about nearly everything I’ve done there in this Substack.
If you’re just reading this for fun, I hope you enjoyed it. If you want to use it for an assignment, let me know if you need any other questions answered.