Those Who Can Do
I have been involved in developing software applications for more years than I care to remember and here are a few thoughts:
- You are only a naive user once. Watch a new person try to use your software application and learn from what they can't easily do. Once you are trained, anything is intuitive.
- You don't build new software the way you build a house - those that try to make it into a linear process with prescriptive completed outputs at every stage are doomed to failure - even if the project plan looks pretty. There is always a non-deterministic aspect to any complex system. Agile approaches, adaptive planning and iterative development is needed.
- That said, you should always seek to reuse building blocks and design the components of the system with this in mind. If you have to reinvent the wheel each time, you are doing something wrong.
- Don't expose too many end users to pre-alpha software (apart from those sacrificial virgins mentioned in 1) - they will not be able to see past the first bug/crash/wobbly and will not thank you for an early look at anything short of perfection.
- So don't let core developers design a user interface. Their perspective is clouded by what is going on deep in the bowels of the system. A business analyst that has empathy with and understanding of the user requirements should always be part of the team and in small projects is more important than a 'project manager'. They can fein selective amnesia to immitate 1 and 4.
- Everyone is qualified to criticize and say what’s wrong with a system; it’s a lot harder to contribute innovative ideas and define what’s right!