Stay ahead and focused
Sep 23

Evil Test Driven Development

Using a child development example, this article concludes that test driven development isn't good for everyone, it's designed for mature development process, not for typical human being daily exercises.

I have heard so many people call TDD (Test Driven Development) must-have in software development. Sometimes people makes them sound like the project can not live without TDD.

I disagree.

Without attacking this topic directly, I'll just raise a question, will you apply TDD for raising a kid considering kid development as a project? and Why?

Measure or predict?

Reading any TDD book will put me in the direction of measuring success. For gods sake, really ? you sure you can measure success correctly? Even at the beginning of the project, before writing a single line of code? Maybe a wrong word, instead should we call it predict? Predicting success or planning success might sounds better.

If an artist scrambles something before he sets his mind to start drawing, how on earth someone wants to measure his success of his piece even before he starts? Did you smell some insanity here?

Assumption

Ok, I guess, my assumption was wrong before I start this topic.

  1. Software Engineering
  2. Mature Business
  3. Big Project
  4. Mature Development Process

Am I missing something in the above list ? All items are related to "OLD" navy. Yes, if things are relatively mature (not your first attempt), measurable by experience, testable in design, then we should save our energy in repeating these test tasks and let computer do them for us. This is called software engineering.

I'm in no way discouraging planning, testing and especially measuring things. But sometimes when it's not worth it, your gut knows it. Ironically, this gut feeling is happening before doing. So, is my gut more TDD driven? haha. Should we measure success by guts?

Comparison

Back to my question, will you apply TDD to your kids? My answer is No. Because it's not

  1. Software Engineering
  2. Mature Business
  3. (not) Big Project
  4. Mature Development Process

So you can see the only thing which does not fit here is "Big Project", because raising a kid is a big project, but everything else are now tagged with "New" parent. So maybe when you have more than one kid, you can start to practice TDD effectively?

Maybe. I guess, it still depends.

Sometimes I feel people (or company) spent a bit more energy on preventing things failing instead of devoting on making things right for new projects. When making things working is the goal, if it fails, you go fix it and design things that is not going to fail next time. And if this process happens too often, you go create autobot for it. However, you don't go too crazy about it. Machine can not build everything for us, can it? especially from nothing? Tech person should be more creative, but not insane.

Comments