Lately I've been using a Genealogy program to fill in the details of our family tree. For some time my Uncle has been diligently researching our roots and has painstakingly drawn out the chart by hand. Unfortunately as he adds new people and updates the information he has about existing family members, he has to start again and lay out each and every person. With just short of four hundred people to keep track of, it's a mammoth task - and a mammoth chart, around six metres long.
So for his 70th birthday I committed to putting all the information into a proper database so that it could be charted and updated more easily. The software in question is regarded as one of the best in the field. Yet, as a developer, it leaves me with that familiar itch; that feeling of "I could do a lot better than this".
The problem is that software like this is sufficiently complex that writing it from scratch to address an existing market is very hard to justify. The open source acolytes don't have the stamina to solve the problem for a relatively small audience and the commercial developers don't want to take the financial risk. As a consequence, there are many applications that are on version 6, 7, 8 and beyond that have evolved into sophisticated beasts that are loved by their users at the same time as being significantly flawed.
The flaws in this particular application range from simple little things to deep rooted architectural problems. At the simple end there are dialogs for entering a single value that don't put the focus on the input box. At the architectural end there is a database that is used to generate charts that almost inevitably need adjusting and moving by hand to tidy up the layout. Yet the charts are divorced from the database when they are generated, so adding or updating a record means that the chart has to be generated again and the painful process of fixing the layout has to be repeated. There's a help system that is so intrusive that it gets completely ignored - and when it is referred to it falls into the trap of describing what dialogs do rather than what they mean and how they can help the user achieve a task. There are technical bugs, such as an undo button in the charting application that doesn't undo all of the user's actions, skipping certain functions and leaving a mess on screen. Then there are signs of an application that has evolved too far, with different activities using different mechanisms to set up and control the software's output. The same or similar settings have to be applied in many different places in an attempt to get consistent reports.
Don't get me wrong - the software is clever and allows the job to be done. However, it could be done so much better with a clean and consistent user interface, a better integrated and more efficient database and a carefully considered design for the way charts and reports are generated. None of these things are too difficult - though many developers have some difficulty with user interface design for humans, and most developers find it hard to step back from a 'solved problem' and come up with a clean slate design that doesn't fall into the same architectural traps.
It would be wonderful to have the free time and finances to sit down and write a better application. Realistically though, it's not going to happen, so I'll keep on using this software whilst trying to avoid similar mistakes when developing code for my clients.
Wednesday, July 25, 2007
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment