Of course he did. He was his own customer, and all details of the specification were very clearly defined to him as a developer. He also was his own customer again when it came to accept the software, and he had no problem with errors he may have introduced himself. Repeating myself: the problem is the customer, since the customer never delivers all information required to design the proper system, and is never willing to pay for the proper implementation. Your son didn't have either of the problems.
I'm working in the field for more than seven years now. Here's what I found plagues the industry:
- Customers almost never allocate time for properly identifying the needs they have, and their management at all levels is not really informed about how things are working in their company. The bigger the company, the more of an issue this is.
- Usually management guys specify what they think is necessary to the supplier, and end-users don't even get a chance to review what these management guys are saying. In one project I was involved, this led to implementing a single, easy to change feature in complete accordance to the requirements, but also in a way which rendered the final application useless. Completely useless, not partially useless. After this, the customer decided to drop the entire project, just for this feature, rather than pay a tiny additional development task to change this feature. Leaving the end-users where they were at the beginning, after heavily investing into software.
- Buyers of custom-developed software cannot get it into their heads that software is a complex product, and should be handled as such. They happily invest hundreds of thousands of dollars (or millions) in hardware, advertising or product development, for that matter, but don't admit that software needs an as careful and thorough analysis, design and specification as any other product.
- Customers cannot make up their mind. It happened to me that based on customer request we had to implement, then take out, then put in again, then take out again, then again put it in again and so on a feature in a project which only lasted four months and took three people, including the analysis and design.
- Customers always know better. No manager of a car building company would dare to say he knows more about building a car than a specialized, highly trained engineer (unless he's an engineer himself, which is rare). When it comes to software, however, any customer representative, be it a secretary or a doorkeeper, knows better than the engineers called in to do the job. So these engineers often end up implementing what they know is crap, but they cannot do otherwise since this is what they're asked for. They will only get paid for crap, not for a proper solution. |