A reoccuring mistake I see (and make) on a regular basis is failing to utilize existing technology the way it was designed. Of course there are creative innovations built on existing platforms by bootstrapping never before conceived applications. But for every one of these there are thousands of garbage in, garbage out scenarios. It's probably still a fair trade, but recognizing a failed scenario quickly is a sign of expertise.
Most recently an estimation program I have worked with a little was sputtering nonsense outputs. After a couple of days of pulling our hair out we discovered the inputs were junk (good job Paul). Imagine this on a global scale, where interfaces expect specific data formats. How much of our time and energy is spent "bunny chasing" compared to new design efforts. Sometimes it is beyond the user to fathom the full capability and assumptions for an application. This is where simple yet comprehensive documentation comes into play, or the ability to contact the software experts directly (Twitter, email).
At the first level of documentation, describe what and how your software does something. Users aren't mind readers, and even you are likely to forget the nuances of a large application months or years later. As the complexity of any application increases, the potential for hard to find bugs creeps up as well. The more internal states your application can potentially be in, the greater the chance that you haven't tested them all.
Along Come Alpha & Beta Testers
I can't overemphasize enough the importance of external testing. Just yesterday I caught Savendar asking for user feedback on reddit. Savendar had developed a coupon and deal search tool localized to your area. He got a bunch of great feedback and recognized areas for immediate change. Simply put, as a developer we are working and thinking most about functionality, and less about first impressions and assumptions of users. Early testing helps fill in this design gap, and probably gets a couple of testers excited about your offerring. I know when I test something, and make a suggestion that's instantly implemented I get a happy feeling, especially when it helps that product or business take off.
We need to satisfy our creative itches by tweaking functionality and layering (Internet) applications. We would save time by balancing this experimental activity with knowledge of application breaking points.
Related articles by Zemanta
- Advantages of Agile Software Development for Testers (agile-software-development.com)
- What Do Testers Hate About Testing (slideshare.net)