“Designers shouldn’t code” is the wrong answer to the right question

My friend Wayne Greenwood asked me what I thought of his recent blog post in which he argues that designers shouldn’t write code. He wrote, “Your time is the ultimate zero-sum game. The more you spend on the complexity and details of coding, the less you have to make the product experience better for your users or to influence product strategy.” My friend @miniver sucked me into the twitter debate on the subject–so I thought maybe I should share my thoughts without the 140 character restriction.

The core insight.

Wayne’s argument–that designers shouldn’t be coders–is based on a fundamental insight that I find compelling: if you are paying attention to how a software system will be built, you will be influenced by that need; if you don’t do something to counter that influence, you will end up with software designed around what Alan Cooper calls the “implementation model.” Cooper argues that designers who are doing a good job are making software that is designed around a user’s “mental model.”

For example, users might think of an invoice as a piece of paper with a company name, a customer name, a list of purchased items, and maybe an invoice number on it. A good onscreen design would present these things together in one view. But imagine that the system is a database system, storing this information in different tables–a customer table, a buyer table, a product table, and an invoice table. A bad onscreen design would show the information as it is stored, in separate tables, and force the user to relate these things together in his or her head. The example sounds extreme, but this type of problem happens frequently, in subtle ways, and more often than you might think.

The core insight is right. The conclusion is wrong.

So I think the core insight is spot on–but what conclusions should we draw from this? Wayne argues (and not to pick on Wayne, so does Cooper, @miniver, and many others, including me a million years ago) that designers shouldn’t code. I think now that this is an oddly reductive position to hold.

First, I believe that having identified the influence, good designers and teams should be able to control for it. Most designers are comfortable starting with bad ideas and iterating until they find satisfying solutions. Along the way, we throw out lots of ideas, for lots of reasons. We should be mature enough to throw out ideas that are unduly influenced by the system model.

Second, “code” is such a broad term as to be essentially meaningless. What do we mean when we say this? Do we mean back-end programmers writing APIs in C#? Do we mean full-stack developers writing web applications in Rails? Do we mean front-end developers working in HTML+CSS+Javascript?

HTML + CSS + Javascript in the design workflow

The “coding” that I see lots of designers doing these days is HTML+CSS+Javascript. (I’ve met lots of developers don’t think of this as “real” coding, but let’s call it coding for now, because lots of people who argue that designers shouldn’t code are objecting to designers working at this level.) The designers that I see doing this typically have a workflow that goes from paper to a drawing tool to a pixel tool to a text editor-browser combo, then back again.

I don’t see this workflow as especially pernicious. It seems to me that it’s just an extension of where we used to be 15 years ago when designers had to learn PhotoShop. There’s a geeky, technical tool in this workflow, and some people get good at using it. In my experience, just as many good and bad design ideas come from this workflow as from a “pure” workflow in which roles and responsibilities are segregated.

Designer’s Intent

The difference for me is that more good product comes from this workflow. In my experience, having designers in control of the presentation layer results in a presentation that more closely conforms to the designer’s intent. I imagine that most designers would think that’s a good thing.

A threat to the design profession

Wayne also argues that our position as designers is threatened if we learn to code. “A singular aspect of the Great Unicorn Quest that should give you pause is the implication that user experience & design as a discipline isn’t significant enough to be a sole focus. As if designing products that people love isn’t sufficient to justify a full-time position.”

I can’t really rebut this except to say that I’m not meeting very many unemployed UX designers these days. As in none. Demand for our work has never been higher. The war is over. Design has won a place on the team. We can lay down arms, fuck around in text editors, and stop fighting the battles of yesteryear. If you’re still fighting it at your company, quit and move to SF or NYC. The future is here, and it’s hiring.

UPDATES

Addendum #1: A number of commenters have pointed out that I didn’t comment on Wayne’s main point, that designers can and should pursue a career path involving strategic product leadership. I completely support that assertion. My colleague Giff Constable wrote a good post on this last year: http://giffconstable.com/2011/12/strategic-ux-vs-tactical-ux/

Addendum #2: Some commenters are coming to the conclusion that I believe designers must code. I think that’s nonsense too. The world of digital design is big and varied. (And yes, many of us work beyond the web–gasp!) The skill sets required on any one project are too big to live in one body. So… multi-skilled people? Yes. Designers must code? Nope. (I think Davide Casali’s long article on this subject handles the question with some nuance: http://intenseminimalism.com/2011/designers-shouldnt-code-the-digital-duo/)

