When faced with a task, a new business domain, or a new library/framework/technology in your work environment there are basically two approaches:
- Take a book, close yourself in a room for one or more weeks with your head in the book, finish the book and start designing, or coding, or
- read the documentation, code a bit, read more, code a bit more, and so on, until you reach a breakthrough level of understanding, which is normally followed by insane refactoring or revision of what you did.
Both approaches have pros and cons. Notably, if you cannot afford to make it wrong the first time, the BLUF (nice acronym...) makes apparently more sense, but you have the drawback that your boss could look at you wondering how unproductive you are. Also, it's the only way to get a panorama of the whole toolset available, and perform appropriate choices upfront without risking dead ends.
The EL approach instead makes you productive from moment 0, you start producing something even if you are guaranteed it won't survive, it's for learning. This has the advantage that you get to think, together with learning. In some cases, you could potentially reinvent the wheel or discover that you wrote a lot of code for nothing. Your code is very unstable and changes as you learn, and you could reach a point where you are near to a breakthrough but the code produced seems to work, so you (or your boss) don't want to invest more time into it.
This is similar to the BigDesignUpFront over eXtreme Programming discussion, but it moves at another level. Even if you do BDUF, you can still perform EvolutionaryLearning while you write the specs, or the design.
What is your method when faced with a new (potentially large) learning task and have to accommodate it with the rhythms of your employment ?
CW as it's clearly a discussion.