no country for old hackers

This was actually a presentation that I was hoping to submit to a conference I really wanted to speak at. The reason I didn’t ultimately submit anything is the same as the topic of the presentation/post, in part. How’s that for meta? And since I’ve been thinking of it as a presentation, I’m just going to write it like I’d say it. Sorry if that’s weird.

Who here would consider themselves an old hacker? Who’s here reading this because those words resonated? Some of you, I hope, or this might not make any sense. If you’re a web developer, calling yourself an old hacker is kind of ridiculous, in the scope of computer programming as a whole. But, relatively speaking, I think we all know what that means. It means you tested in Mosaic. It means you had the lecture about how there was no upgrade path for IE5/Mac and therefore we were going to have to support it until the end of time. It means you’ve been guilty of table-based layouts and you had your mind blown by “To Hell with Bad Browsers” and then again by AJAX. Or maybe it just means you remember the browser wars and found it difficult to trust $ over getElementById.

At any rate, here you are.

I want to ask you something. I don’t want the answer you’d give in an interview, but the real answer. I want to know if it’s the same as mine. Why did you keep doing it? Web development, especially for front-end people, was fucking idiotic at the outset. Things like presentational attributes were a revelation. The whole world was in Times New Roman. The power of the web was less than the power of the manual lawn mower your parents had in the shed out back and were yelling at you to step away from the computer and get to work with. But you, you were on Geocities, or Angelfire, or some college server, or your own server, if your freak flag flew that way. You were writing HTML, even though HTML was giving you fuck-all in return. Why did you keep doing that?

True, at that point the web was young, and the only people on it were our people. It was exciting to be able to put something out there and know that anyone anywhere in the world could theoretically end up seeing it. This was before endless privacy debates about whether google was stealing our thoughts – at the time, it was amazing just to have a platform.

Magical though it was to participate in that, at least for me, sticking with it ultimately came down to something else: the mythical wild west of computer programming. In college I had to read “Where Wizards Stay Up Late” and though that book is a little long on facts and short on poetry, the picture it painted was something I very much aspired to. At the time, I didn’t know there was an alternative. Without knowing it, I was used to doing cutting-edge shit by that point, because the only coding I’d ever done had been front-end web dev. We’ve since disavowed tables for layout, with good reason, but think back for a second on how much it changed when you realized everything didn’t have to be laid out in a single column, before float, when <br> was your only tool. That, my friends, was a hack. A messy one, but one that served us well at the time, and one that allowed our field’s better half, web design, to progress despite the available tools. Best practices were an extremely science fiction-y joke. There were few rules and endless constraints. If you wanted something, you had to go out and kill it for yourself.

Maybe you think it’s irresponsible of me to romanticize that era. After all, it produced little of lasting quality and we spent years weening ourselves and our superiors off those bad habits. It’s not the habits I miss, though. It’s the fun. It’s the discovery. It’s the hacking shit together and hoping it holds.

So this is why I didn’t submit this proposal. This is the question I’m scared to ask. What today offers that same unlimited potential? We can make shit that would’ve been unimaginably awesome to our 17-year-old selves, but everything’s reversed. We have plenty of (good, useful, valid) rules and very few constraints. The shortcuts have signs telling you to stay on the path strapped to chains that prevent you ignoring that good advice. There is always a right way. The west has been won, the territory has been discovered and cartographed and gentrified. And we benefit, certainly. The web benefits. The world benefits. Everything got better when JavaScript libraries started popping up. It got better again when browsers began implementing native features to do the shit we used to hack together. But now what do we do with ourselves?

I spent about a year being really, really mad at A List Apart. I used to wait for new issues to be published to see what the next FIR or sliding doors would be. And then, at some point, every issue was about content editing or UX. It took me a while to get it: what else were they supposed to write about? They led the charge and they won. We won. Once everyone started agreeing, we stopped needing hacks. We stopped reading PiE and ALA and we all went and downloaded jQuery. Then we stopped downloading jQuery and started downloading microlibraries cause, shit, everything’s native now. It’s strange and lonely to find that no one is arguing with you anymore.

