I have thought about this before. And there are a few issues I have with programming.

What Ryan said is definitely one of them. The fact that it's never done. No feature, no product, no project, no codebase is truly done. Assuming it has users that is (and that includes having a single user which is you). If the code has no users, then it is abandoned. Yet not done.

The other issue I have with web development and programming in general is that there is no perfection to be had. Few years ago, I was reading a book about pizza (American Pie was the title I think) and towards the end a pizzaiolo describes the experience of making 100 pies of pizza in the same kitchen. Then reveling in the fact that he has made the perfect pie of pizza for his 101st.

I distinctly recall sitting back thinking to myself "I will never have that type of satisfaction in my profession". There are no 100 programs you can write (or N years of experience under your belt) after which you will be write programs, sit back and think 'now that is a perfect program'. Followed by a chef's kiss*.

I used to eat at a pizza place in San Francisco whose motto was 'Respect the Craft'. It was printed on the pizza boxes, the owner even had it tattooed on his arms I think. We use this word 'craft' with writing software too. But it is not a craft that one can master in the same way one can master bread making or woodworking or cheese making or any number of things in the analog world. The digital equivalent is different.

And last issue I have with programming is time unpredictability. For example I know if I spend an hour writing I will have something to publish and share at the end. There is satisfaction in that. This is not true for programming. Especially debugging. We can't predict how long something will take most of the time. (And breaking it up into several different time blocks across multiple days is not always an option. You need that continuity to really make progress.)

[If it's never done and perfection is not the aim then where should we get our satisfaction from? [Or should we abandon such pursuits and accept the Buddhist truth that unsatisfactoriness is pervasive and that life is suffering (cue 'I can't get to satisfaction')]

I think there are ways to get satisfaction from programming and creating software, albeit slightly indirectly. Not one but two ways.

One of them is teaching.

The other is entrepreneurship.

When I hear respect the craft, I think of people like Ryan Bates from 10 years ago and Chris Oliver of GoRails and many many others. I can't help but be inspired to give back, to pay it forward. Join me.

I bought a new domain (backtorails.com) a few weeks ago on a whim. I see Ryan Bates started]


*Though I did learn to make my version of the perfect pie of pizza since then. And there is satisfaction in that!