Fixed-schedule productivity
The idea:
- choose a desired working schedule (e.g. 9-5 6 days a week)
- don’t break the schedule
To get there:
- cut all work that can’t fit in the schedule
- don’t procrastinate
Deliberate practice
To get good at something, you need:
- practice a lot
- do the right kind of practice - a deliberate practice
Deliberate practice is an activity designed to push your knowledge or mastery of something a little bit further than your current limit. Deliberate practice has the following traits:
- It’s designed to improve performance. “The essence of deliberate practice is continually stretching an individual just beyond his or her current abilities. That may sound obvious, but most of us don’t do it in the activities we think of as practice.”
- It’s repeated a lot. “High repetition is the most important difference between deliberate practice of a task and performing the task for real, when it counts.”
- Feedback on results is continuously available. “You may think that your rehearsal of a job interview was flawless, but your opinion isn’t what counts.”
- It’s highly demanding mentally. “Deliberate practice is above all an effort of focus and concentration. That is what makes it ‘deliberate,’ as distinct from the mindless playing of scales or hitting of tennis balls that most people engage in.”
- It’s hard. “Doing things we know how to do well is enjoyable, and that’s exactly the opposite of what deliberate practice demands.”
- It requires (good) goals. “The best performers set goals that are not about the outcome but rather about the process of reaching the outcome.”
Examples: the best chess players not only play a lot but also study a lot (review past games etc.)
Deliberate practice exercises as they relate to programming:
- study other people’s code and try to improve it in small ways
- do toy implementation of fundamental algorithms or ideas (e.g. hash tables, patricia trees, b-trees etc.)
- have a list of deliberate practice exercises and do them