Hacker News new | more | comments | ask | show | jobs | submit login
Is it possible to become 'excellent' at both design and coding?
79 points by travissisti on May 5, 2012 | hide | past | web | favorite | 93 comments
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?

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

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?

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.

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.

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 answer is: yes.

>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.

Hybrid dev/designer here. My experience:

Being a hybrid is difficult because of these kinds of situations. Even if you get to be very good at one or the other (or both), you're still perceived as inferior by virtue of your supposed "lack of focus."


I had a hard time with this until I realized that I bring something rare to the table. The ability to traverse these two worlds is an immensely valuable trait. People like you are often the glue that binds great teams together, because you know both professions from the inside, and you're able to communicate with each in their own terms. You can add value constructively ("Here's a possibility that either side isn't aware of because they don't know what the other half can do") and prophylactically ("That's a bad approach to the problem, because the other team will get stuck hard if you do it that way"). You are uniquely able to hash out ideas to the show-somebody phase quickly, because you know how to supply all the requisite ingredients.

At the end of the day, hybrids like you (and me, and lots of others out there) have a harder time demonstrating value because it's assumed we are simply shallow generalists. I'm sorry to say that the onus will always be on you to prove them wrong, and you have to market these rare aspects of yourself. The effects of your presence in a company are often diffuse and hard to measure, which makes your task doubly hard. Welcome to the club.

There are many companies which are desperate for talent like yours. If you are like me, you'll feel unfulfilled working exclusively on one side or the other. Don't settle for a job that only draws upon half your talents—you are more than the sum of your parts. Keep growing both sides of you, and make "marketing myself" a learning goal for this year. :)

Great points. I think you're dead-on in your observation that the hybrid's biggest values often go unnoticed. Executives won't see or hear every little thing you do that adds value; interfacing between design and dev is the big one, I agree.

To be honest I've never given much though to marketing myself. Maybe I'll pick up a Seth Godin book or two this summer.

I don't think it's possible to become excellent at both being a designer and a developer but I do think it's possible to become an excellent designer/developer and the distinction is important.

First of all, I think there's been a devaluation in the term "excellent"; every startup is hiring "the best people" and all teams are "A+". Under the current, debased meaning of the word, it's trivial to be excellent at both.

But, to me, to achieve excellence requires becoming the embodiment of the craft. An excellent engineer, when they have a spare moment of the day, they're thinking about an engineering problem; when they encounter a problem, they analyze it like an engineer; when they cook dinner, they cook as an engineer would. They don't just merely work as an engineer, they live as an engineer.

And because of this, you cannot serve two masters. Once you become excellent at engineering, you can't become excellent at design because to get to an level of excellence would require doing things which your engineering brain is screaming at you are wrong to do.

What is possible, is to become excellent as a designer/developer which is, instead, to focus on the embodiment of the inter-relationship between the two. To look at all problems as a fundamental tension between the two world views and an appreciation of how to thread the middle path.

It kills me that everything is "5 stars", "10/10", "#1" these days. When everything is special, nothing is special, right?

I like how you identify the designer/developer as a role in and of itself; embracing the tension instead of picking a side. I've never heard it phrased quite like that before, but I think it makes a lot of sense.

You are focus in the wrong question. His advice is like saying: you are good at tables and divs, pick one and be great. Design and front end goes hand in hand, is really hard to be excellent on one and sucky at the other. His advice refelects two things and neither are related to you:

1. His view of the world is framed by specialization. You're a good pawn if i can easily put you in a box that I can understand, but is hard for me to imagine someone that s great at both things, hence you should pick one. The lack of understanding is a defect on him, not on you being too general. If you have both talents, great! Enjoy.

2. He is a boss, and instinctivly will try to parent you because is a non aggresive way to manage your behavior, something that he is pay to do. The problem is that kind of relationshipss are hard to let go, so he has to give you something, and whatever he gives you comes out of his vision on how the world should work. This is not ill intended, his advice might be honest, but without realizing it, limiting.

I think you can safely ignore it and move on into your new workmwith an attitude of: do you want me to fix your front end? Because is not working properly and it looks like shit.

