DEV Community

Discussion on: What were your problems with "real world TDD"?

Collapse
 
bosepchuk profile image
Blaine Osepchuk • Edited

Hi Lars, great topic.

Some random thoughts:

  • expect it to take way longer than you think initially - like 5-10 times longer than developing a feature without TDD for someone's the first few attempts at TDD
  • expect code quality to go down initially when someone is learning TDD
  • chose easy tasks at the beginning while you're learning TDD to somewhat mitigate the points above
  • expect different developers to catch on at different rates
  • lots of people are confused about what you're actually supposed to do and test when you TDD. Read this for clarification
  • understand outside in vs inside out
  • (I've never done this but) pairing with an experienced TDDer would probably new TDDers get up to speed more quickly
  • I'm not sure what others will think about this one but I would probably not teach TDD to an absolute beginner programmer. Programming is overwhelming for beginners and adding TDD to the mix will just make it worse.
Collapse
 
n_develop profile image
Lars Richter

Hi Blaine,

thanks for your thoughts on that topic. I totally agree with your points.

And I think you are totally right with your last point. There are so many "programming is easy" posts on the internet. But the reality is: It's not. Of course it's not wizardry. Most people can learn it. But starting with TDD would be too much.

Collapse
 
kaboris1994 profile image
Boris

Hello Blaine,

I agree with you. But one little moment. In the last point you're mention that programs is overwhelming - it's ok!
But, I think that TDD in the beginning of the way it's good practice.
Yes it's difficult to understand, but it sets good tone of you code.
Even if it's hard for beginners, it is better to practice it from the very beginning.
P.s sorry for my English.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

My (limited) experience has been that programming is absolutely overwhelming and that beginners progress faster if you can reduce the cognitive load as much as possible.

So I would try to get them comfortable with the basics, once that's achieved, you can add an IDE, then static analysis, then unit tests. And once they get unit tests, you can add TDD.

If someone dropped me in a brand new language with completely new tools and an unfamiliar IDE, I'd probably resist writing in TDD from the start. It's just way too much.

But, that's just my experience. If you've had good success starting with TDD, that's great.