Is it possible to become 'excellent' at both design and coding?
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 ] threadi 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.
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.
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 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).
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.
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?
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.
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.
> 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.
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.
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.
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
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.
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.
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.
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?
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
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.
Any advice for the design skills impaired developer like myself?
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.
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.
Judging from my experiences nobody is expert at everything in either domain... so what does it mean?
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.
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.
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?
Excellence in both is rare. Shaun Inman is a remarkable example.
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'.
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.
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...
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.
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.