"Mainframe
guys?! What do they know? They’re dinosaurs, the industry passed them
by years ago...” was my response twenty years ago, when I first got out
of school.
Someone
had recommended that I take a look at how the mainframe guys (and gals)
had solved a particular problem way back, while I was still just
finding my identify in high school. But I dismissed it far too easily.
Things, I felt, were changing too far, too fast.
In
hindsight, of course, it took me a long long time to understand how
wrong I really was. There were indeed things that I could learn from all
of that earlier intellectual work. Problems that were solved, done and
dusted. And what I truly failed to grok was that the work was done when
there were less expectations, and more of an ability to focus longer and
deeper on getting better solutions.
“Don’t
reinvent the wheel” isn’t about using libraries or other existing code.
It’s about not re-solving problems that in many cases were solved
decades ago. And even deeper, it’s about not just quickly solving them
in a brute force manner if there is already an elegant solution that has
been deeply thought about and made available.
Still,
being young, I wanted to solve problems right away and I guess that
orients one to search for low hanging fruit. But inevitably, as there
has been a tremendous amount of water under the bridge already, pretty
much all of the low hanging fruit has been tasted by others. Many
others.
The
trick then is to spend some time first, to see if the problem is really
new and unique. If it is, great -- you can learn from what people
already know, but if it’s not then avoid falling into the trap; try to
utilize what was done before. Under time pressure that can seem
time-consuming and dangerous, but reinventing really common wheels is a
guaranteed time sink that will only make the time pressures worse. After
all, it is hubris to think that one can do a better job in a week of
two of hacking, then was done decades before with thorough analysis and
experimentation. Most solutions for low hanging problems out there are
far better than anything we can dream up in a rush. The time spent
learning them is time saved from falling prey to well-known issues.
But alas, I think it took me about 15 years to figure that out ...
No comments:
Post a Comment
Thanks for the Feedback!