Scripting vs. Coding vs. Programming

@laurenonizzle tweeted a link to a forum discussion about the differences between scripting, coding and programming. I’m offering my thoughts here, feel free to chime in with yours.

As indicated by several posters on that forum, the line can get blurry. This is mostly because the terms are used interchangeably. I can be a scripter, coder and programmer at the same time. The definitions can also depend on your development background.

Scripting

Traditionally, scripting may have referred to “incomplete” or “limited” languages. Usually used as the “glue” that tied different applications together, or just as an easy language to write something quick and dirty to automate some mundane task. Most common examples given are JavaScript, ActionScript and Shell script.

Yes, maybe 10 years ago JavaScript may have been considered a “limited” language – back when it was really mostly used to do some quick form validation or scroll some text on your browser, however that is no longer true today. This misunderstanding of JavaScript today is mostly accredited to developers that don’t understand it or have only used it to scroll text across a screen – and because it ends in “script”. Turn off JavaScript in your browser and try GMail, Facebook or even Google+. This is no longer an “incomplete” or “limited” language – in fact your web application would look incomplete without it; 1995 incomplete. Building a JavaScript based application today requires the same thinking and design you would give while building an application in C or Java. You need to apply the same design patterns that apply on the back-end. Speaking of the back-end, today you can even run JavaScript on the server side. So I can technically write a full GMail clone in just JavaScript.

Similarly with ActionScript. It started out as a “scripting” language to script Flash animations, games and applications. I actually messed around with Flash and ActionScript about 10-12 years ago. It worked different then and was built around that frame by frame concept to build a game or movie. Today, ActionScript 3.0 is actually not a scripting language anymore. It is as complete as a language can be. It is even compiled and runs on the ActionScript virtual machine – exactly like how Java code is compiled and runs on the Java virtual machine. In my mind, it is no less of a language than Java is. Anyway, ActionScript is no longer a scripting language. If you still think ActionScript is an “incomplete” or “limited” language then please check out the Flex.org Showcase - after that please wipe your brain matter off the screen so you can continue reading the rest of this post.

Another incorrect definition for “scripting” is that it is  to write instructions for another program to parse, but that is what code is anyway. They’re instructions for something else to run. (See #4 in the forum) So what about SQL scripts to query databases? This is a scripting language as well that directs another program ex. MySQL or Oracle how to query your data. But we don’t refer to these people as Oracle Scripters? You’re a SQL programmer. And no SQL programmer would say I’m scripting the query that will get the intersection of X and Y and then join that with the B.

So what is Scripting? I think it is when you use a tool or combination of tools to automate a task or series of tasks – regardless of the language it is written in. I can be lazy, I would script cooking breakfast if I could. It doesn’t have to be just limited to a command line tool. Use what you see most fit for what you are trying to automate. Sometimes I use shell script, sometimes it is an Excel script,  it can be PHP, it can be Java, it can even be C. Whatever.

Coding

On to coding. I don’t like this term personally, but sometimes I am a coder too – it’s part of the job – When I’m a coder I’m like this guy:

So a coder is someone who codes from one language to another. It can be from English to Morse code, or from English to Java code. When you are coding, you are translating requirements into a language the environment your application will run in will eventually understand (server, PC, iPhone, browser, etc.), and this is where the term “code monkey” comes in and why I dislike the term coding. Sometimes you got to do what you got to do and just crank out code.

Programming

To program any machine or application requires you provide it with a set of instructions to run. Be it your fancy coffee machine that is programmed to have coffee ready by 7:15am. It can be the radio in your car i.e. you program your favourite channels into it. Or it can be set of instructions telling your browser how bounce a ball GIF around on the page.

So what does this all mean? It means they’re all the same – sorry there is no big bang explanation here. At the end whether you are scripting, coding or programming, you are providing some environment like a PC, robot, or browser, a set of instructions on what tasks it needs to perform. Whether the language you do this is high level or low level has nothing to do with it. Whether it ends in “script” or ends in “++” has nothing to do with it. Whether it runs on your browser or on a mainframe has nothing to do with it. Whether it is intended to be sold to millions or just used by you has nothing to do with it.

I’d suggest you use none of the above terms. You’re a software craftsman. You design and build solutions using the best suited technologies for the problem you are trying to solve.

This entry was posted in thinking out loud. Bookmark the permalink.

4 Responses to Scripting vs. Coding vs. Programming

  1. Miro says:

    I personally like the “craftsman”metaphore in the spirit of http://manifesto.softwarecraftsmanship.org/, however – as these posts points out, it is not without controversy: http://ravimohan.blogspot.com/2005/09/nostalgia-for-guilds-and-other.html, http://www.davethehat.com/dh/blog/2009/05/25/software-craftsmanship-can-we-just-get-over-it/

    The http://manifesto.softwarecraftsmanship.org/main/reading has a lot of interesting thoughts in the “Food for thought” part

  2. Mr Z says:

    Crafting solutions to problems is something that has always
    been a valued skill whether it is building a kitchen table, a car,
    or a piece of software. More important than the skill in creating a
    solution is how well that solution works for the environment it is
    to work in. A huge 16 person dining table which is designed with
    great detail, accuracy, and elegance is still a failure if it was
    commissioned for a small apartment. The Le Car is a design that met
    it’s goals but is not very useful for transporting groups or for
    poor road conditions. Merely meeting the defined requirements with
    no plan for future function or use such as using UTF-8/16
    throughout the database even if requirements were for localized
    North American use, is not craftsmanship in the way that I think of
    it. The work of a true craftsman is durable and lasting, not
    something that only a few people can get to work right. I endeavor
    to craft software solutions regardless of language or requirements,
    and with as complete an understanding of the environment and
    possible uses as I can muster. With such understanding it is often
    possible to thrown in a few extra lines of code and create several
    ‘features’ which were not in the requirements but which create
    enhanced function and future feature growth/value.

  3. Eli says:

    I’m sorry, what is the point of this post?

  4. I too have an affinity for the craftsman metaphore. This
    post reminds me of a recent quote of Kent Beck: You’re creating a
    vocabulary, not writing a program. Be a poet for a moment.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>