
Should a Programmer Learn to Design? - ux-app
https://medium.com/@ux_app/should-a-programmer-learn-to-design-5101e1bd1025#.gxfrm8ftg?v=2
======
robert_tweed
IMO, a book every developer should read is "The Non-Designers Design Book" by
Robin Williams (no, not _that_ Robin Williams).

It's short and to the point, so it won't take long to read, yet it covers all
the basics of design to just the right level for the average developer.

"Design for Hackers" by David Kadavy is also quite popular, but IMO it just
takes longer to say the same things.

Amazon links for the lazy:

[https://www.amazon.co.uk/Non-Designers-Design-Book-Robin-
Wil...](https://www.amazon.co.uk/Non-Designers-Design-Book-Robin-
Williams/dp/0321534042)

[https://www.amazon.com/Non-Designers-Design-
Book-4th/dp/0133...](https://www.amazon.com/Non-Designers-Design-
Book-4th/dp/0133966151)

Edit: Since several of the latest comments seem to be saying similar things
about programmers not "getting" design, I think one thing that may come as a
bit of a revelation is that design starts with a hierarchy of information and
there are certain rules for how that information should be presented. There is
an artistic aspect to _compelling_ design, but when it comes to things like
wireframes and UX modelling, your average programmer probably has more design
skills than they realise.

~~~
brightball
I'd tend to agree with this assessment. I've never been a designer, from
scratch...but once I have a design to work within I don't have any issues with
making UI/UX decisions that keep things smooth for people.

This is probably one of the reasons that Twitter Bootstrap has done so well
for people like me.

You ask me to worry about visual recognition, spacing, minimizing number of
steps, 80% interfaces, etc and I'll have no issues.

You ask me to come up with a color scheme, tones, gradients, proper fonts,
line spacing, negative space, etc and I'll curl up in the fetal position.

------
greenspot
Good question, I think _everybody_ should learn to design. Because everybody
is _communicating_.

It's not about being a master in PS, Sketch or Illustrator. It's more about
understanding basic principles of design, colors and composition.

With everybody I mean literally everybody. The CFO who makes his spreadsheet
better, properly arranged, using sufficient white space, complementary colors,
etc. The CEO who can do proper presentations himself without calling a
freelance designer. The CTO who can quickly sketch a neat flow diagram for his
backend code.

You don't have to be Jony Ive but some design skills help everyone in
communicating better.

~~~
erelde
And understand (basic) use cases for fonts, font weights, colors, arrows, etc.

~~~
azemetre
Do you know of any good resources to learn about use cases for fonts and
typography in general?

------
matt4077
No. But they should start to appreciate it, and the people who create it, more
than they do.

All too often, it appears that programmers see design as a lipstick-on-a-pig
kind of process, i. e. a replaceable skin that possibly improves the color
scheme.

My favorite example is the guy who bragged that he saved xxx kb of page weight
by replacing the fonts on nodejs.com (or rubygems? one of these repositories)
with Arial, because "all sans-serif fonts are the same anyway".

I'd also point to the frequent complaints about medium.com. It doesn't even
matter if that design is any good – it clearly succeeds at what it's supposed
to do.

The most obvious path to a better appreciation of the meaning and methods of
good design is probably Edward Tufte's books[0], which is one of the
"crossover" works that appeal to both designers and the more scientific-minded
crowd.

[0] [https://www.amazon.com/Visual-Display-Quantitative-
Informati...](https://www.amazon.com/Visual-Display-Quantitative-
Information/dp/1930824130/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=telomere01-20&ie=UTF8)

------
sjcrank
I believe the answer to this question is clearly a "yes", if you are building
UIs (web or otherwise).

As a 10+ year UI developer I have found that my work is often judged by its
design as much as the quality of the code, and that I will not be successful
unless good design is a part of the work, and I cannot always depend on having
a solid dedicated designer contributing to the project.

~~~
nailer
Quality of code _is_ design [1]. Eg, copy pasting is not only a maintenance
nightmare for other users of the code but also breaks Exupery's perfection
principle.

[1] Not implying that interaction and appearance aren't also design, but
rather that code and SCSS rules are designed too.

~~~
collyw
Yes, but I think what he is getting at is that no one other than devs gives a
shit about code quality. Users do like a nice pretty looking interface.

~~~
nailer
Users also care if something works, and code quality is part of that - eg,
imagine what hits users when the same bug is copy pasted into 100 slight
variations of some code rather than a single instance.

