Image placeholder:? A mouse has been literally drawn into a logic diagram |
Here's how programming projects are supposed to work:
- The client tells the developers what the program should be able to do
- The developers scour through the client's words for hints of how the program must work internally
- The developers make a plan of what they want to program
- The developers run it past the client and explain as best they can what the program will be like
- The client corrects the design (which simply means he or she clarifies what they said previously) and never speaks to the developers again
- The developers divide the plan up logically to maximize the number of people working at all points in time
- The developers execute the plan and finish the program with time to spare before the deadline
- The developers deliver the program to the client
- The client delivers the product to the end users (people like you)
- The users get exactly the program they want and are happy
- The client tells the developers that they "need" a program that does something or another and demand that it use a certain algorithm
- The developers plan out the program and realize that the algorithm the client suggested is only going to hider the way the program works.
- The developers send a delegation to show the client the plan, and start programming to save time
- The delegation explains the plan to the client, and why the algorithm should be avoided. The client does not understand the plan and demands to see a prototype
- The development team largely stops what they're doing to produce the prototype
- The delegation shows the client the prototype. The client takes back several things he said were necessary with criteria like "it just doesn't loook pretty, even if it would be easier to use", and remains unrelentless on the use of the algorithm
- The developers scrap much of their work and start over
- The client demands to know why the plan's dates aren't being met
- The delegation stops work on the program to meet again with the client and explain
- The client corrects something said before
- More work is scrapped
- The client forgets the meeting ever happened
- Repeat steps 8 through 12 as many times as fate deems fit
- The client's boss yells at the client for not having brought him the program in time
- The client threatens the developers in whatever ways their contract doesn't cover
- The developers rev up the speed, forsaking bug testing, and anything else they can, to avoid letting the threats come to fruitition
- The developers deliver the program to the client
- The client delivers the product to the end users (people like you)
- The end users start encountering bugs, which they ask the person who gave them the program about
- The client hopes his boss won't notice and charges at the developers, who are probably hospitalized by this point from the effort of the last crunch, demanding the bugs fixed by an arbitrarily near date
- The developers work furiously from their "hospital beds" to fix those, and just those, bugs the client told them about, without checking the rest of the program to make it in time
- The client proudly announces a "patch", "fix", "update", or "upgrade" (depending on which will impress his boss the most) and distributes it among the end users
- Repeat steps 19 through 22 as many times as fate deems fit
And the moral of the story? If the software you got sucks, it was probably comissioned by an ass.