This might work for web design. In my experience, it doesn't work well for UI design.
The first law of UI design is that you will fuck up most of the time. Most of your ideas are going to be bad bad bad. If you think that every mock comes out of your workstation smelling like roses, then you're either deluding yourself or you're just knocking out something incredibly derivative. To be a good UI designer you have to say no all the time, and to all of your ideas.
So here's the problem. Static image mocks only paint about 60% of the picture when you're talking about modern (especially touch-based) interfaces. Static mocks don't give you enough information to accurately cull your ideas. Sometimes you need to build the damn thing, so you can touch it and move it and realize well damn, that wasn't such a great idea after all (or oh, this part really needs to be changed or the final, magical yeah, that's not too bad).
All of the best and most innovative UI designers that I've met have been able to build interactive mocks of their designs. Now - don't ask how they did it. It's spaghetti code that will curl your hair, frequently written using some arcane technology that might not even be supported anymore. But it works just well enough that they can use it to iterate on their ideas.
Now, you can split this job into two people. One a "designer" and one an "interactive mock engineer". In theory, it could work, but in practice I've found that it becomes hard for the designer to detect the flaws in the design. I'm not sure why. But the final product doesn't change as much. It doesn't evolve as much. It's rarely as good as it should be.
The following quote didn't really fit with my post, but I like it too much not to share it. Take heart! Your limitations are not as strong as might believe.
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
The author is just pigeon-holing the abilities of people. I was/am pretty good at math AND art. Not everyone is a specialist that fits neatly into perfectly shaped holes.
Designers who design for the web should know HTML, CSS, and Javascript pretty well. The best ones know them throughout. Design isn't art -- it's a technical profession and one that requires the designer to know their medium. If you do not then I would say you're taking the piss right out of it.
Being the person who has to "code" a designers' work is a career built on frustration. The web wasn't built in photoshop. It was built by nerds and engineers. It has come a long way to allow people to make their HTML documents more expressive (to the point that they've become full application UI's...). But that doesn't escape the fact that this is a technical medium with specific technologies that drive those expressions.
You have to know this stuff if you want to be good, IMO.
Pigeon-holing? Quite the opposite. I'm making the difference between "should" and "could". That's exactly because not everyone is a specialist, neither I am, but at the same time not everyone is a generalist! :)
Exactly like I'm saying in the middle of the article, "you have to know this stuff", but you don't have to know also how this stuff is done, you can, of course. But it's not a must. :)
It's always sad for me to hear people with bad experiences with designers or developers, but really, I don't think that "code" is the answer. I believe that "teamwork" is the answer. Knowing. Discussing. Collaborating. I've never seen a team doing that failing, regardless of the mix of skills :)
Amen. As far as I'm concerned, a "web designer" who refuses to learn CSS is like a "painter" who won't learn about working with paint, or a "musician" who can't carry a tune or play an instrument.
I disagree. Just to be clear, we're talking web design here in HTML/CSS, not actual programming in JavaScript or Ruby. HTML/CSS creates designs, just like pencils create sketches and paint brushes create painting. Sure, it's hard, but watercolor and oil painting is also hard and has to be learned. Web design is no different.
IMO, in a team, creating the HTML and CSS is a responsibility of the designer. The developers are too busy doing real coding. At least, that's how it works in the design agencies I know personally. It's always a designer that creates the markup, whether a lowly design intern or a production artist. Maybe enterprise and tech startups are different, but that's how it works in the design agencies.
I agree with you, what's next after this? designers that can't use photoshop because it is not part of their intelligence type? HTML/CSS is the designers medium and they have to learn how to use it just as a painter needs to learn how to use paintbrushes or a film director needs to learn how to use a camera.
Probably you never met amazing designers that can't even put a "." at the end of their sentences.
People are different, with different mind, and intelligences. Forcing such a designer to "code" is just going to destroy his skillset, that otherwise would be of great use in a good and collaborative team. :)
'According to James Traub (writing for The New Republic), Gardner's theory of Multiple Intelligences has not been accepted by most cognitive scientists nor by most academics in the education field. Indeed, George Miller, one of the psychologists credited with discovering the mechanisms by which short-term memory works, wrote that Gardner's theory boiled down to “hunch and opinion.”'
I am editing a forthcoming book in the field, written by a teacher who earnestly believes in MI. Evaluating this teacher's data, his approach is clearly working for his students, but I think because of better engagement, more individual attention, and more interdisciplinary projects. Ultimately, I think we're cutting most of the MI stuff from the book as unsupported, although he will cite Gardner as inspiration.
The data I've looked at is more consistent with variation in subject performance primarily correlating with interest and personality, rather than MI.
Yay - designer/developer "teams". Sounds fair enough, but it's gotta work both ways.
You as a designer need to be flexible. If I as a developer say "that can't be done within the given time/budget/constraints", you'll need to rework or rethink some of your precious design.
I as a developer need to sometimes do some more research to make sure something can, in fact, be done, instead of relying on 10 year old preconceptions about what's possible and what's not. I may need to tell a client/pm that we're going to do XYZ visually and IE5 be damned because I've looked at the stats and 0.21% of the visitors in the past 18 months used IE5.
I've rarely seen true teamwork collaboration between designer/developers in the web world, and it's worse in the 'virtual team / freelance' world, because pretty much every project is a new set of people working together for the first time.
What's more common is a designer puts together some graphic design which is fairly impossible to recreate in browsers, then complains tirelessly that it doesn't look exactly 100% the same on every single browser, including their WAP phone, iPhone and IE6 on XPsp1, and proceeds to tell you about their cousin who made all this work perfectly 6 months ago because he wrote some javascript to make everything awesome. Then the designer coming back 4 hours before a demo/launch and telling you that the color in the footer on each page needs to be different, but they're going away on vacation in 10 minutes and "it's pretty simple, just look at the 19 mockups I emailed to you in February" (conveniently named 'XPJ59 client X here's slide #1.JPEG', etc).
Also more common is a developer who takes no notice of the designer mockups that were approved by 8 people over 2 months, and just does their own thing with CSS3, custom modified jQuery, and only tests on their custom Konqueror or Chrome beta release, then pushes to Heroku where only they have an account and rights to push.
Yes, designers and developers need to learn to work well together to appreciate the issues each faces. Web designers do, in my view, need to have a better understanding of web technologies, understanding the limitations and possibilities of the tech. I don't see how you can do that without actually, you know, learning how to code some. Developers should have a better idea of how to use graphic tools, and sit in on some meetings where designers are subjected to idiotic whims and endless debates on shades of blue to have a better understanding of why the designer is bitching about what should really be a 2 minute change for the dev (cause the designer will get it in the neck from 8 people if they don't).
Design is not about the tools you use, and development is not about the code you write.
Developers can learn design fundamentals (and I mean really basic "what's the idea behind this color/element/typographic decision?") without touching Photoshop, Illustrator, etc.
Similarly, designers can learn about what is and isn't possible, without learning to code, through research about the existing technologies and their use cases.
The problem is that in a startup environment, needing to constantly explain how web application design works can waste significant time and energy, decreasing morale and impacting momentum. It's a drag, and an unnecessary one.
Web applications don't need to have heavily designed UI elements. The kind of designer that's useful for a web application is one who has a deep understanding of the unique constraints and conventions of web application design, not someone who is a whiz is Illustrator or screen printing.
You're right. Every discussion about "designers should code" always shows problem in teamwork and communication, not in coding skills. :)
And even if as I was saying learning to code is a way to create these skills, like designing things is for developers, another way is just listening to the developers/designers in your team. It works very well and it's way more efficient for a lot of different people. :)
I will call your bullshit and raise you a fallacy. ;) But seriously, I think that pigeon-holing yourself into one skill set is the WORST thing you can do. If nothing else, you should at least attempt to learn code so that you might be able to produce reasonable, efficient designs that the coders can easily implement.
But it goes much farther than that.
Someone (on the internet) once said "programming is the new literacy."
I am both an artist and a programer. I am not very good at either, but I find having a knowledge of both is extremely empowering. I DO NOT believe that you are born an artist or programmer. Sure, you might be born with a slightly better brain than the next person, but anyone with an IQ above 70 can learn to program and/or draw. Learning both is not time wasted, but time invested. Being a good programmer can actually save you time as a designer.
I know, it's wonderful when you can do both, but I think it shouldn't be forced on everyone. Not everyone is a specialist, and not everyone is a generalist. Forcing one, or the other, is harmful. :)
Wow, what a way to say I'm not good at either but it doesn't really matter in the end. Really? So you say you're not good at either but having knowledge empowers you? In what way? It gives you the ability to point out people better at those skills than you? I think you should focus on one until you feel you are good at it and then move on to the other.
Yes, anyone with an IQ above 70 can learn just about anything. Doesn't mean they will be good enough at it for a career. You make sound as if those abilities are not challenging or difficult in any way and anybody can do it. If that's what you are saying then I have to seriously disagree.
Good point about being a good programmer can save you time as a designer, but it can work the other way as well.
Methinks we are ignoring the elephant in the room. Sure, good teamwork will solve a lot of problems, regardless whether the designer can code or not. A team with all the skills combined can deal with both.
But there are people that have a vested interest in playing designers and developers against each other.
I've seen this happen time and time again, both via internal management and external clients: feeding designers and developers separately different bits of information (but never the whole picture), letting them make commitments based on that information and only then bringing the two together. The end result is that in order to make good on their separate commitments, designers and developers are left with very little room to compromise, which undermines the cooperation. The goal of this little divide-and-conquer game is to pressure them to come up with a result they otherwise would not have committed to given the time and budget constraints.
There's a reason why designers and developers are often very deliberately hired or managed separately for the same project. There are plenty of people who believe having designers and developers work together too closely is not in their interests.
Some of the best designers I've had the pleasure of working with didn't know how to write HTML or CSS. The did, however, deeply understand the constraints of web design. Knowing HTML and CSS gives you a de facto understanding of the constraints, but you don't actually have to write it in order to become a competent web designer.
I also think most people are thinking from the perspective of the scrappy start-up, where you must be multi-talented in order to cover various roles. In large organizations there's designers that only produce wireframes, then another designer comes along and produces the final visual output, and finally another guy comes and codes it. Not that it's the right way to do it, it's just that the expectations are being set too high.
Instead of putting down web designers who can't code, appreciate web designers who do it. This comes from a web designer who can code.
I think this post is at least partially misunderstanding the assertion that designers should be able to code. The point is not that they should be a coder, just that they should, like you said, "deeply understand the constraints of [their field]."
Someone who comes up with a good design that can't or won't be implemented may as well have not designed it in the first place- but if they understand the constraints on their design they can come up with something optimal that can actually exist.
"The team of the digital era is a designer / developer team"
At my last job, I kept trying to get them to hire a designer. When I left, there were like 15+ developers and no designers. A couple of them thought they had designer skills, but they didn't really. They ended up outsourcing their design, and of course, a lot of back-and-forth was needed.
I absolutely think that designers and developers need to work closely together.
I also think it's -possible- to have someone who is great at both. But you're going to pay them a lot more. Probably more than having 2 specialists. They are going to be amazing at what they do. You certainly won't get twice the work from them that you get from 2 specialists.
As a "web designer", HTML/CSS are your medium. If you don't understand your medium, you don't understand your craft. Last I checked, web browsers don't understand PSD files, which means without HTML/CSS the design isn't finished.
Imagine hiring a painter to do oil on canvas and they handed you a picture of a painting, or a sketch of what the finished painting should look like. You hired them for oil on canvas - not something that looks like oil on canvas.
When hiring a designer for a web project, I expect to receive html files that can be opened in a browser. In the very few cases where the designer didn't know HTML/CSS, I hired a designer who did to finish the job - because the inherent decisions with modeling a website in HTML/CSS are design-minded decisions.
As such, I suppose as a designer you don't HAVE to know HTML/CSS, but then I can't think of a single reason to hire you for a web project. Print, maybe - provided they understand the needs and limitations of printing and can provide files in a format the printer can use. Otherwise, I'm just going to have to hire a more talented designer to finish the job, which will leave me to wonder - why did I ever hire that first designer?
I got about a quarter way through the article and gave up reading. The reasoning cited is pretty poor. I was someone that used to think i could never code because my brain wasnt wired that way, but yet here i am, coding. Its given better insight into what issues and constraints programmers face.
This whole pigeon-holing exercise is just a complete farce. Far better to know a little about everything than everything about a little.
Its really not as a big a deal as people are making out.
The problem here is 'designers' is an ambiguous term and 'code' is a loose term. If the sentence is "Web designers should know at least HTML/CSS." as it should be, then the debate would proceed properly instead of everybody missing each other's point. Framing this whole argument into "designers should code" is not doing any side any favor.
Thank you. I agree that whenever someone writes such a post saying that web designers should or should not "code" then they should define what coding means in that context.
Creating HTML markup and CSS is debatable of whether to call it coding or not. But every web designer I've ever interviewed I expected them to write their own HTML markup and at least be of average skill with CSS. Ability with Javascript was a bonus but not required.
I have a design degree and I learned HTML in class as part of my minor. This was before CSS was common so it was all font tags and tables. They used FrontPage for this but I refused and stuck with Notepad in back of the class.
I, as a web designer, create my design, write the HTML markup, write the CSS and code the javascript. In some cases I tweak the back-end code to suit my needs if it's light. Heavy-lifting on the back-end is done by a programmer.
Truthfully, I'm probably more of a front-end developer these days though.
I am not a print designer therefore I would have a bit of a learning curve to re-acquaint myself with the medium which I learn in school. But it would be expected of me to learn it. Therefore, I don't feel it is wrong to expect a web designer to learn their medium as well.
But hey, everybody should pick what works for them. Some companies don't want designers involved in markup, that's fine. Some companies do, that's just as good.
Yes, a good designer should be able to do more than draw things in photoshop. A good designer should be able to make things aesthetically pleasing, but more importantly functional. If they haven't even a basic grasp of HTML/CSS, for example, how can they pretend to design functional interfaces in HTML/CSS? A designer who can only mock things up in photoshop is not a designer, but an artist, and probably a poor artist at that.
> 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? Do a surgeon need to know how to build a peacemaker? Of course not.
Yes, architects take some structural engineering classes. They aren't engineers, but they certainly have an overlapping knowledge base. If all they could do is draw fancy buildings, then they would not be architects, but artists. Yes, car designers should know how to build an engine, not to the level of an engine designer/engineer, but to the point that they truly understand how the engine works, and not just what it does. Yes, a director needs to know how to act. They might not be the best actor, but they should know the craft, or they can't get good performances out of their actors. Yes, a surgeon who installs pacemakers should understand how they work. Do you want some guy attaching electrodes to your heart when he doesn't really understand how they work?
Good architects understand engineering. Good car designers understand engines. Good directors understand acting. Good heart surgeons understand pacemakers. And yes, good designers understand coding. When something is so closely tied to your effectiveness, you should should understand it, and that means you should understand the how as well as the what. Otherwise you will not be good at your core competencies, because you have too many gaping holes in your knowledge.
Relying on teamwork to fill the gaps in your knowledge is crap, too. If you don't have a shared vocabulary and a basic understanding of coding, how are you going to work with developers? You're going to hand them a pretty picture and tell them to implement it, and they're going to dismiss you as incompetent, because you are.
> There’s still a good point in suggesting that designers should code
This is really lame. Don't write a dozen paragraphs claiming that it's "bullshit" to say that designers should learn to code and then end by stating that it's a good idea for designers to learn to code. That makes it obvious that you're just a trolling ass. If you believe in the stance you're taking, then stick to it. Otherwise don't rant about something you don't even believe.
"Yes, a good designer should be able to do more than draw things in photoshop. A good designer should be able to make things aesthetically pleasing, but more importantly functional. If they haven't even a basic grasp of HTML/CSS, for example, how can they pretend to design functional interfaces in HTML/CSS? A designer who can only mock things up in photoshop is not a designer, but an artist, and probably a poor artist at that.
"
There is a difference between knowing how a web page functions (from a UX perspective) and knowing how the web page is built with HTML/CSS. The front-end of HTML is ubiquitous. People know how web pages work because they use web pages every day.
He buries the lead at the end. It's good for designers to know how to code but they shouldn't spend so much time coding that they can't grow their design skills.
Yes some people are more creative, but who said being a good programmer had nothing to do with creativity? Along the same lines design is not art. I've seen many talented artists who were average designers because they couldn't, or wouldn't, blend in some structure to their work.
I started out as a book designer, then web hit and I became web designer. Although I admit the early days of table based layout made me want to run back to QuarkExpress. Flash arrived on the scene and sites like the Remedy Project inspired me to learn to code. Long story short, I now know OOP inside out and, thanks to hacker news, have dived into in functional programming.
I spend very little time designing anymore. I'm still miles ahead of my fellow developers, and I tend to be more creative in my problem solving. That said I still run to them (or stackoverflow) when a hardcore programming problem pops up.
Becoming an expert at anything takes time, if you're a Jack of all Trades one of those trades will suffer. I've chosen programming because I like building things, plus the pay's not bad. I'm still 'designing' it just happens to be with code.
Very few people argue that designers should learn how to code (as in programming). What most people argue though, is that WEB designers should be able to code, as in do the markup and CSS, their own designs. If they aren't able to code their own designs, how can they know the limitations imposed on their designs by current (and old) technologies?
A designer does not need to know how to do AJAX, jQuery animation, MVC, Ruby (or Python, or C#, or Java...), an SQL dialect, Linq queries, how to configure nginx to serve your statics, and a whole plethora of things that are important when creating a product for the web. A bunch of different people and skill sets are needed for all of those, and no one person can wear all hats. That being said, a designer that designs for the web needs to know the medium on which they're creating their artwork on. I do oil painting, and I know I need to know how to frame my canvas with a stretcher or strainer. I know that I need to prepare my canvas with animal glue, chalk, and white lead paint. I need to know my brushes and their properties also, wether they're made hair from a horse, camel, squirrel, sable, etc... I need to know a myriad of different things that are NOT actually painting. I'm also an avid strength training aficionado, for which I've learned more about the human physiology and the mechanics of lifting weights and their effect on your muscles and nervous system than I care to remember. I need to know a myriad of things that are NOT how to lift weights correctly. If I'm a web designer, and I make pretty pictures for the web, I need to know my medium. I need to know how to code my own markup and I need to know how to make my own CSS. Only then will I know the limitations and the mechanics of how a "webpage" works. Hell, creating a good creative design is a lot harder than doing the markup and CSS to be delivered to a front end developer who will probably end up changing a lot of it anyways.
The point of web designers knowing how to do their html and css, is not to remove another person from the conveyor belt of web products. The point of designers knowing how to do so, is to make sure you've got a design that works beautifully and that goes hand in hand with all the standards and best practices that the project requires. If I'm going to hire a web designer that doesn't know how to do his own html and css, I immediately think that he's not really a WEB designer and that he doesn't really care to be the best he can be as a WEB designer. Regardless of his actual skill as a designer, and of course, I won't hire him. If I get a designer that doesn't know how to do so, but wants to learn... I'll probably hire him because of his attitude and aptitude for learning. As long as he's actually good as a designer of course.
I'll just end this already too long post with one 'though': Valve (as per the latest articles going around the web) hires mostly multi skilled people, as opposed to people that are one trick ponies. The developers to my sides (no I don't work at Valve) are both completely multifaceted people with a myriad of skill sets not directly related to making software, but that we use almost every day. I consider them some of the best I've ever met. I've done system admin in linux, bsd, and windows, and I'm pretty knowledgeable in all three. I've developed software for the past 15 years. I've also been designing for the last 10. I'm pretty decent (and I've studied and practiced my ass of to get to that point) in all those fields, but you can't be bothered to learn HTML and CSS so you can make YOUR web designs better? Give me a freaking break.
Except that in most agencies, designers don't code. So they spend 8-10 hours a day doing design.
Learning how to code does enhance work but it doesn't mean that you'll necessarily be a better designer than someone who doesn't know how to code but has a pretty firm grasp of what the web can do based on their experience using the medium.
I've worked with top tier designers in NYC who have probably never touched a line of code. And personally, I'd rather higher a highly talented designer and teach them the ropes (if they even need it) than a good designer/developer. Because quite frankly, it is extremely difficult to find individuals who are killer at both design and development. That's why most agencies have a pretty rigid division of labor.
The argument stated is that intelligence is multidimensional (stated as fact with caricature testimony) and therefore there exists a job aligned with one of those dimensions. Arguing that designers should code states that today optimal design is done by someone who has skill on multiple axes.
So the article really just dodges the issue by defining situations alternative to arguments made by Frank Chimero[1] makes and then pretending like that's a rebuttal.
He, of course, steps away from this ridiculous position toward the end by agreeing that designers could learn to code. Even suggesting it might not be a terrible idea, but this again misses the brunt of the pro argument:
Designers with strong understanding of implementation are better than those without.
I don't really want to argue that point in this comment—I'm not qualified. I just wanted to state that he never actually says anything concerning it.
What it tries to clarify - and well, it might have failed, of course - is that we should stop to simplify the problem as "designers should code", because not all designers should. But yes, all designers could, and if you feel that way, or you are prepared for that, or if you want that, you can learn to code. Exactly like a developer can learn how to design.
In either case, exactly like it's wrong to say "developers should design" but it's correct to argue that a developer with design knowledge will be better at its job, it's equally wrong to say that "designers should code", but it's correct to argue that a web designer with developer knowledge will be better at its job. ;)
The dichotomy of 'design vs code' feels artificial to me.
The activities of designing and of coding overlap extensively. Both require a clarity of communication, a deep consideration of the purpose of the thing to be designed/built, and a sense of taste.
If in the habit of extracting general principles from concrete examples, coders can become better coders by learning aspects of design and vice versa.
Many of the concepts in a 'coder' book like 'How to design programs,' for example, are readily applicable to UX design, e.g: refactoring, wishful thinking, generalisation of purpose, and the control of complexity by use of 'black boxes.'
Likewise, a 'designer' book like 'The design of everyday things' is full of stuff that applies usefully to the activity of coding, e.g: the importance of meaningful feedback, and of ensuring a clear mapping between expected actions and their outcomes.
These correlations aren't everywhere to be found, though. But I've always found interdisciplinary people to have the freshest approaches.
At first i thought the title was referring to backend work, or perhaps just jQuery and i completely agreed-- i wouldn't expect a programmer to be great at design either.
But it turns out that this blogger doesn't expect designers to actually make their designs into something tangible. It seems positively ludicrous to me that any designer that is designing for the web would think that not knowing HTML/CSS, and therefore putting out an unfinished product is acceptable. It's almost insulting-- learning HTML and CSS takes a month at most, so why won't this designer learn it?
Building a design for a web page without actually writing the HTML+CSS for it is being a print designer and expecting the client to finish the job.
People are different. What takes you a month could take years to others. Don't assume that we have equal skills and talent. If you can learn how to write markup in a month... great! Good for you. :)
Other designers, are still doing great, without knowing how to code. ;)
It is really arguing the extremes, when reality, the best place to be is somewhere in between.
Designers and developers should of course have good understanding and empathy for what the other person does. But at the same time, they shouldn't have such a complete understanding that it negatively impacts their primary role.
For example, if you're a designer, you don't want to fall into the trap of only incorporating things into your design that you already know how to code. You might leave a lot of innovative stuff out that would make the product better. If you're a developer, you don't always want to be bound by the existing design constraints either. It's a back and forth discussion between the two halves.
Design and art have always required technical knowledge of tools and the medium, and knowing HTML and CSS is no different.
Web application design (which is distinct from brochure web design or print design) has unique conventions and constraints, and web application designers absolutely must have a deep understanding of both. There are header nav bars. The branding with the link to the root path is in the upper left, user info/settings are in the upper right. HTML and CSS are structured as boxes within boxes. Main content areas contain the primary content, sidebars contain secondary content. Components are modular. Browsers have significant variation in how they render things, and viewport sizes vary dramatically. We have views and forms, GETs and POSTs. Resources are nested, with one URL per resource. Browsers have different levels of CSS support, leading to a focus on progressive enhancement and graceful degradation.
Every single time I've ever worked on a web application with a designer who didn't know HTML/CSS or a web designer who only does brochure sites, they stumble on these issues, and we end up with inflexible designs that have usability issues and are a pain or impossible to implement. Designers who don't know HTML/CSS create drag in a startup environment. It forces others to spend time and energy explaining how the web works and what the conventions are.
[+] [-] ender7|14 years ago|reply
The first law of UI design is that you will fuck up most of the time. Most of your ideas are going to be bad bad bad. If you think that every mock comes out of your workstation smelling like roses, then you're either deluding yourself or you're just knocking out something incredibly derivative. To be a good UI designer you have to say no all the time, and to all of your ideas.
So here's the problem. Static image mocks only paint about 60% of the picture when you're talking about modern (especially touch-based) interfaces. Static mocks don't give you enough information to accurately cull your ideas. Sometimes you need to build the damn thing, so you can touch it and move it and realize well damn, that wasn't such a great idea after all (or oh, this part really needs to be changed or the final, magical yeah, that's not too bad).
All of the best and most innovative UI designers that I've met have been able to build interactive mocks of their designs. Now - don't ask how they did it. It's spaghetti code that will curl your hair, frequently written using some arcane technology that might not even be supported anymore. But it works just well enough that they can use it to iterate on their ideas.
Now, you can split this job into two people. One a "designer" and one an "interactive mock engineer". In theory, it could work, but in practice I've found that it becomes hard for the designer to detect the flaws in the design. I'm not sure why. But the final product doesn't change as much. It doesn't evolve as much. It's rarely as good as it should be.
[+] [-] ender7|14 years ago|reply
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
-Robert A. Heinlein
[+] [-] agentultra|14 years ago|reply
Designers who design for the web should know HTML, CSS, and Javascript pretty well. The best ones know them throughout. Design isn't art -- it's a technical profession and one that requires the designer to know their medium. If you do not then I would say you're taking the piss right out of it.
Being the person who has to "code" a designers' work is a career built on frustration. The web wasn't built in photoshop. It was built by nerds and engineers. It has come a long way to allow people to make their HTML documents more expressive (to the point that they've become full application UI's...). But that doesn't escape the fact that this is a technical medium with specific technologies that drive those expressions.
You have to know this stuff if you want to be good, IMO.
[+] [-] folletto|14 years ago|reply
Exactly like I'm saying in the middle of the article, "you have to know this stuff", but you don't have to know also how this stuff is done, you can, of course. But it's not a must. :)
It's always sad for me to hear people with bad experiences with designers or developers, but really, I don't think that "code" is the answer. I believe that "teamwork" is the answer. Knowing. Discussing. Collaborating. I've never seen a team doing that failing, regardless of the mix of skills :)
[+] [-] wpietri|14 years ago|reply
[+] [-] jinushaun|14 years ago|reply
IMO, in a team, creating the HTML and CSS is a responsibility of the designer. The developers are too busy doing real coding. At least, that's how it works in the design agencies I know personally. It's always a designer that creates the markup, whether a lowly design intern or a production artist. Maybe enterprise and tech startups are different, but that's how it works in the design agencies.
[+] [-] ilcavero|14 years ago|reply
[+] [-] folletto|14 years ago|reply
People are different, with different mind, and intelligences. Forcing such a designer to "code" is just going to destroy his skillset, that otherwise would be of great use in a good and collaborative team. :)
[+] [-] camwest|14 years ago|reply
http://latestlearningcurve.blogspot.com/2010/01/learning-sty...
[+] [-] NeilCJames|14 years ago|reply
The data I've looked at is more consistent with variation in subject performance primarily correlating with interest and personality, rather than MI.
[+] [-] folletto|14 years ago|reply
[+] [-] mgkimsal|14 years ago|reply
You as a designer need to be flexible. If I as a developer say "that can't be done within the given time/budget/constraints", you'll need to rework or rethink some of your precious design.
I as a developer need to sometimes do some more research to make sure something can, in fact, be done, instead of relying on 10 year old preconceptions about what's possible and what's not. I may need to tell a client/pm that we're going to do XYZ visually and IE5 be damned because I've looked at the stats and 0.21% of the visitors in the past 18 months used IE5.
I've rarely seen true teamwork collaboration between designer/developers in the web world, and it's worse in the 'virtual team / freelance' world, because pretty much every project is a new set of people working together for the first time.
What's more common is a designer puts together some graphic design which is fairly impossible to recreate in browsers, then complains tirelessly that it doesn't look exactly 100% the same on every single browser, including their WAP phone, iPhone and IE6 on XPsp1, and proceeds to tell you about their cousin who made all this work perfectly 6 months ago because he wrote some javascript to make everything awesome. Then the designer coming back 4 hours before a demo/launch and telling you that the color in the footer on each page needs to be different, but they're going away on vacation in 10 minutes and "it's pretty simple, just look at the 19 mockups I emailed to you in February" (conveniently named 'XPJ59 client X here's slide #1.JPEG', etc).
Also more common is a developer who takes no notice of the designer mockups that were approved by 8 people over 2 months, and just does their own thing with CSS3, custom modified jQuery, and only tests on their custom Konqueror or Chrome beta release, then pushes to Heroku where only they have an account and rights to push.
Yes, designers and developers need to learn to work well together to appreciate the issues each faces. Web designers do, in my view, need to have a better understanding of web technologies, understanding the limitations and possibilities of the tech. I don't see how you can do that without actually, you know, learning how to code some. Developers should have a better idea of how to use graphic tools, and sit in on some meetings where designers are subjected to idiotic whims and endless debates on shades of blue to have a better understanding of why the designer is bitching about what should really be a 2 minute change for the dev (cause the designer will get it in the neck from 8 people if they don't).
[+] [-] endtwist|14 years ago|reply
Developers can learn design fundamentals (and I mean really basic "what's the idea behind this color/element/typographic decision?") without touching Photoshop, Illustrator, etc.
Similarly, designers can learn about what is and isn't possible, without learning to code, through research about the existing technologies and their use cases.
[+] [-] carbon8|14 years ago|reply
Web applications don't need to have heavily designed UI elements. The kind of designer that's useful for a web application is one who has a deep understanding of the unique constraints and conventions of web application design, not someone who is a whiz is Illustrator or screen printing.
[+] [-] folletto|14 years ago|reply
And even if as I was saying learning to code is a way to create these skills, like designing things is for developers, another way is just listening to the developers/designers in your team. It works very well and it's way more efficient for a lot of different people. :)
Teamwork, and trust.
[+] [-] gavanwoolery|14 years ago|reply
But it goes much farther than that.
Someone (on the internet) once said "programming is the new literacy."
I am both an artist and a programer. I am not very good at either, but I find having a knowledge of both is extremely empowering. I DO NOT believe that you are born an artist or programmer. Sure, you might be born with a slightly better brain than the next person, but anyone with an IQ above 70 can learn to program and/or draw. Learning both is not time wasted, but time invested. Being a good programmer can actually save you time as a designer.
[+] [-] folletto|14 years ago|reply
[+] [-] talmand|14 years ago|reply
Yes, anyone with an IQ above 70 can learn just about anything. Doesn't mean they will be good enough at it for a career. You make sound as if those abilities are not challenging or difficult in any way and anybody can do it. If that's what you are saying then I have to seriously disagree.
Good point about being a good programmer can save you time as a designer, but it can work the other way as well.
[+] [-] rickmb|14 years ago|reply
But there are people that have a vested interest in playing designers and developers against each other.
I've seen this happen time and time again, both via internal management and external clients: feeding designers and developers separately different bits of information (but never the whole picture), letting them make commitments based on that information and only then bringing the two together. The end result is that in order to make good on their separate commitments, designers and developers are left with very little room to compromise, which undermines the cooperation. The goal of this little divide-and-conquer game is to pressure them to come up with a result they otherwise would not have committed to given the time and budget constraints.
There's a reason why designers and developers are often very deliberately hired or managed separately for the same project. There are plenty of people who believe having designers and developers work together too closely is not in their interests.
[+] [-] duopixel|14 years ago|reply
I also think most people are thinking from the perspective of the scrappy start-up, where you must be multi-talented in order to cover various roles. In large organizations there's designers that only produce wireframes, then another designer comes along and produces the final visual output, and finally another guy comes and codes it. Not that it's the right way to do it, it's just that the expectations are being set too high.
Instead of putting down web designers who can't code, appreciate web designers who do it. This comes from a web designer who can code.
[+] [-] Rusky|14 years ago|reply
Someone who comes up with a good design that can't or won't be implemented may as well have not designed it in the first place- but if they understand the constraints on their design they can come up with something optimal that can actually exist.
[+] [-] wccrawford|14 years ago|reply
At my last job, I kept trying to get them to hire a designer. When I left, there were like 15+ developers and no designers. A couple of them thought they had designer skills, but they didn't really. They ended up outsourcing their design, and of course, a lot of back-and-forth was needed.
I absolutely think that designers and developers need to work closely together.
I also think it's -possible- to have someone who is great at both. But you're going to pay them a lot more. Probably more than having 2 specialists. They are going to be amazing at what they do. You certainly won't get twice the work from them that you get from 2 specialists.
[+] [-] enobrev|14 years ago|reply
Imagine hiring a painter to do oil on canvas and they handed you a picture of a painting, or a sketch of what the finished painting should look like. You hired them for oil on canvas - not something that looks like oil on canvas.
When hiring a designer for a web project, I expect to receive html files that can be opened in a browser. In the very few cases where the designer didn't know HTML/CSS, I hired a designer who did to finish the job - because the inherent decisions with modeling a website in HTML/CSS are design-minded decisions.
As such, I suppose as a designer you don't HAVE to know HTML/CSS, but then I can't think of a single reason to hire you for a web project. Print, maybe - provided they understand the needs and limitations of printing and can provide files in a format the printer can use. Otherwise, I'm just going to have to hire a more talented designer to finish the job, which will leave me to wonder - why did I ever hire that first designer?
[+] [-] krmmalik|14 years ago|reply
This whole pigeon-holing exercise is just a complete farce. Far better to know a little about everything than everything about a little.
Its really not as a big a deal as people are making out.
[+] [-] folletto|14 years ago|reply
[+] [-] twidlit|14 years ago|reply
[+] [-] talmand|14 years ago|reply
Creating HTML markup and CSS is debatable of whether to call it coding or not. But every web designer I've ever interviewed I expected them to write their own HTML markup and at least be of average skill with CSS. Ability with Javascript was a bonus but not required.
I have a design degree and I learned HTML in class as part of my minor. This was before CSS was common so it was all font tags and tables. They used FrontPage for this but I refused and stuck with Notepad in back of the class.
I, as a web designer, create my design, write the HTML markup, write the CSS and code the javascript. In some cases I tweak the back-end code to suit my needs if it's light. Heavy-lifting on the back-end is done by a programmer.
Truthfully, I'm probably more of a front-end developer these days though.
I am not a print designer therefore I would have a bit of a learning curve to re-acquaint myself with the medium which I learn in school. But it would be expected of me to learn it. Therefore, I don't feel it is wrong to expect a web designer to learn their medium as well.
But hey, everybody should pick what works for them. Some companies don't want designers involved in markup, that's fine. Some companies do, that's just as good.
[+] [-] dpark|14 years ago|reply
> 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? Do a surgeon need to know how to build a peacemaker? Of course not.
Yes, architects take some structural engineering classes. They aren't engineers, but they certainly have an overlapping knowledge base. If all they could do is draw fancy buildings, then they would not be architects, but artists. Yes, car designers should know how to build an engine, not to the level of an engine designer/engineer, but to the point that they truly understand how the engine works, and not just what it does. Yes, a director needs to know how to act. They might not be the best actor, but they should know the craft, or they can't get good performances out of their actors. Yes, a surgeon who installs pacemakers should understand how they work. Do you want some guy attaching electrodes to your heart when he doesn't really understand how they work?
Good architects understand engineering. Good car designers understand engines. Good directors understand acting. Good heart surgeons understand pacemakers. And yes, good designers understand coding. When something is so closely tied to your effectiveness, you should should understand it, and that means you should understand the how as well as the what. Otherwise you will not be good at your core competencies, because you have too many gaping holes in your knowledge.
Relying on teamwork to fill the gaps in your knowledge is crap, too. If you don't have a shared vocabulary and a basic understanding of coding, how are you going to work with developers? You're going to hand them a pretty picture and tell them to implement it, and they're going to dismiss you as incompetent, because you are.
> There’s still a good point in suggesting that designers should code
This is really lame. Don't write a dozen paragraphs claiming that it's "bullshit" to say that designers should learn to code and then end by stating that it's a good idea for designers to learn to code. That makes it obvious that you're just a trolling ass. If you believe in the stance you're taking, then stick to it. Otherwise don't rant about something you don't even believe.
[+] [-] ssharp|14 years ago|reply
There is a difference between knowing how a web page functions (from a UX perspective) and knowing how the web page is built with HTML/CSS. The front-end of HTML is ubiquitous. People know how web pages work because they use web pages every day.
[+] [-] kreek|14 years ago|reply
Yes some people are more creative, but who said being a good programmer had nothing to do with creativity? Along the same lines design is not art. I've seen many talented artists who were average designers because they couldn't, or wouldn't, blend in some structure to their work.
I started out as a book designer, then web hit and I became web designer. Although I admit the early days of table based layout made me want to run back to QuarkExpress. Flash arrived on the scene and sites like the Remedy Project inspired me to learn to code. Long story short, I now know OOP inside out and, thanks to hacker news, have dived into in functional programming.
I spend very little time designing anymore. I'm still miles ahead of my fellow developers, and I tend to be more creative in my problem solving. That said I still run to them (or stackoverflow) when a hardcore programming problem pops up.
Becoming an expert at anything takes time, if you're a Jack of all Trades one of those trades will suffer. I've chosen programming because I like building things, plus the pay's not bad. I'm still 'designing' it just happens to be with code.
[+] [-] sp4rki|14 years ago|reply
A designer does not need to know how to do AJAX, jQuery animation, MVC, Ruby (or Python, or C#, or Java...), an SQL dialect, Linq queries, how to configure nginx to serve your statics, and a whole plethora of things that are important when creating a product for the web. A bunch of different people and skill sets are needed for all of those, and no one person can wear all hats. That being said, a designer that designs for the web needs to know the medium on which they're creating their artwork on. I do oil painting, and I know I need to know how to frame my canvas with a stretcher or strainer. I know that I need to prepare my canvas with animal glue, chalk, and white lead paint. I need to know my brushes and their properties also, wether they're made hair from a horse, camel, squirrel, sable, etc... I need to know a myriad of different things that are NOT actually painting. I'm also an avid strength training aficionado, for which I've learned more about the human physiology and the mechanics of lifting weights and their effect on your muscles and nervous system than I care to remember. I need to know a myriad of things that are NOT how to lift weights correctly. If I'm a web designer, and I make pretty pictures for the web, I need to know my medium. I need to know how to code my own markup and I need to know how to make my own CSS. Only then will I know the limitations and the mechanics of how a "webpage" works. Hell, creating a good creative design is a lot harder than doing the markup and CSS to be delivered to a front end developer who will probably end up changing a lot of it anyways.
The point of web designers knowing how to do their html and css, is not to remove another person from the conveyor belt of web products. The point of designers knowing how to do so, is to make sure you've got a design that works beautifully and that goes hand in hand with all the standards and best practices that the project requires. If I'm going to hire a web designer that doesn't know how to do his own html and css, I immediately think that he's not really a WEB designer and that he doesn't really care to be the best he can be as a WEB designer. Regardless of his actual skill as a designer, and of course, I won't hire him. If I get a designer that doesn't know how to do so, but wants to learn... I'll probably hire him because of his attitude and aptitude for learning. As long as he's actually good as a designer of course.
I'll just end this already too long post with one 'though': Valve (as per the latest articles going around the web) hires mostly multi skilled people, as opposed to people that are one trick ponies. The developers to my sides (no I don't work at Valve) are both completely multifaceted people with a myriad of skill sets not directly related to making software, but that we use almost every day. I consider them some of the best I've ever met. I've done system admin in linux, bsd, and windows, and I'm pretty knowledgeable in all three. I've developed software for the past 15 years. I've also been designing for the last 10. I'm pretty decent (and I've studied and practiced my ass of to get to that point) in all those fields, but you can't be bothered to learn HTML and CSS so you can make YOUR web designs better? Give me a freaking break.
[+] [-] thomasgerbe|14 years ago|reply
Learning how to code does enhance work but it doesn't mean that you'll necessarily be a better designer than someone who doesn't know how to code but has a pretty firm grasp of what the web can do based on their experience using the medium.
I've worked with top tier designers in NYC who have probably never touched a line of code. And personally, I'd rather higher a highly talented designer and teach them the ropes (if they even need it) than a good designer/developer. Because quite frankly, it is extremely difficult to find individuals who are killer at both design and development. That's why most agencies have a pretty rigid division of labor.
[+] [-] tel|14 years ago|reply
The argument stated is that intelligence is multidimensional (stated as fact with caricature testimony) and therefore there exists a job aligned with one of those dimensions. Arguing that designers should code states that today optimal design is done by someone who has skill on multiple axes.
So the article really just dodges the issue by defining situations alternative to arguments made by Frank Chimero[1] makes and then pretending like that's a rebuttal.
He, of course, steps away from this ridiculous position toward the end by agreeing that designers could learn to code. Even suggesting it might not be a terrible idea, but this again misses the brunt of the pro argument:
Designers with strong understanding of implementation are better than those without.
I don't really want to argue that point in this comment—I'm not qualified. I just wanted to state that he never actually says anything concerning it.
[1]http://blog.frankchimero.com/post/9594863189
[+] [-] folletto|14 years ago|reply
What it tries to clarify - and well, it might have failed, of course - is that we should stop to simplify the problem as "designers should code", because not all designers should. But yes, all designers could, and if you feel that way, or you are prepared for that, or if you want that, you can learn to code. Exactly like a developer can learn how to design.
In either case, exactly like it's wrong to say "developers should design" but it's correct to argue that a developer with design knowledge will be better at its job, it's equally wrong to say that "designers should code", but it's correct to argue that a web designer with developer knowledge will be better at its job. ;)
[+] [-] twfarland|14 years ago|reply
The activities of designing and of coding overlap extensively. Both require a clarity of communication, a deep consideration of the purpose of the thing to be designed/built, and a sense of taste.
If in the habit of extracting general principles from concrete examples, coders can become better coders by learning aspects of design and vice versa.
Many of the concepts in a 'coder' book like 'How to design programs,' for example, are readily applicable to UX design, e.g: refactoring, wishful thinking, generalisation of purpose, and the control of complexity by use of 'black boxes.'
Likewise, a 'designer' book like 'The design of everyday things' is full of stuff that applies usefully to the activity of coding, e.g: the importance of meaningful feedback, and of ensuring a clear mapping between expected actions and their outcomes.
These correlations aren't everywhere to be found, though. But I've always found interdisciplinary people to have the freshest approaches.
[+] [-] mtogo|14 years ago|reply
But it turns out that this blogger doesn't expect designers to actually make their designs into something tangible. It seems positively ludicrous to me that any designer that is designing for the web would think that not knowing HTML/CSS, and therefore putting out an unfinished product is acceptable. It's almost insulting-- learning HTML and CSS takes a month at most, so why won't this designer learn it?
Building a design for a web page without actually writing the HTML+CSS for it is being a print designer and expecting the client to finish the job.
[+] [-] folletto|14 years ago|reply
Other designers, are still doing great, without knowing how to code. ;)
[+] [-] athst|14 years ago|reply
Designers and developers should of course have good understanding and empathy for what the other person does. But at the same time, they shouldn't have such a complete understanding that it negatively impacts their primary role.
For example, if you're a designer, you don't want to fall into the trap of only incorporating things into your design that you already know how to code. You might leave a lot of innovative stuff out that would make the product better. If you're a developer, you don't always want to be bound by the existing design constraints either. It's a back and forth discussion between the two halves.
[+] [-] carbon8|14 years ago|reply
Web application design (which is distinct from brochure web design or print design) has unique conventions and constraints, and web application designers absolutely must have a deep understanding of both. There are header nav bars. The branding with the link to the root path is in the upper left, user info/settings are in the upper right. HTML and CSS are structured as boxes within boxes. Main content areas contain the primary content, sidebars contain secondary content. Components are modular. Browsers have significant variation in how they render things, and viewport sizes vary dramatically. We have views and forms, GETs and POSTs. Resources are nested, with one URL per resource. Browsers have different levels of CSS support, leading to a focus on progressive enhancement and graceful degradation.
Every single time I've ever worked on a web application with a designer who didn't know HTML/CSS or a web designer who only does brochure sites, they stumble on these issues, and we end up with inflexible designs that have usability issues and are a pain or impossible to implement. Designers who don't know HTML/CSS create drag in a startup environment. It forces others to spend time and energy explaining how the web works and what the conventions are.