|
|
|
+++
|
|
|
|
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)
|
|
|
|
* Documenting 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)
|
|
|
|
* [Good Languages Come With Integrated Documentation](languages-docs)
|
|
|
|
* Writing code
|
|
|
|
* [Be Ready To Throw Your Code Away](throw-away)
|
|
|
|
* [Future Thinking Is Future Trashing](future-trashing)
|
|
|
|
* [Don't Use Booleans As Parameters](boolean-parameters)
|
|
|
|
* [Beware of Interface Changes](interface-changes)
|
|
|
|
* [It's Better To Let The Application Crash Than Do Nothing](crash-it)
|
|
|
|
* [If You Know How To Handle It, Handle It](handle-it)
|
|
|
|
* Community/Teams
|
|
|
|
* [A Language Is Much More Than A Language](languages-are-more)
|