Differences between revisions 9 and 12 (spanning 3 versions)
Revision 9 as of 2005-09-13 22:56:24
Size: 2206
Editor: DanNorth
Comment:
Revision 12 as of 2009-05-13 10:41:13
Size: 2328
Editor: MarkCrowther
Comment: Minor changes - Tidied up the use and introduction of terms and abbreviations for consistency
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
BehaviourDrivenDevelopment grew out of a thought experiment based on NeuroLinguisticProgramming techniques. The idea is that the words you use influence the way you think about something. [[BehaviourDrivenDevelopment|Behaviour Driven Development (BDD)]] grew out of a thought experiment based on [[NeuroLinguisticProgramming|Neuro Linguistic Programming (NLP)]] techniques. The idea is that the words you use influence the way you think about something.
Line 5: Line 5:
A coach introducing Test-Driven Development to sceptical (i.e. most) developers invariably runs into a familiar set of objections. A coach introducing [[TestDrivenDevelopment|Test Driven Development (TDD)]] to sceptical (i.e. most) developers invariably runs into a familiar set of objections.
Line 8: Line 8:
 - Why do I need to write tests? That's what testers do.  * Why do I need to write tests? That's what testers do.
Line 10: Line 10:
 - Writing all these tests slows me down, it's a waste of time.  * Writing all these tests slows me down, it's a waste of time.
Line 12: Line 12:
 - I'm a good programmer! I don't need to write tests to prove my code works  * I'm a good programmer! I don't need to write tests to prove my code works
Line 15: Line 15:
 - Why are you getting programmers to write tests? We all know they can't – that's why you need testers.  * Why are you getting programmers to write tests? We all know they can't – that's why you need testers.
Line 17: Line 17:
 - Are you trying to take our jobs away?  * Are you trying to take our jobs away?
Line 19: Line 19:
 - You obviously don't understand testing or you wouldn't be asking programmers to write tests!  * You obviously don't understand testing or you wouldn't be asking programmers to write tests!
Line 21: Line 21:
This last comment is particularly ironic. In fact, the testers take on a central and very important role in BehaviourDrivenDevelopment. This last comment is particularly ironic. In fact, the testers take on a central and very important role in [[BehaviourDrivenDevelopment|BDD]].
Line 23: Line 23:
The behaviour-centric vocabulary helps us to avoid these common misunderstandings and focus on [:BehaviourDrivenDevelopment:BDD] as a design and delivery process. The behaviour-centric vocabulary helps us to avoid these common misunderstandings and focus on [[BehaviourDrivenDevelopment|BDD]] as a design and delivery process.
Line 25: Line 25:
Concentrating on finding the right words led us to think about the process differently, for exmaple, the fact that the words we use in [:BehaviourDrivenDevelopment:BDD] are very much focussed on the behaviour of the system led us to better understand the very close relationship between the stories we use to specify behaviour and the specifications we implement in [:BehaviourDrivenDevelopment:BDD] in place of tests. It also helped us gain further insight into some of the failure modes we have experienced in [:TestDrivenDevelopment:TDD] projects. Concentrating on finding the right words led us to think about the process differently, for example, the fact that the words we use in [[BehaviourDrivenDevelopment|BDD]] are very much focussed on the behaviour of the system led us to better understand the very close relationship between the stories we use to specify behaviour and the specifications we implement in [[BehaviourDrivenDevelopment|BDD]] in place of tests. It also helped us gain further insight into some of the failure modes we have experienced in [[TestDrivenDevelopment|TDD]] projects.

Behaviour Driven Development (BDD) grew out of a thought experiment based on Neuro Linguistic Programming (NLP) techniques. The idea is that the words you use influence the way you think about something.

As an example, when I was first getting to grips with TDD, I was pairing with an experienced agile coach, writing little test methods, then writing the code, and generally feeling good about life. Then I went ahead and wrote some code without a test. The coach, JR, asked me why I'd written the code. I answered: "we'll need it in a minute", to which JR replied "yes, we might". By using the word "might", he introduced the possibility that we might not. As it turned out, we didn't. - DanNorth

A coach introducing Test Driven Development (TDD) to sceptical (i.e. most) developers invariably runs into a familiar set of objections.

From programmers:

  • Why do I need to write tests? That's what testers do.
  • Writing all these tests slows me down, it's a waste of time.
  • I'm a good programmer! I don't need to write tests to prove my code works

And from testers:

  • Why are you getting programmers to write tests? We all know they can't – that's why you need testers.
  • Are you trying to take our jobs away?
  • You obviously don't understand testing or you wouldn't be asking programmers to write tests!

This last comment is particularly ironic. In fact, the testers take on a central and very important role in BDD.

The behaviour-centric vocabulary helps us to avoid these common misunderstandings and focus on BDD as a design and delivery process.

Concentrating on finding the right words led us to think about the process differently, for example, the fact that the words we use in BDD are very much focussed on the behaviour of the system led us to better understand the very close relationship between the stories we use to specify behaviour and the specifications we implement in BDD in place of tests. It also helped us gain further insight into some of the failure modes we have experienced in TDD projects.

BDDWiki: GettingTheWordsRight (last edited 2009-05-13 10:41:13 by MarkCrowther)