I’m fascinated by the increasing frequency with which designers are becoming interested in programming. It seems that every day I’ll run across another designer who wants to write code. Now, I’m not talking about hacking a couple spots of code here and there. I’m talking about designers who really want to write code and build something.

A Little Uncomfortable

Having gone to school for computer science, and knowing how much there is to programming, it makes me a little uncomfortable when a designer says they are going to write code. Algorithms, data structures, object oriented programming, classes, abstract classes, inheritance, functions, global variables, etc. There’s a lot to understand in order to do it right. For you designers out there, imagine if I told you that your engineers (the ones with no visual design background whatsoever) will be handling the visual design on your next project. You’d probably be a little nervous too. I’m not saying that anybody is or isn’t capable of another task based on their usual role. I’m simply pointing out that your initial reaction to that kind of situation probably isn’t excitement.

Left Brain and Right Brain Harmony

What interests me most about this situation is that designing and programming are traditionally thought to involve two completely different and conflicting sides of the brain. If you’ve ever seen a hardcore engineer trying to discuss an idea with someone equally extreme in design related skills and creativity, you would probably agree. Programming is very logical and precise. Design is more creative and subjective. How then could so many people with supposedly conflicting thought processes be so attracted to the opposite side of the fence? I can think of a couple of reasons.

The Ideas

it’s much easier for designers to dream up ideas because they aren’t limited by the constraints. Engineers on the other hand are, more often than not, focused on what they can do inside of the box. Being a technically grounded person, and having worked with numerous engineers, I feel our weakness lies in the quickness with which we say things cannot be done. Keith wrote a great post about technological excuses, and it really rang true for the most part.

However, I don’t believe it’s born of laziness or other reasons so much as the fact that engineers think in terms of the afore-mentioned constraints. An engineer’s world is based on concrete rules and boundaries. Oftentimes, those boundaries are very difficult to see past without a little nudging. This is where the creative vision comes into play. A designer who wants to see his or her idea executed can be the most unreasonably demanding person in the world. I salute them for that, but I also would like them to understand the typical engineer’s thought process. Don’t assume they are being lazy or ignorant. While that may be the case in some situations, they often just think in terms of limitations and constraints first. It’s not intentional, that’s just how they work. Understanding this difference can help to bridge the communication gap and hopefully circumvent any potential frustration.

Gateway Languages & Hacking

Why are designers so confident that they can program? HTML & CSS of course. While HTML & CSS are merely static markup languages, they make the idea of dynamic programming much less daunting. Then of course, it’s incredibly easy for anyone who can write HTML to download some JavaScript or a PHP script and hack a few lines to make it work for them. How much harder would it now be to write your own code from scratch? Again, I’m not defending the logic, but I do understand why designers and creative folks are no longer intimidated by programming languages.

The Evolution of Programming

The final reason I see is that the barrier to entry for programming has dropped dramatically. For instance, in the very early days, programming required extremely expensive equipment and punch cards which were then inserted into machines to tell them what to do. That looks easy right? Then, if you fast forward a bit, computers advanced to assembly language. Mmmm. Doesn’t that look like fun.

Programming languages then took some twists and turns and advanced confidently to where we are today. Mind you, somebody out there still has to understand machine code and the more complex stuff, but they’ve abstracted it to the point that almost anybody can now pick up a book and learn a programming language in a weekend.

Now, they probably won’t be writing the best possible code, or the most scalable applications, but they can develop applications. Add to this, frameworks like Rails, and you now have a significantly lower barrier to entry.

The Merging Point

With the advent of the web and the corresponding intersection of design and programming, the two disciplines have become increasingly intertwined. It used to be that design had nothing at all to do with programming. Anybody who has ever used a client-server application can testify to that.

With the web though, designers are now interacting with programmers on previously unheard of levels. And thanks to the gateway languages, learning how to program doesn’t seem like all that difficult of a challenge anymore. Of course, an engineer might say the same thing about design. Both sides are clearly way off in that situation, but we won’t discuss the qualifications of either side as everybody has their own unique talents.

Summary

While I don’t necessarily feel that either side is capable of doing the other sides job nearly as well, I do think it’s amazing how the two very distinct and arguably polar opposite disciplines are starting to overlap in some common ground. I’m very interested to see how far the merger goes.