Thursday, March 25, 2010

Embrace change or fail and wonder why you wasted your time

Ok so I mentioned how I've been getting my head around TDD and Agile recently. I'm kinda late to the game since I only discovered it 2 years ago with a presentation by Uncle Bob in Chicago. So it's taken a lot of reading and talking to get to the point where I am now. But I'm also carefully watching trials others are doing and making notes about those who succeed and those who fail.

So time to talk about the interesting one. The failures. Let's break them down to some common archetypes.

I'll keep coding the same way and make some token effort with planning cards.

Yeah you suck. You've got to change your ways! The order you do things isn't going to be the order you always did it. You've got to talk to the customer/designer/whatever and let them talk about what's most important. That's your new order! Don't spend for ever building some backend database bullshit. You may not even need it by the end. The whole design may change and become something unrecognisable. You're building yourself waste. Stop wasting time and money! That's the customer's job.

Waaah! TDD is hard! Why can't I just write my code. This is taking too long.

Yes it's hard. Especially if you've never done it before. So is programming. Just deal with it! You'll get better just like you've gotten better at every other programming thing you've had to learn. At least I hope you get better, otherwise is this the right job for you? And don't kind yourself you're writing some trivial bit that doesn't need tests. All big systems started as a small trivial system. You want to be able to change that big system with confidence right? Then write tests. Unless you're stuck for an hour trying to figure out how to test it then you've got no real excuse.

LOL. We're agile. Except for the TDD part.

No you're not! That's the most important part! Having to deal with changes all the time is not what makes you "agile".

Screw all this shit. I've been doing this for years! Don't tell me how to do my job.

Screw you! Everything can be done better. Everyone can learn. There is no such thing as perfection and you're just being an arrogant prick by even suggesting you are. I'm the only perfect one!