Davide Casali = Folletto Malefico: Hybrid UX Director = Design × Psychology × Technology / Simplicity × Complexity

The “designers should code” bullshit and a not so new idea

It's really easy to simplify things and make bold assertions like "designers should code". As constantly happens, it's more complicated than that. I will reject that assertion, and I'll propose what isn't really a proposal, but an acknowledgment of what's already done for the best projects out there.

As usual, it’s more complicated than that.

Debunking the bullshit

Do you remember in high school that poor kid that constantly had low grades in math but brush in hand will be able to blow your mind by drawing? And do you remember the kid that has excellent grades in math, but was incredibly awful in drawing anything, even just a straight line? And the other kid that looked all the time annoyed and had overall low grades, but everyone listened amazed at their stories? And that kid that everyone knew, that talked with everyone, all the time? Have you ever seen the difference between the kind of people that follow an Engineering class and an Art class? And between a nerd and a jock?

Do you know Howard Gardner? It was 1983 when he defined his Theory of Multiple Intelligences. He was able to define in a brilliant way that there are different kinds of intelligences, identified by their brain localization, their place in our evolution, the susceptibility to symbolic expression, a distinct developmental progression, the existence of savants and so on. The intelligences he found are:

Then for the last 28 years, we read things like:

A designer who does not write markup and css is not designing for the web, but drawing pictures.
Andy Rutledge (2011)

My short answer is “Learn code.”
Frank Chimero (2011)

Honestly, I’m shocked that in 2010 I’m still coming across ‘web designers’ who can’t code their own designs. No excuse.
Elliot Jay Stocks (2010)

Designers must have a solid working knowledge of at least one modern programming language (C or Pascal) in addition to exposure to a wide variety of languages and tools, including Forth and Lisp.
Mitchell Kapor (1990)

Do you get what’s wrong here? Coding and Designing tap into two very different kinds of intelligence – it’s even more complicated than this, and Gartner is just a widely understood example, but let’s simplify for a second. We even have different stereotypes and jokes to identify the two categories lifestyles!

This recurring debate is harmful to both professions

So, please stop: this recurring debate is harmful to both professions.

It’s harmful because since it tries to create hybrid professionals, that by themselves are good, but maybe there were just exceptional specialist professionals. Because it forces young designers to learn coding, when they should study for example cognitive psychology and social psychology. Because it slows down designers in becoming excellent in what they are paid for. Because it creates the expectations that “designers should code, so I don’t need a frontend developer” (harming also frontend developer specialization).

So, please: stop this bullshit.

The ratio

But wonder what? It’s more complicated than that. People that suggest that designers should be able to code are suggesting a solution to a problem they see, before analyzing the problem itself. Once we look at it, we notice that there are two components of the problem:

  1. Know what code does
  2. Know how to code

Knowing what is very different by knowing how. This takes us to the usual questions: do architects need to know how to build a skyscraper? Do car designers need to know how to build an engine? Do a movie director need to know how to act? Does a surgeon need to know how to build a pacemaker? Of course not.

But yes, they need to know what these things do. How they perform. What are their limits.

And yes, learning to write code is able to build both these knowledges.

But not both knowledges are required for designers and that’s why the whole “designers should code” is bullshit. The sentence should be: “designers must know the capabilities and limits of their media”.

And wonder what? That’s exactly what happens in other kinds of design! A print designer that has never seen a type foundry will still be able to create wonderful prints. An industrial designer that has never seen a lathe will still be able to create wonderful objects. It happens every day.

And here we’ll reach the second point: teamwork.

Because how should a designer learn the limits of his media? There are two ways: use it and collaborate with people that build it.

The digital team

Let’s see what happens in a near industry. Around 1960, William Bernbach had an interesting idea: instead of having art directors and copywriters in two different departments, with huge difficulties to communicate, let’s create creative teams: one art director and one copywriter together working on the same design at the same time. His company went from $1 million to $40 million thanks to his creativity and these structural changes. Today there are almost no agencies that split art directors and copywriters. They are teams.

The team of the digital era is a designer / developer team

In this digital world – no, I’m not just talking about the web – there is another kind of team, and if you have ever met a situation when this team was able to live you know how well it works. The team of the digital era is a designer / developer team — well, not exactly, but let’s stop here for now. Also, the missing copywriter here is a huge problem in my perspective, but I’ll talk about teams and creativity another time.

The reason is simple: in this way they talk and collaborate. They learn the limits of each other’s profession without knowing anything about how actually do it. Because it’s not a requirement for either of them. It’s more efficient, and well… it’s healthier as well to have someone to talk with and get a different perspective.

 

Is it all wrong then?

If you read so far you should know my answer. Yes: it’s more complicated than that. ;)

There’s still a good point in suggesting that designers should code (“Why, it isn’t possible to do that? I’ve seen it done by Facebook!” – argh it looks simple but it takes ages with this platform here!). Exactly as there’s a good point in suggesting that developers should learn some design basics (“Stop asking me to do it pixel perfect” – argh it’s not pixel perfect what I’m asking!).

The reasons are simple:

And the reverse is valid for developers too.

In any field, if you expand your view to know all the ecosystem around you it’s beneficial. You can’t know everything, because even in a single discipline there is enough knowledge to fill a couple of lifetimes, but knowing a little bit more helps a lot. And I’m not talking just about designers and developers, but all the things that happens in a project. Knowing about budgets, timeframes, clients, market, advertising, SEO, health, food… all things that are able to increase efficiency, satisfaction in the client and quality in the final product… and satisfaction for yourself as well.

So: you don’t have to learn a bit more outside your discipline, but you could.

However, please, please, please: before coding learn some cognitive and social psychology! It’s more important for your profession!

If you want to read more, there’s a great post from 2009 by Lukas Mathias about this same topic: “Designers are not Programmers” (I told you it’s an old and recurring topic), and thanks to Mark, Chris and Mike for the excellent discussions we had on this topic. Thanks also to Sean McCabe for a nice infographic to explain better the concept above about know what/know how.

Once understood the difference between “have to” and “could” the next step could be then a good explanation by Mike Rundle on the values of both generalists and specialist.

Q&A from the comments

Federico Fasce:

That's really interesting.
I don't know to what extents you can apply this on game design, because well, it's even more complicated than that.

Let's forget for a moment non-digital games (even if I think in that case code would equal basic maths) and focus on videogames.

Rules in videogames are expressed by code. Code is the language of gameplay in videogames. But which kind of code?
It's not the system building code, the one you use for creating, say, a 2d physics engine, with collision management, gravity and stuff. That's not obviously the job of a designer.
It is the gameplay code, instead, all the stuff dealing with in-game values, how they change, with the behavior of the various actors, and so on. These are all the little "if you do this, it happens that" that it's your job to define.

Now, is obvious that you can express such values and dynamics with words. But in this particular context is really better doing it in code. Not just for fast prototyping reasons, but because it would be really easier for you to tune-up all the little details without the need of a coder besides you 24/7.

I guess that game design is a bit different in this sense, because of its extremely dynamic nature. I tend to see myself as a "pure" designer (something a lot of game devs still think non-existent) but I feel is my responsibility to know the language which better explains gameplay. And in videogames, it's maybe code :)

Davide 'Folletto' Casali:

Yes, I agree. However I think it's something that isn't a must, as is usually the case when people talk. As for a web designer is better if he's able to code, but not a requirement, the same thing exist for a game designer. It's not a must, and that's the most important point.

That's also why I was saying that the D/D team is so important: if you're doing a videogame, it's critical that you could discuss changes and variations with developers. They will *still* be faster than you to implement all these little changes. And if you need to play a bit with the parameters, it's quite easy to make a constant out of some formulas... like it actually happens in bigger games.

I prefer for designers, and game designers as well, to be first excellent game designers, and then to add the level of code proficiency that can help them to do exactly what you're saying.

What I see instead is that by forcing so many designers to start learning code even when they are junior, they are in fact "killing" their design side, that should be the first thing to be built as a junior. :)

PotHix:

Æ!!

Designers should write markup code, not programming code. Designers should not deal with ifs, fors, while and programming logic, but he *must* know at least how the markup language works if he will design a web page.

If he don't know it, he is designing a banner.

;)

Joshua M:

PotHix,

I work at a top-level interactive agency. Not one of our designers does or can write the markup - and as the senior developer in the shop, I don't want them to. They are designers, not developers. Developers should be writing the markup. If for no other reason, for the following: Whoever writes the markup needs to know how they are going to interact with that markup later with javascript, etc - and that knowledge and forethought saves time in the end and makes integration with all of the planned features easier.

"If he don't know it, he is designing a banner." - the portfolios of MANY agencies disagree with you.

Bob Dobbs:

In my opinion, you are making the same mistake that has been made over and over again: comparing software development with other industries.

They are not comparable.

Most of the problems with software projects are because they are managed by people who have never coded. The designers have never coded. The developers can code but are poor at explaining why software development is different, or even realising that this is so. A high turnover of developers, resulting in the same mistakes again and again.

Everyone should be able to code. Then we can move forward. The division of labour does not work because it reduces developers to mere coders and takes away their stake in the outcome.

Davide 'Folletto' Casali:

If everyone should be able to code, then please, everyone should be able to design as well. ;)

Coders that became "executioners" are bad, but as a whole, it's a problem for the whole team and the whole project! And that's a problem that isn't in the "designer should code" problem, but in the team dynamics problem. :)

Don't mix things up, please. :)

Sekhat:

HTML and CSS isn't programming anyway. It's declaring what is where and how something works. A designer can pick this up I'm sure. It's not like you need to write complex algorithms, Your just telling a browser what is where and how it should look. The browser does all the scary logic stuff.

Davide 'Folletto' Casali:

You're sure, but unfortunately that's not the case. Try. Find an excellent visual designer with no whatsoever skill in that field, and you'll discover that while he's able to get the limits you explain him, he won't be able to write a single line of code because he will keep missing closing characters, nesting and forgetting the syntax.

Really, people are different, we aren't all built the same. ;)

rskuja:

Interesting.

Lets assume that what your saying is right.
Then what kind of knowledge must 3D (artists) have working in Maya, 3D max? To produce qualitative work you have to be good artist with knowledge in physics, math and programming to calculate right light emitting and making gr8 animations with rigged objects. Needed knowledge for 3d art is way more than simple html with bit of CSS and JQuery. IMHO great artists should be able to code, understand physics, basic math and programming. They dont need to know C#, Ruby, Python, C or anything deeply, but scripting like basic usage of JQuery, and 3D soft scripting they should learn to master their potential.

Davide 'Folletto' Casali:

A 3D artist doesn't do all of that. In companies like Dreamworks or Pixar, you have people that do the models and people that do the skeleton, the physics, etc. And most of the time, someone that does it all, uses "engines" made by someone else.

Again, it's exactly the same thing: there are people that can do both, but there are many more people that can do one or the other thing. :)

Sekhat:

No, but we can all learn things outside our usual "intelligences" Just because it's not initially intuitive for a designer, doesn't mean he can't learn it.

I didn't just start typing code and it was all perfect. Even 6 years in the industry and 14 years of my own time coding I still miss closing brackets and occasionally make other syntax errors. I certainly don't know every HTML tag or CSS property there is and have to look up the uncommon ones often enough.

While I concede, this would be harder for some than others, and many probably don't want to even try because they foresee they won't enjoy doing it. It is still a useful skill for website designers to know. If you can mock-up your website design in HTML and CSS, then you know your design will won't cause too many problems when passed over. Even if the product never uses your mark-up, it's a worth while to know that it can work in the browser with ease.

Worth noting, I don't believe you should know C, that's not going to help you design for the web, neither is Python, but HTML and CSS in my view would help a lot.

rskuja:

Sure its not one person, but that does not mean the guy who makes rigged body and physics is not an artist, movement for 3d object is as much art as making object itself. Yea in that case there might be like an artist who only draws and he have buddy who makes markup if that is big company, if its not, then those two merge in one person.

JE42:

The more complicated the design is the more knowledge you need about the system you are designing and coding for. And if you have a complete knowledge about the limits of the computer system, you actually can code, because only the code of a computer system defines it's behaviours. Everything else is an approximation.

However, even coders don't know everything about the system they are coding for. They are using approximations too. The question is when is your approximation of the system good enough and when do you need to learn more.

If you cannot code, you will reach a limit as a designer. A designer how knows howto code, will understand the limits better.

In some environments this might not be that important, however, the more competitive your environment gets, the more important it will be.

Davide 'Folletto' Casali:

@Sekhat: I agree, that's what the last part of the post is about. :)

@rskuja: I should ask in detail the terminology they use for different roles, but I don't think they are called artists. I'll ask, however. And again: of course, it's *better* if you know bot, it's just not a *requirement*. :)

@JE42: You're mixing. I can advise to re-read the middle part of the article. There are two kinds of knowledge. :)

I guess I'm getting a lot of answers from developers or people that can do both design and code. I know, if you can do both it's hard to understand someone that couldn't. :)

Paul Pellegrini:

"IMHO great artists should be able to code, understand physics, basic math and programming."
Imagine, you would have said that 20 years ago =) The prefect contradiction, isn't it? Why has it changed?

Anyway.. I also think designers don't have to learn coding. And I also agree that it can only be positive for them to know how to code.

rskuja:

The problem is gap between developer and artist because they are very different type of persons with different view to things. Developer will never have the touch of designer to feel the design and make adjustments on the go or if its complex design with many moving objects and interactions developers have often hard time understanding designer intentions. That is why developers are happy when designer can step closer to them with knowledge of scripting and markup. They will understand each other way better and achieve goals much faster.

PotHix:

Æ!!

@Joshua, @Folleto,

They need to know how to build a web page, so they will not create weird designs that fits good to a banner but is really painful to build on a webpage.

I'm not saying that every designer should give the HTML, CSS and Javascript to the developer, but they should know how it works, and have an idea of how it will be made.

We know that almost all designs can be made on a webpage, but we can't measure how much time and effort it will take. How much workarounds we will need to do to have this "banner" made as a webpage. And after all we will look at this "awesome design" as a web page and think: "What a piece of crap I've done to make it works...".

All of this just because the designer doesn't know how it works, he wasn't thinking on the final work when creating the webpage. He just need to keep in mind the problems to create a webpage.

That's my point. The designer must study the markup languages when designing a webpage. Doesn't matter if he will write code or not.

Martin Lindsay:

I agree with this mindset.

As a programmer I find it very frustrating when I'm stuck trying to implement some design that makes no sense when you try to put the functionality into it. That's why it's important for the designers to have some idea of how it works, and be able to understand some of the limitations.

Of course though, I know that I could never do design and I know that I wouldn't be able to do my job if there wasn't that separation. I'm known by my programmer friends to design "ugly" interfaces. They make sense, people can follow them, but are so unattractive to look at that no one wants to spend any amount of time in it (they look find to me :P). I can follow a set style in a design though, and extrapolate from it. That's the part of design that I, as a programmer, am expected to know.

It's always important for people who work closely together to understand part of whatever the other is doing, but trying to find those "super people" who can do both jobs entirely can be a difficult search to go through, and may not yield as effective results.

UxCodeine:

Brave article. Is the Author a print designer? I see coding (html5/css3/JS/RoR) as building a print mechanical is to print design. Quit hating "hybrid professionals". Due to economy reality designers have to learn to code.

Davide 'Folletto' Casali:

@PotHix: The answer is simple, really: teamwork. And that should happen, code or not code. :)

@Martin: "It's always important for people who work closely together to understand part of whatever the other is doing". Yes. :)

@UxCodeine: I do some print design, but actually I'm both a UX Designer and a Developer. You can check both my portfolio and GitHub. ;)

sebastian:

Mm yeah, nice POV.

I feel I had to learn both areas to solve the problems I faced for developing my main product.

Became kind of designeer :)

rskuja:

Here is example of my friend http://artmartinsh.blogspot.com/ great artist but with good knowledge about 3d scripting, game engines and physics. That is how i define good artist. Same with web oriented persons. There is always artists who don't do code and i respect everyone but then they should stay away from web or games where they usually mess things up.

Jason:

I think what it all comes down to is the point that you're missing. The simple fact that you can't correctly design for the web if you have no knowledge of how it works. Yes, you're a designer. You're just not a web designer.

The code you seem to be confusing with programming is actually called markup, which essentially, is giving the design structure. The designer does not need to code the website himself, but he should be familiar with how the code will affect his design.

Understanding HTML/CSS is essential to high quality front end work. If you’re just pushing out a PSD, you’re only making a picture of a website. It’s not actually web design until it’s being rendered by a browser, interactivity and all.

Davide 'Folletto' Casali:

@rskuja: Sure. There are people like that, and that's awesome. But not everyone *must* be like that. That's the difference I'm trying to make here. :)

@Jason: "The designer does not need to code the website himself, but he should be familiar with how the code will affect his design." Yes, exactly. But this doesn't mean "You must know how to code" but "You must know the capabilities of it". That's what I'm saying in "The ratio" part above. :)

JE42:

@Davide:

Actually: I did read the middle part. I should explain my point a bit better:
If you know how it works, you know how to do. This is does not apply to a lot of other disciplines, but it applies to programming.

The basic concepts of programming are not difficult. However, if you cannot grasp them you will not be able to grasp a lot of types of limits of software applications and hardware. On the other hand, if you know the basic concepts of programming, you can code.

kadnan:

Your article would've been so much better without the incessant 'it's more complicated than that.'

Limon:

I've always maintained you can have a great designer who knows a little bit of code or a great developer who's OK at design. It's a rare (like the hope diamond) situation to find someone who excels at both for the very points you make.

I think people who maintain designers should code and vice versa are simply looking to cut budgets and save money. Yes, it would be nice for one person to do the job of two people, but the old adage can be applied here - "Jack-of-all-trades but master of none."

