Hi All,
Here's an excerpt from a newsletter I got from O'Reilly today...
"For many old-school software engineers, *developing code* has always been *as
much an art as a science*. But as the industry focuses more on practices
such as Test-Driven Development, and Patterns become the lingua franca of
programming, *is there any room left for real creativity in coding?* Or,
has it become an exercise in cookie-cutter production, putting together
components in new ways, but without any real room for individual style?"
How can such misunderstanding can still exist? Anyway, they asked for
opinions and I sent this:
"I was a bit dismayed at your question "...as the industry focuses more on
practices such as Test-Driven Development, and Patterns become the lingua
franca of programming, is there any room left for real creativity in
coding?"
"I'll address the point as it applies to Test-Driven Development, since
that's closest to my heart. I'm an advocate of TDD as well as the
maintainer of NUnit, a unit-test framework that aims to facilitate TDD.
"To put it baldly, anyone who finds that Test-Driven Development stifles
their creativity simply isn't doing TDD as it's intended to be practiced.
The self-imposed discipline of first discovering tests that will require
the development of the production code we actually want to write is without
a doubt difficult to learn. But once it is learned, it's a source of great
creativity. Just as the strict form of the sonnet allowed Shakespeare to
channel his creativity, the discipline of TDD demands creativity from
developers who adopt it.
"Of course, doing TDD this way doesn't just happen. First and foremost, as
hinted in the preceding paragraph, it's a discipline that must be first
understood and chosen by the programmer - either as an individual or as
part of a team that decides to adopt TDD. Management-imposed TDD - like
most management-imposed technical practices - only succeeds in taking
responsibility away from the programmer.
"Test-Driven Development is a technique discovered and advocated by
programmers for programmers. It's a spark for creativity. When it's
reinterpreted as a set of rules to be imposed on the programmers, it can
easily have the opposite affect. But that's not unique to TDD. We've seen
it before with many other techniques and will likely see it again."
What do you think? Have you heard such complaints? What do you tell people
in response?
Charlie