Don't assume that better solutions are more expensive.
Split code by feature, not by aspect.
Use functions for the heavy lifting, and objects as glue code.
Inspiration is fuel. Filling up your tank is not a waste of time.
Many boring tasks have interesting solutions if you look for them.
Try to make things (automatically) reproducable.
Problem solving as a team is faster on paper than in code.
Unexamined claims don't count.
Key aspects of a solution are like wheels on a car: missing just one makes all the difference.
The claim that an idea cannot work requires just one counter-example to be refuted.
Prefer end-to-end testing over unit-testing.
A programming style that changes over time is a sign of learning.
Don't just shoot down ideas, also reanimate them.
To start the virtuous cycle between having time to refactor and productivity, focus on the latter.
Good ideas are not always easy to explain.
Factor out the variation, so that only the pattern remains.
To solve a problem, imagine that which would be ridiculously convenient.
Instead of adding new concepts, try to improve the existing ones.
Don't allow code to break a concept. Instead, fix either the concept or the code.
Being too careful can be a costly mistake.
Tests that make it hard to change the code are a form of technical debt.