No Bleeding Edge

I was having a conversation with one of my friends this week about an upcoming project. I was looking at using JQuery with KnockoutJS to solve a problem on one of the particularly dynamic pages, but his inclination was to stick with server-side MVC and just use some JQuery to take care of the dynamic part. Since he’s not a big javascript person, he felt KnockoutJS was too bleeding edge.

This was especially ironic, given in the recent past our roles were swapped and I was the guy tempering his enthusiasm with a conservative eye. The whole conversation though got me thinking about what does “bleeding edge” really mean?

I’m pretty comfortable in both Java and javascript. I like hacking with NodeJS and Express, with JQuery Mobile or Sencha Touch on the front end. I started with ExtJS almost four years ago, so I’ve embraced client-side MVC as a tool for web development.

Programming languages are tools for solving problems. I’m a fan of hand tools for woodworking, so I think the tool that best represents a programming language is the wood chisel. A good wood chisel is a beautiful tool. It is able to efficiently carve a block of wood to your vision, similar to how a programming language carves code to meet your technical vision.

Chisels are sharp — scary sharp. An expertly-sharpened chisel makes your typical razor look like a table knife in comparison. Incorrectly using a chisel can result in a nasty cut, in the best case, or a trip to the ER, in the worst case. But that’s the nature of the tool. You need to practice with it a lot to ensure you don’t hurt yourself, let alone get good results.

Programming languages are very similar. Someone inexperienced with a language can end up in the virtual ER of missed deadlines, cancelled projects and unhappy customers. But a master of the language can produce beautiful, maintainable solutions which solve peoples’ problems.

So is the chisel a bleeding edge tool because of the damage it can do? Obviously not. Woodworkers have been using chisels for a millenium. It is the inexperience of the practitioner that can make it, quite literally, bleeding edge.

Programming languages are the same. Putting me on a Python project could end up causing a lot of project bleeding, given I’ve never written a line of Python before. But it doesn’t mean Python is a bleeding edge technology.

There are no bleeding edge technologies — there are simply people uncomfortable with new tools. Usually, someone calls a language or framework “bleeding edge” when they don’t know enough about it to be productive. It’s like picking up a chisel for the first time. That mirror-sharp edge makes it pretty clear you can seriously hurt yourself with it. The master, though, doesn’t look at the chisel as a way to hurt themselves. They see the chisel as a tool in their box for solving problems.

2 thoughts on “No Bleeding Edge”

  1. I think bleeding edge can apply to technology that hasn’t yet become stable. If the technology is not stable “enough”, that’s bleeding edge regardless of personal experience with said technology.

  2. Even “stable” is a relative term. I’ve had .NET and Java applications which needed regular restarts and babysitting to keep the alive. Code quality is probably the biggest contributor to the perception of stability. Basing your world around something like Dart is probably a bit wacky, but I bet it is even stable enough for most needs.

Leave a Reply

Your email address will not be published. Required fields are marked *