The Prescient Joel on Software

Ideas I read that came true in my career

A poster on Hacker News, the discussion forum run by startup accelerator Y Combinator, writes:

Even though some of the technologies discussed are hillariously obsolete, nearly everything published on joelonsoftware.com 10+ years ago remains surprisingly relevant.

I agree. I’m struck by how often I grasp something about tech that was foreshadowed in my readings of Joel on Software over a decade ago.

Back then, software in my introductory Computer Science class meant implementing a linked list in Java. However, software was something else entirely in the hands of Joel Spolsky and Paul Graham, who wrote like Malcolm Gladwell: sprinkling insights ranging from the technical to the sociological in highly readable narratives.

Some prescient concepts I came across on Joel on Software:

Products or Services?

Set Your Priorities:

If you ever find yourself implementing a feature simply because it has been promised to a customer, you’re drifting over to the land of consultingware and custom development, which is a fine world to operate in if that’s what you like, but it just doesn’t have the profit potential of off-the-shelf commercial software…The path to being Bill Gates, this is not.

As I’ve discovered in my career, specialized business deals can be a massive drag on an organization. Teams grappling with issues in these deals can even overlook that this structural friction — acting as a consulting firm when they’re not set up to work that way — is the source of the problem. I summed up my epiphany about this:

In tech companies, sales and bizdev will push the software team to keep adding features and options, which eventually ruin the product experience. Good leaders will enable the product team to decline such requests when they don’t make holistic sense. At some point the test of whether you’re a product company rather than a services firm is that you can sell the same thing to more people instead of selling something different each time. (The highest art of a good product manager is to come up with plans and methods that further product goals and business goals simultaneously.)

Commoditize Your Complements

Strategy Letter V:

Smart companies try to commoditize their products’ complements… When IBM licensed the operating system PC-DOS from Microsoft, Microsoft was very careful not to sell an exclusive license. This made it possible for Microsoft to license the same thing to Compaq and the other hundreds of OEMs who had legally cloned the IBM PC using IBM’s own documentation. Microsoft’s goal was to commoditize the PC market.

This is somewhat abstract, but if you look at business ecosystems you can see this phenomenon in action.

Consider content marketing. Companies that sell clothes publish articles about fashion. Companies that sell mailing list software publish tips for achieving marketing results. These writings and media could have been products in themselves, and compete directly with magazines or courses sold on the same topics, but as complements to the core products they are offered for free.

Code Shelf Life

Things You Should Never Do, Part I:

The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they’ve been fixed… When you throw away code and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work. You are throwing away your market leadership.

I haven’t been involved with as critical a decision Joel describes, which is to completely stop working on a company’s main product to rewrite it. However, I have often observed the opposite: the momentum of software once it is written. It’s interesting to see something I developed on a website still live and kicking years later. That’s the thing about software—it just keeps running.

Recently I’ve realized something deeper: beyond code, the initial design of software casts a shadow over later revisions. When a program or feature is first made, assumptions get baked in that are difficult for later designers and developers to completely revamp.

Metaphorical organisms have metaphorical DNA.

Microeconomics Everywhere

Strategy Letter V:

When I was in college I took two intro economics courses: macroeconomics and microeconomics. Macro was full of theories like “low unemployment causes inflation” that never quite stood up to reality. But the micro stuff was both cool and useful.

In my Macroeconomics courses, I saw graphs demonstrating that in the long run, everything ends up great. (As Keynes famously noted, “In the long run, we are all dead.”) When it comes to practical concepts in daily life, microeconomics has been more useful. Consider “externalities”, which can describe pollution, or “price elasticity”, which describes consumer behavior, or terms like “marginal cost” and “diminishing returns” which easily transcend equations to be applicable in many situations.

Fewer Options Make Better UX

Choices:

It has been said that design is the art of making choices… When you are designing, and you try to abdicate your responsibility by forcing the user to decide something, you’re probably not doing your job. Someone else will make an easier program that accomplishes the same task with less intrusions, and most users will love it.

Absolutely true. This is especially important these days for growth hacking and mobile experiences, where lowering the friction in signing up for an app or using a feature can make a decisive difference to your business.

Incidentally, I learned valuable UX concepts from a Book Reviewed by Joel, ‘About Face’ by Alan Cooper.

Management As Service

The Development Abstraction Layer:

The level a programmer works at (say, Emacs) is too abstract to support a business. Developers working at the developer abstraction layer need an implementation layer — an organization that takes their code and turns it into products. Dolly Parton, working at the “singing a nice song” layer, needs a huge implementation layer too, to make the records and book the concert halls and take the tickets and set up the audio gear and promote the records and collect the royalties.

Gaining credibility as a manager requires far more than the job title. You need to serve the needs of your team so they can depend on you. When I understood this, I wrote:

While it is easy to be dismissive of middle managers, ideal middle management acts as a sponge that soaks up stress between groups. An organization with only strategic leadership and implementation staff is bound for drama.

Michael Lopp of Rands in Repose fame captures these issues well.

Spring

Spring in Cambridge:

Spring conjures up a funny set of associations for me. I think about the fact that it’s still daylight when you go outside after dinner. I think about living in a nice old messy house with real wood floors, lots and lots of books, and flowers in the garden. I think about two of my favorite places in the spring, Berkeley and Boston, cities that revolve around learning and education and the unbridled enthusiasm of youth and the belief that anything is possible.

After a lengthy and sometimes grim winter, Spring in New England is beautiful:

You can get in touch with me on Twitter, LinkedIn or firasd at gmail