Our standards have gone up. The amount of tools a web developer has to master to create slick and scalable HTML5 websites is simply staggering and, on the inside, big sites tend to look like Rube Goldberg machines.
But on the other hand, not-so-big websites, those that make up about 95 percent of the web, are getting ever easier to create, thanks to technologies like mod_php, infrastructure like Heroku and frameworks like Django. We’re at the point where casual programming has become so easy that you don’t really have to identify yourself as a coder anymore to actually be one. Biologists, accountants, musicians and journalists can all dive into web development and make small apps that support them in their work within a month.
I attended a lecture by John Resig last week, and one of the things that stuck was his advice to give your users the space to grow. What made jQuery so successful is that it always encouraged newbies to stick around and persist, even if they couldn’t tell a variable from a for loop. Those newbies eventually start coding up plugins, writing documentation and evangelizing your project. They’re dumb only if you keep them dumb.
Programming is about automating repetitive tasks and making information out of data. Those skills shouldn’t be the sole province of computer science grads. Imagine what the world could look like if basic computer literacy isn’t reading email but writing code.
We’re going to get there eventually, our society demands it, but there are some steps we as programmers can take today to speed things up and create a more novice-friendly hacker culture.
We can participate in spaces like Hacks/Hackers and StackOverflow where aspiring coders can interact with and learn from people with more experience. Schools aren’t exactly preparing people for this digital world, so we have to. But there are also some technical things we can do.
One is to sometimes just suck it up and create your application in PHP. PHP apps are easy to deploy and extend, even if the language itself is a mess. I don’t doubt Drupal would be a more elegant CMS if it was written in Python, but it’s also clear that its success has been predicated on PHP‘s low barrier to entry, because that’s what kickstarted the whole plugin module ecosystem, as it did for WordPress and even MediaWiki.
The other is to make sure our apps, even if they’re closed-source, have public APIs and are webhook-enabled. If you’re not familiar with webhooks: they’re little scripts you can write that can be notified whenever something happens within an application or CMS, like somebody saving a new record into the database or deleting a comment. This presentation by Jeff Lindsay explains it really well. Webhooks can do anything you want them to, but they’re ideally suited to solve interop challenges like sending an email whenever you have new items in Google Reader, or saving links you post on twitter to Delicious.
Together with glue services like Scriptlets, ifttt and Yahoo! Pipes, APIs and webhooks are turning the web from a bunch of silos into something more like legos.
In the words of Jeff Lindsay: “The read-write web gave us user contributed content… I want user contributed (democratized) logic.”