78 comments Write a comment

  1. It seems to me like designers should code for many reasons. Designers need to understand the real constraints and opportunities of the modern web. Knowing what your applications can and can’t do on the front end is the best thing you can do to ensure you have a design that can be built. Designers that integrate with developers should speak developer – If you concede the point that the war is over and that design has a place on the team then for me the next fight has been, and its not a fight really, how close can I integrate myself and my team with my technical partners to insure the most positive results. No one to my knowledge has ever stared at a functioning front-end prototype and said “I don’t understand this.” That is shared understanding that saves the designers real time to focus on design and communication with others as work gets faster and better in the production space.

  2. I totally agree. We are talking about ‘web designers’, not just ‘designers’. So, nowadays the web designers should be a little bit WEB and not only DESIGNERS. You can’t make a product in different media (photoshop) and expect to work in the real world (browser).

  3. I’ve always been aligned with the idea that designers should know code. If you’re a web designer, you should be able to deliver your designs to the medium in which it lives. We’ve had these silos of designer vs. developer crumble for a reason. Designers who refuse to learn at least some HTML+CSS+JavaScript are limiting themselves. By knowing nothing about how your design will be implemented, or if it even can be, you’re putting its integrity at risk. By not being able to communicate with developers in the most appropriate way (through code), you risk its effect being diminished.

    Do you know why I think designers should at least understand code, why I think that understanding is mandatory at this stage in the game? It’s because Photoshop has never been our real canvas. For those who design the web, THIS is our canvas. How many of our best practices–that were slowly rejected over the years–have come from erroneously trying to force a 1:1 translation of our PSDs to web?

    How many designs have been compromised because they were designed in the wrong canvas? Our designs don’t live in graphics software. Web designers who don’t want to understand the web by its inherent nature of being a moving target: that’s designing through a myopic lens. Realize your design by having a hand in how it’s built. Realize your design on its actual canvas: the browser. Far from putting jobs at risk, learning how to code makes them easier for both designers & developers.

    I also think developers would benefit from learning the principles of design, but that’s another story.

  4. meh… SF and NYC are overrated (imo). If you want to live in a log cabin somewhere out in the middle of nowhere New Hampshire than you would do well to teach yourself both sides of the fence. The folks that pay for my services don’t know, nor care, that there’s a separation of design and code. They just want a website that solves their business goals and I am their means of making that happen.

    Just figure out who you are and what makes you happy. There’s no reason to choose either black or white… but be aware that unicorns have the option of living deep in the forests, while knights of design must live in the denser kingdoms and castles.

  5. In my opinion, a designer should code. At least some HTML, CSS but not necessarily JS (but the more the better). Like Joe Williams said it gives you a deeper look in how things work and if the things someone designed are even possible to create.

    I think working with a designer who can code your designs right away in HTML and CSS is much more valuable then just a designer who ships its designs in PSDs and wishes you good luck to somehow match the design in the photoshop file. Why hire someone who gives you twice the work than someone who does all the things at once?

  6. I’ve been a web developer for 15 years myself and been involved in this argument from time to time. Coming from a print design background, the small company I worked for needed designers and figured I would pick up the coding part. I guess I was lucky because I did learn and thankful had the opportunity to do so.

    I cringe when I hear others say that designers have no business coding. Who are you to limit my career? We don’t tell developers not to design. In fact, I encourage them to try. If I need to add a little polish to help them out, I’m happy to do it.

    UX development is hard no matter which side of the aisle you work on. Good interfaces should be a collaborative effort, not a divisive one. I currently work in SharePoint and have another level of code I have deal with (XSL) and starting to learn C# so I can do more back-end development on my own. The less I have to rely on others, the faster the project gets completed.

    As for my design future at the ancient age of 50? Mobile development because I have a killer app in mind. I dare you to stop me.

  7. I’ll make a gross generalization and say most designers are limited in their JavaScript ability to the point where they simply cannot implement whatever their minds may conceive. That can and does subtly and unconcoisly affect their design process just like working with a mediocre developer results in compromises. Perhaps even more so.

    It’s a rare mind that can be both a virtuoso designer and coder. I *wish* I could do both equally as we’ll. .

  8. Very nice post Josh. I definitely agree. I firmly believe the deeper a designer understands their medium the better their designs can be. Nobody would argue that a deeper understanding of paper, inks and the printing process enables better print designs. The equivalent for UX and interaction design is understanding code and the specific technology platform you are designing for (web, iOS, Android, Mac, Windows, etc). The key is to understand the platform without forgetting the user.

  9. Being a mobile UX designer that does know HTML+CSS+JavaScript, I can speak from first hand experience how it comes in handy but how it also is a detriment.

    First, it works extremely well within my workflow for prototyping which can be used for multiple uses – idea pitches, usability testing, development reference. This is all an excellent benefit and it works well within my mobile design process because the code cannot be reused for our native app development.

    The problem arises when working on mobile Web. There can be an expectation that I will provide the production frontend code – the expectation will come from the stakeholders and the developers. While I always get a great ego boost by providing better code than our developers or proving that something can be done, it should not be my place to provide production code.

    Overall, I feel that it is important for designers to understand the platforms they are designing for and the code that will create their design but I say that with caution. It is important to have each team members’ role established to prevent too much responsibility falling on the wrong position.

  10. HTML and CSS are used for creating and styling markup, the only thing they have in common with actual programming is that they’re text based. On the other hand JavaScript is fully qualified programming language for both the browser and the server-side (see Node). I don’t see how JS is not actual coding.
    Maybe what you were trying to say is that many designers only superficially learn to code JS and rely too much on code snippets and jQuery, never actually taking the time to properly learn to program.

  11. Any designer who codes knows full well it’s a helluva lot faster to test ideas and fine tune a layout with code. Sheesh…can’t even guess how many hundreds (thousands?) of times fonts, box-shadows, padding, borders and more are decided and finessed in the browser vs. Photoshop.

    Rough layout/style tiles are fine in Photoshop. For me, the REAL design & usability comes in code.

  12. I relate this to building a house. If you’re a pro at everything from color pallete selection through drywall, plumbing, HVAC, Electrical, AV, Structures & Foundations then by all means build the perfect house!

    However most of us are either generally good at a bunch of things or highly specialized in a certain area (eg electrical)… or specialized in one area *with* a decent understanding of related areas.

    There is nothing wrong with any of these 3 scenarios but I think if you are highly focused / specialized in one area you owe it to yourself to at least become familiar with related technology… if for no other reason that to be more well rounded and personal growth.

    I’m a UX/UI guy but that certainly doesn’t stop me from wanting to learn about database stuff and optimizing SQL queries.

    The trick is knowing that you will likely never be an expert in everything from GIS to PhotoShop to SQL to Big Data to mobile to Enterprise development to SEO to UX/UI.

    What is important is that you accept that when you step out of your domain expertise you may well need to seek the help and experience of others or at least admit that the “rules” that apply in domain A likely won’t match those of domain B.

    Should a GUI ever resemble the direct model of a DB Schema? – absolutely not!

    Can a developer create an awesome responsive, mobile friendly interface AND create the backend code and DB? – yes of course.

    The trick is that not every developer can… and there are many that have tried and failed… but that doesn’t mean that designers shouldn’t try to learn/do backend code or that backend developers can’t make a good UI. It just means that it is hard… and if you are doing both and it seems really easy… you’re either an awesome pro!.. or you’re fooling yourself as to the quality of the output. good UI is hard and so is a good backend. If you can pair up with a specialist that knows the other thing… you’ll both learn a lot and likely have a better overall outcome.

  13. Josh, I think you make a compelling case for why some designers—those with the interest and aptitude—should code. I don’t disagree with this premise.

    However, the intent of my original article was to highlight an alternate career path for the designers who feel pressured to become “unicorns.” I believe that some designers—again, those with the interest and aptitude—should immerse themselves in business and product strategy to become the product executives of tomorrow.

    I see UX as a crucial and inherently strategic discipline. Accordingly, I’d like to see more UX professionals in a position to decide corporate strategy, in VP Product, Chief Product Officer, or CEO roles. The article labels the UXer who chooses to pursue this track a “pegasus.” (If there’s one thing I learned from Greek mythology, it’s that to fight a mythical beast you need one of your own.)

    The pegasus track isn’t for everyone, for the same reasons that not every engineer wants to be CTO. But if you want to determine product strategy at the corporate level, you need to speak the language of product management and business strategy. And you won’t learn it by spending all your non-design hours honing your Javascript chops.

  14. It seems to me that web designers need to know about the technical constraints of the web, as well as other relevant things about the medium, such as how people use the web. You can’t design a good solution if you about don’t know about the environment you are designing in.

    However, whether they know how to code or not seems to be mostly irrelevant. The Designers at my company are awesome because they’re really great at designing for the platforms we work with (the web and iOS and Android apps), but I don’t think any of them know how to code. They work closely with us (the developers), and now know *what* we can do almost as well as we do. Note that is not the same as knowing *how* to do it, which they don’t need to know.

    In the same vein, as a developer I try hard to make sure that I know a reasonable amount about design, so as I can collaborate effectively with our designers. On the other hand, I haven’t bothered to develop anything beyond basic Photoshop skills, because this is not something I need to know about to work effectively with designers.

    Of course, should anyone wish to learn skills that they don’t strictly need to know for their job, then they should be free to, and it will probably help them (because knowing more things is almost always helpful).

  15. The heart of this debate is asking a question:
    Should designers interested in stretching their knowledge and skills do so?

    For personal and career growth, for those willing and able to take on that challenge, they absolutely should. This can apply to mark-up language, like HTML, styling like CSS, or interactive languages like JavaScript and the now less relevant ActionScript. The coding isn’t the issue at hand. Imagine a print designer using Adobe Illustrator and having to write their own PostScript to get vector graphics produced properly.

    If a desiger wants to help bridge gaps with implementation to ensure quality consistency, by all means, speak the language of a front-end developer. Does the pressure for designers to learn the HTML/CSS/JS stack come from necessity or curiosity? Curiosity and persistence for learning should be rewarded.

    If pressure is coming from organizations under-valuing the front-end development skills required for creating for web browsers, then that’s a different issue. Going to battle with the army you have may be insufficient. Crossing to the technical implementation skill set is one way to solve problems. The other is up the decision chain.

    As designers mature in their experience and organizations, they may prefer to remain focused tradeswomen/men and perfect and refine their craft, or some may want to branch out into other challenges, like business strategy, client relationship management, and designing the people systems that create the designs. Those often take on leadership roles by going on to be internal teacher/practitioners, which could be more valuable than designers who can “code” a web page.

  16. I’ve always wondered at how it came about that designers and developers decided that they were doing different jobs. Maybe it’s just because I’ve only ever done independent work, but I can’t even picture being able to design without understanding the implementation, or writing code without knowing how it will impact the UX. I’m probably being insensitive or something by asking this, but how on earth does anything decent ever get made when there is such a stout divide between two parts of what I thought were the same discipline?

  17. Most of my work as a front end developer comes from translating a PSD or AI Document into a website. I will only echo what people have said above; the real finessing happens in the browser, not Photoshop. For example, the typography, fonts, text shadows, all of these… On almost every design comp I’ve ever received, I’ve had to tweak the CSS to make it fit the design. I do a little bit of working Photoshop myself, it’s definitely easier in Photoshop. I think not only should designers learn to write HTML, CSS, and JavaScript, the developers should learn the basics of design as well. The less we build silos, and the more we are dedicated to learning all the aspects of our craft, the better our teams, projects, and careers will be.

  18. I agree with John, and it applies not only to designers and developers, but to all careers and walks of life. How can we communicate if we do not understand each other?

  19. So Im a designer, who writes code. I call it ‘design code’ in that it’s not production-site ready, its not watertight, but it serves the purpose of demonstrating a live prototype to the CEO or a dev team.

    I’ve heard that making videos about particular button animations is a popular thing these days, and going to great lengths to demonstrate how things should work.

    I cant help but think.. why not just build it? In my experience, good professional developers love nothing more than the guts of a tricky design idea being pre-formed in basic HTML_CSS+JS and described in detail to them.

    It just gets the point across to quickly, and it helps bridge the gap between us predominantly right brained user focussed designers, and those predominantly left brain coders and programmer developers who just simply think a different way.

    The guy with the whole unicorn speech can go stick it!

  20. “I can’t really rebut this except to say that I’m not meeting very many unemployed UX designers these days. As in none.”

    Uh…You can send me some work…I’m an unemployed UX designer.

  21. I believe designers should know how to code but shouldn’t code. Knowing the processes background will give a designer a new insight and shape their imagination.

  22. I don’t think Designers need to code.
    Any more than then need to develop typefaces.
    Or screen print things.

    Designers need to understand the tools of their trade and their influence on the output/experience.

    Any dimension they can bring to that understanding via deeper vertical knowledge in anything beyond their core craft is a bonus.

    So, understanding what current languages, frameworks and scripts offer is essential. Being able to manipulate them yourself is an asset. But not necessarily more of an asset to successful projects than deep insight into content strategy or SEO.

    I think.

  23. I think another thing we need to consider with regards to this topic is the worry of becoming a Jack of all trades and a master of none.

    As Wayne has suggested, design (UX, etc) is an important discipline. If designers spend too much time doing coding, there is the possibility that they might erode their core strength – i.e. knowledge and expertise about colors, layout, and so on. So even though designers know they can’t not know something about HTML/CSS/Javascript, they also need to bear in mind what their expertise is. Myself, I’d respect a designer who is a design god but knows next to nothing about coding, much more than a professional who knows a little about both but ain’t very good at either of them. (Sadly, I belong to the latter.)

  24. We would all love to live in a world where any design can be translated into clean beautiful code. But we still have real world issues like IE and the technical capabilities of devices. Designers need to be aware of them to build the best experience given all of these constraints.

    Designers who do not consider code do not take in these real world constraints. For example it may be perfectly fine and more engaging to have a different typeface on every page of a printed magazine. Do the same on the web and the technical constraints of the medium may mean that the result is slow and painful despite the creative design.

  25. I think there’s a MAJOR confusion in this whole debate.

    There are 2 types of coders: Web Programers, also known as Web Developers. And there are Front End Developers. Both code, at least as far as CSS and JavaScript go since we know HTML is not code, is markup.

    Wayne is talking about Web Programers: “What’s with this jacked-up PHP code?”

    Josh is talking about Front End Developers: “The “coding” that I see lots of designers doing these days is HTML+CSS+Javascript.”

    From the perspective of being a Web Designer that also does Web Programming, I’m 100% on Wayne’s side. After all, trying to find someone that’s good a both is what we already know as the Great Unicorn Quest. Nothing new there.

    But Josh’s post right here is about Web Designers that also do Front End Development, and on this note I’m also, well, 100% on Josh’s side.

    But staying with Josh’s post, a Web Designer should 110% know how to code his own designs if you ask me. One huge problem I’ve experienced in this Web Design industry is how companies, especially advertising agencies, have Graphic Designers creating web designs… a total clusterfuck of a disaster. I don’t know about you, but I end up modifying all their crappy designs during HTML+CSS implementation.

    On another note, WTF is up with all these fancy-ass names to describe a Web Designer?: UI Designer, Visual Designer, Interaction Designer, Web Producer… and the worst of them all, UX Designer. You can’t design the user experience, you can plan it and build features to accomplish it, but not design it, relol.

    Conclusion: Web Designers, code your damn designs. Once designs are implemented in HTML+CSS+JS, hand them off to the Web Programmers/Developers. Build the basic JavaScript needed for DOM manipulation and basic UI behaviors, when JavaScript becomes too complex then let the Web Programmers finish it up. Test, launch and iterate.

  26. Where does the boundary of a designer/developer stop? I’m beginning to find that web developers and designers are being asked far too much of these days.

    Yes, a designer should absolutely know what the limitations of the technology are – that’s a given, but to expect a designer to be a coder of any value I think is unreasonable and not what designers trained to do. Designing and coding, in essence, are polar opposites and to expect a fantastic designer to be a great or even good coder is absurd.

    And it seems that developers are required to be sys admins too. These multi-skilled requirements surely only serve to dilute the primary skills of the developer (or designer).

  27. I agree with this and what many of the commentators have said. Although predominantly a designer, I have worn the “front-end developer” hat and have been sent designs with features that are impossible or impractical to implement into code. Although challenging, I would appreciate it (if one person not wearing both hats) designers and developers had a better understanding of each other’s role.

  28. Developers should code better. I started coding out of necessity. There was too much — “no you can’t do that” or “no it has to be done this way”. When you design something you push what has gone before that means if you’re developing it yourself you have to force yourself to learn more.

  29. @nico and @john
    yes, it applies to all careers in life, especially those with a technical component and those that change rapidly (often the same ones).
    Also “knowing how to code” is not necessarily “coding”. Being able to code a bit means building a bridge, an interface with developers. Developers should just be happier if, upon their inputs, a designer is able to rename a class in a SASS file, compile it, push to origin.
    I’ve worked for years with an interaction designer who could do CSS and HTML for me and we have been a winning team because of this overlap (I’ve an academic background in graphic design, which also helped in the other direction).
    At the end of the day, code is today’s medium, and creative must know how the nature of the medium. A century ago, would you have hired an illustrator unable to understand the difference between two different types of paper?

  30. I haven’t had chance to read all of every answer but I think there was once a clear distinction between a ‘graphic designer’ and a ‘web designer’. Then Dreamweaver came along and it all got a bit blurry. As a web designer I ‘code’ HTML, CSS and Javascript aong with some PHP and Rails and on occasion some SQL as well. I am not however a graphic designer despite knowing Photoshop extremely well. I don’t think graphic desingners should need to understand code as long as there is a web designer around to translate the graphic design, unless of course they want to.
    More importantly from my experience is that web developers with no user interface design skills should definitely not think that just because HTML, CSS and Javascript are ‘simpler’ than the languages they code in that they understand it enough to craft a user interface that users will both understand and enjoy.
    I think that ‘designer’ is too generic a term for these kind of arguments (though I instantly knew what was meant), I imagine that the software designers in our software design department all know how to code (on most days anyway, some days I wonder..) and in the end a designer finds solutions to problems and solutions to visual design problems can be found in either medium, code or image-editing software, or pen and paper.

  31. As someone said before, real design happens in the browser. A photoshop gradient is not a CSS gradient, fonts don´t look the same etc…
    However this is regarding VISUAL design.

    However when you take care of the design and coding of a website. In the “interaction design phase” you might be constrained by the things you can code later. What I mean is that if I can´t code some javascript behavior I probably won´t try to use it. Therefore I won´t design freely, but constrained with my own code limitations.

    But in essence I agree that VISUAL designers should definitely learn how to code html and css.

  32. As has been said above me, I see no problem with designers who can code. However, my experience has been the opposite of what Joe Steinkamp has experienced: Designers want to ship production code.

    I had a designer at my current job that did this every time we got a project together. He finished entire projects before he’d involve me, and it would just result in work being done twice.

    As has already been noted, there should be a clear separation between design and development. CSS + HTML could be the point where we collaborate, but anything that requires full programming (JavaScript falls into this category) should be left to the developers.

  33. Do whatever you want – if you want to be a designer that has a little bit of “code” skills, do it. If you want to be a developer that can put together some high-fi wireframes, do it. There’s no rules setup for this kind of thing.

    Think hard about your decision to either specialize (say Visual Design) or spread yourself thin and code, design, ux, etc. In my 12 years in this industry I’ve rarely met someone that excels in all of these at once – very rare.

  34. Don’t know about others but I personally believe that “Designers should code” as I did the same in my career, started out from Designer to UI Developer. And I think it depends upon personal interest what you want to be because nobody forced me to learn the front-end part but I felt it when I saw my designs get altered by the time it reaches to production. I also believe that designing is not only restricted to photoshop, if you are good designer you can design anything – just need a different perpective.

  35. As a front end web developer, web designer who uses the services of Graphic Designers surely we are better when we work as a team at the brief stage. Then you truly get the two heads are better than one. I would never dream of asking my graphic/web designer to just produce a visual based on a chat with the client. I work with them and bounce ideas until we get a starting design, as the site builds then we develop and grow the features that don’t appear on the PSD.

    Not everyone can think past the visual and when we code I personally feel as others have said before me this is where the real nut and bolts of the website comes together, the visual is hugely important but it is just the start in most cases.

  36. I think that one underlying issue is that in most small business cases and with the public in general, is that they are not aware these are separate jobs.
    Designer, Web Designer, Web Developer, UX Design, UI Design, Front End, Back End, Database manager, Server administrator, I could go on. While there is a lot of cross over, and to effectively communicate you must at least basically understand the other components of a project, these are not all executed by one person. Though many of us try very hard and some fail other skate by.

  37. As a designer, I do believe to be the best designer possible, I must code.

    In the last year I have collaborated with other designers on a few projects. In two of those cases, the designs included elements that weren’t reasonable for the web. It was immediately apparent that the designers’ decisions were purely aesthetic, and not informed by web standards. I realized then that to be the best designer possible, you must code.

    Designers will happily write, read, discuss, learn, and otherwise perform a myriad of tasks that bolster their designs. From related skills like color theory or typography, or more intellectual pursuits like information architecture, content strategy, or competitive research. Yet the moment someone says “code it,” designers either panic or turn up their nose at the thought.

    How can anyone expect to design for a system they don’t truly understand? Sure, you understand user behavior, but you don’t understand the underpinnings of your design. Without considering the underlying code, you’re just making a veneer, and counting on someone else to figure out the details for you. That’s not teamwork, it’s an assembly line.

  38. I think it’s a plus and minus. To be able to code is great but at the same time, if you design and know what isn’t possible then you won’t suggest it to get the others on the team thinking of way to make it possible. What some might see as a limitation of ignorance is imo space for out of the box thinking to start. Being able to code may not automatically switch that off but I do think for many it adds a wall somewhere in the distance of their imagination and that freedom where great design is born.

  39. Pingback: “an oddly reductive position to hold.” | Design Library

  40. Thanks for the interesting post.

    I’m an experienced developer (server and client) and a novice designer. I strive for pragmatism in both pursuits, and having both skillsets supports this. The more of a system one understands, the more concerns and constraints can be simultaneously addressed/balanced when working in that system. In particular, understanding the relationship between CSS and HTML, their document-oriented roots, and interpretation quirks between browsers, better allows one to create flexible, idiomatic, conceptual, usable (e.g. performant) CSS while also supporting accessibility, SEO, and DOM and server performance.

    I’ve read that the shift toward web design minimalism is about respecting the user. I agree, but I argue that it’s also about respecting the development process. Complex or pixel-perfect designs are very fragile and costly, wear on the development team, and hinder the business, usually with no marginal value over simpler designs.

    So IMHO, designing for web with strong knowledge of CSS is respectful of the process and environment of that work.

  41. Pingback: Should web designers know how to code?

  42. All i can say is – I started out as a designer, and now I am a Front End Developer. I believe it is healthy for any designer who intends to design for the web, to have a basic understanding of the medium they are designing for (in this case HTML & CSS). If you’r designing a brochure or a stanchion, i could not care less. The understanding of the medium is not to “code the site”, but so they can work tightly with a front end developer, KNOWING what is possible – arming the designer against a developers rebuttal of “Thats not possible” or “thats not easy”. It is fun at times to say “Yes it is possible, and this is how”.

    Remember guys, knowledge is power. The important issue at the center of this topic is if a designer should be expected to split their “full day” into “designing” and “coding” … they should not have to.

  43. Pingback: Agency Geek » “Designers shouldn’t code” is the wrong answer to the right question | More Than This

  44. I hear this idea that designers learning to code limits their creativity all the time. It’s often — but not 100% of the time — by designers who don’t code and are simply theorizing. And I have to say, like you, Josh, that this is totally the wrong-headed.

    A simple thought experiment proves this:
    Take the word “code” out of “creativity is limited by learning code” and replace it with any other word. Is there anything you can think of that makes that statement true?

    From my perspective, good design is deeply rooted in knowledge and in no situation has willful ignorance made a designer better.

  45. There is an obvious line between web design and development, but its pretty blurry. I wanted to learn HTML & CSS to further my career, anything I can’t handle I will use a developer. A greater understanding of code has only made my dealings with developers run smoother and I enjoy learning to code.

    I’m not going to limit my learning, I’m hungry for new knowledge, knowing even basic code has made me a better designer.

  46. Pingback: “an oddly reductive position to hold.” | Beta Sites Galore

  47. I tend to echo a lot of what has already been said in these comments, however I think it isn’t just a matter of designers doing the actual coding, it is more a matter of the designer understanding the medium in which their work is going to be displayed.

    I currently work with an Art Director who comes from a heavy print background who, I feel, lacks a fundamental understanding of the web and its capabilities. She actually asked me one time, “Why can’t the user need to scroll slightly to the right to see all the content on screen?” She wasn’t talking about a website set up to scroll horizontally instead of vertically, she was asking why the content should fit in a certain area to make sure it fit on a monitor so it could be read in its entirety. She also thinks everything can be designed in InDesign, but that is another subject for another time.

    When I have tried explaining that, just like in the print world, there are sets of rules we play by in the web/digital world, I get rebuffed that I need to think outside the box, care more about the design and less about the technical side. While I agree that the design shouldn’t be solely driven by the technical concerns of the medium, they need to be accounted for at some point in the design process so that when it comes time to turn design into code, you don’t hit a road block that could’ve been avoided with a bit of forward thinking earlier.

    Design is art with a purpose. It has a goal, a specific intention, that it is trying to carry out. Understanding that goal and understanding the method by which it will be carried out is key to creating the best design possible. Without those, a design will fail.

  48. I come from the school of thought that you can do both. From the first moment – I was always a designer and coder. Learned to be proficient in both. Where did I start at – Well – very far back – Throughout the years I also held positions in both areas.

    Finally after 17 years – I enjoy coding more than designing. I get more from it – For design at moment – I get more pleasure doing personal art work instead of commercial work.

  49. Same as Frederick, I went to design school both undergrad and grad, and now work fulltime as a developer. My code and design chops both borrow from each other, both in project in which I’m wearing both hats, and in projects where I have to effectively communicate with product designers to find best implementation practices.

  50. I think designers must absolutely know how to code, even if they are not required to for their job. It makes the process so much easier for everyone involved if they have an understand of how their design will impact the rest of the team. Not to mention if you are doing design work for a particular CMS but have no idea how that CMS functions…its a complete nightmare.

  51. Designers must code if they are working on the web. If you expect to hand over a photoshop file to a developer, that has no design training, and get pissed off when they don’t execute it properly, that’s your fault. Would you accept the blame for a database issue as the designer? No, so why would the developer be at blame for a design issue? You have to meet them half way.

    The bottom line is that designers must be able to prototype their designs in html, css, and javascript. Photoshop is not an acceptable model for indicating user interactions that involve animation. We’re working with a clickable, dynamic medium, to provide static mock ups is not good enough.

    I feel confident to speak on this because I am educated in coding and traditional design. Was it easy no, but if you want to be successful, don’t be lazy. If you want to do print all your life, then ignore this, but if you want to design for the web you need to know how the tools work. Otherwise, you might as well toss photoshop and illustrator out the window and go back to hand drawing all your print work.

  52. I think there’s another reason why designers SHOULD code. There are some things you simply cannot create without code. I’m speaking of things such as data visualizations, where the dataset is too massive or complicated to build a visualization in Illustrator, or where you can’t get an accurate picture with placeholder data. These are two examples where designing requires code.

  53. To say designers shouldn’t code is to oversimplify things. Html, CSS and js have become the new tools of the trade. Yes, they are far more abstract than any Adobe interface and yes, they can introduce you to more complex things, but I strongly believe this is only a natural evolution. Take SASS for example.

    By creating more complete prototypes in html and css you can get far better feedback of the application behavior than mockups. I’ve always made changes from my sketches and wireframes when I finish a prototype and give it a test drive.

    Programmers design too! Because design is, above all, finding the best solution to a problem within a set of constraints. I see my developer coworkers, plan, test, and iterate.

  54. “I can’t really rebut this except to say that I’m not meeting very many unemployed UX designers these days.”

    If I do say so myself, this is some pandering, wide eyed, idealistic bullshit. Yeah, maybe YOU’RE not employed. Try talking to the many people who are trying to enter the field but struggle because they graduate school without knowing up to date technology. Or because certain companies don’t want “Designers who can code”.

    The problem with treating designers as if they are developers (And I’m not talking about HTML and CSS and even some Javascript, I’m talking actual languages here), is that you have companies that want to cut out having to hire extra employees. So they’ll hire some developer who knows how to make shitty, fugly, funky ass graphics with a pirated copy of Photoshop, right? Even if they aren’t as strong as a designer as they are a coder, or in the case of most UI/UX people, they aren’t as strong as a coder as they are a designer, but just because they can do both. This is a scenario where nobody wins, because that company doesn’t value an employee that can turn out a quality product, the kind of quality product that normally takes more than one person to produce. They just want someone who can be a code monkey and do their bidding, no matter what. The truth is, your knowledge in developing will never compete with someone who has studied it for 4 years if you just picked it up in 2. That doesn’t mean you shouldn’t learn it if you really want to, but it isn’t something you should use to advertise yourself because you are misleading people and you are also misleading yourself.

    Semi off-topic, but this attitude is also bit of the beef I have with the start up culture. In essence, People looooove to romanticize start ups and what have you for this very same reason. “But you’ll learn so many skills, you’ll be working with a small company…” righttttt. There’s this common misconception that with start ups, you aren’t privy to the similar work politics you encounter at a bigger company and that it helps you become more well rounded. The reality is much like big companies, Start Ups tend to think the same way; limitedly and with spending as little money on hiring qualified people in mind. What’s funny is when they hire people who know Javascript but may not know how to code it by hand like a developer, or who only know how to code by hacking existing code. Start ups care very little for developing the skills you are coming into the work place with; and most of them are grossly horrible to designers and don’t value good or visually strong design. It’s a one sided relationship where you have to benefit them. Pretty much like most big companies. With the added expectation of most of them expecting you to train yourself and not providing essential training to entry level candidates who really need it. Not like big companies, which have no problem even paying you for classes or for a Lynda account.

    This matters because it royally screws over designers who are interested in UI/UX and want to learn more skills. The whole field is based on the structure of designing the experience of ever evolving technology. Designers who try to learn how to code and better design software are never given the platform to do that within their jobs. And then there’s the issue of when designers try to branch out of UI/UX and can’t find work outside that field because they don’t have enough print experience, etc. So then when they can’t get that other design work, they face pressure to be employed only by what developer skills/experience with technology and languages they have, even if they are NOT developers. See, when you place an expectation on a candidate to fill a role, certain skills are given more over priority others. There’s little respect for people who love doing a little bit of everything. The truth is, UI/UX, as a field itself, is still too damn new for anyone to say that it’s going to be stable forever. Most companies still use Flash out in NYC, and there is a big demand for it. Years ago, UI/UX designers were just called Web Designers. I still see people use that term from time to time and I respect them for it, because they’re honest. Maybe it’s time to go back to that title. Because that’s all you are. You are designers. Learn to embrace it and quit it with the self hate.

  55. I fell into the conversation with @miniver (via @usabilitycounts) as it was happening. Struck a lot of chords with me—UXers shouldn’t code? Really!? And I’ve worked my ass off to learn how to. (I even write about authoring Modular CSS, but I digress.)

    I will confess that “the implementation model”, in my experience, is a very real danger. But you have to be a designer first. That means putting the user first and not being blinded by implementation. I’ve often said that “programming issues have no business being addressed in the interface“.

    I did have the pleasure of getting a brief reply from @mralancooper, and it was afterwards that I realized that there seems to be two different models for a UXer. One is based on the “Designer as Architect” paradigm. The other is the “Designer as Craftsman”. I’ll explain.

    Designer as Architect: In the three dimensional world, the architect creates the plans for a building. They think about the many aspects of how the floor plan is laid out, what direction the structure will be facing, and the many creative details of innovation. They, then, hand these plans—the designs—over to the builder who then implements them. So, the two are separate from each other—designing and building.

    Designer as Craftsman: This is an idea that comes from the Bauhaus school from the early twentieth century. The designer doesn’t only account for the aesthetic appeal and functionality of an item, but puts care into the crafting of the item. The lines are much more blurred as crafting—or building—becomes part of the design process.

    Which one of these two models is appropriate, in my opinion, depends on the needs of the organization you work for and the type of product you are building.

    Cheers!

  56. I think you can do both, but I don’t think most “professional” designers or devs do a good job at either, so it’s hard to imagine more than a handful that can. We all want to be all things to all people, but in the end we usually specialize because it’s realistic. Yeah, you can rattle off 10 to 20 technologies that are are familiar with, but how many are you an expert of?

  57. I dont really understand the separation between designing the software that generates the UI, and designing the UI.

    I don’t consider “drawing something” as UX-design.
    That’s where all these shitty brochure-websites comes from, with text beautifully faded into unreadability and shiny trinkets that might or might not be click-able.

  58. Pingback: “an oddly reductive position to hold.” | Web Development, Search Engine Optimization, Social Media Marketing Guru

  59. Sorry I am late to this party, but we’ve had this one before. I think Brian Temecula covered my response well. But for a slightly longer one: http://shoobe01.blogspot.com/2013/08/designers-cant-code.html

    Short as I can: I don’t build websites. Stipulating that UX design is 100% websites is stupid. There are DOZENS of technologies I am familiar with, from database optimization to printing. That’s a key part of my job. I EXPRESSLY stopped being a production coder (not developer) and DBA because I wanted to know a little about /everything/ which is impossible if you are working inside a handful of systems every day. Impossible on average. I am sure you can find me one, but find me 10 or 100 developers good at html, css, mSQL, iOS AND Android OS development. For starters.

  60. Pingback: What I've been reading lately (week 32), by Samuel Ericson

  61. I haven’t gone through all the comments here so if I’m making a comment subject that’s already been explored, a thousand pardons.

    I would make the point that as a designer I NEED to know HTML and CSS at the very least. Otherwise, I don’t really understand the medium I’m designing for. I preach this to my junior designers. Gone are the days where you could do whatever you wanted in a flash animation site with no regard for functionality. Design is more about function than style when it comes to websites. You create a UX around a content model and let that inform the style. Furthermore, I don’t even know how you could design a JS animation properly if you don’t know how it works. As much as I’d like to leave the presentation layer to someone and design whatever I damn well felt like, its irresponsible to everyone else involved if I don’t actually know how the site works underneath.

    Even furthermore, with the onset of responsive design, you have to be able to prototype the presentation layer or else you really have no idea what the hell you’re doing. That alone makes it a necessity. That shit (or something like it) is here to stay.

  62. With the addition of Addendum #2 I couldn’t agree more. Understanding the web as a medium and interaction design as a skill are traits design schools must include in the curriculum along side of good typography and software like Photoshop. These are the keys to success, in my opinion. I think the best designers have a powerful creative capacity to get to the root of the problem and have the tenacity to learn as much as they can about how to explore and present the best solutions. This just doesn’t apply to designing apps, web sites, or view books. But without mastering the right fundamentals and understanding what is feasible, within the scope of the project, you really do not have the tools to meet the challenges of the industry today.

  63. Like Brian, I agree that you can not be an expert in all design technologies; specially when everyday a new app is rolled out.
    Fortunately, some existing tools break the rules by allowing the generation of interactive content in HTML5, or Flash without necessarily being a master in at the coding side; at least when it comes to creating visual content.

    This makes things much easier to focus on the design, and creates efficiency in the amount of workload traditionally involved in such projects. One tool I’ve become fond of lately is Presenter from Easy WebContent. I’m using it more and more over flash to design graphics and interactive content. it might be worth a look.

  64. The issue with designers coding – even front end – is they don’t understand boundary conditions and data manipulation properly (sweeping generalisation) so they might consider a product passes QA but in fact does nothing or breaks terribly.
    (I experienced this recently when I was given a “Fully completed” product application form developed by a very high profile global agency which essentially did nothing other than write cookies, and trashed all the data if the user returned to the first screen).

  65. Pingback: Designing For Digital Products | DK Studio Home

  66. Pingback: Designing For Digital Products - rehavaPress

  67. Pingback: Getting Started With Open Source Web Design Tools | PHP World

  68. Who out there thinks HTML+CSS+JavaScript isn’t real coding?

    It is true they are higher level languages than the below but “coding” non the less!

    L1 Byte Code
    L2 Assembly
    L3 C/C++ etc
    L4 PHP etc
    L5 HTML CSS JAVASCRIPT

    I hope that gives some perspective.

    God speed!

    Hal

  69. Saying designers should or shouldn’t code is an oversimplification. This is about people not understanding the value (or skills) of their teammates and thinking they can do it better. Ego. Take it out of the web scenario and into the real world. Would I trust my architect to build a blueprint and scale model of my house? Yes. Do I want him on the construction site supervising his vision? Absolutely. Do I want him pouring the cement and putting up the support trusses? Um, well, MAYBE if he’s trained and qualified to do it — otherwise, don’t I want the construction foreman on that job? Isn’t that why I hired two guys? And if the foreman decides to take out a wall for aesthetic purposes and maybe to move some windows around for lighting, is that really his call to make? How close is he to the customer’s (MY) needs? Probably not that close, considering it was the architect who drew up the plan.

  70. Pingback: Designing with Code | Peppermint Design

  71. Pingback: Designing with Code | Manganoir

  72. Pingback: Thiết kế sản phẩm trong môi trường Digital | Làm việc hiệu quả & dễ giàng hơn

  73. Pingback: Design, production, and craft – What do designers make? | Normative