Flailing or Blackbelt: Balancing Hacking and Dedicated Learning

Such an elaborate book-ish title for a short post. Yet I love brevity.

Some developers might say, "Before using a new technology, first take the time to read the user guides so you know it. Then use the technology, applying what you've learned." Others might say, "When you need to use a new technology, just start using it! Take a quick glance at the example code on the project's site, then use your IDE's content assistance to find the right stuff as you use it. If you get stuck, Google and find your answer on Stack Overflow". So which is the best approach?

If you're going to have to fight an enemy, should you run in and start flailing, or first acquire a black belt? I say it depends. No really. Suppose your enemy is a flock of birds about to poo on your shiny lamborghini (we all have one of those of course). Should you first take the time to acquire your black belt so that you can effectively throw a series of quick spinning back kicks and windmills at them? I personally prefer just running out there and flailing, perhaps accompanied by a beastly hollering. (Be prepared to be greeted by funny looks from bystanders.) On the other hand, if we're looking at what you originally imagined when I said "enemy", namely some fierce dude in black clothing with nun-chucks who has come to kill you (do we all watch too many movies?), then first acquire your black belt by all means.

...or if you're not fond of martial arts, just shoot the guy; but now we're leaving the illustration.

So now the application in software development, as you're probably already seeing: if you're just using, for example, some new little library for calculating the Fibonacci number series up to a given number (classic unrealistic example I know), I'd take the flailing route. The library probably only provides one or two methods. If, on the other hand, you're about to use something like the JavaFX framework for the first time, flailing may leave you lying on the ground with a black eye or two...like it did me. After buying a 1000+ page book and reading a few hundred pages though, I walked into the room of my IDE and totally pulled a Bruce Lee on my (somewhat unusual) layout needs. Yeah, it was totally awesome.

So in a nutshell, for maximum time efficiency, be open to both techniques, and first choose the right balance for the task at hand, then proceed. ...kind of obvious in a sense, but sometimes we just start flailing out of habit before applying some judiciousness, or spend 30 minutes reading a user manual before realizing we could have just used content-assist.