The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
3.2 KiB

+++
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)
* [Design Patters Are Used to Name Solution, Not Find Them](patterns-not-solutions)
* [Thinking Data Flow Beats Patterns](data-flow)
* [The Magic Number Seven, Plus Or Minus Two](magical-number-seven)
* [Cognitive Cost Is The Readability Killer](cognitive-cost)
* [Learn The Basics of Functional Programming](functional-programming)
* [Shortcuts Are Nice, But Only In The Short Run](understand-shortcuts)
* [Debuggers Are Overrated](debuggers)
* 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)
* Source Control
* [Always Use A Version Control System](always-vcs)
* [One Commit Per Change](one-change-commit)
* Project Organization
* [Organize Your Code by Data/Type, Not Functionality](project-organization)
* [Create Libraries](libraries)
* 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)
* [Types Say What Your Data Is](data-types)
* [If Your Data Has a Schema, Use a Structure](use-structures)
* [Don't Mess With Things Outside Your Project](outside-project)
* [Resist The Temptation Of Easy](resist-easy)
* [Start Stupid](start-stupid)
* [Always Use Timezones With Your Dates](use-timezones)
* [Always Use UTF-8 For Your Strings](use-utf8)
* [Optimization Is For Compilers](optimization)
* Making Things Go
* [The Config File Is Friend](config-file)
* [Command Line Options Are Weird, But Helpful](command-line-options)
* [Not Just Function Composition, But Application Composition](application-composition)
* [Even for Application Composition, Start Stupid](app-composition-stupid)
* [Logs Are For Events, Not User Interface](log-events)
* [Learn To Monitor](monitoring)
* Community/Teams
* [A Language Is Much More Than A Language](languages-are-more)
* [Understand And Stay Away From Cargo Cult](cargo-cult)
* ["Right Tool For The Job" Is Just To Push An Agenda](right-tool-agenda)
* [The Right Tool Is More Obvious Than You Think](right-tool-obvious)