“And yet, as Max points out in his original article, the adoption rate of Bugzilla is growing, and it’s actively used today on many of the largest and most important open source projects in the world.”
I don’t understand what point you’re trying to make here. Just because something is “selling” well (today) doesn’t mean that trend will continue, especially not if development is becoming mired down. Would you propose they just ignore the state of the codebase until such time as people start uninstalling it and it has such a negative buzz that people are paying good money to non-free vendors just to avoid using it? At that point, add a few years to rewrite (pulled that LOE straight from my nether-regions), and the rewrite is likely to hit an established user base of approximately 0 customers.
Seems like a gross waste of product momentum.
This isn’t a wholly novel situation. I’m sure you’ve seen rotting application infrastructure before. Think back: of the applications you’ve seen with the rotting infrastructure, did those who addressed the infrastructure proactively end up better or worse in the marketplace than those who waited until the rot was so thorough they were losing business? I’ve seen both, and I haven’t ever see the latter turn out anything but disastrous.
The side question is: who really knows when the infrastructure is bad? A valid question, and engineers do tend to over-represent the cruftiness of the codebase they work on each day (just like most people tend to point out the failures of their work environment rather than point out the positive). So, the engineer’s perspective will generally skew towards rewrites and refactorings more aggressive than makes sense. However, the art is that you need to start with that estimate - because there’s not a single person in the entire world with a better view of the state of the code - and then tone it back one or two notches. If you’re the engineer, realize that a certain percent of your “we need to rewrite this” missives will not get the “okay, do it” response, the larger the more often they are sent up the chain. If you’re the manager, apply slight pressure back on the engineer to prove his case, and act on it early when he can.
It just seems the absolute wrong response here is “I don’t care what the undercarriage looks like; I just drove this jalopy across town therefore it will do great in the cross-country race.” If you don’t care what your engineers are saying about the code they live in, why would you hire engineers in the first place? Seems like the logical end of your approach would be to stop all development on the first product sale (infinite growth! How could you top that?) and milk that product forever.
“I worked on a project that I fully understood the business needs for and I communicated them clearly. Daily 2 coders pulled me into a room and said we can do it the right way or your way. Guess which way it was done.”
(the wrong way?)
“As developers, programmers and coders you guys are geniuses about coding. Don’t assume you know anything the business you’re writing for listen to what they tell you and code it.”
Wow, you must be an absolute dream to work for! If you want developers who take a set of requirements and code them precisely to spec and question nothing, you can get that in numerous third-world countries, and shouldn’t have much trouble finding that wherever you live either. See a previous blog post or two about the 80% of programmers that just follow orders and take a paycheck home.
Where I work, requirements have bugs just like the software does. If the engineer is not questioning up the chain then crap gets pushed out the door, said crap gets blamed on the engineer (because we all know that engineers own the code) and the task of fixing said crap on the engineer’s planned week off also falls to the engineer.
If you want a mindless drone taking imperfect specs (or, are you saying you are the one analyst in the world who makes perfect specs?) and translates them directly into crappy software, I hope you’re not paying them any more than McDonalds wages. I also hope your job req doesn’t list anything with the keywords “engineer” or “developer” in it, as both of those imply problem solving and creativity.