When a programmer writes a program, there are various stages generally starting with research and planning, coding, debugging and then going through the last two stages for a bit to get everything working fine. This is a good way of coding, and most programs work like this. Many commercial programs will also invite beta testers in either via a download on the internet or by an invitation. Beta testers are able to test more features in a larger program, and also let the programmer see how the program might be used.
Programmers don’t always think when the write programs though. They’ll fix one bug, but that might lead to another bug, and another, and another. Therefore, to ensure that the program is stable, the developer should go through checking every last bug, every last scenario.
Another method that is surprisingly useful for getting a program to work is to invite hackers to hack it. Later this week (Wednesday, if anyone’s interested) I am going to launch the beta of Friend+, a social network that I have coded in my spare time. Rather than invite people to test it out, I am going to send an e-mail to best hacker-friends and ask them to have a go at PHP/MySQL injection because I want to thoroughly test the site to destruction – though hopefully the security should prevent this.
Whilst it is all very good coding an application that works with no problems, it is still no use programming something that people don’t understand how to use. Therefore I recommend doing something that Mark Shuttleworth (the guy that came up with Ubuntu) recommended, and that is to have the development team sit in a room where they are not allowed to do anything but watch a group of people use their program. Because they are not able to help the users, it is therefore challenging them to create a complex but usable program. Programs should be interactive and appealing, so it is nice to have a little animation when there needs to be a little animation, but it should not tax the user or their computer in anyway.
The final thing to consider that really is vital is the system requirements for the program. It is no fun having to use a program that has a page long list of system requirements when all I really need to know is whether it will work, or not. A good example of this would be Google Chrome, because the requirement is simply Windows XP, Vista or 7. It doesn’t say that I need a Windows compatible pointing device – a very long winded of saying that I need a mouse, and I haven’t used a computer in years that doesn’t have a mouse. It also shouldn’t say I need a sound card, because that adds confusion. Every motherboard on the planet, almost, has some sort of in built sound card and frankly this can be assumed. Not everyone knows this, so may avoid your software because they don’t have a dedicated sound card. You should really only put the operating system as a requirement, and use the base requirement for that as your hardware requirement, though this need not be listed.
When the user is installing your program, they should be able to do the following:
- Continue to use their computer, hassle free
- Understand the process and not have to worry about where the program is going to install itself
- Not worry about the installer crashing as a result of software not being installed – the installer should install any software it, or the finished program, needs
Another niggle that I have about installing programs is when they decide to add a background to the process, covering up the rest of my screen. This is horribly nineties, and I frankly prefer the modern, Aero based designs that we have today.
Another consideration you may want to make about your program is how and whether you continue to support it. It really annoys me that when I go online and find a program that I have seen recommended somewhere that the most recent version was released five years ago and isn’t entirely compatiable with Windows 7. When a program is popular, it should be updated and supported if people want to use it. It is no fun using a program on a brand new computer that was designed ten years ago.
Ultimately, I suppose that I am getting at the fact that it would be nice if those kind programmers of ours would start making some decent programs that, quite simply, work. A bit like Apple products, I suppose.