Rants on google & software dev
Posted 28 September 2006 @ 5am in thoughts
I just finished an insanely long post by Steve Yegge about working for Google and bashing Agile (the big A religious kind) and showing how Google does agile (small a, practical kind) just right. Some of the interesting practices that Google employs are:
…Developers can switch teams and/or projects any time they want, no questions asked; just say the word and the movers will show up the next day to put you in your new office with your new team.
…Google has a philosophy of not ever telling developers what to work on, and they take it pretty seriously.
…Google drives behavior through incentives. Engineers working on important projects are, on average, rewarded more than those on less-important projects.
…Google a peer-review oriented culture, and earning the respect of your peers means a lot there. More than it does at other places
…They really do understand that you can’t rush good cooking, you can’t rush babies out, and you can’t rush software development.
…The difference is that Google isn’t foolish enough or presumptuous enough to claim to know how long stuff should take…So the only company-wide dates I’m ever aware of are the ends of each quarter, because everyone’s scrambling to get on that big launch screen and get the applause and gifts and bonuses and team trips and all the other good that comes of launching things with big impact at Google.
…There’s also your extracurricular clock: the set of things you want to accomplish in addition to your main project: often important cleanups or other things that will ultimately improve your whole team’s productivity. Bad Agile is exceptionally bad at handling this, and usually winds up reserving large blocks of time after big milestones for everyone to catch up on their side-project time, whether they’re feeling creative or not.
…With nothing more than a work queue (a priority queue, of course), you immediately attain most of the supposedly magical benefits of Agile Methodologies.
Yegge’s points on what he calls Bad Agile hit home. No one really does pair programming right. No one really writes things on index cards. These practices do smack a little bit of Religion as Yegge points out. Agile development is really just common sense! Who ever thought waterfall was a good idea?
I’ve been working on consulting projects since I was about 16, and having at that time read no books on methodology, even at that tender age I understood that you have to have constant feedback or you’ll go nuts trying to deliver a product to a customer who gave you a spec six months ago. That’s not Agile, that’s common sense.
Maybe I’m inspired a bit too much by Yegge’s rant, but what’s with all these words with capital letters? Refactoring. Agile. Enterprise Patterns. Did we really need Martin Fowler to teach us object oriented programming? I mean the guy is great, I love his books, they’re fun to read. But you know if you actually followed the basic principles of object oriented programming like say, data hiding and encapsulation, maybe you wouldn’t end up with an anemic domain model and noodly and duplicated code everywhere. Close the books. Use your noggin!