I chose to develop myself and in no way put myself out there as some master designer. The two disciplines should be separate - you'll find you get MUCH better results that way.

James:

Very, very well put. A few of these people yelling out 'designers should know how to code' are meaning to say designers should design with a purpose and not just to make things look 'pretty'.

Pedro Batista:

Doing CSS and HTML is not programming at all, its clever Photoshop without the GUI and keyboard shortcuts.

I kind of agree with you, designers should design, developers should develop.

BUT:

1 - This creates silos of knowledge, wich lead to disaster.

2 - The track record regarding the relation between designers and developers has been less than stellar, mostly because of point 1.

3 - I have been typing "developers" not "coders". Programming is one of the most complex and intellectually challenging thing a person can do, its very different than "doing some Jquery" wich leads me to point 4.

4 - You see, we designers tend to bitch when customers demand we "design" their "vision" even when it is a complete pile of crap, making us people who draw pictures. But doing an honest retrospective, we do the exact same thing to developers, treating them like mere typists, or coders or code monkeys.

Thats why i think designers should know how to "code" (even if doing CSS isn't coding) and developers should know how to design.

Doesn't mean we switch roles, it means we are no ignorant.

Blain Smith:

Awesome thorough post.

The "designers should code" statement is the "intense minimalistic" way of saying "designers should understand the basics of code to know the limits of their medium" and it has a lot more impact when heard. I can't speak for everyone, but when I say it I mean it the way you explained it in your post.

seb_p:

Wow, I'm an artist and I use CSS everyday. It's a tool as a brush or a pen. You visualise how you want your layout and what color scheme you want to use. And regarding HTML, It's only markup, it basically holds everything together. It's the frame. Cross-browser compatibility and knowing how to build fluid-layouts is just a detail. And who says visualisation says spatial intelligence. It's different if you're using Python, but CSS and HTML common?! I believe in that

"A designer who does not write markup and css is not designing for the web, but drawing pictures.
— Andy Rutledge (2011)"

Your problem is that you seem to confuse markup and programming languages. You quote Rutledge next to a guy that says that designers should learn Pascal !
"Once we look at it, we notice that there are two components of the problem:

Know what code does
Know how to code"

You forgot : Know what code is.

Blogreader:

Amusing typo: surgeons shouldn't know how to make a PACEmaker. A peacemaker is an old missile type :). I could see a job description asking for open heart experience and weapon designing, much like programming classifieds ask for.

Mustafa:

But in the real world a designer who does't know how to code is at a major disadvantage. But I get what your saying, just being a designer without understanding how things works is going to cause a lot of problems. But the question is how do you understand HTML / CSS / Javascript / Action script etc without doing it.

Sudhir:

I agree with Sekhat. Programming skills should be limited to HTML & CSS. Similar to how Photoshop has a learning curve, HTML+CSS too has a learning curve. Probably a bigger one! But is it worth it? If you think buttons click should provide visual feedback to the user, then it is definitely worth it. Buttons are one of the basic elements and there are more complex interactions such as drag-and-drop, filling out dynamic forms, selections that cannot be explained via an image. I have been in many meetings where the developers have not implemented it the correct way and there is a lot churn before getting it correct.

Let the prop do the talking..

César Salazar:

HTML is way different from a programming language. HTML is a language that describes structure, not logic. The web is all about structuring information in a way people can make sense out of it. Any web designer that is not able to use a language to provide structure, is not at the to of their profession.

Seriously:

Can you draw up any more phony stereotypes?

This article is a complete waste of time.

Designers can do markup, like HTML/CSS (This is not coding).

Developers put the markup into a framework, like Rails etc. (This requires coding and understanding of MVC).

Eric Schrijver:

To me, your post reads insightful. But I feel you are kind of missing the intricate relationship between design and technology.

A print designer that has never seen a type foundry will still be able to create wonderful prints. An industrial designer that has never seen a lathe will still be able to create wonderful objects. It happens every day.


This is not true, if we look at design education. Fashion students sow together their work themselves. After they graduate, if they attract investors they are able to outsource some of their production. But their understanding of their craft is always founded in experience. As is the case with product designers who have to build their own prototypes while in school. Graphic design students engage in all kinds of printing techniques from sillkscreening to setting in movable type.

Product designers are highly invested in the industrial process, often working together with engineers to come up with new processes. And the graphic designers that were first to catch on to the Apple Macintosh reaped the benefits of being able to come up with a new aesthetic working with the computer by themselves—the digital layout systems that had been used up until then, manned by engineers, had been used mainly to replicate the look and feel of existing processes.

So technology is not something “out of the field”. It’s the field itself. To make relevant and disruptive design you have to leverage developments in technology and make them your own. So even if you at a later stage you don’t execute on all the work yourself, hands on experience of technology is not an extra—it’s constitutive.

The problem in design education (I teach design at an art school), is that design for print still has much more of an allure for students than design for digital. So the technology surrounding print has more of an appeal than the technology surrounding the screen (which is, code). When you look at the reality of their practice, designers actually pride themselves in ‘geeky’ technological details of their craft when they are related to the printing process, knowing about things like spot colors and paper stocks and binding methods. But knowing about code is still somehow ‘for others’, the developers.

This is bound to change, I suppose, as the technologies that designers use have always changed (remember these few designers with a Macintosh? Now they are the tools of the trade; tomorrow is something else.)

david:

"A 3D artist doesn't do all of that. In companies like Dreamworks or Pixar, you have people that do the models and people that do the skeleton, the physics, etc."

Sorry, You are Wrong. As a former ILM engineer I know that you cannot make it as a 3D artist working on Lighting, Simulation, Rigging, etc unless you know Python.

The most amazing artists in Hollywood are also programmers.

Sorry, but to really take art to the next level, you really have to learn to code.

Antonio:

HTML/CSS knowledge won't hurt. There are lots of designers doing their webdesigns directly in HTML/CSS, it's not slower than using Photoshop.

Dayton Nolan:

Writing markup and stylesheets for the web hardly has anything to do with math other than what a designer with any professional experience is already familiar with. This is not rocket science. The reason we keep asking for designers who can code is because it is essential to understanding and working with the medium. Being able to make a pretty picture in Photoshop is less than half of a designer's job. If you're a professional, this should be a required skill. Nobody pays people to sketch in their notebook in math class. Conversely I would say that all programmers should know Photoshop and have a bit of design knowledge. They don't have to be able to create complex layouts and designs, but they should know their way around the application.

JE42:

"HTML is way different from a programming language. HTML is a language that describes structure, not logic."

HTML is usually not static. Client side and server-side processing happens on most websites.

Since a designer also designs the interaction of the site with user. Client + Server side processing is relevant for the design.

DA:

"It’s harmful because since it tries to create hybrid professionals where maybe there were just exceptional vertical professionals."

That seems to imply the human brain has a memory limit and that one must sacrifice one area of understanding for another.

"Coding and Designing tap into two very different kinds of intelligence"

I find this line of thinking is what causes most crappy software. Yes, lots of visual designers have no concept of how code works and lots of back end software developers couldn't tell courier from Trajan. And when you put these people together, you often end up with clunky solutions.

The right/left brain thing isn't a literal split between the two sides of your brain. Take a look at architecture. Successful architecture is the blending of engineering, construction methods, and aesthetic design. A great architect doesn't *have to* know how a building is built to create a visually stunning piece of work, but architects that have spent some time with a hammer tend to also be the ones that build visually stunning pieces of work that can also be built on time, on budget and in an efficient way.

The profession needs all sorts of skillsets. You want a team full of experts & generalists. When you only have a team of experts, you end up with a lot of friction in the process as there aren't smooth transitions between the 'steps'. That can be do to fundamental misunderstandings of the give and take process or (even more common) due to there being skill gaps.

If a UI designer doesn't want to learn to code, hey, that's fine, but there's no need to write a bullshit article to defend one's personal preferences. ;)

Joshua M:

Designers design. Developers code.

They also work together. Our designers, one, have been doing this for a while and know what the boundaries are - and they know where to ask questions. Our developers work with our designers - developers are part of the project long before they start coding.

If you have problems with designers designing something that doesn't work well as a page in the end - the problem isn't the designers not knowing the code, it's your process - it's broken.

Too many people seem to think that the designers design, then the developers take over - this model is broken from the outset. At no point in a project should the developers and designers both not be participating. The designers might be doing more "production" up front, but when the developers are working the designers are still working - adjusting as needed, working with the style of animation / transition, etc... just like in the beginning the developers are helping reign in the designs.

And to the comments about designers and developers speaking different 'languages' ... well, fix that. It comes down to ignorance of the other's workflows. If your developers don't understand your designers' workflows, and vice-versa (workflow, not their actual work) then you're going to have problems as well.

Also - if your designers aren't apes, it doesn't take but a few projects for them to get around to what they can and can't do on their own.