Thanks for the comments, jorgeleo. I do believe my boss had my best interests in mind, but you're probably right that it's easier to put someone "in a box" than it is reconcile the nuances of someone who evades classification. And hey, I don't blame him; I like to organize, classify, and categorize stuff, too. Everyone does. I think it's just human nature.

But your overall point is well taken. I'll focus on doing good work and try not to worry about where I 'fit'.

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. :{-

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.

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

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...

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.

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.

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.

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.

Oh god. I'm doing the job search song-and-dance right now and you wouldn't believe how many interviewers have asked me "So..... you do design, and you also code. Which do you like more?" Which to me is a completely nonsensical question. It's like asking if I prefer spreading peanut butter or spreading jam. No, I like making PB&Js (or web apps). Why is that hard to understand?

Well, some of these interviewers are recruiters, and they have to put me in a well-defined box in order to match me to a position. I have some sympathy there. But the others... are more disappointing.

But: I've found that the people and companies that "get it", really get it, and will reward you for it. Instead of asking about the "design" and "code" boxes, we can have actually useful conversations about subsets of skills within them (user experience research! graphics! Javascript! Python! databases!) What with my technical inferiority complex and such, such people value me even more than I value myself.

And for those that don't, well, when you create your own company down the road, it will build things that are neither vaporware mockups nor asstastic apps, and have a culture of "getting it" from the start, so you can eat their lunch. :)

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?

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'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.

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 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.

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.

> 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?

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.

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.

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.

It's great to have multiple talents, but people will almost always try to pigeon-hole you, as a way to simplify the world around them. You may get further by presenting yourself as 1-dimensional in different contexts, which is a shame but that's life.

The real concern is that your colleague who is also a "good" programmer currently and focuses on that one task will be a able to present himself as an "expert" programmer in 10 years time (or at least as someone with considerable experience, for what it's worth) whether or not his actual skill set has improved much.

There's also Economics at work: companies tend to adopt a division of labour between specialised roles as it is far more difficult to hire someone with multiple skill sets. One person with two (relevant) skills usually costs more than two people with one skill. This means that a companies' money goes much further when they hire single-skill workers and scale the company to the point where each worker has a full-time job.

This rule doesn't it apply when dealing with small companies (especially startups) which may require individual employees to adopt multiple roles, perhaps informally. Nor does it apply when multi-skill workers are essential or significantly higher-performing: e.g. presenters of physics tv programmes tend to be both good physicists and good public speakers.

In summary: 1) mostly 2) no, but people will pigeon-hole you anyway *) yes, you have to be - this is where multiple skills may really give you an edge.

What you should do is what you want to do, and if you enjoy both topics, there is no reason to pigeonhole yourself into one of them. It is possible to be successful by focusing on breadth as well as depth, although the challenges are different. You are the only one who can decide what is right for yourself and for the kinds of jobs you want to pursue.

As far as whether it's possible to be excellent at both design and development, the answer is clearly Yes -- if you have 10,000 hours to put into each of them. It's pretty hard to find a role where you can focus on two distinct areas for 10 years, but it's possible (though often when this happens, one is professional and the other is a hobby).

However, you should recognize that both design and development are very fast-moving areas right now, and so being an "expert" in one of them usually means you are good at problem-solving and you can search online competently. So there may be a lot more overlap than some people think, which would make it easier to be an expert in both.

If you are interested in management theory, the traditional view is that there is a tradeoff between specialization and productivity (think Scientific Management, Division of Labour, etc.). A more modern perspective is that jobs that require creativity benefit from job variety and task identity (basically the ability to work on more aspects of the problem rather than just being one small cog in a large machine).

If you want to build a successful startup, your ability to wear many hats and push more than one aspect of the product forward in the early days is super valuable. If that's your goal, continue to straddle the fence.

If you're thinking about this inside of an organization, you have to decide what kind of person you want to be: the nail or the glue.

It's possible to not specialize and to be super valuable. You can even lead teams with this approach - as long as you're very cognizant of where your people are better at one specialty than you (i.e. your designer gets to make the tough calls, not you). When you straddle the lines, you're able to translate between experts and to make sure all of the little details are covered. Often, you are the reason that things stay together instead of splintering apart: the glue.

