Do you strive to understand your tools, or simply “make it work”?
I’ve been pondering this question for a while, and I thought it could spark some interesting discussion. 10 pin bowling is a huge part of my life: I’ve been a ball driller, coach, and at my peak was throwing 50-100 games a week, and was gearing up to start bowling professionally (those were the days!) What’s interesting about bowling is that a lot of folks I drilled equipment for didn’t really care about the physics behind it — the how and why; indeed, there are a ton of aspects to a proper drilling, but most of my clients just didn’t care about that — they wanted to see the ball hook, and they wanted to score well. Beyond that, it was of little concern what layout I used or why, so long as the ball was getting the desired reaction. Bowling is a combination of mental and physical routines greatly impacted by a number of variables that one can tune — it’s like a giant equation. As a ball driller, there are numerous tweaks I can make to how I drill a ball that will subtlety (or grossly) affect how the ball works on the lane (there are also a number of physical things you can do, like tweaking ball speed, hand position, etc.) In striving to improve my own game, I learned everything I could about the variables involved, and how I could tune them to maximize my scoring potential.
Now, if you’re actually still reading this, you’re probably asking yourself how this could possibly relate to development or design. Well, my friends, it does more than you think: When was the last time you stopped to truly understand what was going on behind the scenes in your code, gems, plugins, libraries, your CSS frameworks, and your design tools? Have you ever spent a significant amount of time pulling apart your tools in an effort to understand not just what the do on the surface, but how and why they do it? This is something that I’ve been making a concerted effort to do the past few years, and it’s helped me grow immensely in my craft, not to mention it’s so much easier to understand what’s going wrong if you understand what’s going on in the first place.
So, my question to you is this: do you strive to deeply understand your tools, or is getting it working good enough?