As a final comment - there is another reason why i prefer that designers don't know the code. I don't want them to completely know their limitations. I want them to push the designs as far as they can - if they know the boundaries, they are less likely to push them - and maybe some people are happy with that, but as a company culture around here, we aren't, we push ourselves with every project we take on (in fact, we wont take on a project that doesn't push us) - and having designers not knowing the ins and out of what's possible, means that they push for new stuff, and sometimes we have to push back and tell them no, but a lot of times we just have to figure out how.

Azrael:

Thanks for writing this. This reads almost as a philosophical manifesto for how we run Double Cluepon Software.

I want to address a few points:

David, the former ILM Engineer wrote: "Sorry, but to really take art to the next level, you really have to learn to code." I've never heard a bigger load of crap in my life or career, and my IT Career spans 20+ years. Your statement conveniently ignores that there are varying degrees, and that success is subjective. For Hollywood, and working on special effects I am more than certain that writing code comes into play. But you don't need it to "take art to the next level". An illustrator does not need to see the source code of an adobe product to make top notch artwork. Furthermore, while Blender is something that can benefit from Python knowledge, excluding the fact that people do gamesprite renders in it, without an understanding of Python is quite disingenuous. The world is bigger than ILM and Hollywood.

Getting back the basis of the article: The point of the article is simple, and more to the point that you missed: keep people working within the context of their core competencies. Speaking from a game design/development perspective: It's not that an artist should exclude all knowledge of how systems or code works, but it's not necessary for a background painter, or a texture painter to know how an array in C works. It's not critical, must have knowledge for someone who concepts environments, or creatures for a game to know how to look at pointers.

This is the crux, and the heart of the posting here. Many of you missed it.

Creating content for an audience should be about a team that fits hand in glove...dovetailing. It means finding people who are good at the core competencies of what they do, and dovetailing their work with the next step in the chain. Sure, there should be some overlapping knowledge. But I don't expect my developers to know, or understand color theory, or vanishing points. Our Art Department and Development Department work together, within the boundaries of their specific knowledge to develop solutions together: the developers explain what they need for the programs, dimensions, sizes, formats. The Art Department works to that spec. The Art Department needs to do something within the code, they talk to the developers to see what can be done. They come up with solutions together.

But this idiotic notion artists should know code and vice versa? It's a load of garbage. It's a turf war dressed in a tuxedo.

Jesse Rand:

This argument is getting so tired.

From my experience, not living in a large city. Designers in the web world need to know code. Sure we need to understand the psychology of color choices, but if we want to produce interactive products we've gotta know some code.

Plus there are entirely too many "ifs" here. Many designers will never need to know code, because they don't design for web. Which is great.

But a lot of young designers are going to see shit like this and say, hey I don't need to know code, I'll just be awesome at design and roll out into the real world with my portfolio and all will be well. It won't, small agencies need designers that can streamline the process of building a website. This is done by designers knowing HTML/CSS/PHP/jQuery - at least well enough to know that their design will be virtually impossible to build.

Brandon Ferguson:

I don't understand the segment of the design community that exhibits such professional laziness as to not learn to manipulate their medium directly. During my BFA we saw this a lot with designers who understood the value of the web and wanted design for it but refused to learn even simple mark up because it *looked* like code.

Sadly this is something that didn't start with HTML but we saw it with each wave of tools that would come out. 30 years ago we'd be talking about moving away from stat cams and learning digital methods or having to set our own typography. Even when I was in school students refused to take initiative to learn things like Quark/InDesign, Illustrator etc. Basically anything out side of the things they started with and were comfortable with.

The disconnect in not being able to manipulate your chosen medium is damaging. While you say that understanding the limitations is enough I'll argue that a great deal of time it isn't. The designer's job is controlling that experience and design from the highest level to the lowest. Being able to design with intent and ensure its implementation is key for any designer - this especially includes the web due to its interactive nature. Otherwise you're not much better than a painter who does not paint. Sure you understand composition, art, expression, but at the end of the day you're trusting your work to another who more times than not *will* miss things (even as a developer who studied design and worked as a professional designer I miss a great deal of finer bits when I have to markup another designer's work).

Fortunately despite the segment of the community who seems to spurn learning mediums that are even slightly technical there is a growing segment who have embraced them and are making fantastic things as a result. This isn't unlike the print designer who really embraces production (which was a required thing in getting my BFA at least). Sure at least understanding bits of production can keep you from having some other production designer want to punch you in the mouth and maybe keep you from producing impossible objects which cannot be produced - but it's the one who understands the printing processes, and post press processes best who can make the most stunning objects.

They have a more complete control over their medium which if it isn't a requirement, should at very least be something we all aspire to. Not argue against.

Ben Voran:

As someone who does both Code and design, may I suggest that an evolution is happening within the field of web design where technology/culture/demand is influencing a new breed or hybrid (oh I said it, that dirty word...:) of interactive designer/developer (notice I didn't use programmer).

May I also postulate that something similar took place when Computer Aided design took the graphic design field by storm... It was either stick to traditional means of design making or embrase the wild new Tech heavy digital graphic design programs (which in that era was probably as intense as learning a new language say like HTML)

Did that mean that traditional means of Graphic Design went away? By no means... Only there were new tools to further the Design Medium. I consider front end technologies to be a different Canvas than our static pixel comps... As a designer is it easier to mock up something in Photoshop/Fireworks or with HTML/CSS? Depends on your skill set and adoption of technology... CSS3 makes it pretty easy to do some things that could only be achieved via pixel based graphics... SVG, Canvas and other techs (Flash, don't hate!) have made it possible to do some pretty neat stuff with out relying on our favorite graphic design programs.

I'm not saying that we are at point where we should give up PS comps or not include traditional Graphic Designers in our process... What I am getting at is the assumption that "Web/Graphic Designers" are those who design only in Pixel based mediums...

Radical I know, but in 5 years time we might be seeing Web Designers forgo PS/FW and build their comps right from HTML/CSS... Lets not limit ourselves...

dp:

Wow! Love this. I agree with this article completely!

two points I'd like to make:

1. If designers need to know code then coders need to know design.

2. There are other disciplines that are more important for designers to know:
-Learning a 3d app is more applicable to a designer.
-Learning an animation app is also more applicable.

Learning code will definitely dilute design abilities. I know this first hand.

So it goes...

-dp

sbeam:

HTML/CSS is not "code". It's not "programming". It's the medium. An artist who isn't familiar with their medium is not effective at realizing their vision. A web designer who is not highly familiar with HTML/CSS is like an industrial designer with no knowledge of materials, who has never worked a lathe or drill. Or a print designer who doesn't know the interaction of various types of inks and paper on a real press. Can they call themselves designers and get billable hours? sure. But somehow the implementation falls short of those who know and love the material aspects of art, i.e., craftsmanship.

dMullins:

I think it's important for others to keep their opinion to themselves and do them. If a person can't code, but they're a meticulous designer with a strong, proven knowledge of code technologies, then I see absolutely no problem. I love seeing Stocks, et al., called out here.

Aladin fenster:

Very important topic and discussion. Transdiciplinary approach goes way before gartner or whoever else was quoted. Leonardo da Vinci had already something to say about it some years ago. the world is moving towards hybrid languages, original knowledge patterns, dots that connect different areas of interest and bring new visions. Code, design, semiotics, gestalt, psychology of vision, usability, user interaction, symbolic languages, typography, theory of colors, technology, different platforms... What I think is central to the discourse is consciousness, the awareness of the reasons why something is done in a certain way. And to be able and willing to control this process. A designer knows very well that she has human beings (users) as the centre of its practice. it's not the deep knowledge of the code that makes a designer a better designer. This makes the designer a better producer of websites (for example). What makes a great product is the capacity of human beings to know all the values that make a prodcut great, being open and curious about other disciplines, and team up with best people. To ensure that something is done not because it's easier to code, but because it's right for the project.

kakashi:

What if I tell ya that the Theory of Multiple Intelligences is bullshit?
The intelligence is multifocal.

gman:

I think there is a semantic issue here on the definition of "designer". To some it seems to mean something along the lines of "design the visuals". To others it means "design the user experience" which includes both visuals and interaction.

If you are one who defines design as visuals only then sure there is no need to learn to code.

If you are one who defines design as designing user experience then not being able to code is like not being able to draw. Both are required to "design a user experience".

Joshua:

Designers should code a little so they know what they are asking programmers to do.

Programmers should design a little so they know how hard it is to design.

No one is asking you to be everything amazing. Just to keep learning and keep growing.

klb:

As someone who's been around web developers for years, I would flip the question the other way. How many developers believe it's critical to their job to know Photoshop and be able to manipulate graphics? How many developers are able to lay out a web page in an attractive manner without any help from a designer? At least one reader actually admitted that his skills are horrifying, but based on the various programmers I've been around I'd say at least half of them are incapable of putting out a simple form with no typos, fields aligned, etc. To argue that designers should learn HTML or go home means that developers should be required to learn Photoshop, image editing and page layout or go home. We would lose a huge number of web developers if basic design skills were actually a criteria for landing a job.

Jake Dahn:

I think that you are missing the point on this to some degree.

When people say that a designer must learn how to code they are generally talking about html and css. For a designer to learn html and css is to continue down the same line of design education that they've been on for years. In reality html and css are just tools for creating design, just like photoshop, illustrator, or other commercially available tools.

If a designer is to become great, they need to understand every layer of technology that they're using to create their design, and I think it is completely valid to say that html/css is one of those layers.

That said, I do not think it is necessary for designers to learn how to write html/css; however I think that it makes their life much easier to work in the field.

If you're a designer, spend some time working on learning html and css, if you can not do it alone, seek help from your peers.

Joshua M:

You guys keep saying that "its just html/css" ...

Why do you want people laying out the markup and styles without knowing how the implementation later (the js, etc) will affect it? Thats like asking someone to pour a foundation for a house without knowing what the house it going to look like. The designer designs the house - the developer builds it... they dont turn the architects loose with a pile of lumber and a hammer... why do you guys think the same should happen?

Graham Smith:

I just feel that it's incredibly useful if designers at least understand basic CSS and HTML if they tinker with website design.

If you are a designer who designs websites as a core discipline then a working awareness of how it all works and looks is not just useful, but it's also essential in being able to design the best out of the technology.

The modern day flexibility of CSS and HTML is such that if you don't understand it then you can't possibly design a website to it's potential.

Nicole Maron:

In the last eleven years I have never had the need code or program or markup, because as a UX designer with basic interpersonal skills and a deep personal respect for the various specialties in the tech industry, it is a very simple matter of collaborating with programmers/developers/coders and visual designers to ensure that my designs are both feasible and able to utilize the most appropriate and engaging interactions. Good design is not just about the final product, it's about the process that gets you there. Most of the "designers should code" camp seems to come from:

A) developers who have no idea how to collaborate with designers because they've never been in an environment where that inter-team dynamic has been supported:
- they've suffered poorly thought out designs that were tossed over the fence at them with little to no annotation then been unfairly blamed when they misinterpret interaction behavior
- been shut down by managers who won't hear that what was being asked of them wouldn't work
- been forced to come up with crazy workarounds because of the inflexibility of some designers to make small changes that respect development constraints
- been made to come up with budgets and timelines they know are false because designs weren't frozen when they should have been
- been basically treated like code monkeys instead of being respected as creative collaborators with valuable perspectives

Like design, engineering is also largely problem-solving, so devs in this position look for solutions. Some believe that the fix is for UX and/or visual designers to code/markup themselves, so there is at least one layer of crappy design work and designer bs they won't have to deal with and so the designers will understand some of their pain. But the real problem lies in the end-to-end design and development process, which greatly determines the team dynamic and the communication, or lack thereof, it affords. This is a management issue that only gets fixed from the top (or top-middle) down.

B) tech depts who aren't given the resources to accommodate rapid prototyping for internal evaluation or user testing/acceptance. They want it to come under the design budget because they either don't believe their guys should be bothered until designs are set, or because they just cannot successfully negotiate the budget for it in their own depts. This is not a judgement against them - it is the reality of their business.

