Hacker News new | past | comments | ask | show | jobs | submit login

Deliberate practice has received an almost obsessive following by the HN community - I feel like I see articles about this at least once a week.

What I fail to see are any recommendations of how to apply this to software development. In my own personal investigations, things like programming competitions have shown not to translate well to professional software development (outside of maybe the search or AI algo developers at Google). Practice problems like Eulers and Programming Pearls are a bit contrived and limited, so I'm not sure where else to turn. Do others wonder the same thing?

Working on side projects may be practice, but not necessarily deliberate, and many side projects may not be addressing our individual weaknesses.




What works for me is downloading the source code of projects that are generally considered to be examples of great code. I then go through it, stopping at critical junctures asking myself, What would I do next? Then comparing that to whatever the author of the program did. If I'm "wrong", I attempt to figure out why and adjust accordingly.

This was directly inspired by the technique Benjamin Franklin used to become a great writer.[0]

[0]http://historymatters.gmu.edu/d/6220/ Search for the word spectator in the link for the relevant paragraph.


For me, it's a combination of side projects and pushing the boundaries on work projects (where budget and time exist). I tend to structure my side projects so that I'm covering ground that's new and uncomfortable, say learning a new language (Python, Haskell), a new paradigm (functional), or a new platform (Linux, OS X). If you're just doing more of what you already know how to do, the utility is limited. It's doing focused work on new areas that stretches you.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: