A curiosity journal of math, physics, programming, astronomy, and more.

Talk on software development as a career

Recently I discussed software engineering as a career with a few high school juniors and seniors. I worked from a loose visual outline, and I drew on the whiteboard quite a bit, so here's my synthesis of the two, with a few added drawings. More details below the sketchnotes.

Sketchnotes on talk about software engineering career

(Sketchnotes drawn in Excalidraw in Obsidian on an iPad.)

Originally I planned to walk through the various jobs I've held and compare them to higher and higher parts of the knowledge funnel, moving from junior-level "code" up to principal-level "mystery", but it struck even me as dry and not very helpful for guiding career decisions, so I pivoted to talk more about turning ambiguous ideas into concrete realities. To illustrate, I started with an activity. I paired up the kids and asked teams to design an app that would help people eat healthier. Remembering my own high school class, I expected they'd need elaboration or cajoling, but I was pleasantly surprised how readily they jumped into the task without further instruction. Digital natives, I guess.

After about five minutes each team described their idea. They were all different, though they had the same underlying goal. As a software engineer, my job is often to surface those kinds of differences in how stakeholders, designers, and devs imagine a product or interface.

When I was fresh out of college, I noticed how different the working world was from school. Rather than being given closed-ended problems and having to find the right answer, I was given open-ended problems which often required asking more questions. And there were no right answers. Instead, every choice had tradeoffs. My job is frequently to identify those tradeoffs and make either a recommendation or a decision.

I'm frequently an intermediary between parties, translating concepts and language between stakeholders, other developers, the computer, and (now) AI. Contrary to stereotypes of computer programmers, that role requires a lot of communication skills.

I concluded with some of my personal experiences. I work remotely, and the kids were old enough to remember COVID and doing school from home, so they had context for how WFH can be lonely but also less distracting. Personally, I prefer working from home. I can live almost anywhere (thanks now to Starlink), I'm paid much more than I was when I worked for a local software agency (thanks to having more employment options), and I get to spend way more time with my wife, kids, and the house and property that are my favorite place in the world.

I also explained some of the differences between big companies and smaller startups. Small organizations provide more opportunity to make an impact on the business, but huge FAANG corporations provide more opportunity to make an impact on the world. The compensation is different too. Startups sometimes offer equity to make up for less salary, but beyond a few famous examples, not many people get rich off startup equity, though it can occasionally provide a moderate windfall.

Job-hopping is common in the software industry. People often struggle to get promotions and raises without changing jobs every couple of years, but my experience is mixed. I've had jobs where I got raises and promotions, but also jobs where I didn't. My bigger gripe is having to change jobs to continue growing professionally, regardless of promotions or pay. It's very easy to get pigeon-holed. The better I've been at a job, the harder it's been for the business to replace me in a given role. Sometimes it's easier to jump into a new role at a new job than to convince your boss to take a gamble on your capabilities.

One student asked what "bad stories" I had. Overall my career has been reasonably positive, and I don't really have horror stories. Certainly there are experiences I didn't prefer at the time, but those experiences were also stepping stones to where I am now, which is a stepping stone to wherever I'll be in the future. I've had bosses I didn't like and coworkers who annoyed me, but the incidents were all fairly forgettable, and so far I'm free of tales about dropped production databases, unsecured S3 buckets, and expectations of working a 996 schedule.