Is it possible to become 'excellent' at both design and coding?

79 points by travissisti ↗ HN
Today I left my position at a tech startup (to join a different tech startup). My former boss and I have some differences of opinion, but I respect him a LOT, and he gave me some parting advice that really stuck with me.

He said, "You're going to be successful. You're very good at two things [design and front-end development]. You need to focus on ONE of them, and get from 'very good' to 'excellent'. Then build your career on that."

My career thus far (5-6 years) has been based on straddling the fence between the Photoshoppers and the code wranglers, and I'd like to think that I've gotten to where I am because of that mixed skill set. But my boss wasn't the first person to tell me this. I've had people from both camps suggest that I pick one discipline or the other and really become an expert.

A couple questions:

1) Am I selling myself short by trying to be good at multiple things, when I could be an expert at one? 2) Is it even possible to become truly excellent at more than one thing in one's career?

And a bonus question:

*) Are there any examples of 'generalists' who have built and/or led successful startups?

93 comments

[ 3.1 ms ] story [ 174 ms ] thread
I'm a generalist, have built the frontend, backend and designed Review19 http://review19.com .. i've authored a book and managed product dev team

i hate the idea of restricting myself. However i concede that people who specialists are in general better at what they do than generalists.

However as a generalist, i gain understanding from a broader perspective, which is invaluable.

Bottom follow your passion, whatever that may be.

Why not become an expert at both? If you ever decide to have your own startup, being able to do the work yourself vs having to pay something else to do becomes your greatest asset in the initial stages.
Depends on what you're talking about. I can totally see a developer having the front-end design skills necessary to make a site functional yet decent looking, but I'd rather have a full time designer polishing the graphical elements or suggesting changes. The actual graphical design work that goes into most websites is not that high, and trying to do everything yourself is going to lead to stress and misery.
One thing to note - there's value in people who can be "bridges."

It might make some specialists angry, but there's value in people who can take a meaning in one realm of people and translate it to something meaningful in another.

Designers and engineers tend to speak different languages, so being a person who can communicate the differences and take what a code wrangler means and turn it into a design (and vice versa) is valuable.

I think what you want to stay away from is being the "I know everything about everything" guy - that sets you up for failure.

Acting as a liaison between teams -- and even between members of the same team -- is something I find myself doing often. Unfortunately, as @idan pointed out, these kinds of things often go unnoticed by management; and even if they are noticed, they're hard to quantify.
Only one way to find out - lets see your work.

More seriously though, I can relate. I'm in a pretty similar position as your own. The biggest advantage you have is that you can bring ideas to life, 100%, without ANYBODY else. And that is very,very powerful. You are not limited by your skills or abilities, but only by your ideas and personal drive.

Being reasonably good at more than one thing always landed me interesting and rewarding jobs.

I find that this is helpful to bootstrap a product, because it allows to remain in low expenses mode while getting started.

But then you need to understand what to delegate at the beginning, and what to delegate later on (even if you are reasonably good at it).

I think there is simply too much stuff to know about in both coding and design. There is simply not enough not time to become really knowledgable in both.

However, I am not sure if you really need to be super knowledgeable to benefit from knowing both sides of the fence. I’m sure it’s possible to become really good at a subset of coding and design.

By the way: these are just my musings. I’m very early in my career myself. Personally I’m aiming to become effective at programming relating to the user interface of things, and design wise I focus my efforts on interaction design, information architecture and visual design. I want to learn more than what I just mentioned, but this I what I aim to be my core.

> There is simply not enough not time to become really knowledgable in both.

Please elaborate. Humans live a very long time.

Are you suggesting that design and code evolves so quickly that it is impossible to keep up?

Upon further reflection I don’t think it’s impossible, but I still think it’s probably very difficult.

Both design and coding are both huge fields. I am not merely talking about becoming a good designer and developer at once, but becoming one with a lot of knowledge in both.

Just take the long lists of things that that relate to each field: Design: interaction design, information architecture, illustration, visual design, interface design, user testing, typography, color theory, composition, accessibility, different design processes, brainstorming techniques, using grid systems, cognitive psychology, sketching Coding: HTML/CSS, various programming languages ranging from low level to highly abstracted, various libraries, understanding of good software architecture, algorithms, maths, understanding how computers work, understanding data structures

There is probably more stuff I forgot to mention. As I wrote in my previous post: I think the key is to choose a subset of both sides.

