
Ask HN: An introspective look at programming skills - sharmi
The below is an extract from "The Art of Learning" by Josh Waitzkin<p>""""
It is very important for athletes to do this kind of visualization work, in a form appropriate to their discipline, but often when we are caught up in the intense routine of training and competition, it feels like we have no time for the internal stuff. I know this quite well. Sometimes when I am in the heat of tournament preparation, months will pass with brutal sparring, constant pain, hitting the mats hundreds of times a night while drilling throws, and then I’ll realize that I’ve moved a bit away from what really makes things tick. Then I’ll spend a week doing soft, quiet work on timing, perception, reading and controlling my opponent’s breath patterns and internal blinks, subtle unbalancing touches that set up the dramatic throws that ultimately steal the spotlight. After these periods of reflection, I’ll almost invariably have a leap in ability because my new physical skills are supercharged by becoming integrated into my mental framework.
The importance of undulating between external and internal (or concrete and abstract; technical and intuitive) training applies to all disciplines, and unfortunately the internal tends to be neglected. Most intelligent NFL players, for example, use the off-season to look at their schemes more abstractly, study tapes, break down aerial views of the field, notice offensive and defensive patterns. Then, during the season they sometimes fall into tunnel vision, because the routine of constant pain requires every last bit of reserves. I have heard quite a few NFL quarterbacks who had minor injuries and were forced to sit out a game or two, speak of the injury as a valuable opportunity to concentrate on the mental side of their games. When they return, they play at a higher level. In all athletic disciplines, it is the internal work that makes the physical mat time click, but it is easy to lose touch with this reality in the middle of the grind.<p>"""""<p>The idea suggested above is very intriguing, but begs the question what are the internal and external training components when applied to a software programmer/engineer?
======
sharmi
As the text for the question is limited in characters, I'm continuing in the
comments :)

My take would be external - Your day to day programming (may be on the job),
interaction with teams, contributing to open source applications

internal - Working on your basics, learning and reviewing your technical
knowledge ( like brushing up on algorithms, computer architecture, etc)

But I believe I'm missing something subtle here. What would your take be on
that?

I'm currently trying to learn machine learning from the basics (ie stats,
probability, linear algebra etc) and I'm quite interested to learn better ways
to sharpen my skill.

