(I'm a native Chinese. Being a spelling/grammar Nazi to me really helps me. Thanks.)
Hello HNers,
I'm a college student and a programmer. My dream is one day I will have my own kick-ass startup.
I know how to write clean code; but what I don't know is how to draw things with paper or CSS or Canvas or Photoshop or anything. I can implement Linux device drivers, purely functional data structures, lexers/parsers or socket servers; but I can't even design a simple logo or a good-looking webpage. Sometimes I do have ideas how the logo/webpage should looks, but I just don't have the ability to draw (implement?) them. To be clear, HTML or CSS is just another programming language for me, but I only know the syntax and grammar. I don't know how to do graphic design at all!
I want to learn graphic design, both for my current projects and for my future startup (same reason with the suggestion that "non-technical" person should learn to code). I want to have basic skill on how to use computer to draw icons, logos, buttons and webpages.
But I have no idea what to do and how to start. How can a programmer learn graphic design from the ground up? Should I learn drawing in pen and paper first? Or should I learn Photoshop? Or should I just learn how to draw by writing code in CSS/Canvas? What books/websites can you recommend? Is self-learning enough or a mentor/teacher is required?
I'll appreciate your advice, thanks!
It cannot be over-stated how important it is to be able to recognize design in order to be a designer. While you won't need to be able to identify typefaces at a glance, you should be able to understand the fundamentals. You should be able to identify short-comings and be able to think up ways to remedy that. Like programming, a lot of design is problem solving in the context of many constraints.
The other part is simply doing it. Design things. Constantly. Make up logos. Work with type. Whip up experimental layouts and see how they work, look for faults, and try to fix them. Re-design sites you're familiar with, even if you're simply re-implementing them, so as to understand how they work. The way you gain experience is by exploring and doing.
Everyone focuses on tools as part of their problem. "If only I knew Photoshop better, I'd be an amazing designer," they say. This presumes that Photoshop does the designing for you, which of course it doesn't. You can see work from people who think it does where they've turned on every filter, used every plugin, and exercised each font in their "500 Free Fonts and Clip-Art" collection.
Obviously you will need to learn some tools. I'd advocate picking a few that will get you the furthest along and learn them well. Instead of knowing a bit of Illustrator and a bit of Photoshop, choose one and double down. You can also do a lot of designing with a pencil and paper if you know CSS well enough.
If you're intending to be involved in a start-up, being multi-talented is essential. Unlike large organizations where there's formal departments, you'll often be wearing a dizzying number of hats. You'll be the designer-programmer-customer-support-cleaning-staff-accounts-receivable person and then your partner might be the sales-testing-tech-writer-photographer-blogger person. Rarely do you get to focus on just one thing.
Knowing even a little bit of design can help get you started more quickly, get you further along in projects without having to engage an outside designer, and will make your efforts come across more clearly.
Design is, after all, not just about pretty pictures but about presentation and communication.