The Abstraction Point

Avatar of Chris Coyier
Chris Coyier on

DigitalOcean provides cloud products for every stage of your journey. Get started with $200 in free credit!

Reader Joe Bob sent me a link to IxEdit to ask what I thought. I hadn’t heard of it, so I checked it out. They have a six minute video you can watch which explains it pretty well. In a nutshell, it’s a GUI editor for creating interactive stuff on websites. Click an element, tell it how you want it to behave. Think of it like CSS Edit for jQuery (it uses jQuery and jQuery UI to do it’s thing).

My thoughts: Wow, that’s extremely cool. But I’d probably never use it.

The fact that I’d never use it has nothing to do with the quality of the product. It has to do with the fact that it is beyond my Abstraction Point. If I’m going to write some page interactions, like a tabbed area or a click-this-slide-down, I’d rather write it myself in jQuery. But that’s kind of absurd isn’t it? jQuery in itself is an abstraction of JavaScript. When I write $(“#thingy”).slideDown(); there is lots of stuff going on that I barely understand. I’m far from “writing it from scratch”.

Taking it further, that code is ultimately served up from a web server. I certainly didn’t write that code. That web server runs on an operating system. The operating system runs on lower level code. There is a lot of steps between that circuit board and my slideDown animation. Everybody stops along the chain somewhere.

“That’s for newbies, not real developers.”

“I write my code from scratch!”

“I like to know what my code is doing.”

I think these are flawed statements. When we say or think these things, we are really saying “This is above my abstraction point.”

Your abstraction point is the level of abstraction you feel most comfortable in getting stuff done from day to day. It might be using design view in Dreamweaver and adding interactions with IxEdit. It might be writing in assembly language. Neither one is “better” than the other. It’s just where your current comfort level is, and more importantly, using the tools you need to to get the task done with reasonable speed.