Does everyone need to learn how to write code?

I have been debating this with myself for quite some time now. On one hand, it seems that writing code, or at least understanding enough about code to edit it, is quickly becoming a skill most people will find helpful to have.  Something like knowing how to put together IKEA furniture, not completely necessary to do, but helpful if you know how. On the other hand, however, developers are doing a good job creating tools that abstract the code via some visualization. At the end of the day, these tools still produce code, but the user never has to see it.

I feel like the trend to create better, more domain specific, tools will win out over the trend of teaching non-technical people software engineering and development practices.  I’ve met plenty of people who consider programming almost magic, they don’t understand it and do not really want to.  Even if there is a simpler solution to their problem, if it forces them to write a little bit of code, they will take the hard way out.

Having said that, these people still want to customize their working environment, they still want to optimize their process and create custom software experiences.  A really good example of a domain of software that enables users to do just that is CMS or Blogging tools.  They enable users to customize their process as well as the look of their site and content.  They are largely WYSIWYG and do not require one to ever look at the code if he doesn’t want to.  And, at the end, all of the user’s work is turned into code.

Creating software that makes it easy and fast to publish content to the web is arguably what has lead to the rise of Blogs.  We can now enjoy content from people who do not know, understand, or care about the technical side of things. And now, in addition to publishing software, there are more general tools being created.  These tools are designed to allow regular users to create their own applications with the same ease as publishing on the web. They are designed to create Mashups.

A mashup is an application that combines the features of several other applications into a single tool.  A great site to track mashups is ProgrammableWeb. Check it out to get a better idea of what mashups are all about.

The advantage of creating mashups is that the developer does not really need to create any specific feature of an application.  For instance, lots of mashups use Google Maps to present mapping information.  This lets developers to concentrate on their core competency and not try to recreate already existing services.  On top of that, by using something as popular as Google Maps, developers are able to leverage a well known interface and thus, make their own application feel more familiar to the user.

As we have been discussing so far, non-technical users want more freedom and control over their experiences with applications.  This is where mashups come in.  Because creating a mashup involves reusing features that one is familiar with, their creation seems like a natural fit for application users.  To that end, several mashup creation tool-kits have appeared.  Most notably Pipes from Yahoo, Popfly from Microsoft, and MashMaker from Intel. The first two are really just abstractions of the programming paradigm using graphical elements.  The third does something very different.

Instead of trying to simulate programming via block and arrows, MashMaker works as a plug-in into Firefox or IE.  It lets users annotate their data as they are browsing the web.  The annotated data can then be used as input into other services and the produced result can be insert back into the original page.  For example, one can specify which part of a CraigsList listing is the address and have MashMaker render a CraigsList page annotating all of the listings with a small map from GoogleMaps. You can find more information, including a demo video, as well as the plug-in itself, on the MashMaker site.

By restricting the domain and simplifying the problem, developers can create powerful tools that enable non-technical users to create custom applications and experiences.  In the case of blogging and mashup creation tools less is truly more.  This is more broadly knows as domain specific languages, but that’s a topic for another post at a later time.

Reblog this post [with Zemanta]

2 Responses to “Does everyone need to learn how to write code?”

Leave a Reply