C) startups which can't afford, or don't see the need for, hiring both a front-end dev and a designer. In my experience, these guys never see the light until they burn through a few designers before giving up and either hiring another person or engaging a design agency.

D) devs whose professional philosophy is that prototypes should be created in a format that they can jump right into, rather than have to be recreated in whatever front-end technology they are employing. From their perspective, prototyping "just" design (using paper, wireframes etc), rather than having the prototyping step also go down the dev proof-of-concept road, is doing it the dumb way. But this sometimes clashes with the designers' abilities to rapidly process requirements, create designs, and test multiple approaches.

Reading though this discussion, I see most of the points made as valid, but narrow. The fact is that all the different environments you all have described exist, and in some, designers are required to code or markup. Fortunately, there are also many where there is a greater understanding and respect both for the end results of specialization and for the practitioners who specialize.

Nicole Maron:

Let me add one more thought: if designers are not at least sometimes let off the leash of what is currently doable, innovation suffers. To allow yourself to be always constrained by the now is to limit your creativity in a way that is unacceptable. It would be like telling devs they can only use existing code libraries. Designer or dev, we would all want to shoot ourselves in the head rather than be prevented from letting our imaginations soar.

Allen:

Those people who keep on saying that HTML/CSS isn't "coding" haven't worked on a large website or webapp.

When the website itself is complicated, the interaction between the markup, the presentation, and the code that drives both is intermingled. Yes, you can argue that your portfolio site with a splash page and two images isn't much coding, but when HTML tags are dynamically generated, CSS rules change depending on browser size and devices, there are 20+ partial templates and style mixins that have to be included, organized and properly inherited, then writing even the HTML/CSS requires coding disciplines of reuse, modularity, clarity, and maintainability.

Gian:

"However, please, please, please: before coding learn some cognitive and social psychology! It’s more important for your profession!"

I wait a your post about this topic! ;)

Gabe da Silveira:

This is a great article, and as a hybrid developer/design I agree almost 100%. However I do have one nit.

HTML/CSS are the tools for realizing visual design on the web. If you don't know how to use them, you are lacking a tool which is quite useful for exploring ideas as a web designer. You might be a brilliant designer but you will be swimming upstream in terms of meeting budgets, and the ability to work directly with a variety of developers. If a pure visual designer and a pure developer with no CSS skills meet, they will need a third-party to realize their collective vision, and that team will be at a disadvantage to a team of two people whose skills cover the full requirements. (Arguably the solo creator will have the most cohesive vision, but not everyone is Shaun Inman).

This might seem harsh, but consider a brilliant designer who can not use Photoshop, Illustrator or any other computer program, instead they know 20th century production techniques inside and out. They can still create some brilliant work, but they will lack the ability to realize their vision with the powerful tools that are available today. Such a person might be able to survive on raw talent, or they could shift in another direction and become an artistic printmaker because that's what they love, but it would be foolish for them to pretend that they could rise through the ranks in today's agency environment regardless of the strength of their vision.

CSS these days has similar powers above and beyond traditional vector or raster graphics. Being able to play around with an HTML mockup and tweak the CSS is actually a lot more efficient for certain kinds of design work than Photoshop. Maybe your inclinations aren't in this direction and you prefer to lean towards visual design, but this will be be a disadvantage against someone with similar talents who views CSS as a new tool and really learns how to use it aid their design process. Furthermore, when you start getting into UI design HTML and a bit of javascript is by far the fastest way to mock things up and test ideas. You can also do pretty well with Flash, but if you're using Photoshop layers to simulate interactions you are hobbling yourself.

So by all means, do what you love and find your niche, but realize that code is increasingly becoming a design tool in some domains, and when it comes to deep interactive design an aversion to code will be crippling.

Davide 'Folletto' Casali:

Thank you all for your comments. I'm really happy to see that even between the people that don't agree entirely to what I said, there is still a wide range of agreement and usually it's just a single point that is put at the center of the criticism.

And of course I'm even happier to see people here that not only agreed but added valuable integrations and considerations to what I said and very different perspectives.

Thanks to you all, even if I'm not able to answer everyone - I'd love to, but the response here is overwhelming - I'll try to add some insight from these discussions as a Q&A at the end of the post.

Thanks again, I hope I was able to give a different perspective, clarification or confirmation to many of you.

Dimitris Kanellopoulos:

Really nice article I have to say, I also think that that's a global fact that less people will be needed to deliver a project as the years go by and the technology gives as more tools to work faster and better.

And that's not only in the design -web design field. It's happening in every single profession. I personally have people how I work with to deliver a web design project, I am sure that no matter how much I try I won't be able to work as good as them, so I rather work with them than take their job and do it poorly.

But that's just me.

Thanks.

Fucking designer:

Fighting bullshit with more bullshit.

“designers must know the capabilities and limits of their media” is exactly what "designers should learn to code" is supposed to mean. We don't want designers building the latest and greatest javascript apps, just knowing how CSS works, how devices behave, etc.

Most designers think of the web no different than print, and that sucks. So, please, stop spreading your bullshit around - designers do need to learn how to code.

idioms:

I think the fact that Howard Gardner is referenced here indicates about how well the author is qualified to talk about the subject.

DRoss:

Sounds like a jealous designer who can't figure out html/css.

I don't think the above quotes mean a designer should code his designs from front-end to Ruby/backend integration but a good web designer, like me, designs and front-end codes his designs to pixel perfect precision.

Stop whining and figure it out. You'll understand the web and how it works better and it will come through in the work you do.

Obviously, it doesn't show here as it looks like you're using some cookie cutter template for your own site. If you knew how to do the front-end imagine how awesome looking you could make you sire look…all by yourself.

DRoss:

Actually, after taking a look at your portfolio work and reading "About you" it appears I was wrong as you do "know" design and development. You're just not very good at either. So you're probably right in assessing yourself, pick one. If I were you I'd stick with development.

Davide 'Folletto' Casali:

Guys, being pointlessly and anonymously offensive against me, where there is even a clear evidence of the opposite, doesn't really help your criticism, you know? ;)

Steve Hermann:

