I liked Daniel Coyle’s “Talent Code” that talks about the importance of “deep practice” in achieving mastery in any field.  Not for the message of deep practice as it was already repeated in many books/articles, but for the varied examples in the book.

Here comes another book on the same lines by the same author. This book is a collection of thoughts and ideas from author’s field work, packaged as “TIPS” to improve one’s skillset.  These tips are categorized in to three categories, “Getting Started”, “Improving Skills”, and “Sustaining Progress”.

I will just list down some of the tips from each of the sections, mostly from the perspective of someone wanting to improve his programming skills.

Getting Started:

  • Spend fifteen minutes a day engraving the skill on your brain : In these days of abundant online instructional video content, one can easily watch an ace programmer demonstrating his hacking skills. May be  watching such videos daily, will engrave the skill on the brain. Also one can think of revisiting codekata from time to time.

  • Steal with out apology : Copy other’s code and improvise. The latter part of learning and improvising is the crux.When you steal, focus on specifics, not general impressions. Capture concrete facts. For me reading Hadley Wickham’s code provides me with far more feedback than any debugger in the world.

  • Buy a notebook  : Need to do this and track my errors on a daily basis

  • Choose Spartan over Luxurious : Spot on.

  • Hard Skill or a Soft Skill : I think a skill like programming falls somewhere between. You got to be consistent and stick to basic fundas of a language. But at the same time. you got to constantly read , recognize and react to situations to become a better programmer.

  • To build hard skills, work like a careful carpenter : Learning fundamentals of any language may seem boring. When the novelty wears off, after some initial few programs, a programmer needs to keep going, learning bit by bit, paying attention to errors and fixing them.

  • Honor the hard skills : Prioritize the hard skills because in the long run they’re more important to your talent. As they say, for most of us, there is no instant gratification in understanding a math technique. However you got to trust that they will be damn useful in the long run.

  • Don’t fall for Prodigy Myth :  In one of Paul Graham’s essays, he mentions about a girl who for some reason thinks that being a doctor is cool and grows up to become one. Sadly she never enjoys her work and bemoans that she is the outcome of a 12 year old’s fancy thought. So,in a way ,one should savor obscurity till it lasts. Those are the moments when you can really experiment with stuff, fall, get up and learn things.

Improving Skills:

  • Pay attention to Sweet Spots : If there are no sweet spots in your work, then that says your practice is really not useful.  The book describes a sweet spot sensation as, “Frustration, difficulty, alertness to errors. You’re fully engaged in an intense struggle— as if you’re stretching with all your might for a nearly unreachable goal, brushing it with your fingertips, then reaching again.” As melodramatic it might sound, some version of that description should be happening in your work, on a regular basis.

  • Take off your watch : Now this is a different message as compared to what every body seems to be saying (10000 hr rule).  The author says, “Deep practice is not measured in minutes or hours, but in the number of high-quality reaches and repetitions you make— basically, how many new connections you form in your brain.”  May be he is right. Instead of counting how many hrs you spent doing something, you got to count how many programs you have written or something to that effect. Personally I feel it is better to keep track of the time spent. Atul Gawande in his book, “Better”, talks about top notch doctors who have all one thing in common, they track the things they care about, be it number of operations, number of failures etc. You have got to count something, have some metric that summarizes your daily work.

  • Chunking : This is particularly relevant for a programmer. The smaller the code fragment, the more effective and elegant it works

  • Embrace Struggle :  Most of us instinctively avoid struggle, because it’s uncomfortable. It feels like failure. However, when it comes to developing your talent, struggle isn’t an option— it’s a biological necessity.

  • Choose five minutes a day over an hour a week :  With deep practice, small daily practice “snacks” are more effective than once-a-week practice binges. How very true.

  • Practice Alone : I couldn’t agree more.

  • Slow it down (even slower than you think): This is a difficult thing to do as we programmers are always in a hurry. Seldom we look back at the code that works!

  • Invent Daily Tests : Think of something new daily and code it up. Easier said than done. But I guess that’s what makes the difference between a good programmer and a great programmer

Sustaining Progress:

  • To learn it more deeply, teach it : I would say at least blog about it.

  • Embrace Repetition :  It seems obvious at first, but how many of us actively seek out repetition in our lives. We always seem to want novelty!

  • Think like a gardener, work like a carpenter :  Think patiently, without judgment. Work steadily, strategically, knowing that each piece connects to a larger whole. We all want to improve our skills quickly— today, if not sooner. But the truth is, talent grows slowly.

Out of the 52 tips mentioned in the book, I am certain that at least a few will resonate with anyone who is serious about improving his skills.