I suppose ALA had stopped pushing the envelope because ALA’s bread and butter was HTML and CSS and that envelope wasn’t gonna be pushed no further. JavaScript, the toy language, had matured in the shadow of its siblings’ growth spurts and was suddenly very sexy. For me it remained sexy right up until CoffeeScript. And, if you know me, you know I do not mean CoffeeScript replaced JavaScript in my affections. I heard Brendan Eich talk about hopefully implementing pieces of CoffeeScript in JavaScript at jsconf and my heart just sank. If you straighten JavaScript’s nose and give it Lasik and put it on that paleo diet it’s not going to be the same sexy language I fell in love with. Metaphors aside, my heart sank because you can’t say anything to dispute CoffeeScript. Obviously there’s nothing wrong with making a language easier to write. The same as with Haml or SASS, no one’s making me use it. But I can’t pretend it doesn’t kill me that the most exciting thing we can think of to do with JavaScript is to clean it up to appeal to people who don’t like JavaScript.

Obviously there are still interesting problems in JavaScript beyond all those terrible little curly braces. People are doing great things with movies and animations and that’s awesome, but the field of real world use cases is pretty narrow. Node.js is fucking stellar and I love it, but it’s still server-side and it’s just not the same when no one’s ever going to see your mistakes. The bulk of the interesting problems I see right now are how we compose various off-the-shelf pieces. We move so fast, with such immense power, that it’s almost unreasonable to stop and figure out how to do these things for ourselves. In your free time? Sure. Yeah, go and rewrite the entirety of YUI or something from the ground up just for the joy of thinking about it, all on your own. As an answer, that’s almost cruel.

And that’s just the libraries and the language. What about the browsers? Imagine you did think of something in JavaScript that had yet to be coded, some essential hack that was missing from our libraries. How long would that remain relevant? All those placeholder polyfills are destined to become the latex jellyfish washed up on next year’s beaches. Our hacks are only a slightly faster solution than sitting and waiting patiently.

I’m not saying I give up, but when this entire landscape has changed completely, I’m going to miss it. I think domestication has become inevitable. Unless the web fragments again, and it’s once more us against them, I think we’re on the road to efficient and productive normalcy. Which is great in almost every way except that it’s just not as fun. The web is on its way to becoming a commodity. That awesome Wilderness Downtown thing that Google did? That was super cool. CPU fans all over the world were very, very excited about it. But my boss has yet to ask me to implement it on our site. We live for demos and proofs of concept. We go back to our dayjobs and implement someone else’s boilerplate, skip the unnecessary syntax, run the unit tests, push to the cloud and clock back out. It’s not really that black and white, but it’s never gonna be the same.

I haven’t given up. I just wonder sometimes how long we’ve got before we all have to stop being hackers and be software engineers.