But if you really want to be able to call the shots and be the expert in an area, to lead the team and to be ultimately responsible for "X" - you need to be focused on it. You need to have the most clear understanding of the problems you're dealing with and the person who spends the most time working on and thinking about it. Your value comes from having a sharp and accurate point of view - the nail.

To those who say that you can be expert in both, the answer is that you're fooling yourself. The world that we live in is such that it's impossible to truly be an "expert" in anything. The best we can be is to be constantly learning through practice, education and discussion.

It's impossible to constantly be on top of code and expert in design at the same time because there's so much to learn about each area that splitting your time leaves you behind the truly focused individuals.

Having read everyone's responses, I think followup question #1 was the most important one: Am I selling myself short by trying to be good at multiple things, when I could be an expert at one? Simply being 'very good' at two or more things is extremely valuable, even if means not being 'excellent' or 'an expert' at either.

I think for now I'll continue down my current path. I like to code, and I like to design, and I happen to be decent at both, and I think I would be disappointed if I was somehow forced to give up either. So why not continue? It's served me well so far.

I may never be able to hang with the hardcore code slingers or the hardcore designers, but there's a ton of spectrum between the two extremes that is largely ignored, and there's value to be had there. As @idan pointed out, it might take some self-promotion and/or time to prove yourself (assuming you're aiming for work at an agency or other established company), but once you carve out your spot it will be clear how much value you provide.

And of course if your plan (like mine) is to strike off on your own, then who cares -- you'll get a ton of mileage out of a mixed skill set. You can always hire 'experts' down the road.

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.

Front-end and design is one thing. Get better at them, and build your career on that. On the other hand, companies will usually try to box you in to one of those disciplines. Don't underestimate how insane they will get as they try to do it. If they succeed, then either way you should always find time to pursue other interests, and to develop other skills, and to grow in your main field, or else one day you'll be left ass out with nowhere to go. What you know now can become old news very quickly.

For your future to be bright, you should retain this "duality." And branch off on your own one day (before the ship sails).

Specifically about the front-end vs. design question, what I've seen is that most design+front-end folks reach a maturation point with the front-end technologies (and it becomes mostly about keeping up), then spend the rest of their time further developing their design skills.

I'll say it. I think that the best or most successful future tech entrepreneurs will be the Front-end Engineers and the Marketers. They are sitting there on the edge everyday with the users, and (overtime) they intuitively learn exactly what matters.

Most of the others fail.

your problem is that you use the word "excellent" but don't bother to define what exactly that means.

for example: how about in terms of being an "excellent designer" we say that means something like being a winner in the annual AIGA design competition. and how about as an "excellent coder" we don't mean someone who is just good, or even great -- but someone who has actually contributed something to the field. this could be a new language or crafting the next twitter.

so by really embracing what "excellent" means the chances are you won't be in the top 1% of two somewhat different fields. if you want a good example of this from another world think how many rock stars can go on to become oscar winning actors? now can a rock star be an actor -- of course! but it would be a real rare bird for someone to be brilliant at both. so yeah we all LOVE elvis, and his movies were all enjoyable -- but he just wasn't an excellent actor.

side note: i'd also dare say that if you're looking at design as being "photoshopping" and at code as being a "code wrangler" you're looking at the production end of each process rather than the planning and/or architecting.

Can you really split it? I mean, when you think about HTML 5 you have something in between. It has so many ways to connect data/functionality with design. With HTML 4 it was like backend, HTML, CSS, JavaScript. All separated. But now you have HTML 5, you have data in code (data-attributes), lots of semantic web features, tons of JS APIs, Canvas (2D, 3D), asynchronous connections, do stuff like templates and while you can split all of this you need to know about everything. Actually it's different. You need to learn everything. If you read the HTML5 and related specs you see exactly that.

Of course, if it only comes to design in the pure CSS or graphics way that works, but everything that gets to HTML is different.

It's really hard to consider HTML(5) (that one spec, as compared to other modules) a pure markup language any longer. Of course you can use it like that, but than you won't use a lot of features.

So in other words. You have to become both or else you will end up very far from being excellent.

I also think that's even a bit of a problem. I always thought it was good to look at web design and development in separate ways, but in many cases you will end up using the tools that would fit. On the other hand that thing is also kinda true for being an administrator or developer in a way. You can get out much more if you have experience in both fields.

But hey, that's what happens when you work on computer stuff (or computer science if you want, but it often isn't). You have lots of pieces and levels of abstraction working together.

