Skip to content

Latest commit

 

History

History
71 lines (43 loc) · 2.32 KB

software_laws_and_principles.md

File metadata and controls

71 lines (43 loc) · 2.32 KB

Software Laws and Principles

For a complete list, see Wikipedia:

DRY - Don't Repeat Yourself

Rule of Three - Repeat yourself twice

YAGNI - You Ain't Gonna Need It

KISS - Keep It Simple Stupid

DTSTTCPW - Do The Simplest Thing That Could Possibly Work

POLA - Princple Of Least Astonishment

WIB - Worse Is Better (simplicity beats correctness, in some contexts)

SSOT - Single Source Of Truth

RERO - Refactory Early, Refactor Often

Brooke's law - adding manpower to a late software project makes it later

Conway's law - organisations design systems that mirror the organisation's own communication structure

Unix philosophy:

  • Each program should do one thing and do it well
  • Write programs to work together
    • Output will become input, so make it easy to parse
    • Handle text streams, because that is a universal interface
  • Use automation to avoid drudgery
  • Everything is a file
  • ... and many more ...

OOP specific patterns

  • SOLID:

    • Single Responsibility Principle
    • Open-closed principle - Open for extension, closed for modification
    • Liskov substitution principle
    • Interface segregation principle
    • Dependecy inversion principle
  • GRASP

Software development processes

Agile software development

Lean software development (and lean startup)

Extreme programming

Scrum

General laws (not specific to software)

MoSCoW - Categories for Prioritising: Must have, Should have, Could have, Won't have (this time)

Pareto Principle - 80% of the effects come from 20% of the causes

Poe's Law - It's impossible to detect sarcasm on the Internet

Godwin's Law - "As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches 1"

Moore's Law - Processing power doubles every 2-3 years (until a physical limit is reached)

Jevon's Paradox / Induced Demand - Consumption often rises to meet capacity