After he bought a small stake in 37signals a few years back, Jeff Bezos gave some heady advice to their founders about building a successful business: “Find the things that won’t change in your business and invest heavily in those things.” He cited that Amazon would always focus on fast shipping and a large product inventory because no one is going to want slower shipping or less selection a few years from now. Those qualities don't go out of fashion with the times.
I think this advice rings even truer for programming. It seems like there is always a newer thing you should learn these days. Turn a blind eye from it and risk your own obsoleteness. What is it? Whatever it was, it just changed again.
But, these tools had been my dear friends for years. I'd built wonderful things with them. So, one day, I put my feet up on the sides of the treadmill and just watched the belt fly underneath me. I tip-toed my way onto steady ground and picked my friends up. I wasn't going anywhere without them.
At the same time, I began to write more. I wrote about code, about design, about business, about life---about anything I held dearly. While much of the programming world continued onto the next big thing without me, it was through writing that I remained surreptitiously connected to it.
Writing makes me value clarity and concision equally. Writing makes me think critically about how to name things (and as many of us know, that's one of the most difficult things to do in computer science). Writing makes me focus on consistency and style. These values are not only considered basic requirements of well-written prose, but they're also the basic requirements of good code too.
When I write, I spend most of my time editing. I re-read paragraphs again and again. I figure out what can be reduced, or better yet, removed. I edit mercilessly. It is an exhausting, yet strangely satisfying, exercise that is always worth the effort.
In the same sense, I refactor my code mercilessly. Most of the time I spend writing code is actually spent re-shaping it over and over again. It is, just the same, an exhausting, yet strangely satisfying, exercise that is always worth the effort.
Frameworks, architectures, and tools will change. But, no developer will want to read bloated, ambiguously-named and inconsistently-designed code a few years from now. Writing is the constant in programming that won't change anytime soon. It's what I invest heavily in.