------
z5h
I think a problem is lack of respect for the fact that a huge part of design
is _WORK_. It takes time and effort. Not innate talent or magic (though those
help).

A developer thinks "I need another 5 values from a user, so I'll put another 5
text boxes on end of the form. Done! Wait, this looks like shit, I must not be
a good designer."

No! It's shit because you didn't do any design _work_! It's not that you
didn't finish a bad design, it's that you haven't even started any design.

------
hacker_9
Once I learned some basic colour theory and applied it my work, customers
found my products a lot more appealing. I now realise the right colour scheme
can control minds - something I wish I'd realized years ago.

------
bmh100
I have never found comparison to peers' skill levels to be an accurate judge
of my own capabilities. If I did, I never would have become a programmer. I
started my first job programming without any computer science education. The
average developer at the company had been programming for years and likely had
formal education in the topic. My education was business, choosing
quantitative classes when I could. My code was awful, my knowledge of data
structures and algorithms non-existent, and my skill far below that of my
peers. Yet, persistence and a determination to become proficient have made me
into a "talented" programmer.

To anyone learning to acquire a new skill, especially one that is very
different from the ones you already know, don't get discouraged. The beginning
is hard and long. The breadth of the field will feel overwhelming, until you
learn the lay of the land. Don't compare yourself against established
individuals. Don't ask "why is it so easy for him/her and so hard for me?"
Just focus on improvement, only on improvement. Skills are learned, not
something innate like "height". That means you can learn them if you are
willing to pay the price in humility, effort, and time.

------
adyus
Design is empathy. That is, trying to answer the question "How can I make this
easier to use or understand for someone else?"

So the answer is yes, we could all use more empathy.

------
erroneousfunk
While I agree that design is _important_ , and perhaps a good thing to learn
about, as a well-rounded human being, the author left me unconvinced of his
thesis: "programmers should learn design." It's important? So is physics.
Computers don't work without physics. It's loads of fun? So is physics. You'll
get better at it the more you try? So is... basically anything. You'll
recognize and appreciate the work of talented designers? And by learning
physics, I'll recognize and appreciate the work of talented physicists!

Those same arguments could be used to persuade anyone to learn anything.

For my undergrad degree in engineering (and, to a lesser extent, in grad
school) we had to learn to work the user experience process -- interviewing
users, figuring out what drives them, how they interact with products, what
their needs are, how to run product tests with users, etc. Why? Because we
might actually have to do it some day. Not so much with visual design. Visual
design courses were offered, but not compulsory.

While learning visual design (or UX, or product design, or whatever) might
make you more useful in the workplace, and able to wear more hats, I'm still
not convinced it will make you a better _programmer_.

~~~
JoeAltmaier
My sister the Nurse thinks we should all learn basic biology, because, well,
she's a nurse.

~~~
namaemuta
I learned basic biology and physics when I was a student, didn't you?

~~~
JoeAltmaier
Had to choose: biology or electronics. Guess which I learned.

------
abhinavsharma
I'm an engineer turned designer turned product manager (and sometimes
backwards). Keeping yourself open to learning new skills is a growth
opportunity that's silly to shut down in general. So the real question is
given your life goals, would the set of skills that generally constitute
design be valuable ones learn. Specifically, here's some common goals for
programmers and how design helps them in it:

\- Entrepreneurship: Design is a lot of understanding human psychology. This
helps you communicate in talking, documents, better pitch decks, recruiting
effectively

\- Senior IC/Techical Leader: You can write more clearly, make great
presentations that effectively train others, get buy-in more efficiently from
management, be blocked less often by designers.

\- Engineering Management: So much people work here. Empathizing, creating
effective feedback loops with your reports and peers (design teaches you a ton
about the value of feedback loops and how to create them), presentations,
effective writing.

\- Individual Hyperproductive Programming: You learn to understand yourself as
a user better. I found that after becoming a designer, I optimized my editor
to create the best possible user experience for me, wrote better tests, etc.
Most good programmers implicitly do this, but having the vocabulary for how to
think of yourself as a user, collect feedback, understand the visual elements
that drive your interaction with your tools is massively helpful.

\- Product Management: Docs, slides and the usual. Importantly, leading teams
of designers and engineers is much easier if you understand their craft well.

The code skills training as a designer made me much better at was feedback
loops, understanding human psychology, visual and auditory cues to trigger
certain reactions, hierarchy and organization, and many more. It's totally
possible you learn these from different experiences in life, but there's lots
of value in these skills for most goals programmers have.