Also isn't it the best to not focus on what you learn, but just have a look what you find interesting? If it's interesting you will focus on it, learn and work quicker and you'll know what to look out for when you need a job.

Oh and people often switch to other languages and learn completely new things, doing completely different things and become excellent. It's not like these things are too distant from each other. So I guess it will work.

Okay, now instead of philosophy an answer to your question.

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

DuckDuckGo I think. Administrator (FreeBSD and various servers), developer (Perl) and of course the website, which I as a user actually love a lot, even if someone who actually knows about design maybe would disagree.

Ah, good call on Gabriel Weinberg of DuckDuckGo. He is obviously very talented in many areas.

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.

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.

1) There's a reason the word polymath exists.

*) Sitting on the fence between design & development is hardly a generalist. Add philosophy, psychology, sociology, linguistics, anything really. And, yes, there are... http://en.wikipedia.org/wiki/List_of_people_who_have_been_ca...

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.

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.

Yes and no. You can't be amazing at programming from the kernel up to the front-end and be amazing at designing from the front end all the way to marketing and UX. Reminds me of Forrst. About six of us had checked just "developer"; seemed like almost the entire population had checked both "designer" and "developer" and were proceeding to ask really basic programming questions.

On the other hand, there is seemingly limitless employment for people who can both design and implement a website. But that employment doesn't pay as well as just one or the other, even though it's easier to do just one or the other. The people who need these skills wrapped up in one person need it that way because they're too cheap to hire two people. The people who can afford someone special can afford two or three someone specials. In fact, the people who need you to be both probably would like you to write the backend as well, which you've sort of implied you don't do. So if you're in the market for employment with two decent skills, you stand good odds of being outcompeted by people with one excellent skill.

The problem with this line of reasoning is, where do you draw the line? I think the distinction between front-end developer and designer is pretty tenuous. If I show a developer a binary tree and ask them to calculate the height mathematically, I expect to hear the answer "log base two" without delay. Most of the front-end developers I've met have encyclopedic knowledge of Javascript, the DOM, several JS libraries and the various browser quirks, but could not solve a pure coding challenge offline with no time limit and their choice of printed technical literature. If you fit this front-end developer profile, but can also design, you belong to an interesting and fairly small class of people who really can do essentially the entire front-end themselves. I laud these people and I'm not at all convinced that to be effective at one you have to give up on the other. On the other hand, if you're a kernel hacker on the weekend and doing front-end development and design during the week, I think the advice is probably sound. You're not going to be able to be one of these front-end wizards while also doing totally unrelated stuff.

Can one excel at both prongs? I don't know, but i do know that one person can (and has) created excellent Web Apps, entirely on their own. The fewer people involved in building something the lower the coordination costs (time spent communicating, noise introduced into the spec because the reader/listener never comprehends with 100% accuracy). This doesn't mean the smaller team wins, but it is a primary reason why the bigger team doesn't always win.

As an aside, while again i don't know if excellence in design and coding are achievable by the same person ,i suspect parity probably is. For instance, i'm an average coder and a bad designer, but with enough practice mediocrity in the latter should be attainable.

I assume that excellent probably means world's top 3% in both professions, so you want to be one of Apple's lead designers and one of Google's lead coders, which is pretty hard but still possible. I think the best route is to get immersed in each sequentially i.e. take a designer's job for a couple of years, then switch to programming and so on.

But I think there's even bigger advantage to your talent because:

- you can create a good looking and working product from scratch and launch it all by yourself

- when your product takes off and it's time to hire more programmers and designers you will be able to pick good ones since you are both.

Isn't this just a matter of perceived classification?

I mean, how can one be an "expert" in design, when design its self can be broken down further? Or go up a level and call yourself an expert in web sites? Higher still, IT, then electronic technology. And there are plenty of people who regard themselves as IT or technology experts, right? Then, if you subdivide it too far you become an expert in something so small its not worth it. Who wants an uber expert in <tr> for example!!!!

When it comes to getting a job, just focus your CV to what the job specs are. So, for example, have a "designer" CV for designer jobs.

It sounds like your problem is less about what skills you have, and more about how you're positioning yourself.

