Published May 29, 2012

On Never Being Bleeding Edge

Why stick with something that's been working since the day we implemented it when there's SO much untested technology out there!?!??

If you write code for a living, you probably follow fellow code-writers (on your favorite following service of choice) and read what they have to say about the new shiny they are currently working on. You probably follow them because they often write about their new shinys. Their new shinys are usually really shiny, and when they release a demo of shiny it's really freakin' cool.

You probably wish you were coding something new and shiny too. So you read some tutorials and give the shiny a try. But the shiny is just so new and fragile and intricate that you quickly get to a point where you can't do anything more with it: too confusing, kind of broken. Since you can't do anything with the new shiny anyway — it sure as hell isn't going into your produciton environment anytime soon — you put it away.

But other coder people on your follow lister-magigger start playing with the shiny too. Maybe enough people polish up the shine that it's now showing up on blog posts and at conferences and the like. Pretty soon people start saying that the new shiny is really the New Way, and probably soon the Only Way.

Or at least it seems like it.

So you pick up the shiny shiny again, which is really much more brillant than it was when you first played with it. Maybe you can do more with it this time. Maybe you get lost in the super shininess of it for a whole evening.

But then you go back to working on a project with your non-shinies. Maybe it's a big big project and now you can't find the time to get to the shiny again.

Then a year or so goes by. In that year you've worked on some projects that were challenging, rewarding, frustrating and exciting, but never with the shiny.

You tried to bring up the shiny on one of your projects, but your teammates decided it wasn't a good fit.

At this time the shiny has gotten really popular. All the cool kids use the shiny. Everyone else wants to be using the shiny. There are jobs listings in San Francisco for people that can use the shiny.

San. Fran. Cisco.

At this point, you're obviously falling behind in your industry of code people because you're not well-versed in the shiny. You start to get anxious about your job. You start to figure out what meatspace events you can skip so you can, finally, spend time getting up to speed with the shiny shiny.

At this point, a lot of what you do just feels like it really really could and really really should be done with the shiny.

At this point, every hour spent coding how you're coding and not coding in the new shiny way is an hour wasted.

Stop it, please

I find it really tempting to fixate on whatever impressive new bleeding edge thing shows up at the top of a feed. I know plenty of other coders do too. That's because we shape the news we're interested in. We post, upvote, and RT the same shit about the same new thang at the same time during the same lull we have in the same project we've been working on for the last few months.

I don't think I'm exaggerating when I imply that many of us seem to hold passionate interest in something for a few mere months before something shiny comes along that seems that much better. Even when we're getting paid for that passion.

Look, that year that just went by where you managed to successfully do a job where you type all day and make something that makes other peoples' lives better is no minor accomplishment. It's a fucking successful thing that you did and it is time to be proud of it.

You also haven't mastered the tools you do every day and you know them a heck of a lot better than you do the new shiny ones, so why not try to refine something you've got a decent footing with rather than start all over with something new for the sake of its newness?

This post is a reflection on a recent post on Twitter's engineering blog about moving some of the client-side UI rendering back to the server, away from Javascript.

Funny enough, I recently burned some cycles experimenting with Backbone, Spine and Ember and decided I couldn't find any of them useful for me right now. Javascript MVC is the shiny of the moment for me. I felt defeated that I wasn't going the extra distance to master one of these tools.

Again, NO use for any of them right now, still felt like I should be using one of them.

But straight jQuery is doing me a world of good. It's a tool I'm very familiar with, but can't even begin to give a decent explanation on how it works. It's not shiny anymore, but it works amazingly well, and I need to feel better about the work I do with it.