13 Responses to “no country for old hackers”

  1. Chris Says:

    I think working on websites in particular has definitely lost this charm. Today’s website is pretty much a mashup of the big APIs du jour and presentation layer borrowed from a WordPress theme.

    But to me the next stage for hacking is mobile web. Thin client on a thin client. Aside from that, maybe dealing with the media/RIA problems Flash usually handled is a pretty fun space to be in.

    After these come and go… maybe some sorta AR thing will replace them :)

  2. garann Says:

    @Chris – Yeah, there are definitely other exciting frontiers out there. Most of which still include the web to some degree. But it still seems strange to me that the web has matured and now we regard with disdain the mentality that – at least in my case – used to make it such an exciting thing to work on.

  3. Chris Says:

    Or maybe we just got older? In any case, a nice read.

  4. Linkdump for July 5th | found drama Says:

    […] no country for old hackers Garann Means: But I can’t pretend it doesn’t kill me that the most exciting thing we can think of to do with JavaScript is to clean it up to appeal to people who don’t like JavaScript. […]

  5. Jamund Ferguson Says:

    great article. mobile web and real-time interactive apps seem to be the next great place to hack around. and node.js can do some pretty cool stuff in the real-time regard and there is a lot of room for innovation in that space.

  6. Jeff Says:

    i’d say mobile is the way to go also. that’s what i’m doing now and the amount of older phones with low support for many standards makes it challenging. but don’t give up on the og web, microsoft always has time to throw a wrench in things.

  7. Stephen Belanger Says:

    I’d say the new frontier is realtime web apps. Stuff like Socket.IO and Backbone make it fun to explore new ways to structure the interface code of a web app. With realtime content, display rules change and you likely will look to templating languages like Haml or Jade. It’s just to messy to spaghetti code a bunch of jquery selectors into a new DOM item to add to your list. I don’t know what your issue is with Haml, but I like things stuff like that–it tries to reinvent the wheel and forces us to relearn and ditch our old habits. I know I’m guilty of the ocassional inline css, but these new Python-esque template languages strongly discourage verbosity in structural code.

  8. Zach Leatherman Says:

    Oh, wow. This post really struck a chord with me. I made my first web site around 1997, and loved the wild west feel of web development. I loved browser quirks and solving the rubiks cube of cross browser compatibility.

    Now, some of that has gone away, and sure that makes me sad.

    But I also feel like that stuff was a huge distraction from solving the real problems. How do I make this interface usable? How do I manipulate my layout to work on all different kinds of form factors?

    Why is everyone building their own slideshow frameworks? That’s the hacker way. The new stuff is in new ways to solve existing problems. Sure we have PowerPoint and Keynote, but I want to make them better on tne web.

    And good news, there is a bunch of really popular software out there that is absolute shit! So there will always be room for improvement.

  9. Warren Says:

    “We stopped reading PiE and ALA and we all went and downloaded jQuery” really struck a chord with me. This article is an excellent summation of how much the landscape has changed and I thoroughly enjoyed it, thank you.

  10. Nate Abele Says:

    This is easily the best thing I’ve read on the state of the industry in a while. Thanks for that.

    I think there’s always been a lot of tedious drudge work involved in web design / development, but in the past, the ratio of tedium to fun was comparatively low. Now that most of the fun, sexy problems have been solved, the relative level of drudgery is much higher.

    As I see it, the problems we’re left with can be split into two groups: fun but impractically niche-y problems (fancy things with video and animation, real-time interactivity [i.e., etc.), and really, really hard problems.

    We can goof around with the niche problems for a while, but it’s the really hard problems that are the key to the future. One of the biggest ones I’ve seen is articulated here:

    There are plenty of others, but once we break through the barriers of the really hard problems, not only will there be less drudgery, but (more importantly) we can move onto the next level, and find new unexplored territory with new fun things to do.

  11. Randy Says:

    Great article! The stuff we used to hack gets commoditized so we can leave it behind and start hacking new stuff. We will always hack as much as our brains will allow. It’s like the junk accumulating in our garage until there’s no more space. You have to occasionally throw some stuff out so you can move on.

  12. Fabio Venni Says:

    I built my first websites around 1996 when I was 17. Now I’m a senior web designer. If I think about me being able to go around problems with ie5 I can see it making me a stronger developer, but arguably I’d have more hair left on my head.

    Doing mostly web-based GUI design (which please ffs doesn’t mean just Photoshopping)… I feel close to finally having a canvas I can freely play with, without having to think wether I can implement a design or not, I’m fed up of having to hack stuff to get something stupid out and eventually use the web as a rigging service.

    Web has just gone mainstream, you get more experience, more skills and you got old like everyone else… it’s just that you’re pissed (like me) that your 15 years old cousin have hacked something up with web GL before you were able to… 😛

  13. seang Says:

    So, we spend years complaining about inconsistencies in a certain browser making our life difficult, then when the problem goes away we complain our life isn’t difficult enough!

    The landscape has changed because of the time we’ve investment hacking and fixing in order to make things better for hackers. Now that investment has started paying off we should be spending the interest embracing UX, IA and mobile in order to make the web a better place for users.