After a decade, I STILL sometimes feel like I’ve barely figured out how to properly build software (not to mention software teams and organizations).
I stumbled into the software industry straight out of college. After a short detour at an unexciting manual testing job, I was referred by a friend to a local startup, which I joined as one of the first employees. My only programming experience at the time was: one game development class in high school, some numerical computation classes using Fortran in college, and a modicum of self-study.
I started out as a web developer, but as usually happens in small teams, would end up over the years getting recruited to do whatever was needed. I worked on:
our website, both backend and frontend
our desktop application on Mac, Windows, and Linux
technical support for users, helping them troubleshoot bugs
a few short-lived Android applications
software architecture and design
product design and prototyping
project management, release schedules, operations
creating internal documentation and references
writing and editing website and marketing copy
interviewing and other hiring tasks
onboarding, mentoring, and managing junior devs
cooking up events and meals for team outings
(The list could go on and on!)
Now, eleven years later, I'm in the CTO seat and still continuing to do whatever the company needs (such as, recently, spearheading a transition to a Shape Up-inspired product development process). Sometimes I worry about being too much of a generalist rather than a specialist, but I'm also glad for the broad and diverse set of experience in tech work so far. At the very least it hasn't been boring!
I feel like an entirely different person from that fresh graduate who walked into that first interview. It's gratifying to look back and realize, hey, I think my younger self would be proud of what I've been able to do so far — even if my present self sometimes has trouble feeling the same way.
This essay is part of a month-long series of 30 essays.