Try billing yourself as an "X" who differentiates himself by being good at "Y". For example, my skills are psychology, math, data, and some programming. This sounds like a disparate skillset which could be completely useless. But I position myself as "An Analyst who understands the business from both the technical side and people side.", and follow it up with examples of how the synergy between my different skillsets has helped me contribute massive value to the companies I've worked for.

Architects are expected to have both aesthetic and engineering skills, and the great ones (Shigeru Ban, for instance) are clearly excellent in both areas. Leonardo Da Vinci is probably the most famous generalist. Steve Woz said that if you want to be a true artist (and he believes that excellent engineers are really artists), than don't expect to find happiness working for other people. Bosses simply have their own agenda, and fitting you into a hole is probably easier/more convenient.

I think you need to know enough of both to be excellent at one or the other. Design freedom and constraints in software come from what code allows. Code structure is all about the interaction design (and somewhat about visual design as well).

That said, if you want to do both you'll inevitably work on smaller projects, you won't have the time to do more and get to market in reasonable time. You'll also refine each skill at half speed — 10.000 hours each to become expert.

Assuming you're competent in both, e.g. you are good enough to be professionally productive in either and can ramp/dial your skills to match, this is dumb advice.

Especially because good designers that understand how software works are freaking hard to find. Half the time I've spent with designers ends up in "yeah, good idea, but it doesn't work that way...".

In fact, for bootstrapped start ups, you're a gold mine whether you do the design or just own getting it done. Want a job?

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.

Do not EVER EVER give up your skill set. You can rule the world if you can code AND design. Quite your job. Be your own boss. Find one client that can meet your expenses and the sell like crazy to rest of the world.

If I was half as good at coding and competent at design I'd be making 3x more per year than I am and the start ups I've tried of the years would have had a fighting chance. If you're stuff looks like crap no one will give it a chance.

I think one can be excellent at both design and front-end development. That's what web design is all about anyway. It's made of CSS and Javascript and Canvas animations, not just Photoshop mock-ups.

Back-end development, however, is a full-time job. Not installing a CMS but making a new one. Doing two full-time jobs would require sacrifice of excellence or of one's private life. There are just too many things to learn in each activity.

You bet there are. Unless you have funding for a big team, you'll need to wear a lot of hats to keep startup costs manageable.

Personally, I like that. And if someone needs a "heads down" whatever, one thing day in and day out, that's not a gig I'd enjoy anyway. I like to have several hats, and like to learn new things all the time to keep my brain active.

So, it's all really about you, what you enjoy, and how you market yourself.

Best of luck!

Have I got a great advice for you: Go to under-developed countries! Those are filled with great designers/developed that have learned and mastered both crafts in order to hire less personnel and deliver quality service at a low-cost.

Coming from Latin America, I did so myself, know about many people that have done it and we constantly shuffle between tasks. This is really quite common in our region.

For a successful startup best thing you need to have is not neither Designing skills or development but how you going to reach your customers and market your product.

But having a good discipline in both you've mentioned, you find it lot easy to do your business later on, because you know what to do and where you should go.

This example sums it well: Steve Jobs.

Whichever one you pick, keep in mind that your long term goal is to go from micro to macro.

I hate to be the one to tell this to you but what your ex boss probably tried to tell you is that you are not the kind of guy who can be excellent at both. He didn't meant that nobody could, if he has two cents of common sense. Whether he is right or not is for you, and time, to decide.