Do you suppose that medieval master craftsmen had to pick and choose between being very good at using specialized tools to make things and being very good at knowing about the 'human factors' that go into making an object appropriate and desirable to people?

How is this any different? On one hand, you have a set of tools along with a craft of making things with those tools. On the other, you have a set of skills that help you determine the necessary characteristics of the crafted artifact so that it is pleasing to its end user.

Saying that humans live a very long time is quite relative. Compared to what? A butterfly or a solar system?

> An expert is a man who has made all the mistakes which > can be made, in a narrow field. - Niels Bohr

I don't think most people can be experts in couple of things, as it requires too much time to be expert in at least one of them (but there are always an exceptions).

I agree it is good to know a lot of things but I doubt one can be master of all trades. These days even car mechanics get specialized for a brand of cars.

In area of web design there is a myriad of technologies included in the process of developing a web site or an application.

There is HTML/CSS frontend, there are server side apps (in all kinds of languages), there are couple of web servers, there are few platforms on which those web servers run, and there is a database layer.

You can be an expert in any of these, but hardly all of them, since most of these are generic terms. What kind of database? There are experts for Oracle, there are experts for Postgres, experts for MSSQL etc... Then there are those who excel in maintaining web servers either nginx or apache or IIS etc, there are those who are experts in node.js there are experts in Django. And you could go deeper and deeper still.

And this is just a development part, if you put graphics design into picture there are wast number of options from which to choose that you can be expert in.

But do keep in mind I am talking about being an expert, you can have sufficient knowledge in HTML/CSS/Server side apps/Web servers/Databases to build a web site but you will hardly ever be expert in all of them.

Maybe I am wrong, but I do agree that it is near impossible to be expert in couple of things.

I think there is simply too much stuff to know about in both coding and design. There is simply not enough not time to become really knowledgable in both.

It's actually "worse" than that. It's pretty impossible to be expert in one field.

I don't know anybody who is expert in, for example, embedded development and game development and back-end web development.

I don't know anybody who is expert in, for example, font design and user testing and icon design.

Yet developers and designers can be successful by picking subsets of "design" and "development" to be expert in.

There is nothing stopping folk being expert in subsets of "design" and "development" - apart from the notion some people seem to have that one skill set interferes with the other.

I know, and I guess many of you, few people who are good at both. And we know if from their works. To put a rest to people advising you to choose one - you've to show to them that you're good with both. Once you do that, no-one is going to ask you to pick one.

If your boss and/or friends advised you after seeing your work, I'm sure they've a reason.

Are you really that good with both or 'just' good doing both?

In any case, you'll be a good (co)founder for sure but you might not be a good employee.

Unfortunately, there will always be a multi-classing penalty of sort. (I'm one of those people who code and design for web development, but masters neither.) For design, I've learned that the essential trait is to set one's mindset and philosophy on problem solving (as well as have an intrinsic taste for art). For code, I believe it is quite similar. Except that standards and practices constantly change. As a designer, it is your goal to meet and deliver these standards. Personally, I find it hard to be extremely good at both although I still consider myself competent.

My personal answer your question:

1. Some companies/start-ups value designers who have penchants for design while still being technically competent. e.g. someone who is familiar with grids, typography, art movements. While at the same time is familiar to version control, knows the basic structure of an app and the ability to build it single-handedly. Although I think that they serve a better role as project managers.

2. I have yet to witness one. If ever I meet one, I'd like to know how they were able to balance their daily information consumption.

edit: spacing

Multi-classing penalty, of course, applies. BUT there are classes that are multi-skillful by itself. And you can be excellent in those, even if they fall behind in any particular skill behind the more focused ones. That being said, I've always played rogue or bard. :{-
Bot of these comments are excellent, I love the comparison to multi-classing. I think it really hits the point.
Yes, it's been well discussed in long sleepless nights, as any D&D subject. :D
Hehe, I suppose that someone who's mastered the art of design is called a White(space) Knight. And someone who's mastered programming is called an Internet Sorcerer.
Check out page 46 of the Valve handbook, I think their take offers some insight: http://www.valvesoftware.com/company/Valve_Handbook_LowRes.p...

On the other hand, there's an argument to be made to the tune of: "Try to sit in two chairs and you'll fall between them."

My opinion is that anyone who builds and/or leads a successful startup will tend to wear many hats during the process, especially in the beginning, so if you're goal is to found a startup, having a diverse skill set can't hurt. Even if the founding team consists of individuals with their own unique skills, the cycle of design, production, and deployment is one that requires a collaboration between stages to be functional. Design leads to production, production to deployment, and deployment to re-assessment and design once again, etc. Stagnation in any of those areas is dangerous for the success of a startup, and can come from a missing or weak link, and just as easily due to poor transitions between phases. Being able support this cycle by tapping into both skills is a great asset to a team, and a early hire or a founder, and I believe that creates a strong argument for maintaining each skill set.

I LOVE the idea of the T-shaped person -- that's a fantastic concept, and seems like a great target for my own skill development. Plus, it makes me an even bigger Valve fan than I am already. :)

There are certainly many, many skills that go into building and running a tech startup, but I think the technical skill continuum looks (broadly) like this:

systems > back end > front end > design

The best teams I've been on have included members from each discipline with overlap into their neighboring areas. When transitioning from phase to phase (or, in the sort of rapid development that we're seeing more often today, where several tasks are occurring in parallel) it's super important to not have any gaps between segments.

