I know of what Tim speaks around large, unwieldy Enterprise-level projects. They are money pits and resource pits. I suspect most of the engineers working on them aren't really having a good time.
But Tim seems to glom Web developers and agile methodologies into the same boat, and I think it's important to make a distinction. There are strong agile-style developers and there are Hackers. Hackers do follow iterative development and are focused on user experience, but often testing and reusable design go out the window, and monolithic spaghetti garbage heaps are often the result.
When I was interviewing during the Web 1.0 boom, a common job description was something like "Emergency Senior Engineer." I would go into a shop that had hacked their way through the first few years and now they were seriously stuck, and were looking for someone with some grey hairs to help clean things up.
It's definitely very hard to get engineers with an Enterprise mentality to adopt an agile approach. Enterprisers are very uncomfortable when they aren't writing out all the specs and plans up front - they are wanting to cover all the bases and get signoff before they start working - as Tim said "Enterprise IT has spent decades growing a defensive culture based on the premise that you only get noticed when you screw up, so that must be avoided at all costs."
But Hackers are very uncomfortable with having to write tests first, thinking about reusable design, spend time cleaning up code they touch, and so on. Many times I've seen a roll of the eyes when I bring up these kinds of things. I think this is because these guys love just whacking out code, are purely focused on technology, and don't have the patience or interest to think about maintainability. Normally a few hellish releases where you can't get anything done because all you're doing is fixing bugs straightens out this attitude. But by then it's often too late for the project at hand, without major rewrite.
That said, if I were to be forced to choose between an Enterprise culture or a Hacker culture, I'd probably choose the latter. Enterprisers take years (and years) to get something to market, and it's usually not what anybody actually wants. Hackers get hideously coded stuff out quickly, get feedback, and probably have money coming in when it comes time to rewrite.
Also, let's talk about culture. Enterprise projects have this horrible stuffy dead feeling, like you're working on the 7 and 1/2th floor. Everything's about specs and standards and ISO and most of the time you're in meetings and doing reviews. Hackers are often a bit wacko and over-stimulated, but at least there's energy there.
Luckily, right now I'm on a team committed to agile practices, and it's definitely a lot of fun. Our customers are pretty happy too. And this, in an enterprise! Maybe there's hope...
Post a Comment