I’ve been thinking a lot lately about why and how I chose to be a programmer. In doing so, I discovered an interesting fact: as of next week, I will have been writing software for more than half of my life. That actually makes figuring out the original decision process somewhat difficult, because honestly I don’t have too many memories that predate being a programmer.
Perhaps this sheer volume of time illustrates rather poignantly how great programming is. When I first started programming, I was 10 (let’s not count writing HTML and copying and pasting Perl scripts around from a few years prior to that, since that only barely counts as programming). Within several months, I had released my first open source project with some 20,000 lines of code for the world to see.
Now granted, I’m sure that was 20,000 ugly lines of code. But it worked, and felt magical. Where else can a child create something with as much intrinsic value as a full-fledged bulletin board in under a year with no prior experience, and no mentors or teachers except the open wild internet, and then have people make use of it to boot?
Fast forward a decade and the mystique persists. A rough count suggests I’ve personally written and shipped several hundred thousand lines of code in my life, and written a hundred thousand more that’s never seen the light of day. More interesting than lines of code, though, is that software I’ve directly written has helped people capture tens of millions of dollars of wealth. It’s been run on hundreds of millions of computers. Some of it has been invoked hundreds of billions of times.
To put this in perspective, if I had chosen instead to be a lawyer, or doctor, or some other “accredited” profession, I very likely would’ve helped a grand total of zero people in my career thus far, and couldn’t for another five or so years given that I (likely) wouldn’t even be in law or med school yet.
What intrigues me most about programming is the ability to work collaboratively, yet achieve things individually. This is fun because individually you can punch out a simple web app in a weekend given a well-defined idea of what you’re building, and then grow it to the next level as a team. Perhaps more importantly, though, the ability to work individually allows you to practice and iterate at a higher level than professions that revolve around collaboration.
Stripe co-founder Patrick Collison said it well:
If the same person is designing and implementing, the feedback cycle takes place within that person’s head. Even if product managers have equally good ideas, they’re likely not able to experiment with as many of them.
I think this is an oft-understated aspect of programming, and not just in the context of product managers and engineers. People like to debate whether programming will become an intrinsic skill like math or language, or if programmers will continue to be their own profession. Arguably as more and more industries depend on data-driven decision making, from science to marketing to finance, a specialist who also knows how to write code will simply be able to practice more efficiently – and therefore get better at their specialty – than one who doesn’t.
When you think of it that way, you could argue that “being a programmer” doesn’t really exist, outside of maybe research. Writing the code is the easy part. I’d say code flows from my brain more fluently than English does. Laying out data, organizing code, and writing sequential logic statements is just something I do, like washing dishes or riding a bike. My actual job is building products that help people get ahead. That’s the hard part: understanding requirements, determining what people need and want, and taking it from vague idea to production.
But the programming half of it sure is fun. And in writing this, I hope that maybe I can inspire someone who has considered learning to code to get out there and do it, especially in a market that’s begging for it. Start writing code, open source it, and don’t be afraid to make mistakes along the way. If you need any help, get in touch.