OK, so this is one question that I have always wanted to ask, and now seems the right time to do so....does one need to study design in college? If not, how do you learn it? (This question might have been asked before; if so a link to it would be really helpful. I'm genuinely curious)

You should feel lucky that you have this ability and keep doing what you are doing. You aren't selling yourself short in any way!

Why do they feel you can't become an expert in both? This specialization advise you are getting... is it coming from those who are only good at one thing?

We only have one life and finite bandwidth but you one has to see the big picture to innovate. Keep seeing the big picture and try to draw the big picture. I tried the same it with great success until today: www.katsiafas.com/visualperception

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.

Wow, I'm stunned by the response! I expected to get, at most, a handful of comments.

Apologies for the delay in responding -- I'll go through and add comments as appropriate.

Thanks everyone for the advice, suggestions, and anecdotes!

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.

It comes down to task bandwidth and specialists are often dead weight and bottlenecks except when they're not, but that's not often. Stay diverse. Stay dangerous.

Yes. Don't be excellent AT something. Just be excellent.

It's really simple, no long answer or discussion is required - think of what prevents you to excel at both. Nothing.

Time and resources. If you have these, then no external issues should prevent you from excelling at both.

Become 'excellent' in one and good in other

* Steve Jobs

Just continue with passion whatever you want to do

I consider myself a generalist, and have really enjoyed working across several domains (primarily design and programming) - it is quite possible to pursue a profitable career while not fitting entirely into the boxes that bosses and hr would like you to fit into. We've just launched a startup over at www.coolplaces.co.uk for which I did the design and programming, but I am not a reliable judge on whether it is excellent or not :) FYI I started in fine art, and have worked for a living in design and programming.

There are many advantages to being familiar with both programming and design, and many similarities between the disciplines at a deep level (thinking through a problem holistically, balancing constraints, incorporating and developing ideas from clients). I think those advantages more than pay for any disadvantages which come with not being a specialist in one subject. In fact knowing something about several disciplines will often help inform your work in both and allow you to bring ideas form one to another - that's why many education systems require students to pursue a broad coarse of studies alongside their more narrowly focussed specialism even in higher education.

As an example of cross-fertilisation helped by working on both, for design I use version control to store my work, which is a practice imported from programming which I think many designers would love to have. For most designers, the equivalent is to keep 50 files in a folder marked design-1, design-2, etc. There are also collaborative systems like ticketing systems broadly used in programming which apply very well to managing client expectations and letting clients track your work and prioritise certain bits of it.

Looking at present day startups, I think you could say that a startup like 37signals qualifies as having many generalists - whether you classify them as excellent or not is up to you, but they are certainly successful. For more examples, look at the banner on this website http://designerfund.com/ - I'm sure many of those companies contain many excellent generalists that you could take inspiration from.

Looking back to the past for examples, there are many many examples of polymaths who have excelled in several disciplines, like Leonardo da Vinci, who was both an excellent engineer (often overlooked), inventor, and hugely creative and influential in the art world (which he is of course famous for). Which I'd say is definitive proof that your boss's conclusion is wrong in general. It is still possible your boss is right about you and your future direction, it seems unlikely if you are passionate about both areas that you can't grow in both, however it is possible that you are far more suited to one than the other and would benefit from specialising. Without seeing your work, I don't think anyone here could say.

Personally, I would simply take note of what your ex-boss has said, and continue to do whatever interests you, and work in areas which you feel competent in, and enjoy. If you find that throughout your career, lots of people are advising you to choose one path over another, it should lead you to either try to improve your skills in the area they highlighted as less than stellar, or move toward specialisation if you don't feel any desire to improve in that area. If your clients continue to be happy with your work in both fields, why would you feel the need to specialise?

I don't think you can extrapolate from this particular bit of advice to you a general statement about the possibility of impossibility of generalism, and I think given the evidence from the past, the present, and other posts on this board, the answer to your central question above:

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

Is a definite YES. Whether you will or not is up to you.

1) "Excellent" is a vague notion. Regarding coding for example, do you mean Knuth level excellent, Torvalds level excellent, Brad Fitzpatrick level excellent, some RoR "ninja" level excellent? All those (and more) are very different levels, still one can consider each as "excellent".

So, mainly what you want to ask, is: is it possible for one be competent in both design and coding. That is, produce good results.

Well, it is. There are people that are good at both, and have launched products with success.

I said good, not excellent, and here's why:

Nobody cares about actual "excellent" in a startup.

What you should care about is "good enough". Excellent is the enemy of shipping stuff. If Facebook tried for excellent, it wouldn't be built with messy PHP code and butt-ugly graphics when it was released. If Linus wanted to release something excellent, he wouldn't release a half-baked implementation with tons of problems, drivers missing etc in 1992. You get the point.

I also find advice like "You need to focus on ONE of them", "excellent" etc, non pragmatic. It's pop advice acquired by reading too many bullshit business self-help books. The reality is, especially in a startup, people have to wear many hats at one.

Heinlein said it: Specialization is for Insects.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact