Recently I submitted my post How to make a better analog watch to Hacker News. My idea was thwarted, of course (I got the feeling I didn’t describe the idea very well, though). But one comment really made me ponder how to break out of the this-is-the-way-it-is-done thinking.
What are you doing all the time?
First question you have to ask yourself: “Is there something I do very often?” Something in this context can be pretty much anything: Look up words online, visit a certain site for news, share photos with your friends, buy groceries, walk the dog, look up the time. You get the idea.
In my case it was looking up the time. I do that all day long pretty much. Chances are you do, too. Realizing what it actually is you do all the time is the hard part. Everybody is looking up the time, all the time. It’s hard to realize you do something that often because, well, you do it so often. We tend to forget the obvious.
How many steps from A to B?
So now that you have identified something you do often/spend much time on. Now let’s see what a person who writes code does. ”Write code, duh.” I hear you say. And we are right on topic.
The prime task of a programmer is to break a problem down to its atomic parts. Computers are really dang stupid. “Computer, greet the world.” doesn’t work. You have to tell it exactly what to do. Tell it exactly what to say (“Hello World”), when to say it (“as soon as I run this program”) and where to say it (“the prompt”).
Reading an analog watch doesn’t happen just like that. We might do it as effectively as we do because we have a lot of training. But that neither says anything about how many steps it takes nor about how many of them are necessary. Which leads us to the next question.
Can I skip some of the steps?
Well can you? Why do I have to enter the project I’m working on every time I create a ticket in my time tracker? Why do I need to give up my email if I want to register on a site? Why does my word processor ask me if I want to save this empty document?
If you can’t give a good answer right on the spot you probably found a skippable step. All that’s left is to figure out how to skip it. Don’t get me wrong, this probably is the most complicated part but it is a concrete problem. It’s so much easier to work on a problem if you know what the problem is. And after all us coders are used to solving problems, right?
How is this a product?
Let’s stay in the software context. What is a program, a service, a product? It’s the solution to a problem/need/want (many) people have. Simply put, a good product makes our life simpler and/or improves it in some way. It’s eliminating the steps nobody wants to or at least shouldn’t need to take.
There were book shops before Amazon, auction houses before eBay and computers before Apple. They all took a pretty simple concept and improved it in some way. All they did was to eliminate a few skippable steps.