views:

206

answers:

5

Test Driven Development (TDD) and its benefits are well defined. The same can be said for practices like Behavior Driven Development (BDD). Each represents a software development technique that advocates greater discipline before you start coding.

What, then, is the convenient acronym for the "unstructured" approach to development?

I've seen "TAD" (Test After Development) used on occasion, but that still implies testing is being done. Has anyone seen (or does anyone want to invent) an acronym for the "code it as you go" approach to development? I'm looking for the TDD/BDD/xDD equivalent for the type of development we've all done where we simply write code and release.

(Clearly, there is plenty of room for "comedy" here, so let's refrain from "n00b Driven Development" and the ilk.)

[UPDATE]

Lots of very good responses. Ultimately, I think the ideas of "Development Driven Development" or "Idea Driven Development" best answer the question. Where in TDD you're trying to pass tests and in BDD you're trying to satisfy behavior, in "unstructured" development, you're really only driven by trying convert an idea in to code.

Clearly, no right or wrong answer, but a good collection of opinions here. Hopefully this resource will be useful for others trying to clearly capture the "definition" of development in absence of process.

+12  A: 

I don't know about an acronym, but what you're referring to is typically called Cowboy Coding.

Cowboy Coders are programmers who write code according to their own rules.

The Cowboy Way:

  • The speed with which I can hack something together determines my worth
  • People who need comments in order to understand my code are too dumb to be working with me
  • People who ask me questions about my code are too dumb to understand it, and (therefore) are too dumb to be working with me
  • Other people's code is just crappy, but mine is self-descriptive and beautiful
  • Exploiting a compiler-dependent language feature to save a line of code is "elegant"
  • Other people on my team cause all of the bugs; I'm the one that fixes them
  • My code is never at fault, always perfect, and I don't make mistakes
  • Since my code is never at fault, I don't need to test it thoroughly, if at all
  • Since my code is always perfect, it never needs to be refactored no matter how long it's been in the codebase or how much has changed around it
  • Since I never make mistakes, I can yell at anyone else who does
  • Since my code is perfect, if the program crashes due to unexpected data, it's the user's fault for entering bad data.
  • Since my code is perfect, if the program fails after a minor machine configuration change, it's the sysadmins fault for changing it.
  • Since my code is perfect, if the program runs too slowly, it's the managements fault for not providing a faster machine.
Ben S
Cowboy Coding is definitely a great description for this type of development. It would be nice if an "xDD" acronym could be used for it, though.I'd also add that Cowboy Coder goes a bit extreme. I think there are many developers who still code before testing (if they ever get to testing), but are much less cavalier. Looking for a term that encapsulates that approach (since it is still so common) without pulling-out something as extreme as "the Cowboy."
Todd
There's many levels of cowboy coding. I supposed you could call it CDD (Cowboy-Driven Development) or NDD (Non-Driven development). Although if you tell a fellow developer that someone is a cowboy coder, they'll understand you much better than any xDD you can come up with.
Ben S
CDD: Cattle-Driving Development :-P
Novelocrat
...if you did know about an acronym you'd have to comment on your own post to say it's already used by something else. "CC = Carbon Copy". :S
STW
The speed which with you develop is actually closely correlated with quality
Andomar
+4  A: 

FDD

Faith Driven Development.

Because you need to pray your project works on every release.

Chris Marisic
FDD = Feature Driven Development (http://en.wikipedia.org/wiki/Feature_Driven_Development), Also, Floppy Disk Drive :|
Ben S
+3  A: 

AD(D)D - Attention Deficit (Driven) Development

In which you:

  • randomly work on whichever portion of the application attracts your attention at the time
  • work on features for whichever user squawks the loudest (until someone else squawks louder)
  • run down rabbit trails in the code, forget the path you took to get there, and come out at some completely different place and solving some completely different problem
  • "refactor" code by changing its behavior without a solid grasp of what it is actually supposed to do or whether it still works when you are finished - but if it doesn't, you might get around to fixing it if somebody squawks loud enough
GalacticCowboy
Guilty on the first point.
Josh Leitzel
ADD = Architecture Driven Development (http://gersis-software.com/en/technologies/architecture-driven-development/)
Ben S
@Ben S - Guess that's why the extra D is important... :)
GalacticCowboy
seems to be the story of every little stranded hobbyproject I ever worked on, until it manifested into a new project... ;P
hkon
+2  A: 

I'd tend to agree with Pavel but would go further and call it:

Development Driven Development

Development driven without any clear motivation is development for the sake of development. In TDD, you develop to satisfy tests. In BDD, you develop to establish some behaviour. In Development-driven development, you develop because you're a developer and that's what you're paid to do.

Mark Peters
DDD = Domain Driven Development (http://en.wikipedia.org/wiki/Domain-driven_design)
Ben S
@Ben S: I don't create terminology for a living and clearly wasn't trying to make the claim it was a term that was or should be in use. I was just interpreting my experience with this sort of development motivation. That DDD is already taken means nothing to me, but I've removed it from the post anyhow.
Mark Peters
+2  A: 

MaDD -- Manager Driven Development.

It already takes you longer than you estimated just to code the real product--now you want to spend more time writing tests which never get released?!?!

STW
Contrary to many of the answers here, it is often mgmt that pushes horribly broken methodologies on developers and not the other way around.
Nick
MDD = Model Driven Development (http://en.wikipedia.org/wiki/Model-driven_development)
Ben S
so sorry to overload your TLA, sir! I've adjusted accordingly, but now I might have to content with angry mothers wanting *their* acronym back
STW

related questions