This is a great article. I am a well respected home designer who has designed and built homes for one of the five richest men in the world, half a dozen big A name celebrities, fashion icons, and have 12 million websites that mention myself and my work. The interesting point is that I never took one class, I am horible at drawing and don't posses some of the rudimentary skills that some of the greenest graduates in my industry posses. Guess what, it doesn't matter. What I posses is extreme creativity, a sense of space, order and flow and an intuitive understanding of what feels right. So what that my sketches resemble a childs and others have far greater technical skills. I hire those people to assist where I am weakest. Those techinical skills are easily hired and are the least important in creating great work. Most people are focused on technical skills and they are the least important when it comes to great design. Great if you have them, but unimpotant if you dont as long as you have enough creative vision.

leeander:

As a manager in this area I would like to add two piece of economy in this discussion:
Basically a young coder is dramatically cheaper than any ux/designer while the code he produces is cleaner, more standard, more effective.

Using seniors ux/designer to produce css/html, should be fine if you need to have a quick and dirty prototype without adding a team's complexity.

In any other case, and especially if you need clean code that represents the FINAL ONLINE solution, I think the work should be done following using the best professionals you have while using them in the more economically effective way.

Too often I see design guys spending too much time just to find "the piece of code they already wrote in the past" or wasting time for debugging...

If you are a GREAT DESIGNER + a GREAT CODER, you are really lucky and any company should hire you. All the others normal minds, like me, should be focus on the specific talent they have and extend and expand it with deeper competences or learning what really means to manage process and people.

Matt:

Sure, you don't HAVE to know how to code, but when in competition for a job with a guy who can, he will have the competitive edge. Not saying that he will even be coding at all at the job, but the knowledge absolutely helps. Knowing the environment you are designing for is very important. It helps you design things that will be technologically viable.

Joshua M:

Matt,

Actually - when we hire, "jack of all trades" get looked over for specialists.

We prefer people who can do one thing amazingly over someone who can do 5 things well.

And knowing the capabilities of the tools and know how to treat web design vs print design has nothing to do with knowing the markup - if you don't know your target, you're lazy educationally - it has nothing to do at all with knowing the markup, its about knowing the web.

Greg F:

A digital designer is responsible for the user's experience and how that experience accomplishes the business goals. Technology is the delivery mechanism for that experience but technology is NOT the experience itself.

The experience is composed of a user's feelings, perceptions and reactions while using the technology. Success is ultimately judged in a business context. Perception and emotion are the MEDIUM of the user experience, not technology. A designer should leverage whichever talents they possess in order to exert the most pressure in the creation of a meaningful and appropriate experience.

Great designers help a team create a great experience. Coding and markup may serve this end or may not. A degree in psychology may serve this end or may not. A mastery of visual tools may serve this end or may not. A MBA may serve this end or may not.

Any person who has been responsible for this experience and executed upon that responsibility can call themselves a designer. No one else can accuse them of not being one.

Eric Bieller:

Couldn't disagree more. There's hardly anything mathematical about basic CSS and HTML aside from some basic arithmetic. Whether you're a great artist or a math genius, basic front-end coding is a fairly simple concept to understand and implement.

It is in a designer's best interest to learn how to know at least a little bit of CSS. Here's why:

When you hand your design off to a developer, 9 times out of 10 they are going to butcher it in the CSS and HTML. When you come crying to them explaining that the spacing and fonts are off they are going to claim they are working within what the system allows. This isn't always true but you can't really protest when you don't know anything about the code that actually makes a design work.

Now this isn't the case for every digital artist everywhere but it surely is the case for interface and web design.

Davide 'Folletto' Casali:

If you "Couldn't disagree more" you shouldn't say the same thing I said in the last part. ;)

And about the example you make, it just proves the point I was making that most of the reasons people are moving in favor of "designers should code" is really about lack of teamwork and communication. ;)

Alex:

Perfect ! It is impossible to say clearer.

IMO - the MAIN problem is: developers are lazy. Everyone hates HTML/CSS.
While other guys are creating cool things you need to move 3 blocks around for 3 hour because IE7 still alive.

Another problem - dumb architecture. It is common answer - we can hide this button because we need to rewrite 1000.... 0 lines of code. Or, we can't do it because browser X doesn't support it and we need to write 1000...0 of code.

Just stop wailштп and get back to work.

I hate HTML/CSS. But even I understand that drawing != typing. Generally, designers even don't need ability to write.

Emanuele:

Lots of your reasoning stands on the: "We are different, there are people ho cannot code" thing.

I think you are severely underestimating the intelligence of the people here. Most of the limits are self-imposed, there is no reason why a designer cannot learn to code a tidy and semantic html, as he is able to learn photoshop or illustrator or maya or aftereffects.

These are tools, anyone can learn to use them.

Also we are not talking about Computer Science; you don't need complexity theory, neither queuing theory, nor internet protocol, nor object orientation to write proper HTML.

It's easy, really easy, if you say you cannot you're just lazy, or you don't want to properly face the technological constraints that ARE part of the design work.

Another thing is if you don't want, because after you fear about being addressed as a generalist and generalists have problems getting huge salaries (this is true in every profession, software development is the same). But this is a misconception of the work environment.

As you have probably understood, I am a developer. But I try to study the tool and the principles that are at the basis of design work; i do not intend to replace a designer in its work, but I don't want anyone to be a single point of failure in my company. If you want to learn to code, please sit with me mr designer, because I will look over your shoulder when you play with your wacom tablet.

james:

I pity anyone who has to work a developer who still say things like:

"HTML and CSS isn't programming anyway. The browser does all the scary logic stuff"

In 2011, as all your talented Front End Devs walk out the door of your company (as if you had any to begin with) and all of the Product Managers/Owners start going nuts because of all the browser issues in your web apps, don't look too far when trying to figure out what the problem in your group is.

Christopher Brand:

IMHO I don't believe that designers who understand even HTML and CSS are a good thing. I've led teams in the industry for almost 15 years and as I've specialized my teams' proficiencies more and more I get better results.

My hypothesis is that since a designer will never fully understand HTML and CSS, limited knowledge of these technologies will actually limit their design vision as they try and fit a much narrower design constraints based on a limited understanding of the technology. What we can't forget is that successful design is a process, a designer doesn't have to create a perfect design immediately any more than a programmer should be expected to write bug free code.

A designer who is unconstrained by a limited view of the digital world will create designs that have the opportunity to stretch the understanding of developers. The first time you see that "Aha" moment on a developers face when they realize how to code something that they didn't think could be done is truly a beautiful thing.

christian:

It's all about the limits. Designers should push the limits, developers should push the limits. It's good to know the limits but it is also good to know how to push them a little bit further so that something better can be achieved.
Probably better a designer who can't code than one who can't code very well. But a designer who knows how to push the limits on both sides is unbeatable!

Lea Verou:

I completely agree, that's what I've been saying for years.
I'd even share the article, if it wasn't for those gender stereotypes in the intro. Why did you have to do that? Totally distracting. Instead of focusing on your article's purpose, I kept thinking "geez, can't we get over these stereotypes? It's 2011 and there are many artistic boys and many girls that are great in math".

Davide 'Folletto' Casali:

@Lea: it's just an intro, and actually it's statistically correct afaik (as a reference, I'm referring to The Sexual Paradox by Susan Pinker). I used the gender stereotype to just "ring" a specific bell in the mind of the people. This isn't an article about gender discrimination and stereotypes, another very complex and interesting topic, so I thought it was better to use these stereotypes - that undeniably exist - to move along the discussion.

I'm quite sure that anyone that isn't able to get through that intro understanding that it's just an example wouldn't be able to understand much more of what's next. Like it happened with Gardner in the paragraph below. :)

That said, I'm very worried about that misunderstanding and I tried to rephrase everything to be gender neutral and with the singular their. I hope it's ok now. :)

Aldonio:

I'm a Web Developer, and basically this is the main reason I write in my resume "I know how to use the Adobe Creative Suite at a intermediate-advanced level, but I don't have a designer profile, neither a producer one.".

People tend to think a "Web Something" is a person who will do everything. Specially with Flash development, you need a designer, a developer and a producer/animator, but people completely ignore that. Anyway, for designers its easier to get the producer skills than to a coder :P, although now the tendency is to produce coding @.@.

James Lytle:

People just don't like "maybe" as an answer. This discussion often gets too abstract, when all the while time would be better spent just outlining exactly what it would be helpful for designers know about or to actually code. The problem from the "code or die" argument is coders should be intimately familiar with the latest and greatest ways to code things, while designers can't possibly be expected to stay on top of all that when its simply a means to an end. Designers need to be preoccupied with the end.

Davide 'Folletto' Casali:

James, I totally agree, and thanks for pointing out the fact that "people don't like maybe as an answer". I know it's hard, and that was - hopefully - the message I tried to pass with this article. :)

Alma:

This is a fantastic read and discussion! I have to say there is more than substantial evidence that notes the left/right brain activity/strengths in relation to every person on this planet.
I totally agree with this article. I know as a designer knowing and understanding code most definitely puts you at an advantage, why wouldn't it? However, you don't HAVE TO know it. Understanding basic code is one thing and many have to take a basic web design course in college anyway for graphic design, etc...if you plan on becoming a web builder then you take more courses to further your knowledge in that area.

