- the whole job of programming is building air-castles, it”s some of the most purely mental activities you can do
- the way you focus your intelligence is more important than how much intelligence you have
- the more you learn to compensate for your small brain, the better a programmer you’ll be
Reduce brain workload:
- decomposing
- conduct reviews
- keep routines short
- using conventions
Curiosity
- build your awareness of the development process
- if your workload consists entirely of short-term assignments that don’t develop your skills, be dissatisfied
- experiment (with programming and the dev process) - prototype!
- read about problem solving
- analyze and plan before you act
- learn about successful projects (read source code of other projects)
- read! (documentation)
- read books
- affiliate with other professionals
- make a commitment to professional development (beginning → introductory → competency → leadership)
Intellectual honesty
- testing can only show the presence of errors, not their absence
- you can’t negotiate how long something will take
Communication and cooperation
- as a readability guideline, keep the person who has to modify your code in mind
- programming is about communicating with another programmer first and communicating with the computer second.
Creativity and discipline
- establish conventions in non-critical areas so that you can focus your creative energies in the places that count (aka form is liberating)
Laziness
- deferring an unpleasant task
- doing that task quickly to get it out of the way (enlightened laziness)
- persistence can be either an asset or a liability - it’s hard to know when to give up
- on experience: you have to reflect on your activities to get true experience
- gonzo programming: excitement is no substitute for competency
- to be a great developer develop the right habits