Yes, it's possible. I don't suggest it.

The upside: you will develop the ability to create things that the communication barrier between excellent developers and excellent designers make very difficult.

The downside: You will have to be an expert in both to keep up with the expert designers and expert developers you will work with later in your career... and every company you work for will try to pigeon-hole you (as design and dev are generally different teams with different management).

Your standard added value to the company will be in your efficiency. You will work at 1.5x the rate of your coworkers (as you will design with development in mind, and develop with design in mind). You will be golden every once in a while when a project comes up that requires novel design AND novel development (you will save the company a ton of man-hours in meetings).

Having both will generally move you to the top of the resume pile when you go job searching, but they will hire you as one or the other (and you have to be sure they will let you do both).

If you don't want to devote your life to it, I suggest you specialize in one.

Isn't this only a problem at some organizations, for example over a certain size/age?

And if you're a true 'double threat', stuck in an organization that doesn't let your synergy be 1.5x+ more productive than others in specialized cages, wouldn't that be a signal to move on?

The beauty of being both a coder and designer is that you can create a product completely on your own. This makes setting up your own start-up a lot simpler.

So, to your question of whether you should focus on one or continue to be generalist, it depends what you want to do with your life. If you want a career working for others, then it might be best to focus on one of the disciplines.

If, on the other hand, you aspire to create your own products, or run your own startup, then I would recommend you continue to work on both your skills.

Indeed, my advice for any developer who wants to do their own start-up is to - once you have reached a good standard - forget honing your development skills and start learning to design.

Learning another programming language or mastering another object orientated design pattern does not bring you any closer to being able create a product yourself. Learning an entirely new but relevant skill like design does.

For your information, I am a journalist who became a developer five years ago, and who very early on in my development career sought to improve my design skills.

I am the guy behind http://www.gambolio.com, http://www.tiki-toki.com and http://www.peopleplotr.com, for which I did all the design and a good chunk of the coding. Also responsible for http://www.casualgirlgamer.com and http://musicgames.co

Indeed, my advice for any developer who wants to do their own start-up is to - once you have reached a good standard - forget honing your development skills and start learning to design.

I don't aspire to ever be a really good designer, but I'm doing exactly this right now. It's become clear to me over the last year that improving the design of my apps is going to do more to boost sales than any new features I might add.

Hi Alex, I am really impressed by your design skills. And having spent more than 5 years learning programming and doing programming, I agree with your point that learning designs brings an extra dimension to my work that another language will not.

Any advice for the design skills impaired developer like myself?

I consider myself both a designer and a developer, and wouldn't have it any other way. One day I will be pushing pixels, the next I will be writing an ad targeting algorithm in Clojure.

Do you think it's impossible to be good both at Graphic Design and playing the piano? No. Why should it be any different with development?

Your mixed skill-set makes you an easily differentiable and incredibly valuable personality. I would hire you in a heartbeat, if you're both great at coding and design.

As for your bonus question, here is some anecdotal evidence: I joined a startup as employee #1 started by a generalist friend (and a non-tech co-founder). For the better part of a year, we were the only two technical people, both generalists. We made some awesome stuff, and now we're making bajillions of dollars and have ~20 employees, 14 months after day one.

>I consider myself both a designer and a developer

