Sunday, September 15, 2013

Where does design start?

I'm sorry to have to break it to all you software developers out here, but people do not get up in the morning and say "I need a computer-based solution to solve my business problem".

Chop the first bit and you are left with the bit that matters. 

"I need to solve my business problem."

Yes, we may use a computer-based solution to help in the process, but that is not the whole solution. There are other steps in every solution's set of tasks that rely on steps executed offline.

People don't go online to buy a book. They go online to find something to read. People don't use iTunes to download music. They use iTunes to find something they want to listen to. Buying the book and downloading the music is how they reach their goals. The technology is an enabler, and enablers work best when that enablement is as frictionless as possible. 

Good design does that.

So, where am I going with this. I try to look at every problem first as a design problem. Even though I work in software development, I don't see software as the solution. It never is. It is an enabler to the solution. 

I've worked on so many software projects where the business requirements are often based on what they think they need based on just moving their offline process online and not even leveraging the power of the online tool to improve the process itself. And that is as far as they can see. It is like saying "I want the same as I have now but I want it to suck less!" They rarely actually look at the original problem the system they are replacing was supposed to solve. 

In some cases they may already have software once solved a problem years ago when it was first launched, but over time the problems that needed to be solved became more complex and the software no longer covered all of the bases. The answer for many businesses is to either add more features to the existing mess, or just use the bits of that mess that still work at a pinch with a bit of work-arounds thrown in, and create another system to fix the bits that don't work anymore.

In both cases the thinking is to use software processes and the problem is solved. The software will enable a solution, yes, but good initial design before the developer even starts coding can make the whole thing frictionless.

Good design does that.