
From: Martijn van Steenbergen
On 6/14/10 10:39, Ivan Lazar Miljenovic wrote:
By being told that using them would solve some problem you're complaining about on #haskell or the mailing lists, you look at examples, read up on them, etc.
Short version: don't worry about advanced concepts until you have to. If all else fails, it doesn't hurt to write out the low-level version yourself and then get told in a code review that it would be "easier" or more elegant with an advanced technique.
Exactly this. It's happened a few times now that I ran into a problem and then a bit later found out that feature XYZ was exactly what I needed. A feature I never understood but now suddenly had a good intuition for because it is a (or the) solution to a problem I had been thinking about for a while.
I sort of agree with this, with some very large caveats. I would agree that being faced with an actual problem provides a particularly good learning environment for several reasons. For the "pragmatic programmer", this is probably the way to go. However, there's a lot to be said for both intellectual curiosity and learning for the sake of knowledge. Nearly all of us specialize in certain problem domains or areas and will likely never work on certain problems (related to e.g. compilers, web servers, etc.) in anything like a commercial environment. Some of us may never work in a commercial code environment at all. Just because you may never need to use a feature doesn't mean you shouldn't be able to understand it. John