But do you consider yourself 'excellent' at both?

But do you consider yourself 'excellent' at both?

Do you know anybody who is expert in everything in design or development?

If not, why does it matter if somebody chooses to specialise in a subset of design and development - rather than a subset of design or development.

Read the OP title: 'Is it possible to become 'excellent' at both design and coding?'
That seems like a very simplistic question, and adrian and seoxy are trying to explain why that is so. There are MANY facets within both coding and design. It would be simplistic to assume you could be excellent in all facets of either one (because they are so broad). So why can't it be possible to be excellent at certain aspects of both coding and design?
I did read it. To answer the question we have to understand what it means to be "excellent" at design and what it means to be "excellent" coding, and what it might mean to be "excellent" at both.

Judging from my experiences nobody is expert at everything in either domain... so what does it mean?

>the next I will be writing an ad targeting algorithm in Clojure

Please don't. Leave ad targeting algorithms to the unwashed people, Perl, etc. Let's keep functional languages pure from the scum of the earth that is advertisers.

Half kidding, of course.

I have done a lot of design/coding work for http://muziboo.com and http://supportbee.com

While it may not be possible for you to be the best designer and programmer for your company, you can learn enough to be able to start from an idea and build a MVP and get some customer traction. At that point, you can start hiring experts. No point hiring experts during the validation phase. As long as you can code and make acceptable (read contemporary) designs, you should be able to validate your ideas and bring in some traction on your own.

Even when I am hiring for my early stage startup, I would prefer people who can do a little bit of both.

I'm in the same boat. I've had many bosses give the same advice. It's bullshit. Bosses like to define you as one or the other. Companies that appreciate your mixed skills will appreciate you greatly and pay you a lot. If you start your own business you'll be in the perfect position.
Heinlein said it: Specialization is for Insects.
Become 'excellent' in one and good in other
Right now, the field has decided that the coder-designers are worth their weight in gold. As such, at this moment and for the foreseeable future, you are in a great position to pretty much write your own ticket wherever you want to go in the startup world. This will occur even if you don't ever progress your craft beyond being 'very good' at both design and front-end development. For this reason, you now have a good opportunity to decide for yourself what you will enjoy doing most without having to worry about pigeonholing yourself into some particular job description.

Also, consider this: if you have become 'very good' at design and 'very good' at coding in 5-6 years of applied practice, then how much further will you push your skill with another 5 years of dedicated effort?

Thanks Kaizyn, this is very encouraging. :) I consider myself very fortunate to have a broad range of options.
When you're young you'll be able to do both well. As you get older I think you'll find yourself wanting to spend time on one more than the other.

Excellence in both is rare. Shaun Inman is a remarkable example.

I've been curating a list of people who balance both skills exceedingly well for quite a while on here: https://twitter.com/#!/micrypt/devigners/members. Suggestions are very much welcome.
Great starting point, I'd love to see females on there. Not sure what it takes to meet the developer status, but you might have good luck with lovely ladies like @divya, @leaverou, @Sunfeet22, @stephaniehobson, @zahnster, @denisejacobs. To toot my own horn, I'm @_mandynicole - a front-end designer - even though I'm not a big Twitterer.
If he was talking about '[visual/user-interface] design' and '[algorithmically/architecturally-scalable] development', I could see there being a tangible tradeoff in acquiring expertise. Effort spent on one may offer little spillover benefit for the other, meaning larger returns to specialization.

But '[visual/UI] design' and 'front-end development'? I'm perplexed that so much of a culture of splitting these roles has arisen. In my mind they overlap so much that enforcing a formal division, in either process or the recognition of 'expertise', introduces wasteful mismatches of expectations and cost/value estimates. That is, the dividing "fence" you say your career has been straddling shouldn't even exist.

The cynic in me thinks the advice you've received, from the boss and 'people from both camps', has been more about them defending their traditional turf and comfortable silos than what you should do to be 'excellent'.

To be fair, I do feel that the people who've suggested I make a choice are looking out for my best interests. I would consider each of these people to be a friend (including my former boss). But I do think you're right that people like to classify things and put them in boxes. I don't fall into either box and that may cause dissonance for some.
I had folk give me similar advice when I was young. It's dumb advice.

Imagine you go the coder route. When you going to specialise in there. Big data? Databases? Embedded coding? 3D graphics? Game coding? Web app coding? Front-end? Back-end? Testing? People can make careers out of any of them - and many more besides. It's pretty much impossible to be an expert in everything on the coder side.

