10 ms·
Should Custom Software Developers Be Generalists or Specialists?
- jedberg 11y agoThis essay focuses only on expanding knowledge within programming and business, but I think to truly be successful, you need to generalize outside of programming too. My favorite example that I like to repeat often is that as a Site Reliability Engineer, more than once my knowledge of sports, entertainment, politics and current events have been quite relevant to my job. When we were trying to figure out why people suddenly stopped watching Netflix in Mexico and Brazil, it was important to know that there was an exhibition match in Soccer/Football between the two countries, and knowing that that was culturally important and something that they would be using the TV for instead of Netflix.
- pottereric 11y agoGood point. It helps to be well-rounded in general, not just in technology. To be fair, if you work for Netflix, entertainment is part of your business domain. One of the things the article highlights is the importance of knowing the business domain for your customers/clients.
- jedberg 11y ago> To be fair, if you work for Netflix, entertainment is part of your business domain. That's true. But politics isn't really part of that, but came in handy (knowing when the President was making a big speech or another country was having an election or debate, for example).
- toyg 11y ago> But politics isn't really part of [entertainment] That's a very naive view of politics :) -- if you think I'm just being a smartass: Reagan, Berlusconi, Trump, Schwarzenegger, Trudeau, Paquiao, Blair... the list of politicians who were entertainers before getting into politics is huge and getting longer (and more popular) by the day.
- jedberg 11y agoThat only became true when politicians started appearing on TV. They even touch on this in Back to the Future. When the only thing people knew of politicians was via printed word, and later radio, no one cared what they looked like.
- deleted 11y ago[deleted]
- ska 11y agoBut politics isn't really part of that Politics has been fundamentally coupled with entertainment at the very least since it began being televised.
- dasil003 11y agoIn other words, the importance of being T-shaped: https://en.wikipedia.org/wiki/T-shaped_skills https://en.wikipedia.org/wiki/T-shaped_skills
- pottereric 11y agoThat is the exact concepts I was going for. I had never heard that terminology until I read your link. Thanks for the information. I still like the concept of a topo map because I believe that the skills nearest your specialty or more important than those that are further away. A T just indicates that you have a specialty and the your have broad knowledge.
- roymurdock 11y agoInteresting list of related titles: -Versatilist -Generalizing Specialist -Technical Craftsperson -Renaissance Developer -Master Generalist
- p4wnc6 11y agoI agree with this advice, and especially the follow up comments about being well-rounded in general. But one thing I hate is when a business or a manager tries to politicize this whole "t-shaped skills" buzzword, by arguing that importance of generalist skills entitles the business or manager to almost completely disregard someone's specialization. If you hired someone as a machine learning expert, and instead you've got them working on a legacy Ruby on Rails codebase or going down some rabbit hole about containerization, then it's gone too far. Yet politically, this will be defended endlessly in the name of "team player" and "business bottom line" HR code words. But specialization of labor is hugely important to society. We need people to be deep experts, and for the trend of getting deeper and deeper into a field to continue, and well-defined roles within an organization are important for this. And yes, this does require managers and planners to work very hard to actually understand the business's needs, so that they can hire a machine learning engineer when they need one, instead of hiring one, then trying to repurpose the engineer into a Rails engineer by appealing to "be a team player" nonsense. Any way, I think it's just important that as good as generalization, well-roundedness, and basic curiosity are, developers and knowledge workers especially have to be really pedantic and adamant that businesses respect specializations. Don't let the politicization of "be a generalist" get used as an excuse for your employer to stop respecting your specialization. This is a major reason why I dislike the trend of "full-stack" development. It's great when developers really do have full-stack skills. But it's a huge red flag about a company when they actually want, and encourage, people to work in an essentially purely generalist capacity. It can often mean the company is either trying to get by cheaply (i.e. they're happy with relatively lower quality work from a generalist working in a specific area that is not the generalist's specialization) instead of seeking higher quality solutions through the appropriate specialists, or else they are just not doing the hard work of actually mapping their business needs correctly onto the skills that different specialists have, meaning that "full-stack" is just a hiring buzzword to avoid hard work somewhere up the staffing foodchain, and build in plausible deniability when it doesn't work out (e.g. "But we hired full-stack people...").
- pottereric 11y agoGreat points. One of the things that I tried to point out is that the breadth of your skills specifically supports your specialty. A company should appreciate your breadth of skills because it makes you better at your specialty.
- deleted 11y ago[deleted]
- beat 11y agoMy mother says a specialist is someone who knows more and more about less and less until they know absolutely everything about nothing, and a generalist is someone who knows less and less about more and more until they know absolutely nothing about everything.
- icehawk219 11y agoAlso summed up in the old saying: "A jack of all trades, a master of none." The world needs both in different places at different times.
- metafunctor 11y agoWhile these sayings are fun, and sort of true, they are kind of not useful. You should be a jack of various trades, a master of some. Specialization is for insects :)
- deleted 11y ago[deleted]
- beat 11y agoSomething I've learned from the Dreyfus Model of Skill Acquisition is that once you achieve expertise/mastery at a skill, it becomes much easier to learn other skills at the competent/proficient level. In other words, you learn how to learn, when what you're learning is hard and requires much effort. Having achieved expertise/mastery at a couple of different things (software deployment, guitar playing, other things), I find all sorts of common patterns between these seemingly unrelated skills, patterns I can then reapply for other skills. For example, being an improvisational musician has made me keenly aware of the passage of time, and immutable deadlines - an awareness that helps me with every other skill that involves the passage of time.
- pottereric 11y agoThere are many interesting ways that the Dreyfus Model of Skill Acquisition could be applied to the ideas in the blog post. There should be a few areas where you are an expert, a handful of things you should know at a proficient level, many things you should know at a competent level. You should be expanding the number of things in which you are an advanced beginner. I also like what you said about your knowledge of music was useful to your programming skills. Being well-rounded individuals can make us better specialists.
- sirgawain33 11y agoI've been partial to Heinlein's idea of the "general specialist" lately: "Computermen sent up to install Mike were on short-term bonus contracts— get job done fast before irreversible physiologlcal change marooned them four hundred thousand kilometers from home. But despite two training tours I was not gung-ho computerman; higher maths are beyond me. Not really electronics engineer, nor physicist. May not have been best micromachinist in Luna and certainly wasn’t cybernetics psychologist. But I knew more about all these than a specialist knows—I’m general specialist. Could relieve a cook and keep orders coming or field-repair your suit and get you back to airlock still breathing." from The Moon is a Harsh Mistress
- vcarl 11y agoSimilarly, another quote from him that always resonated with me: "A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."
- metafunctor 11y agoYou should be enough of a generalist to understand how your part fits into the whole. You also need to be enough of a specialist to do your part really, really well. Also, get into several specialities as you move along on your career. I'm almost 40 years old, and can list quite a few specialities in my resume.
- lnkmails 11y agoYou'd never to go to a neurologist to get a ACL reconstruction. In other professions, specialization is seen more respectfully and also pretty vital. Whenever I interview with startups, I get a feeling they want "generalists" because they need to get the same amount of work without hiring a lot of people. I'd personally prefer specialists but are inquisitive enough to jump on random things and can move the boat without waiting for someone.
- zaidf 11y agoAnother reason startups prefer generalists is that at the early stage, you don't know what specialists you may require. As a general rule, the later the stage of the company, the more specialists you will find. For example, you will find people at google whose only job is to make icons for a very specific screen. The same task at a startup may be done by the founder or really anyone who wants to take a stab at it.
- p4wnc6 11y agoOne problem with this that many orgs face is that later down the road when your business has grown, now you need to hire a lot of specialists (usually in a big hurry), and in fact at that point hiring the new specialists often matters way, way more than continuing to take care of the generalists who got you to that point. On one hand, if you defer to the market, you'll end up being forced to pay high wages to those later-on specialists, and probably also more equity than would otherwise be warranted for their time of entry to the firm. Lots of early-on generalists could get mad that they aren't paid well and that even if they have more equity, it's not fairly proportioned to how much up-front work they put in. On the other hand, if you don't agree with this market problem, then you end up hiring only specialists who don't know how much they are worth, or else have other factors that make them cheaper to hire -- generally meaning you hire crappier later-on specialists to save money and to keep the equity proportions "fairer" to the early-on generalists. These firms often get a bad reputation for doing crappy work in the specialist area, and specialists stay away from it. I see this a lot with machine learning. A smart machine learning specialist is not going to join a Bay Area start-up for $150k and 0.1% equity as employee number 40. If you waited until employee 40 to start investing in highly specialized machine learning talent, and it's something your business needs, then you're either going to have to raise the wage super high (much higher than the early-on employees who may resent this), or you're going to have to offer completely disproportional equity, or both; or else, you're going to have to hire inexperienced and/or crappy people who don't mind taking a job as employee #40 for that kind of "conventional start-up wisdom" pay/equity range. To me, this suggests one hypothesis is that start-ups preferring generalists is actually a bad idea. Instead, they should excel at forecasting which specialists they'll need, then hire the best of that speciality very early on. To entice them to put up with generalist work for a while, pay them a lot or give them better than market equity, and be as flexible as possible with what kinds of working style / environment you offer them. Then when the time comes to really turn up the heat on specialist labor, you'll already have the specialists, and they'll already know how the systems work. At that point, you can expand hiring on the generalist front, which should be relatively easier to do at the current start-up wage level, and have those later-on generalists take over the maintenance and generalist work from the early-on specialists. This is way easier said than done, of course, but it would be interesting to see whether there's a relationship between start-ups that succeed and start-ups that choose to specialize early and generalize later. Most start-ups fail, and anecdotally, most start-ups also seem very inflexible about accommodating what an early-on specialist might want (like say, to avoid working in Agile or to work in a quiet office) and seem more geared toward hire pools of generalists (mandate team-wide Agile, have lots of social outings, use open-plan offices). Maybe this is a big part of going wrong?
- dustingetz 11y agoi think the best specialists have more general knowledge than most generalists
- ykumar6 11y agoThink of your career as being a generalist, but learn things like a specialist. You want the opportunity to work on a wide array of problems so you build a repertoire of solutions and insights that can be applied to various problems. Being a full-stack engineer is a great place to start, but it's limiting because you never gain enough depth beyond plugging together front-end, back-end and off-the-shelf components. Instead, you want to rotate between various roles so you can focus on different areas. This way you can understand the pitfalls and best practices of certain systems (like infrastructure, queues, machine learning, angular, etc).
- deleted 11y ago[deleted]
- atmosx 11y agoSpecialist .- Being a specialist/senior dev you can get up to 120-160k/year for languages like ruby, rails, go, java, js, .NET, c++, etc. You can give speeches, write books, etc. As a 'generalist' you'll be between 60-80k at most, because everyone will hire you as a entry level programmer in their stack since you're not expert.
- kabdib 11y agoOn the other hand, a "generalist" with a couple of really deep areas of expertise can be very valuable. I like the T-shape model; able to help out in many areas, able to make significant contributions in a smaller number of areas. (I would add: And with a significant and continuing track record of growth in knowledge).
- tonyarkles 11y agoThat's how I handle my contracting gigs. I'm not sure if generalist is the right term for what I do; polyglot might be more appropriate. Every project I do, I'm typically brought in to accomplish something specific, which involves learning whatever that thing is down to the level where I can comfortably build and maintain a system. It's varied over the years: Django and Rails for web stuff (just recently Elixir and Phoenix), several different families of microcontrollers, C#, Java, C & C++, DSP work with software radios, OpenGL work (recently doing some intense linear algebra using shaders), etc, etc. I jokingly call myself a full-full-stack engineer: I can design circuit boards and write a web app to talk to them. It's kind of a TTT model. I've got enough experience under my belt (and did both EE and CS in school) that there's a few areas that I'm quite excellent at, and I've written code in enough programming languages that picking up a new one for a project isn't really a big deal anymore. Edit: Another thing that ends up happening when you get to a point like this is that ideas start inter-breeding. You have a client ask you about some mobile app that they've been thinking of, and you realize that there's a pretty straightforward image processing or DSP algorithm to do what they're asking about, as an example.
- theseatoms 11y agoI'm curious if Python specialists typically command the same market power. From what I understand, Python's broad set of available libraries and APIs make it somewhat more suitable for use by generalists.
- je42 11y agoT-Shape knowledge is the buzz word.:)
- beat 11y agoAnother specialist/generalist vector I've encountered... at a lot of startups, they're looking for a "full stack developer" (generalist). Which is fine when staff is limited. But when you're a big company and you have a product that costs a thousand dollars a minute when it's offline and the database crashes, who do you want looking at the database... the girl who's lived and breathed nothing but Oracle for the past 15 years, or that full stack dude?
- dpweb 11y agoShort answer - between the two - specialize is superior. If money matters to you - its easy to figure - hrs x price. Your price generally is higher if you specialize. Best thing is to be a rare bird - expert in something very valuable that few people can do. You can eat good just doing basic web dev (for the time being at least), but if you're very ambitious - to really outperform - you'll want to be more special than that.