Posts Tagged craftsmanship
In the software development community automated test have been there more and more. I myself started coding in PHP without a single test and just ran the app like QA would have done to see if it worked. Over the past decade this has really changed for me. I’ve lived through a flux where everything needed to be tested through and through to only integration tests. Currently I think we all agree that automated tests are something that is kind of a requirement when talking about serious software development. Note; “serious” I’m not talking about hacks and one of experiments.
So now the question becomes; When are we too obsessive with our test? Or, when are we just not covering the code enough?
Code is never perfect the first time over, specifications change and there is always pressure when developing a new feature. Thus the programmer has invented the word refactoring. This word implies that when a programmer stumble upon the code the next time or there is time to optimize the programmer will use that occasion to refactor the code into a better state. On small things this might take a minute on bigger things a refactoring can take up to several hours. But there is always that point when a developer thinks about if it is really worth refactoring it or if it deserves a rewrite.
The rewrite is a more radical approach. You take a piece of working software and trow it away to be completely rewritten. Better optimized, better functionality and build from the ground up to be a better performing piece of software than the last iteration. David Heinemeier Hansson once lovingly said about 37signals Basecamp; “Sometimes it is time to take out the old trash and start over”. And that is what 37 signals did. They rewrote Basecamp from the ground up and they got a better product.
So when does the grey need to turn into one or the other?