John Maeda: If You Want to Survive in Design, You Better Learn to Code
wired.com
wired.com
I do think "everyone" will need to "know code" (just like we expect everyone to know basic mathematics) -- but I'd much rather work with an expert visual artist, than someone who hides under his desk for fear of "implementation constraints".
Sure, sometimes you'll have to say: rotating UI is one thing we can, and should cut at this time. Other times you'll cut something else. But my main point is that you most of the time do not want to cut ideas early because your designer(s) are too familiar with the status quo.
I work with some designers who have _no idea_ how CSS works. Or they only have the vaguest of ideas. That's an architect who is handing off pretty drawings and the construction foreman is also doing structural engineering checks on the fly.
I don't need a designer who can write code full time, but I wish that all of them were forced to do a course in layout with css. Obviously flexbox is solving a lot of this pain, but I think it would still be beneficial.
Right. My point is that designers (and coders) that push designs that generate the pain - is the reason why now get things like flexbox. If we were all designing to fit within, say absolute positioning, no-one would create, implement and refine flexbox. Browsers wouldn't include it.
This is an extreme oversimplification, but it illustrates the point I was trying to make.
On the subject of CSS - I was a big fan of the idea of CSS-regions - based on simple design ideas from classic desktop publishing packages. But I also see how they were a bad fit for the corner w3c and friends have designed themselves into with CSS. FWIW Håkon Lie did a good job pointing out problems with integrating the idea into the html/css paradigm:
https://alistapart.com/blog/post/css-regions-considered-harm...
I'm not entirely convinced CSS columns are super-good and regions couldn't be made to behave/have a responsive fallback - but I see how laying out text with regions would be yet another different layout model -- and that it would break with the "HTML for semantics, CSS for presentation"-idea that is now being more-or-less thrown out in favour of "JavaScript all the things until it looks like we want".
On a similar note, I just (re)discovered that CSS Shapes are a thing - although (still) not supported in Firefox:
In my previous career in structural engineering drafting (possibly different in other countries), architects that understood that stuff were by no means the majority. I observed plenty of heated arguments between Architects and Engineers over seismic bracing requirements getting in the way of having windows everywhere, and even a few over basic understanding of gravity ie somehow expecting windows around corners being able to hold the roof up.
Of course, the architects that did appreciate this stuff were highly respected by the engineers. I think the divergence stemmed from having two architecture schools in the country - one started off with a Building Science degree that dove-tailed into an Architecture degree, while the other larger school was very 'design' focussed and IM(unfair?)O seemed to churn out glorified interior decorators. Things might be different now though - I've been in tech for nearly 20yrs now.
Stuff that we'd take for granted in terms of designing to expectations becomes a battle.
"This works better" vs "This won't surprise the user".
I like it though since it does break the box sometimes as well.
First, it's an argument for a very select set of design+engineering projects. In almost all real world situations, designing something that is possible to build without 'pushing the boundaries' means a design that might actually get implemented. Not everyone works on the bleeding edge of engineering, nor should they if they want to focus on all the other obstacles to creating a successful product. Most organizations have technical debt and UX debt as it is.
Second, why does understanding the engineering side of the equation mean an inability to come up with boundary-pushing design solutions? If anything it would seem to mean an informed pushing of the boundaries when it's actually necessary for a design. It's like the advice English teachers give out -- learn the rules before you break them.
It's not that code literacy is wrong per se, but the assumption that this literacy has to be applied to whatever the core product is that is being produced is suspect. Though it seems more and more true that knowing how to write computer programs (in whatever form) is transformational to the role it is applied to, the common argument that designers should jump into collaboration with front-end developers misses a much larger opportunity.
Where are all of the code camps teaching designers to compose books with Racket, or beginner level blog posts for building an image processing pipeline in Ruby? There are tons of inefficient processes (in most industries) that would benefit from the person in that position having the ability to solve a problem by writing a script or program.
EDIT: edited for wordiness, spelling
I think what he's saying is that if you're a designer and you don't want to be unemployed then you should learn to code. Whether or not you should actually write code for any given project is a separate question.
The argument for designers learning web programming skills is more explictly made elsewhere, and I am picking up enough hints of the same here.
In the end "you will need to code to do your job" is just not as hot of a statement, because this is broadly true in any industry.
One of the best products in this space is Framer Studio[0].
Framer has quick visual feedback and added GUI around a specialized flavor of CoffeeScript. Creating a UI, prototyping the UX, exploring the motion design aspects and mirroring to device is all done by blending design sensibilities and very basic coding. This has been an incredibly valuable tool for me, personally. Sometimes I kind of view it the same way I view Google Translate... it won't make you fluent in the language but you can communicate ideas in a quick way.
I do not currently see many (if any) design/code tools today that match Framer's accessibility, extensibility, community and quality of output.
I actually know a designer that does his own engineering. He's amazing, but he's one in a million. Kinda reminds me of Brian Eno.
What we need are better ways to collaborate.
Just like I don't expect an building architect to pick up a hammer, I expect them to know enough about the process that they don't create something that can't be built or but can be built but for a few tweaks could be built 10x more efficiently.
Knowing the tools shouldn't elevate anyone to unicorn status. That's just the job.
This sounds sad to me. I would prefer a designer who would collaborate with engineering (who best know the constraints) rather than one who would guess what engineering can do (and therefore temper their designs). I guess it depends on the product you are working on, however. If you have a huge communication firewall between engineering and design (e.g. engineering is being done in India), I guess it is the only practical option that the designers be able to know what engineering can do.
There is a natural communication firewall when a designer knows nothing about code in the form of language and vocabulary.
The product teams, however, would often come back and say "this is too hard", and my job was to code something up in a few hours and say "no its not".
Designers embedded in engineering teams can also work out, but lose the peering benefits of working with other designers in a studio setting.
In my experience most of my work has cross-over between the two with a continuum of how much design skill is needed. For example in previous jobs we have had many cross-discipline roles like Technical Artists, Technical Designers, Gameplay Engineers and Rendering Engineers. Various art positions like Lighting Artists will even get in on the act writing shaders alongside engineers. Level Designers will very often be required to write scripts. In general the closer you are to the squishy human stuff the more design skill and knowledge its useful to have and visa versa. In my current role I'm engaged in experience design and engineering.
More generally it feels like there is a lot of gate-keeping between design and engineering. Neither is too keen on the other muscling in on their turf. I think this notion of the designer-engineer being a unicorn is mostly bunk promulgated to this end.
Designers having a working knowledge of programming and programmers having a working knowledge of design really does help collaboration and project resilience. Specialization will remain a thing but it should be looked at in shades of grey rather than black and white.
No offense to you or your friend, but you may be overstating the rarity of that type of person. The visual effects industry, for example, has an abundant supply of people that are simultaneously highly artistic and yet have deep technical knowledge.
While it's very, very useful to have feet in both disciplines, I try to segregate the two activities as much as possible. A coding mindset is not really good for design and visa versa. If I'm worrying about implementation that can hamper coming up with good visual solutions. If I'm worrying about what it looks like I may be missing something in the code.
These days I try and focus on one or the other for a project. If I have to be involved in both, I try to find someone to check my work. Each discipline is hard enough as it is.
Having said all that, it _is_ nice to be able to talk to both coders and designers and to know when they are bullshitting me about something. Being able to code a little and design a little would probably be a very good characteristic for a manager. At least for certain size projects.
If we're talking about certain mediums that require complex code then I really don't know if a designer can gain a lot from that experience over simply talking with an experienced developer to gain a high level understanding of what's possible.
I'm mostly a designer and I did Paul Hegarty's Developing iOS 9 Apps with Swift course out of curiosity. I've also done courses on Ruby and Python. And I worked on Rails and Coffeescript for a number of years. While I appreciate the experiences, I don't consider myself a better designer from it over say, those who spent that time getting stronger at illustration or user testing or color theory. The person who spends 40 hours a week doing Swift/Ruby/Python is clearly going to be much more proficient than some asshat like myself who dabbles in it once in a while. Sure, it's helpful in a situation where you and a friend want to experiment with testing a startup idea and you divide the roles, but for most situations the clear division of labor is much more efficient.
However, I don't think there's any reason why designers, specifically those who produce work for the web, shouldn't learn basic HTML/CSS or if a bit more ambitious, React and Javascript. All those languages are fairly approachable and can help with prototyping and experimentation.
There's also the problem of knowing what can be done in HTML/CSS/JS easily and what cannot. If the designer just made the page without the variable parts it would solve this issue. You don't need to know a hige amount about coding, just enough to make your page look the way you want, and to know when it can or cannot be done.
Of course everything that's at the interface between two roles can be argued to be on one side or the other.
There are quite a few challenges in this approach. We have to work with a static snapshot of the design and infer things like whether a container is auto-width (fit to content), a percentage of the parent, or fixed width container. Unifying multiple states of a component is another problem. Designers draw the same component multiple times to show different states (disabled, focussed, active etc.).
The way we're approaching this is to identify the extra information required to take a static design into a responsive representation and ask the user to annotate it before generating the code.
It's a designer-oriented front-end tool. Three big features are responsive mobile device previews, easy creation of components, and data-driven design (e.g. filling out lists based on real data from a server or mockup data sheet). You can design in place, and there's also a Sketch plugin for easy import.
The tool outputs very clean React+Webpack projects using Facebook's "create-react-app" toolchain, so the code is actually useful. Going the other way, developers can control and augment React Studio's output using plugins -- thanks to these hooks, it's actually more like a metaprogramming utility, a "design compiler", rather than just a WYSIWYG prototyping tool.
https://www.microsoft.com/en-us/research/publication/its-ali...
Coding and designing are 2 very different disciplines. I do forsee more tools like spectra to come out that help merge design and coding - but this doesn't change that fact that designers have to think about sooooo many other things besides the actual implementation of their design.
Designers think about all sorts of things that aren't on programmers brains. I haven't studied the history of design and UX experience and theory. I also don't want to sit around in adobe designing mock-ups all day, that's why I am a programmer.
I think coding has made me a better designer. It's honed my priorities and made me realize a lot of my design aims in the past were motivated by ego, sometimes at the expense of getting a product out there quickly and getting real user feedback. Now in designing software UIs, because of the internet, I think taking the time to design and spec out premium UIs, with all the whiz-bangs, comes with immense risk, especially for startups that don't have the room to fail. We can iterate at a pace other industries cannot. But that also means our direct competitors can as well and they are moving quickly to meet their users' direct needs.
I have also come to appreciate simpler UIs for their reliability, accessibility, and responsiveness. In my opinion, a lot of the design problems of screen-based UIs are solved. Browsing design-oriented forums nowadays, I see a trend I appreciate (back to simplicity) and a trend I think is misguided ('innovation' that strokes designer egos).
The latter I don't think is going away. There's no doubt that the world is moved by art, brand, and image. The companies that wield those forces successfully, and not at the expense of functionality, will get the attention they want.
The former, however, I think, is an argument for standardization, which I think means the need for fewer designers. The alarms were ringing a few years ago for me and I jumped ship. I'm glad I did and quite frankly, I now enjoy backend work much more than I do design; but it is very satisfying to take a project from start to finish. Something I missed out on when I was 'just' a designer.
I would much rather work with a fellow specialist at the top of their field, helping them to realize their vision, instead of battling over implementation details with a generalist. Anyone who claims to be equally good at both is self deluded.
Five years ago I would have said: "There is enough room in web development for designers who don't know code at all, people who only know HTML/CSS, and people who can use JavaScript to find work" but I'm not sure that's as true today as it was then. When I look at the market today, what I see is that if you're doing anything in browser, you need to be familiar with JavaScript.
JavaScript is the language of the browser. It was designed to work in the browser, and it does some pretty amazing things there. I think it will be increasingly hard for anybody who doesn't know JavaScript to keep finding work in web design & development, even if previously you only used Photoshop, or previously you only did HTML/CSS. It's not going to be enough in the market of today and tomorrow.
Personally I've been taking this advice to heart. 3 years ago I couldn't really do much with JavaScript on my own, but I've been focusing a lot of energy on trying to learn enough JavaScript to stay employed. Workers who don't pick up JavaScript soon may find their work options disappearing in the near future.
On the plus side, JavaScript is an easy language to learn, even if it's your first real programming language, and because you can write and test it in any browser, any time you have your smartphone, a tablet, a computer - basically anything with a web browser, you can be coding and testing JavaScript.
Source on that? What was computationally too expensive? Casual Googling indicates that the intention behind square was an aesthetic one - setting the pictures apart, and tapping into the vintage instant camera vibe.
E.g.:
"First, it’s worth reflecting on why Instagram photos were square in the first place. Instagram CEO Kevin Systrom has said Instagram wanted to be different, to find a way to do photos in a way that stood out. And the square format looks good; it’s consistent and visually appealing"
https://unionmetrics.com/blog/2015/08/instagram-update-squar...
In fact, Wired's own article from a few years back talks about design decisions behind the square, and makes no mention of any thing being "computationally expensive":
"There are logistical reasons for shoehorning photos into the shape: Squares look great in a grid and feed format. They provide a consistent visual experience for both photos and the little interface details like username, likes and comments. It relieves us of having to make yet another decision on yet another app, and that lightening of the cognitive load is not insignificant."
https://www.wired.com/2015/08/instagram-says-goodbye-square-...
I'm currently in a start-up though and it is very useful: I forbid the programmers to write any CSS or Android Layouting and than really quickly do the design. Probably a lot quicker than going back and forth for every tiny change or having rigid pixel perfect designs (I only occasionaly make balsamiq mockups).
https://www.fastcodesign.com/3068938/forget-coding-writing-i...
I like working on beautifully-designed (by others) projects. I can code and write, and love doing both. Not feeling an urgent need to start designing.
If he wanted to move to "tech-friendly designer," what should he pick up? Sketch? React?