------
whytaka
As someone with a decade+ long background in digital/product design and a 1
year fresh stint in full stack development, the answer from me is a resounding
yes.

I can create apps that have perfect cohesion between design and logic without
specs. I can skip the PSD entirely and develop my layouts and styles
iteratively as I code. Whenever there are gaps in design decisions or
stylesheet errors, I can smooth them out as I'm building the feature for the
first time.

Between the UX and the database models, I know how it should work and how it
must work.

------
coldcode
Before the web programmers often did designer because the whole idea of
designers wasn't really so clear cut. Back in the 80's I never met anyone who
just designed UI, they were also the developers of the UI as well (I did this
for 10 years). Once the web appeared and UIs became more important to
marketing, designers with art backgrounds took over. Eventually other
specialties appeared to consider the UX, usability etc, which was not art. But
in the beginning its was mostly programmers all the way down.

------
tschellenbach
In the context of startups you'll typically want the team to cover
programming, business and design. I believe mastering 2 out of those 3 makes
you much more valuable in the early stages of a company. I'm not sure why, but
typically you'll see founders combine programming & business or design &
business. Design & programming is a very rare combination.

------
AbrahamParangi
In the limit, design is a complete definition of how a thing (product,
service, picture, story) should be- with due consideration given to all
concerns (technical, practical, emotional, environmental, supernatural,
whatever).

If you're solving problems, you're already designing solutions. Now at the
moment, (for the programmers among us) when you're solving a problem you may
only be considering some subset of the relevant concerns.

Therefore, the very specific question of should you learn _visual design_ can
be reduced to: do you want your solutions to consider a larger subset of
relevant concerns and be a better approximation of the best possible solution
(product, pitch, voodoo doll, etc).

------
dbg31415
No, but they also shouldn't be expected to produce work that looks well
designed. It should be a common understanding that it takes multiple
disciplines coming together to build a good product.

------
SippinLean
I have a degree in Graphic Design but a career in Front-End Web Development,
I'm constantly asked to make design decisions (by people that may not even
know my background). I feel I'm also able to see the bigger picture when I'm
approaching a development problem, and I try to push modular development by
asking the designers for modular designs.

All in all it's been incredibly useful to, at the very least, be able to speak
design language when interfacing with the team.

------
cdevs
I'm a backend developer that studies ux because I do have to jump into the
front end sometimes and take pride when something flows better because I know
how frustrating bad sites can be. I also am a blender hobbyists with horrible
3D skills and I don't know why I like following along tutorials as at the end
of the day 3D design isn't useful to my current job but I enjoy it.

------
jordache
WHat is the programmer coding? if it's backend algorithm heavy stuff, visual
design doesn't really translate to that type of work. If it's anything having
to do with front-end, the programmer can really compliment his/her programming
skills with some visual design acumen

------
intrasight
Stupid question IMHO. Programming is always design.

~~~
ux-app
I should have qualified it as _visual_ design

~~~
randomdata
Programming is also visual design. The first thing that stands out when
looking at a block of code is the contrasting outline made between the
characters and the spacing, and first impressions will be made based on the
design merit of that appearance.

This is quite intuitive if you take it to the logical extreme. If someone
wrote a program that jammed all of the characters together into one long
continuous block of text, you would immediately get negative feelings about
the work, even without reading a single character.

The same holds true even when some care went into the visual design of the
code. A codebase that does not present a good visual design will feel
difficult to work on, even if it is well written from a technical standpoint.

------
JoeAltmaier
Often I see the two skill sets as uncorrelated. That is, rare in one person. I
know that _I_ should never be trusted to design.

~~~
wildpeaks
I'm not sure they're uncorrelated, visual design is also about logic and
consequences of structure.

In essence, it should be deduced from the end result, for example "the user
wants to do X, so what does he need to do it, and what's the most efficient
way to present it", similar to how you'd think about designing an API that
other developers will use.

~~~
loco5niner
They are uncorrelated for me. I can easily grasp the logic and structure of
html and css syntax, but the _spatial_ reasoning is what I struggle with.

------
ichbinedgar
What books (or video tutorials) do you recommend? Related to this topic of
course.

------
smashu
well... Should a Designer Learn to Program?

~~~
wildpeaks
If not program, getting a better idea of the constraints of the final
application / website would be a start.

For example, learning that web fonts render differently in each browser (so,
even if the desktop font looks great in Photoshop, it might not be readable
enough in the real application), or the concept of fallback fonts, could be an
eye opener for more traditional designers that only deal with static mockups.