Many designers would like to be able to put their knowledge/talents to use without needing to fully understand code - Dreamweaver allows for that, with its optional views so you can design visually to an extent and also see the code behind it, which makes for a good learning experience. But again it's not necessary. How about web designers out there get a full understanding/knowledge of design? Many would bridge that gap as well on their end and have a whole lot more sites that are visually designed better/properly with far more traffic too.

This is why there are two fields of work. To each his own. When the designer needs code understanding/knowledge or implementation, he'll contact a professional who knows that and there you go, the jobs in this recession continue! Also, Adobe's Muse BETA is quite smart in trying to bridge this design/code gap that everyone debates for a balance. Targeted at designers who don't know or understand this type of code or want to deal with it, it's a step in the right direction.

There's something to be said about both that's for sure. That's what they are 2 different fields/skills. Finding the balance is key.

Mike Irvinn:

Wow, this is as bad as Mike Rundle's post. HTML/CSS is not programming. However, I agree that anyone who is a "web designer" should know HTML/CSS. I mean it's part of the web equation right?

As far as the individuals bringing up 3D. The 3D industry is very different than the print and web industry. You guys talking about 3D must not work in the field. A real 3D artist does not need to know how to code. It's probably better that they don't because otherwise they start pushing the latest technology gimmicks. One-button push RBDs, one-button GI, overuse of expression driven bouncy keyframes, etc. Sure it helps having the knowledge, like many other things in life, but it's not necessary. Also, why would a 3D artist need to learn JQuery?? The matte painter at a VFX company is most likely not going to be building the front end to a web-driven render farm manager! If anything, they should learn Python, since it's like the de facto language of the 3D industry.

That's why people specialize in the 3D field. Yes, you can try to do it all but you will never produce what a team of specialists produce. If you're doing dynamics using Houdini, Maya, Krakatoa, etc, you won't get far without scripting skills and some rudimentary physics/math knowledge. If you're a texture painter, then it can help but companies will take your artistic skills over your scripting skills any day. As a matter of fact, when they hire "artists", they specifically request that no engineers or programmers apply. Unless their artistic skills are first rate. Sometimes, when they want designers for style/mood boards, they avoid 3D artists. This is why the majority of 3D on the web looks like "3D" and therefore crap. It's because coders with no art/design background are producing it! They focus too much on the technology. Now, this is not every programmer 3D wannabe out there. Yes, of course there are incredible hybrid 3D artists but they are far and few between.

The 3D/VFX industry is going to sh!t because of this very reason. People for years have been selling the technology and not the artistic talent. Now these very same people are complaining about outsourcing, low wages, long hours, and being treated as a commodity. Boohoo...

Anyways, if you're designer and wants to learn how to code, do it because you are motivated to do so. Don't do it because some guy wrote a blog post about how he built a sh!tty iPhone app and now considers himself an engineer and the whole world needs to do the same otherwise the are lazy good for nothings. I'm sure real engineers love these people! ;) Sorry, don't mean to bash anyone, it's just that I think people should do what they feel is right for them and not follow what some person says is the right way to do things.

Good luck!

Matt:

I think if you're any kind of an interface designer, you need to have a deeper understanding of what's going on under the hood to design an interface effectively. Which means you should have a solid understanding of programming logic, if not programming syntax.

Matthew:

You could apply the same logic (why designers need to understand code) to why designers need to do their own ad-copy, photography, or illustrations. Why use an ad-copy writer? You and I can type. Same with photographers. Why bother getting a specialist when you can do it yourself? Because ad-copy writers, photographers, designers, illustrators, coders, project coordinators, account executives, etc, etc, etc all have specialized skills - that are valued and needed.

A designers specialization isn't technical knowledge. They don't need to code anymore than they need to write ad-copy. In this day and age it's even less necessary to be technically proficient than in the past. Coders are pervasive and cheap to come by. Why waist your designers time doing code? Some commentators even said that HTML and CSS is "easy to learn". Great, let someone less trained do the grunt work, and let the designers do the design - at a higher billable rate.

When you work in an agency creating marketing programs you've got all kinds of specialists. In this setting designers are expected to be specialists in design, and generalist to medium (print, web, animation, video). They need to excel at putting together a cohesive visual language for the larger program. The website is only a component of this. If you know how to code, write ad copy, illustrate, take photos, great. But that's not your job. There are other professionals dedicated to this. Now go back to designing.

dc:

I have a take on this... You say: "Coding and Designing tap into two very different kinds of intelligence". Yep, this is true. Totally agree.

Here's the thing, for a web designer to be great, they need to have both types of intelligence. Not everyone is born with the ability to think both ways, but that's just how it is. Every profession is like this. If you do not have good hand-eye coordination, no matter how book-smart you are, you will never be a surgeon.

If you only have design intelligence you should stick to designing posters or visual assets for websites. If you just have coding intelligence you should stick to front end development.

Those that don't have both types of intelligence will never excel at web design. And if you're not good at what you do, then what's the point?

What's frustrating to me is that so many web designers are in this field because it's easier to find a job as a web designer than as a print designer or a pure visual artist. If they could have it their way, they would much rather be designing pretty graphics than website layouts.

Designers that don't code don't have a passion for the web. And this is obvious because if they did, they would have made an effort at the very start of their career to learn how to code HTML and CSS. And get good at it.

Gino Gardiola:

"Coding and Designing tap into two very kinds of intelligence". is coding xhtml and css that hard?

Jason Paul:

I'm a designer who is also a front-end developer (CSS/HTML) and I absolutely love being able to do both. I don't think it's an issue of capacity. But it is one of time. I design a lot less than I used to because I'm so busy writing markup. So in that I agree with you as far as setting up teams with different responsibilities. It's just pure practicality. In my design business my partner takes on the main design responsibilities while I've become immersed in development strategy. If I was an all one it would take twice as long to get anything done.

Joe Moran:

So, do I have to know how to make a computer motherboard to know how to use a computer properly now? Or know how Adobe Creative Suite products were engineered to design properly with them? Must I learn how to manufacture a pencil, or mill paper to know how to draw?

Not sure what the logic is regarding "…you must know how to code to design for the web (with a capital W)" or how it's applicable in any instance. Are the web folks just trying to position themselves as experts in the market? Is this really some unique kind of designer?

Please let me know…

R/

elv:

Do traders need to know how to print bills? Who gives a damn? You are mixing tools with skills. html and css are not tools, they're the canvas and the paint, the paper and the ink.

In all your examples what do these professionals have in common? They all need knowledge in several very different fields. Did anyone ever complain about it?

But I think this debate won't last. Web design tools are still primitive, and most of us use Photoshop/Fireworks/Gimp for the visual step in the design process before the sites becomes markup and code, because we lack better tools. Perhaps when new web design dedicated tools appear we won't ask this question anymore. What if we could manipulate real DOM objects and apply CSS to them in a visual way, just like Illustrator or Inkscape let us "write" Postscript, SVG and Bezier curves? What if the need to *write* markup disappears?

Tyson:

One of the best answers to this question came from the manager that hired me years ago. I had come from an ad agency background, but had done some time at a software company designing games and a few simple websites. I asked the manager at my new company whether i should sign up for some classes on HTML or coding in general. His response was "I've got almost 100 engineers here that have years of coding skills and are terrific at what they do...the best....what we DON'T have is people that understand design, UI, UX and whether this colour should go with that colour. so no. don't bother taking coding lessons, just immerse yourself in this world and be the best designer you can be. read everything and anything related to the business....stay on top of new technologies and what they can do..."

Which is precisely what i've done since the late 90's. No complaints so far.

As always, our company has a long list of expert front and back end coders, guys and girls who absolutely rock at writing code. and not ONE of them has any skills whatsoever at design. but when i give them a mockup of a new project, and we work together...we make some super stuff.....and thus everyone is happy.

EZ:

Comments from our Interactive Developer: http://ridgefieldone.blogspot.com/2011/09/should-designers-code.html

Davide 'Folletto' Casali:

I just found this excellent article showing why a very, incredibly, simple syntax for someone is at the same time very, incredibly, complex syntax for someone else:

For someone like me with a programming background who grew up using computers, adding an @ symbol to someone’s name is easy. For someone who did not, like 9o percent of America, it just doesn’t make sense. Our brain is not forced to do this in real life, why should it in digital life?
Why Facebook works for all Twitter for some


It's more complicated than this, of course: we are talking about professionals in a similar field, the article doesn't count a bias of a system used everyday (quirks disappear) and so on.

Carolyn Ann:

I completely agree with you Davide.

But can you *please* change that "Do the surgeon..." to "Does the surgeon ... pacemaker"? It was so jarring!

Thanks! :-)

Keira:

