Solving a problem you don’t have

New stuff is constantly appearing in the software dev world. Like with anything new, it is exciting to learn and experience it, but I feel like people don’t ask the question behind the question, often enough. I probably can’t count the number of times I’ve had discussion which went this way:

Programmer 1: "We really need to start using Jingle-Jangle JS (et al). It is so-o-o-o hawt! We should ditch the trusty stuff we currently have and fully switch over to Jingle-Jangle"
Me: "Hmm, your suggestion sounds like a lot of work. Throwing-away all of our stuff (which currently is working-fine btw) and starting-over is not trivial. Are we sure it is worth the investment?"
Programmer 1: "Oh yeah, for sure! This product prevents scurvy, cures kukamunga-phobia, and protects you from the effects of anti-gravity. It is amazing. I can't believe we've survived this long without it!"
Me: "I don't think we are suffering from the things you just said. Does it solve any of the problems that we currently do have?"
Programmer 1: "You betcha!"
Me: "Please elaborate"
Programmer 1: (lists other problems that we don't have)
Me: (starts sounding like a broken record)
Programmer 1: "Why are you so resistant to change? This seems un-characteristic of you!"
Me: (feeling a little defensive) "I'm not being resistant. I just want to go-in with eyes-wide-open. We will probably have to justify this to our superiors/leaders. I intend to be forthright about it."

Anatomy of the problem

The underlying-cause behind my resistance is not because I’ve lost my technical progressive attitude. Not a chance of that happening! I fully understand what it takes to remain employable and relevant in the IT field. However, I do recognize that new tech often looks like a golden hammer, and it makes you want to start pounding nails. I’m sure there are a lot of “nails” shops and they love their nails. Maybe you are convinced of the merits of pounding nails. I can empathize with you, but the reality is: there are lots of places which don’t use nails. Our company/dept is a bolts & screws place. Even if you figure out how to screw-in a nail or hammer-in a bolt, it would be impressive, but it isn’t going to be as effective as the screws & bolts (and matching tools) which we are already using.

What if the whole world is (seemingly) switching over to Jingle-jangle.js… Could a reasonable person consider it prudent to stick-with-what-we-have, and ignore Jingle-jangle?! I’ll still say “it depends”.

Solution du-jour

Goog, Amaz, Faceboo and lots of other enormous organizations are using (and even creating) some cool and sparkly new tech. They are undeniable industry leaders. Clearly they are doing lots of correct stuff. No doubts. However, enormous companies will implicitly encounter problems which smaller/regional companies will not. There are significant differences between a team of 5-10 people who are maintaining apps for a small-to-mid-sized company, vs a tech corporation with thousands of programmers working on the same app simultaneously. Some IT skills are not dependent on team size, and some are.

Problems of scale, like this, are mostly unique to big companies. Big companies can create effective processes and practices which are useful for all-sorts-of-things, and may translate nicely onto any business, however they also have layers of bureaucracy which are necessary to them, to maintain order, but would be senseless to smaller organizations who are able to accomplish the same work on a naturally (smaller) more-manageable scale.

Generally speaking, it is difficult to tell (on the surface) what kind problem is being solved by a methodology or tech-stack, etc. However, if you take the time to understand it (it’s history, progression, etc), you have a better chance of understanding “what problem is this designed to solve?” and whether you have that problem too.

When you understand, you can resist the temptation to reach for the next golden hammer, and solve problems that you don’t have.

About Tim Golisch

I'm a geek. I do geeky things.
This entry was posted in Lessons Learned and tagged , , , , , . Bookmark the permalink.

Leave a comment