

Ask HN: Are you a generalist or specialist? - stevekwan

This is a discussion that's come up frequently with my peers.  To HN's software engineers, I'm wondering if you consider yourselves to be:<p>-a generalist / full stack engineer, or...<p>-a specialist / domain expert.<p>What led you to this career path?  And what impacts (both positive and negative) has that decision had on your career?<p>Thanks in advance!
======
kellros
I'd argue that before one can become a 'specialist' that you should first
become a 'generalist'. I would consider myself a generalist - I'm primarily a
C# - ASP.NET MVC developer.

But that doesn't stop me from writing WCF services, web services, using
message queuing (MSMQ but I prefer RabbitMQ with MassTransit nowadays) or
writing T4 templates or custom code generators. I generally do website design
(I have worked for a branding/design company previously where I designed
websites based on graphic designers' slicing) that includes your typical
front-end stuff like JavaScript/CSS with some pre-processing (SASS, Less,
CoffeeSCript), AJAX and web sockets.

I would consider myself a 'full-stack' engineer because I am generally
responsible from writing everything from the front end to the databases and
integration. I consider things like design patterns, wiring up IOC containers,
applying SOLID/GRASP principles (ex. abstracting components to minimalize the
need for change), managing project timelines, planning and estimates a daily
ritual. All my projects use either a N-Tier or a DDD approach.

I have also toyed with a multitude of programming languages and frameworks
outside of my scope of 'specialisation'. I'd hence argue that becoming a good
programmer would requiring you to become good across the board (and at things
outside the scope of the project - ex. I apply similar approaches to what I've
learned from writing Scala/Python/Haskell).

I wouldn't consider a programming 'specialist' the same as a domain expert.

You definitely need to acquire domain knowledge to be efficient at what you
do, but you shouldn't need to be considered an industry expert. I've only seen
bad things happen when programmers are left to make decisions that require
domain knowledge because there are no real domain experts around.

------
strobe
I'm is generalist, but might be not a 'full stack engineer' - because I person
who has and use skills from two different worlds Art/Design & Software
development.

Some time ago I realize that the generalist skill set it's give more freedom
to me, because if you do only something one, you will going into a trap (you
will become very dependent on your employer, tools, industry, market etc. and
if something of that is going to fail you be a first who suffer from it). As
generalist you have more clear view about any problem that you working on, but
you can lack in some areas (in most cases it's can be easy solved by short
connections with domain experts).

Generalist skills is very suitable for small cool teams, specialist more in
demand to big corporations.

My skill set Art&Developing is very helpful for projects like games, and for
any projects what is have very strong connection between graphics and
technical parts.

But generally specialist&generalist it's not strong terms because you able to
be a generalist on some level but on the more hight level you still be a
specialist.

------
tait
Hmm, I guess you are asking about programmers?

~~~
stevekwan
Yes...my apologies, should have been clearer about this.

