Software development works like any other industry. Every aspect of the process can and should be seen according to a balance between cost and benefit. Even in the case of free software, one’s time still has value. Whether one’s worried about losing company money or simply free time, it’s important to ensure that the software development process is streamlined as much as possible.
However, one huge mistake many developers make comes in the form of testing. It’s easy to assume one’s work is perfect as long as it works for everyone else in the team. If one has a solid development plan, and no immediate problems come up when the developers themselves are using the new software, many people will begin to wonder if a real testing phase might just be throwing time and money away. It’s actually the exact opposite of that initial impression. The testing phase might well be among the absolute most important aspects of software development.
One reason testing is so important comes from the nature of developers. A team that’s been spending every minute of their work day with a particular piece of software often doesn’t even notice the quirks of the system anymore. At some point they simply might unconsciously learn not to perform certain actions which might crash the software or create unpredictable results. Because of this, they won’t actually notice those bugs when they quickly look it over. It’s only when people who haven’t participated in the development try it, or when the developers put together a testing cycle centered around using it like a new user, that they’ll begin to get past the habits which have developed during the production period.
As an example, consider a program which contains text boxes with multiple means of selection. The design might call for a person to have a choice between using a mouse to select items or a keyboard to find the desired item. The developers might find it faster to use the mouse and simply use that method every time they start up the program. It’s only when a person outside the team tries it, or when they use proper testing methodology to ensure every feature works, that it might come out that keyboard entry would crash the program after a certain amount of time. It’s just an isolated example, but it can easily be extrapolated into hundreds or even thousands of potential blind spots.
In the end, one simply needs to test within computer science for the same reason people do in experimental science. The human mind is quite good at overlooking things when we don’t create strict testing methodology to cover for our blind spots. While such strict methodology might seem tedious or overly costly at first, in the long term it will save everyone a great deal of time, effort and money.