Ask HN: How to learn design as a hacker?
I'm a full stack web dev and hacker by heart. However, all my front-end designs just can't compete with anything delivered by a (semi-)professional designer. Are there any CodeAcademy-like resources that provide actionable advice on how to do better UI design? I'm getting tired of hiring freelancers.
I tried hackdesign.org, but figured it was way too high-level and since it's only a blob of links to blog-posts it didn't create any continious learning experience for me. I'm looking for resources that help me with practical problems like whitespace/margins, color schemes, font-sizes etc...
51 comments
[ 26.5 ms ] story [ 304 ms ] threadFWIW, I think this is the way forward. If you're a front-end programmer and you want to be relevant in five years time you better be a good designer too.
There's no such thing as "design for Windows" and "design for Java" and "design for Linux" or whatever; there's just design. Pick your tools of choice to learn. :-)
For example: there are 5 typography related 'modules' in the top level list.
In module 1. 'Dive into Typography', there are 6 different resources within.
From the one of those 6 resources, here are a list of materials mentioned:
* book - Inside Paragraphs: Typographic Fundamentals [0]
* book - The Elements of Typographic Style [1]
* book - Stop Stealing Sheep & Find Out How Type Works [2]
* post - Unicode Beginners Introduction for Dummies Made Simple [3]
I've found this to be the norm for most posts, they may not cover absolutely everything about a single topic, but they will most definitely point you to somewhere that will.
[0] - http://insideparagraphs.com/
[1] - http://www.amazon.com/Elements-Typographic-Style-Robert-Brin...
[2] - http://www.amazon.com/Stop-Stealing-Sheep-Works-Edition/dp/0...
[3] - http://pythonconquerstheuniverse.wordpress.com/2010/05/30/un...
If you want a single book that covers all major topics with theories and plenty of examples, give this one a go.
http://www.amazon.com/gp/product/1592532616/
This is NOT a book on web design. This is book on graphic design and, a good one at that. It covers types, images, graphics, layouts, form.
Simply copying designs in this book will put you ahead of many 'professional' web designers. It's because many web designers do not fully understand what makes a design good (or bad).
Even though my work is all digital, personally I find most of the talented designers are still found in traditional print design world.
You can pick up a used copy for less than $15 shipped.
The author also produced a free 12 week email course: http://designforhackers.com/
I'll just elaborate so OP and everyone else can get an idea of how I approach things when teaching design.
My goal with the book was to "reverse engineer" everything that comes together to make a good design. In my eyes, the factors of design are always the same (purpose, technology, culture), it's just a matter of understanding how they work together.
OP mentions whitespace/margins. I'm such a white space fiend, I did a whole hour-long talk at SXSW entirely about white space. So, definitely my book talks about that. You can get much better at design very quickly if you forget about everything else (fonts, colors, ornamentation) and just concentrate on white space first.
I also do cover color schemes, and how to build them. If you want an understanding of how I approach color check out the article I wrote "Why Monet Never Used Black"[1].
I also write about font sizes & geometry in design. If you want a sampling of those particular thoughts, Lifehacker picked up one of my tips on the font sizes I always use on projects[2].
Of course, there's also my free email course that creature mentioned.
Hope this helps!
1. http://kadavy.net/blog/posts/d4h-color-theory/
2. http://lifehacker.com/stick-to-these-font-sizes-to-simplify-...
Also, read some actual design theory books. Theory is to design what algorithms are to code.
I used to look at those sites that were popular a few years ago that list well designed websites, and take inspiration from one or several of them at a time by combining the elements to create a new design.
It helped that I was working for a company that wanted a new design created to a brief each week as it helped me to get better quite fast.
Reading a lot of design, UI and UX blogs to understand why things worked was crucial to my development too.
https://www.drawar.com/ios/course/design
http://www.bamagazine.com/
COLOR: a good color palette will take any project up a notch http://www.colourlovers.com/ http://www.colormatters.com/color-and-design/basic-color-the...
DESIGN STRUCTURE: much the same way you create Classes that can be extended, you can do some in design. There are Dominate objects in your code that you use to create other object. ----dominant, subdominant, subordinate Design http://www.vanseodesign.com/web-design/dominance/
Also, if you create a dominate visual design feature, repeat that element(color / pattern / shape) else where on the site, to build consistency
Also for Page Layout, rules in Photography can be a great help. Looks that the Rules of 3rds http://en.wikipedia.org/wiki/Rule_of_thirds
The most important part of creating anything is inspiration. Pinterest is great for looking at designs, picking what works for you and what doesn't.
You have to understand that all of your early stuff will look like crap. Much the same way we've all said "Wow, that code I wrote 6 months ago is a pile of junk. I'm surprised it's still working."
Alos, buy a sketch book and put it next to your bed. Draw before you go to sleep. Even if you just doodle.
Advanced Typography is not something I recommend right off the bat, as it can lean towards fine art at times http://www.fromupnorth.com/typography-inspiration-753/
I'm personally interested in just a simple list or article on the basics of modern and aesthetically pleasing design. Something like, "rounded corners are easy on the eyes, use them here, but not here." "Button shadows work in a case like this, but not this." "Your background and foreground colors need to complement each other, here's some pairs to try." I have however never ran across such a list/article.
Disclaimer: I wrote a book on this topic, but because of that, I know resources made by other people too.
---
Sacha Grief’s ebook is good for an in-depth example:
http://sachagreif.com/ebook/
---
Design for Hackers by David Kadavy is also well written. He explores the more traditional way to learn design, with the history of fonts, color theory, etc.
http://designforhackers.com/
---
A different approach might be reading about creativity. My friend Paul Jarvis has some great books about creativity, especially his new one, The Good Creative, if you’re looking to get inspired:
http://pjrvs.com/books/
---
Nathan Barry’s design books are great. He also has a course on Photoshop if you’re looking to learn.
http://nathanbarry.com/books/
http://nathanbarry.com/app-design-handbook/
http://nathanbarry.com/webapps/
---
One of the best books about UI/UX/usability is Don’t Make Me Think:
http://www.amazon.com/Dont-Make-Think-Revisited-Usability/dp...
---
Great place for topic-specific books. Some of these are more advanced and intended for designers. I'd suggest these for after you read up on the basics.
http://www.abookapart.com/
---
My book focuses on design fundamentals instead of advanced theory. It's intended as a starting point for things you can do right now. Actionable, focused on building skill instead of knowledge.
http://bootstrappingdesign.com
---
Email me anytime if you need help. My email address is on the site above.
Edit: formatting
- Good programming uses sensible patterns to make code maintainable and flexible. Good design does this too.
- Insanely great programming is a little insane - it breaks the rules. Insanely great design does too. But you can't shortcut to this step - you have to put in the time.
- For me, I learn the most programming by looking at what other people have written, and modifying it in some way, or applying something to a project of mine. Learning design works the exact same way.
- I would argue against learning anything like color theory, typography or information hierarchy. This is like take 5 CS 101 classes before beginning programming. You might have a better "foundation", but you will probably get burned out before you even start. That stuff can wait. And it will make a lot more sense when you have some corpus of work to set the context for what you are learning (same with programming).
- Don't worry about making anything look like "cool" websites. Honestly most trendy designs are simply terrible to use. Design should make the products more enjoyable to use and easier to use. Anything else is intellectual arrogance.
As with programming, I find doing things like katas is really useful. So grab a pen and paper and start drawing. Sketch like this - http://strongdesignstudios.com/wp-content/uploads/2012/03/is..., boxes for stuff and lines for stuff. don't try to add the detail. keep things light and easy to change. use a pencil. then start sketching stuff.
- make a landing page for a construction company
- make a page to market an event
- make an app "page" to find good barbers nearby
You will naturally start asking yourself the right questions. "What information is most important?" "How should information or pages be broken up?" "Who will be looking at this page?"
if you have more questions feel free to email me jeffchuber @ theBIGsearchgiant.com
Sure no need to go into depth, but there are plenty of short easily manageable resources for getting the basics. Before I read a blog post about colour theory I had no idea the concepts even existed. Now I'll use an online tool to help me select colours that will work better together. The effort required is basically a bit of google, and less than an hours reading.
IMO, this is very important and a common pitfall for lot of hackers. Hackers get overzealous and apply their programming creativity into UI design, which confuses users. It is better to stick to common UI patterns initially (or just look at popular apps for patterns) and learn from user testing before jumping into insanely great design.
Largely disagree with the above statement. Consumer psychology is largely irrational, therefore frivolous attributes like the "look" and "feel" of a site that have nothing to do with functionality can influence what you perceive to be "easy to use."
A good example of this irrationality in action is how the taste of food can be influenced by how it looked visually prior to the act of tasting.
Likewise a person with no knowledge of best practices and the science behind colour and layout can intuitively design something great, and it's greatest where it naturally aligns with design truths and weaker where it strays from them - but it's hard to teach that 'eye' for design that feels what is right when it can't be measured as easily.
My advice is to learn design from a clean-room approach. You can use HTML and CSS to learn design as easily as Photoshop or Illustrator. Use a tool that's comfortable for you to manipulate, and start with empty files. Only bring in the elements you want to use, and experiment with them. Change their size, colour, font, placement, rotation, and style. Try different shades of grey on different backgrounds and get a sense of what is legible and illegible. Try finding a pair of colours thst match and feel good together and recreate that harmony using two different shades you have picked.
There's a lot about design thst you can learn by experiencing it, but the true knowledge happens when you research and play around with things.
http://www.amazon.com/Thou-Shall-Not-Comic-Sans/dp/032181281...
[1] http://amzn.com/0465050654
http://shazow.net/everything/rules-of-thumb-for-novice-desig...
I'm trying to learn more about design and write about my learning process at http://designwithdave.com -- there's only one post so far, but my goal is to post practice exercises and step-by-step redesigns of existing stuff in order to get better.
[1] http://foundation.zurb.com/ [2] http://www.amazon.com/Elements-Typographic-Style-Robert-Brin...
They've been incredibly helpful, and a lot of fun. Books and blog posts help, but nothing beats having a passionate teacher sit next to you and coach you along.
Here are some recommendations and details on how these go down, if you're interested:
1) Read 1-2 books on design beforehand (I recommend these [1]), perhaps introductory in nature. There are several principles and beginner concepts that you can become familiar with on your own that'll provide a better foundation once you've hired a design tutor or coach.
2) Have a tangible goal to facilitate your learning. Like any art, everything design related takes time, and having something interesting to retain your focus over days, if not weeks, if not months, will keep it fun and meaningful. My tangible goal has been redesigning one of my company's products.
3) Before each session I send my designer a page or two I want to focus on (e.g. client list and client edit pages), goals and sample content, and examples of designs I like for inspiration. We both work on designing those pages independently. We don't share or view each other's work until we're in session.
4) Once we're in session we review our designs and discuss each of our decisions on spacing, content choice, emphasizing this or that via different font styling, coloring, etc. As expected, my designer's work is always superior, but the real eye openers are when he walks me through why that is, especially when he points out how much easier, faster, but more relaxed my eye gets to what it wants on a given page w/his designs vs. mine.
We've had 6 sessions so far and I'm convinced this is the best method of learning design (just as having a private tutor is superior for many other things). If you have someone you can hire for a similar arrangement, at least consider doing so, I highly recommend it.
[1][a] Designing Web Applications (Nathan Barry)
[1][b] The Non-Designer's Design Book (Robin Williams)
[1][c] Don't Make Me Thing (Steve Krug)
The Non-Designer's Design Book is what got me really understanding design after a decade as a developer.