What did I do today?
I said at the beginning that I wasn’t a huge fan of TDD. It just doesn’t seem like a great idea to me. Today I took some time to explore that, and it turns out, I’m not the only one. Most people have mixed reviews, and that’s exactly what I’m experiencing now.
- Test-Driven Development? Give me a break… said that requiring TDD was a bad idea, but that the general principal is probably good. It’s possible to have too much of a good thing.
- Description of someone’s negative TDD experience - “Like everything that comes under the 'Agile' banner, TDD is something that sounds good in theory, but in practice it’s not so clear how good it is (and also like most 'Agile' things, you are told that if you don’t like it, you are doing it wrong).” So much this. I like the idea of being able to refactor at will, but it doesn’t seem to work like that in real life.
- On designing with TDD pointed out that just because code was written with TDD doesn’t mean it’s good code. Writing good code is hard, TDD is one of the (many) tools and ideas programmers have available to write better code since it (theoretically) allows us to refactor more easily.
- Discussion on “engineering” side of development - “The false safe feelings that an 'all green' outcomes ... may be interepreted as 'the system is fine', when it really means 'the system is as good as our testing strategy'.” This has bitten me a few times. We don’t shoot for 100% test coverage at work, but we still feel ok to push code when we've got a green build.
I’m still not convinced about TDD. I’m hoping I'll have a more informed opinion at the end of these TDD sessions, but right now I’m a bit perplexed. It does make me feel better to know that I’m not the only one questioning TDD as the “right” way to do things.
On a positive note, I submitted a pull request today and one of my coworkers complemented me on my tests! So I guess these exercises are working :)