February 14, 2007

...Learn TDD with Codemanship

Inescapable Fact #1 - Code Does Not Write Itself

I am a keen student of the software development process. In particular, I'm interested in exploring better ways of creating software. But opinion is divided on the best ways to do things. Developers and managers are faced with a confusing cornucopia of different methods and practices, all claimed to be "best practice" by their champions.

I'm hoping to cut through all this bullsh*t and get down to the indisputable truths of software development - the facts we just can't escape from, no matter how we choose to approach the development process.

One such fact is that code does not write itself. True, code may write other code, but it cannot write itself because that, my fine friend, would be a causal paradox requiring some form of time travel.

This has implications...

I should start by qualifying what I mean by code. Code is a representation using some kind of language of what we want the computer to do which can either be directly executed by the computer, or that can be translated automatically by another computer program into a representation that can. This could mean C++. Or x86 machine code. Or assembly language. Or executable UML. Or natural language instructions being interpreted by an artificially intelligent program without operator intervention. Or even human brainwaves being read by a scanner to control some computing device. It is all code.

What this means is that decisions have to be made. These decisions are design decisions, since the creation of any kind of novel specification is unquestionably an act of design. These design decisions don't make themselves. Someone has to make them.

Arguably, the bulk of the work on a software project is made up of making design decisions. The key to improving our productivity as software developers lies in examining the decision-making process.
Posted 14 years, 1 month ago on February 14, 2007