The last artist who could do it all was Leonardo and even he ultimately fell short. Sometimes this "should" and "shouldn't" argument seems an awful lot like the great divide that exists between the right (should have to) and left (should not have to) in US politics.
"
We are individuals who should all be totally self-sufficient" vs. "we are a society who should work together for and towards a common good".

Mike Thompson:

Interesting post and discussion. Shame about the insults though. For me, this just feels like a debate happening at the wrong level. "Should designers learn to code?" is the wrong question. The right question is "how do you design good digital products?". Tricky question though and it comes down to asking what design actually is.

I like the definition that Bill Moggridge discussed in Designing Interactions. He hinges it around the idea of design as the synthesis of all the constraints that impinge on a product. (He discusses types of constraints in more detail in the book.)

If you fail to consider a constraint like, for example, the budget, the opinion of a key stakeholder or the technological possibilities, then you're likely to fail.

You therefore need to assemble a team with the skills needed to take account of all the constraints. If you can do that in the form of one person then great. More likely than not, however, you'll have to have a team of multiple people who have the skills to understand all the constraints and are able to work together to create something great.

I used to code but now just design. If I'm not sure if something is possible in a design I'm working on then the solution is easy: I just ask one of the talented developers sitting near me.

Davide 'Folletto' Casali:

Thanks Mike, in fact that's a useful change of perspective on the topic, and I totally agree on that as well. :)

To tell the truth, I don't like totally that definition, because by itself the topic of "limits" is a difficult one: most professions play with limits, and most professions have small and big breakthroughs when these limits are broken. But that said, limits play a huge role in design, that's true. :)

And you're correct: the next step in this topic needs to be on "how do you design good digital products". :)

buzz:

Doing more isn't always the answer. Becoming a jack of all trades is a slippery slope and in many cases a fast track to the bottom of the food chain.

Barry:

My opinion: this is such a non argument. I have a big issue with your stereotypes - they sound like every bad Hollywood movie. Jocks and nerds? Come on. People are different - infinitely so. What works for some doesn't for others. What applies for some applies less so for others.

If it works for you to have an intricate working knowledge of HTML and CSS (I would add Javascript for the holy trinity) then do it. If it doesn't, don't do it.

For every person extolling the virtue of knowing every detail of your chosen medium there will be people like @Steve Hermann saying they get by with sketching like a 3 year old. And vice versa. We. Are. All. Different.

An observation I picked up (might just be me), a lot of people advocating learning some code sound to me like they're from smaller shops/one man bands. The people opining that you don't need to code sound to me like they're speaking of big agency experience.
My personal experience of big (advertising) agencies has been one of pigeon holing - if you know some code you're cast as a developer and from that point on won't be considered as anything but. This "labeling" is one thing I loathe about ad agencies, they have to give you a role/title/label to work out your place in the pecking order/pay scale and it sucks.

I enthusiastically dislike people telling me I can't do things. It just makes me want to do them even more.

Barry:

Oh one more thing to add - @buzz "Doing more isn't always the answer" - maybe not but knowing more most definitely is.

Barry:

Great, I'm glad we agree then :)

I'll admit now I'm in the "learn to code" camp - only because I've seen so many bad designs by people who really didn't understand the medium - you know, when you get Indesign files or PDFs as "web designs", or even PSDs where the vector shapes are all on half pixels. To which my advice has been "hire better designers" rather than "get your designers to learn code". But when hiring I find learning/knowing a bit of code helps lessen the odds of daily facepalm.

Esol Esek:

There are tasks in all art forms that are creative and let's say technical non-creative.

Most great painters eventually master both sides.
Most great photographers eventually master both sides.
Most musicians may start out creative, but they eventually master the studio side as well, although some types will always be technical genius specialists on aspects of sound.

Lots of graphic designers proved their ability to master HTML, javascript, and Flash, the closest thing I've seen to a hyper technical approach to programming graphics. Meanwhile
designers kept their snickering to themselves when an engineer attempted graphic design.

What graphic designers did not expect was that some idiot engineer's stupid version of bad layout would become the defacto standard in the form of CSS, a stupid language that forces you to program what could much more easily be done the way it first was done, that is logically, with universal and local center tags, line breaks, and tables.

Now while I'm all for the style sheets that create a standard layout across hundreds of pages, and I do enjoy the new positives of HTML 5 (mostly transparent pngs and newer versions of jscript/jquery) the idiots that insist on CSS for the most basic of layout tasks are not only anti-creative, they are anti-scientific people who have found the most convoluted way to do the oldest and MOST BASIC of printing tasks.

Hey, whip me up a five-column layout, and oh yeah, make sure it's centered and cross-browser compatible. Good frickin' luck.

That this idiocy keeps more people employed, and yet tearing our hair out, is the only possible benefit.

mgabrys:

I regard code-knowledge the same way I knew pre-press when designing projects. I knew enough to carry intelligent conversations with implementers, but their job wasn't mine. I still had to be aware of their side of things in order for my design to work.

Graham Hoare:

I'm a designer that learnt to code, css is the brush I use to paint my pictures. It helps me enormously to be able to code. Being aware of pushing latest css3 techniques has given me an enormous enthusiasm for my work both visual and code. People shouldn't see so many boundaries.

Ruben:

Aawww man! I'm a designer and a developer - I code what I design. Does this mean I can't do one of them? Or that I'm no good at designing or developing?

I think the basis is: don't try to force people into doing something they're not good at. If someone is good at designing, let them design. Part of the designing job is some knowledge (or interaction with a developer) about how that design will transfer to code. And if someone is good at developing, they should understand how to translate a design to a website / application.

People excel when they do what they love. Make them do just that.

Damien:

In the design profession design always comes first.

Being a coder is a far second to the ability to conceptualise and solve design problems creatively. The only REAL value in a designer (to a existing client or a potential client) is creativity. My ability to operate graphics software or code in no way influences by ability to solve real world design problems.

My mentors and many of my industry peers are still highly successful designers in their 40's, 50's and 60's and do they code? No. Do they still design pen on layout pad? Yes. Are their resulting designs still cutting edge and award winning? Yes. The advent of graphics software didn't change facts - great designers remain great designers with or without the ability to operate software. The same is true of the age of web coding. A great designer remains a sought after resource where as coders are a dime a dozen.

A great designer can apply their valuable design solutions to anything - physical environments, materials, literature, packaging "and" designing for on screen. Being a great coder is an attribute of value on screen "only". If you are trying to divide work evenly between time consuming coding work vs high level multidisciplinary design solutions you will definitely be compromising one or the other and be working inefficiently in your core role of "designer" if that is what you consider yourself.

I personally doubt any of the pro-code/design equality peeps have ever held a position of significance in a "real" high end design studio - where design was award winning and was the central attribute of value to the client. If they had they wouldn't make such bogus claims.

So much of a multidisciplinary design studios time doesn't involve web / coding that it really is a complete fallacy to say you need both in equal measure.

The graphics software revolution already illustrated this entire point. Being a great Photoshop, Illustrator or Indesign software user doesn't = a great conceptual designer. It comes back to the value of design concepts and how successful you are at exploring solutions. Coding is much more time consuming than the operation of a pre-made UI in graphics software therefore it can only impede design time further if you falsely think you need equal ability in coding as design.

I think the whole debate would work better if the commenters could self identify their roles in their respective businesses. Owner operator or very small business = they are do it all people because they have to be lest they are farming some of the job value out to other professionals. Employee in big design firm = often the computer operator for the real ideas people. Knowing coding is often a pre-requisite for landing the job as a trumped up operator within a good design business.

Do I believe these people speak of the true value of design or the truth in where design priorities should be? Definitely not.

M Bacarino:

Interesting read overall but I disagree with a lot of the comments.

Apparently you can't be a web designer without knowing code. Guess what, I am. Not only that, I'm a pretty successful one too, in demand by some of the biggest brands and largest e-commerce operations out there. I do have an understanding of how it all works though, I can botch together stuff by cutting and pasting markup. Having said that, the point here is that I don't work in isolation. I usually lead teams that comprise UX, creative and front end developers, that's the key. TEAM WORK. I don't just hand over my design to a developer, I work with them in tandem sitting side by side. As much as I agree that knowing how to code would be a valuable asset to have I also know that my skills in that area would always pale in comparison to those of a real developer. When I work with developers we all get challenged and pushed which means that our best work comes out.

My strengths lie in the fields of visual communication, interaction and motion and although I enjoy technical matters I know they are not my strength. I am a proficient user of Photoshop, Fireworks, Illustrator, After Effects, Flash (with a reasonable level of actionscript), Edge in all its variants, Premiere, Modul8, Ableton Live, Resolume, InDesign and loads of small niche animation and design applications. I have a degree in scientific illustration, I can do technical illustration (all with traditional media by the way) I have a solid grasp of colour theory, typography, grids, animation... I could go on and on. Yet a lot of you are saying that I SHOULD learn how to write CSS and HTML? why stop there? I won't be able to do much without javascript and once we get started, what about a bit of PHP? To be honest I'd much rather carry on learning things that are suited to my natural talents and that will complement those of the rest of my team.

Do you have something to say? Please add it here:

(optional)