Wednesday, August 05, 2009

What drives development nowadays

Many blog posts (also of mine) contain acronym and abbreviations which have spreaded in the agile world. Every now and then words like TDD, BDD enter feed readers which might have still to learn what they mean.
To help fellow readers and to make a bit of humour on the number of methodologies which are growing, I made a research on all the techniques that shares the last part of the name.

Here is the list:
  • TDD - Test-driven Development is a development technique based on prewritten test case and short coding iterations (5 minutes). The mantra of TDD is red-green-refactor, where red means that a test fails and green that it passes.
  • BDD - Behavior Driven Development is a response to TDD which involves the definition of scenarios and tests involving different business contexts and units. The mantra of BDD is given-when-then.
  • FDD - Feature Driven Development is the typical agile approach: develop some features at the time, in incremental steps. An iteration is the basic unit of time.
  • PDD - Process Driven Development is a methodology for constructing non-trivial custom software applications by analyzing the business processes in which they will be used.
  • DDD - Domain-Driven Design merits a mention although it is not a type of Development. The focus of this methodology is to not worry about the infrastructure layer which comprehends persistence, authenthication, etc. but to develop a powerful Domain Model which has no dependency on frameworks or libraries.
There are also less serious approaches, which are anti-pattern:
  • ADD - Asshole Driven Development: a methodology where the biggest jerk makes all the big decisions.
  • RDD - Resume Driven Development: a situation where programmers wanted to use tools, techniques, or technology to improve their resume instead of solving the customer’s problems.
  • FDD - Fear Driven Development: there are different definitions of this anti-pattern, but I prefer when you have an amount of LegacyCode and maintaining the code is hard because you don't know what unintended effects your changes have.
This is a summary of all driven development approaches which I have encountered around the Internet. Do you know any other?


Art Vandalay said...

CDD - Consultant/Contractor Driven Development. A temporary worker is whirled in, rapidly forces his personal solution-for-everything into the problem, and leaves a cloud of confusion in his wake as the organization begins to realize that now nobody knows how to manage or customize the work.

Unknown said...

You missed Responsibility Driven Design

Giorgio said...

Thanks for the additions. :)

Unknown said...
This comment has been removed by the author.
Unknown said...

HDD - Hate Driven Development. When you come to hate working on something so much that it inspires a surge of productivity that leads to completion. Most projects that involve this methodology include a procrastination phase.

As coined by Rafe Colburn:

Samuel Folkes said...

I had absolutely no idea that that was the meaning of ADD, lol! Good one!

a said...

HDD is also Hope Driven Development, which is where You write and hope Your software is working (somehow contrary to TDD).

and also

DDD - Delete Driven Development, where You delete parts of code and test if it still works ;)