The Tao, and Web Apps

06/17/09 Joe

One of my favorite books is the Tao Te Ching. I read it first back in college when we all cast about for new ideas, and new schools of thinking (I still cast about quite a bit!) I have it now on audiobook, and I listen to it often. It’s a great brainstorming tool, and it really opens up your mind to alternate possibilities. Every time I listen to it, depending on where my mind was before starting, I take away something different. This last time I started out by thinking “how does the Tao apply to Apps?” -Here are a few takeaways.

“I let go of the law, and people become honest.”
Such a smart thing to say… And true of app development too. The less rules you give people, the more they can be inventive within the app. The less features they really need (because features are just a reaction to rules)

“He considers those who point out his faults as his most benevolent teachers.”
It’s easy to react to feature requests and complaints with malice. We work so hard on these apps, and spend our waking nights thinking about how to make them better. “Who is this middle-aged schmuck who thinks he knows how to do my job better than me?”

It’s wrong thinking. We should take comfort in the fact that these are their only needs, and that we must have satisfied so many more of the others that they took the time to talk with us about the ones (in their opinion) that we missed. It’s a tremendous compliment.

“He thinks of his enemy as the shadow he himself casts.”
The app market is thick. We tend to react quite sharply when we see new apps in our same genre. Comments, and critiques fly around pretty fast. But these apps exist along with our apps, and because of our apps. You can’t have a coin with a tails, but no heads. We need these apps to drive us forward, to inspire us, to react against.

“He teaches without teaching so the people will have nothing to learn.”
The goal these days is to make apps that don’t require a manual. It’s a response to the crufty mess that companies like Microsoft have heaped onto us for years. But the simple apps that are so simple there is nothing left to learn might be short lived.

At Paste we choose to believe that apps should have a learning curve. Every function does not have to be immediately apparent, but rather the app should “unfold” its hidden features as you use the app. You should not need to know everything about the app on day one to use it, nor should you be out of new things to do with the app on day 100.

“Confront the difficult while it is still easy”
The best time to fix a bug is before it is one… Having simple and sturdy construction in the beginning is the greatest secret to having less bugs later. It’s much easier to fix it before it breaks.

“Think of the small as large”
“God is in the details” is thrown about like tissue paper these days. But lets take a step back and think about what it really means. These many details when taken in sum -become your app. There’s a trend these days to say “good enough” -but there is a fine line between good enough, and not good. Certain personality types benefit from permission to leave loose ends. Otherwise things would never get done… But the majority of us ought to be striving for greatness in all details. It’s important not to rely on self-help books, or quotes to give us excuses not to work hard.

“Accomplish the great task by a series of small acts”
Here’s the best one… We know it, but most of us fail to act on it. Pick one feature, pick one page, pick one paragraph. Make it better. There’s nothing easier than completing a small task, but you’ll be shocked at how much better things get on your app if you can just make small things better every day. Every day.

I take great inspiration form Apple’s latest effort with Snow Leopard. They’ll obviously make less money with this release than with previous releases. But because of their efforts to optimize, and improve, they’ll be the recipients of a better, more reliable, and probably simpler system to work within. They’ll be happier, more productive, and faster in the future. The revenue they lose is only delayed, and will most likely be much greater because of this detour towards “better.” All these very small things are turning into one big great OS.

“Put things in order before they exist.”
The best time to make revisions is before you write any code, or design any mocks. Use your imagination, talk a lot, -think. You will never regret a single day you spend planning your app before you build it. We have avoided thousands of hours of work towards apps, and features we wouldn’t have been proud of by just planning more… Planning saves time, – it doesn’t increase it.

“Forcing a project to completion, you ruin what was almost ripe.
Therefore the master takes action by letting things take their course.”
This is not an excuse to procrastinate. But it is an excuse to take the time to get it right. There is a lot of pressure to push apps out the door, -by your clients, by yourself, by your bosses, and coworkers. But be resilient to the pressure where you are able. We’ve scrapped entire versions of our apps because “they didn’t feel right.” I don’t regret a single hour we spent working on the lost versions, and not releasing them is one of my proudest decisions. We were teaching ourselves how to make a better app. And you don’t have to do that in front of an audience…

“What he desires is nondesire”
Are you trying to finish your app? Or are you trying to have nothing left to add to it? Like most of the Tao, its semantics, but it makes you think more deeply about your actual intent. Trying to “get done” is one thing, but “being finished” just feels different when you really contemplate it. While we plan and debate our apps exhaustively before starting, – we let the apps talk to us about what still needs done, and what features can wait. When an app feels useful, and is not begging for polish in any areas that you use frequently, – when you have no desires left within the app that keep nagging at you, – it just might be time to launch…