Kevin is a technical trainer and enthusiast who strives to promote and encourage elegant solutions built from simple building blocks. Based in Manchester, he is responsible for developing and delivering training courses to aspiring IT Professionals on the FDM graduate scheme.
You are sitting at your desk; the cursor on your computer screen is blinking, waiting. Then you have it, a brilliant flash of inspiration; the answer. You have just thought of a brilliant piece of software which will be used everywhere, give you a comfortable life, set your reputation for the rest of your career and allow you to retire at 40.
Your computer has a purpose, your fingers deftly type at the keyboard. Lines of code stream onto the screen and each one screams of elegance and beauty. You spend your days writing fantastic, dreamlike code which will change the world, a “for” loop here, an “if” statement there.
If you're lucky, the software will work well for the next five years. The more likely scenario though is that you will wake up one day and find that in 15 minutes you have just lost $500 million (USD) because of an algorithm glitch. You think to yourself, “How did this happen? Why did it fail?”
Software failing is a common occurrence. Many companies, organisations and individuals start out with the best intentions, only to see their dreams go up in smoke. For example; Knight Capital who recently narrowly escaped going bankrupt in the space of one hour due to a software glitch, police.uk which crashed on its launch day, the Olympic countdown clock which failed a day after it was unveiled and Fobos-Grunt which failed costing nearly $200 million (USD). History is full of these mistakes and errors, all of which could have been prevented by proper testing.
As a software developer you are on the front line developing applications, which either succeed or fail. In a waterfall development environment, testing is left until the very end acting as the last gate that any project needs to get through, right up until the budget runs out and the pressure to release is increased because the project is bleeding money. In these projects it’s not uncommon for testing to be “forgotten” with catastrophic and fatal consequences.
If you value your career and project then you want your work to succeed.
There is a solution. If testing is the make or break of a project then it shouldn’t be left until the end. Can we bring it to the start? I know what you are thinking; how can you test something which doesn’t exist or unit test code which isn’t yet written? The answer is simple: Test Driven Development (TDD), Lean thinking and Agile.
Most companies require a high standard of unit testing, for example - 100% code coverage. An increasing number of developers and companies are encouraging the use of TDD in order to create these tests. Cutting edge companies such as Laterooms and Thoughtworks are pioneering this because they have seen time and again that this approach works and it delivers results.
Testing and TDD are longer tricks to get ahead of the game; they are the absolute minimum required of any developer.
Not being able to test is a limit to your career.
You are sat in front of your computer, the cursor blinking, and you have a flash of inspiration. You have just thought of the ultimate piece of software to write. More importantly you know exactly where to start, you write a test.