before we begin focus on deliberate practice practice systems thinking whenever you can find an excuse collect and analyze mental models master your tools and understand what they are good for and what they should not be used for deliberate practice dr anders erickson studied people who reached level of performance we call mastery he found that these people had couple of things in common the firstas popularized in malcolm gladwell' book outlierswas that these people all seemed to have spent significant amount of time working on the skill in question the actual numbers varybut the time invested approached about , hours that is significant amount of timebut simply spending , hoursor ten yearspracticing is not enough there is very specific type of practice that was shown to be required for master-level performance the key to world-dominating skill is deliberate practice we will look at how this relates to programming in momentbut let' first look at what deliberate practice is deliberate practice is slowhaltinganti-flow if you are practicing the violindeliberate practice would entail playing the piece extremely slowlymaking sure you hit every note perfectly if you are deliberately practicing tennisthis might mean doing the same shot over and over and over again with coachmaking small adjustments until you are able to perfectly hit that shot in that location time and time again the problem with knowledge work is that the standard deliberate practice protocols seem foreign sports task or playing an instrument is fairly simple when compared to the process involved in programming it is lot harder to deconstruct the process of designing and developing software solution it is hard to figure out how to practice way of thinking one of the reasons for this is that solved problem tends to stay solved what mean by that is that as developer you will very rarely be asked to write piece of software that has already been written finding the "shotto practice over and over is hard