+++ transparent = true title = "Things I Learnt The Hard Way (In 30 Years of Software Development)" template = "section-contentless.html" +++ * [Intro](intro) * [Disclaimer](disclaimer) * Programming * Before you start writing code... * [Spec First, Then Code](spec-first) * [Write Steps as Comments](steps-as-comments) * [Gherkin Is Your Friend to Understand Expectations](gherkin) * Testing Software * [Unit Tests Are Good, Integration Tests Are Gooder](integration-tests) * [Testing Every Function Creates Dead Code](tests-dead-code) * [Tests Make Better APIs](tests-apis) * [Make Tests That You Know How To Run On The Command Line](tests-in-the-command-line) * [Good Languages Come With Tests](languages-tests) * Documentating your code * [Documentation Is A Love Letter To Your Future Self](document-it) * [The Function Documentation Is Its Contract](document-is-contract) * [If A Function Description Includes An "And", It's Wrong](document-and) * Writing code * [Be Ready To Throw Your Code Away](throw-away) * [Future Thinking Is Future Trashing](future-trashing)