Effective Software Development or Policing Of Monkeys
Jeff Atwood is talking about why background compilation is part of a culture of code monkeys and that we should accept it and get on with the program:
One of the problems with the army of monkeys approach that everyone seems to ignore is that treating someone like a monkey will get you monkey-like responses. We have a problem of escelating complexity in software, and trying to solve it by serregating the problems to the "Smart Dudes" and the "Monkeys" is not really helping. We are not writing Hello World applications any more.
I had the chance to try to port a monkey's code from one langauge to the other, and I couldn't make sense of it. You can imagine at what stage I had to throw up my hands and seek that monkey out to have it explain to me what the hell is going on in the code. It was 2 months old code, and the monkey couldn't do it. The magic numbers in the code were what the monkey was told to write, the logic constructs in the code were what the monkey was told to write. The bugs were the monkey's own fault, I assume, but it may very well be the case that the monkey was instructed to put them in as well.
Trying to get a good product out of an army of monkeys requires constant policing, lest they do something stupid. Software is such a complex beast that have a monkey anywhere in the process will put a serious risk to the project at large. Some of the stuff that I have seen:
- Using a public static bool g_IsUserAuthenticated;
- Subscribing each page to a global & static event handler.
- String concentration for query building (using the safeForSQL() method, of course)
- The single user only web applications
- For more references, check the Daily WTF
Each of those share a single trait, this is a single stupid thing that had a drastic affect on the entire application.
In the case of the static event handler, it took about two days to see the effects properly, at which point the application crushed with OOM errors. That was fun to find out.
Armies of monkeys simply doesn't scale, a monkey can't handle complexity well, so you end up dumbing the environment to the level of the monkey, therefor, you are reducing your ability to make any sort of change and maintainability is a nightmare.
So, Jeff, I do agree with you that there is this cult of monkeys, I do not agree that we should agree to this.
Comments
Sorry, i meant WLW, not WMW :D<br />Krzysztof Koźmic
"treating someone like a monkey will get you monkey-like responses."
No coder is a monkey. We need to get better at believing in each other and cultivating the inner drive of everyone.
Comment preview