Imagine you go the designer route. What are you going to specialise in there? User testing? Icon design? Branding? Web design? Print design? Interaction design? Information Architecture? People can make careers out of any of them - and many more besides. It's pretty much impossible to be an expert in everything on the design side.

I've had a pretty successful career with a bunch of things from the developer side and a bunch of things from the designer/UX side.... and some other bits and bobs from other things like project management and business folk.

I'm really good at interaction design. I'm really lousy at visual design. I'm really good at testing. I have no embedded coding skills. I'm great at... well... you get the idea...

Design and Development aren't "things". They're communities of practice. They're social constructs. New ones appear and disappear over time.

Pick "front-end developer" for example. Twenty years ago that role didn't exist. A bit of layout knowledge. I bit of a design eye. A bit of development. A bit of markup. And so on. Those skills existed - but there wasn't a 'role' where you needed to be expert in all of them.

In another ten or twenty years I'll be surprised if anything like "front end developer" exists in the same way (look at how folk using stuff like node.js blurs the coding side of front/back end development for example).

Figure out what you want to do. Then acquire the skills you need to do that - and be excellent at those. The choice isn't between being a design expert and a development expert. Instead make a choice to be excellent at the things you enjoy and are good at - and then go find career where you can use those skills.

Is not that you can not be an expert on both things. It is that you can not "execute" on both at the same time because you don't have time.

Time is your main resource and nobody can do it all at the same time. Some things take a lot of time just starting to work and if you change from one thing to another during the day you don't do anything.

But don't believe me. Test it yourself. Measure your time, take your smartphone timer and monitor yourself along the day, write it down how you spend your time, not as you should, but as it really is.

If you are as good as you said you can pick one as your main area and them choose someone who knows how to do the other. Having "taste" and knowing who to choose is not as easy as it sounds.

(*) Yes, there are examples of generalist who have led successful startups, most of them are done by generalists, if for generalists you mean someone who is able to trust others doing the specifics because they know they can't do it all. With a startup you have to be accountant, tax payer, product evangelist, sales manager, marketing head, engineering head all yourself...

My design skills are on par with most of the designers I've worked with, and pretty much same goes for coding. I'm not excellent in any, ignoring few bright moments. I've also done game music, play few instruments, and the list goes on. I DO NOT EXCEL in any of those, but that might just be my high standards. However, in the companies I've worked I've always been THE most useful person.

Earlier this year, I've started my own company and ran it sucessfully basically by myself.

The point being - you probably cannot be excellent at both design and coding but being very good at more than one skill makes you excellent in itself.

Exceptions to the rule always apply.

First, know thyself. If you don't have talent, or you do but can't stand hunting that race condition for days, or can't obsess on the tone of green that will convey that company's corporate identity better, you will fight an uphill battle for skills that others master much more easily.

That said, I'd say that the general advice goes like this: If you want to work in a corporate environment with lots of managers to report to, specialize as much as you possibly can. That's "knowing everything about nothing" as my adviser in grad school used to say. Companies with a high number of employees tend to prefer specialists. They of course need people with a high range of skills in upper layers of management, but you won't get there first thing you set your foot through the door, it'll take you years.

But if you'd rather work in a start-up environment, or just be your own boss, you need to know everything from the tradeoffs of apache vs nginx to which css tags render differently in Firefox and Webkit.

That's more a lifestyle choice, in my opinion. You can get successful both ways.

Everyone wants to compartmentalize you. Many cannot interpolate the steps required to go from being very good to being excellent, so they scoff, and they try to impart advice. How are "very good" and "excellent" even quantifiable? Let them say what they will. Nod, respectfully. Then carry on. You belong in another crowd--a rarer crowd. You absolutely may be a designer and front-ender. I'd even speculate that these two crafts complement each other in making you better at both. You won't mindlessly design something that is artistic, yet up in the clouds (because you have a foundation in usability and functionality). Similarly, you won't create an unappealing and thoughtless front-end, because you have an affinity towards--and respect for--beauty. Your boss meant well, I'm sure, and in most respects, it certainly is a good idea to narrow in on your expertise, but these two trades, particularly, do not conflict. Whenever faced with two choices, those who truly distinguish themselves are the ones who say, Fuck it. I'm doing both.