|
Lets get started by talking about the hammer. It's one of the earliest human tools and something that people still constantly try to improve upon. So lets boil down what the function of the hammer is at its simplest form and figure out what its features should be and then we can decide what are good features and what are bad features. Then lets convert it to software and see if we can apply the lessons learned from the hammer exercise.
What is a hammer? The funny thing is that the hammer is just a way of transferring kinetic energy to an object. It is a lever with more mass at one end of it. When you say hammer to most people and this is the image they get.

That a carpenter's hammer and its a false assumption. We need to decide what the application we really want to do with the tool. You can't let the assumption of what the tool is decide it's features or even what type of tool it is. If you don't know what the users need the tool for you can't even start the design process. Otherwise you might end up with a hammer like this.
or this or even this .
They are all still hammers, but they all have different design specs. They all have different applications. I've been in to many meetings where we were told to design an e-mail tool or a Gigabit Ethernet hub or some other THING without any regard to what the end user REALLY needs the tool to do. Part of it is that no one likes to write up a Design Requirements document, part of it is everyone assumes that everyone else knows what they want and mean, part of it is the desire to avoid the months of meetings that some places require to get consensus on what users really want. In some cases they hear what the users want "We want a hammer" without looking into what the problem they are having, "We are trying to fit square pegs in round holes."
So lets set up a basic Design Requirements:
1) The hammer needs to be one handed for ease of use.
2) The hammer is intended to drive nails into wood.
Very simple, but it does get rid of 90% of the features that could have been designed; war-hammers, sledgehammers, ball-peen hammers, etc.
And you have an application that might not even need a hammer like we were told. Its possible that what people thought they needed was a hammer, but the best tool might be a something different.
Like a nail gun.
So when you start designing you should look into what you want the end result to be, not what you think is the best way to solve what they tell you they want.
|