I often read bits about how particular design styles or need-to-know algorithms/data structures are the "fundamentals of learning software." But just as often I wonder if there is something even more fundamental to the practice.<p>In basketball we like to say that things like "dribbing", the "three-point-stance", and "keeping your eye on the ball" are good examples of fundamentals that all good players have, but then there's the example of John Wooden[1] (championship winning UCLA basketball coach) who stressed to all new players that "putting on shoes and socks correctly" was a core fundamental.<p>This got me wondering; what are the "shoes and socks" of software development? Is it algorithms/data structures, writing clean code, etc.; or is it something even more basic, like holding your hands correctly over the keyboard?<p>[1]: http://newsroom.ucla.edu/stories/wooden-shoes-and-socks-84177