Learning vs getting it done

In an email conversation the other day about extending PHP at the core level, I added the following after providing some direction:

Learning more always improves your ability to learn, which is the secret key to being a great dev. Knowing how to learn and absorb new information quickly will keep you lightyears ahead of your colleagues. However, assuming you ever have a specific goal in mind, be sure to ask yourself if it’s necessary to get so nitty-gritty to accomplish your task? You’ll often see younger programmers attempting the coding equivalent of an Olympic gymnastic floor routine instead of just walking to the other end of the mat.
Are you playing around with some new coding concept just to see if you can figure it out, while real work sits by the wayside? There’s a big difference between academic programming, done for the sake of better understanding, and code which is written to accomplish a real task in a real scenario. Aside from the obvious potential for wasting time, academic programming often results in a far more complicated solution. A straight line is always the shortest distance between two points. Just get the job done; you’ll have less stress and look more efficient to your superiors. Understanding the distinction between academic code, and practical coding solutions is key to being a great programmer. Update: Found a quote that conveys a similar idea, and does so far more eloquently than I could.
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.

—David Gelernter, Machine Beauty: Elegance and the Heart of Technology