20 things I believe in as a technologist

Posted by – March 22, 2010

  1. Brooks’s law: Adding manpower to a late software project makes it later
  2. Parkinson’s law: Work expands so as to fill the time available for its completion.
  3. Hofstadter’s law: It always takes longer than you expect, even when you take Hofstadter’s Law into account.
  4. Clark’s law: Sufficiently advanced cluelessness is indistinguishable from malice.
  5. Lewin’s equation: B=ƒ(P,E). An individual’s behavior is a function of both their personality and their environment.
  6. Fast, good or cheap.  Pick two.
  7. “The bearing of a child takes nine months, no matter how many women are assigned.” – Frederick P. Brooks
  8. Flitting doesn’t work, nor does sitting tight
  9. Attention economics
  10. Don’t write a functional spec
  11. Start-up metrics for pirates
  12. The Zombie Function: micromanagers create zombies
  13. Death by risk aversion
  14. Fail fast, fail cheap (re: tactics, not the overall business).
  15. Beware of future creep
  16. To create change, you need to reach out to those who don’t already agree with you.
  17. The 18 mistakes that kill startups
  18. 85 operations rules to live by
  19. Things that get in the way of good software:
    • Competing interest (departmental)
    • Political infighting
    • Lack of audience clarity
    • Fuzzy strategy
    • No vision for success
  20. Aspects of good software
    • Functionality: does it do what I need?
    • Correctness: does it do it correctly, without a bunch of bugs?
    • Learnability: can I learn it quickly? Is the manual good?
    • Efficiency: does it let me do what I need without long workarounds?
    • Usability: is it user-friendly?
    • Intuitiveness: does it feel natural?
    • Flow/enhancement: does it keep me fully engaged where the world drops away?