10 ms·
It depends so much on what you're building. If you're doing _groundbreaking_ research in, say, AI or facial recognition or whatever, you may need people who ar
by twobyfour 9y ago
It depends so much on what you're building. If you're doing _groundbreaking_ research in, say, AI or facial recognition or whatever, you may need people who are technical superstars.
If you're building the average CRUD-plus-workflow application, the last thing you want are superstars who are going to get bored with routine work. Then they'll go off over-engineering some minor feature or spending weeks at a time inventing some algorithm you don't need instead of building the product you do need - just to keep themselves from going stir crazy.
What you really want are people who are technically not outstanding but quite capable and have very strong soft skills. People who can work well as part of a team; people who mentor and learn well; people who follow through on their tasks; people who not only can, but want to understand your product and business so they can make small decisions independently and well as they work; people who are good at prioritizing their own work; people who are good at identifying risk and knowing when it's worth the time to address; people who are good at communicating with both teammates and management.
Although you might argue that people with several or all these qualities are rare enough to be superstars in their own way, they're not superstars in the sense often discussed in forums like HN.
- pyrophane 9y agoAh, but if you are doing groundbreaking AI research, you need AI experts. You will also need developers, but those developers may not actually need to be superstars.
- nur0n 9y agoI think 'groundbreaking AI' was used as an example of something which is (1) new and (2) requires efficient use of hardware. Of course you will need domain experts. But if the new idea requires infrastructure which has not been built and places high demands on the machine, then the project will require above average developers.
- cbsmith 9y agoIt sure helps if they are though.
- alexasmyths 9y agoYes, the AI example was not very good. In Montreal, we have tons of AI people here - their code is sometimes a nightmare. They are AI guys, 'code' to them is like 'mathlab'. Fortunately, it's surprisingly not a lot of code. But the general point stands: it depends what you're doing. Developing frameworks is a good example: you generally want experienced people who have 'seen it, done it, been there' and have the 'wisdom' of that - plus - hopefully, an ability to actually 'get stuff done'. Doing 'new' is hard. But 'in general' I think the post makes sense: 95% of companies need 'professional, thoughtful, collaborators' who can take mildly complex problems, write clean, safe, simple code, document, test, release and move on ...
- corporateslave3 9y agoIn other words, you want an office drone with minimal intellectual curiosity who is docile, does what they are told, and works well with others.
- bankboross 9y agoThat doesn't seem to be what they are saying.
- aerovistae 9y agoSpeaking as an office drone who is docile and does what he's told and has minimum intellectual curiosity with regards to the software he's tasked with building, I don't get much done compared to the superstars around here who can put out 3000 lines of code a week, building out entire new features and workflows from scratch with beautiful, clean, well-organized code. I disagree with the suggestion that superstars (a.k.a. extremely productive and capable coders) do poorly on ordinary work.
- paulddraper 9y ago> minimal intellectual curiosity I didn't see that specified. > docile Yes. > does what they are told Yes. > works well with others Yes.
- s73ver_ 9y agoThe rest of your point aside, no matter what you're doing, "Works well with others" should always be high on the list. No one wants to work with an asshole.
- crdoconnor 9y ago>If you're building the average CRUD-plus-workflow application, the last thing you want are superstars who are going to get bored with routine work. Even the average CRUD plus workflow application is only really routine & repetitive if you're using suboptimal tools. If you're good, you're good at choosing the optimal tools and automating all the tedious stuff. In large companies, managers would rather have a mediocre team of six doing this type of thing than a stellar team of two even though it costs more. This is mainly because they're aiming to optimize their headcount rather than company profit. In small companies, most managers are simply stingy, and feel affronted by paying over 'average' for something like that. In both cases, measuring actual software developer productivity is pretty much beyond every manager who cannot code (which is most) so it isn't hard to justify this suboptimal behavior either to themselves or others. >What you really want are people who are technically not outstanding but quite capable and have very strong soft skills. No, not really. Soft skills are vital for team lead and product management but being able to write a good email and butter up your superiors isn't too important for other developers. That is, unless you're using soft skills as a proxy for "writes clear, maintainable, easy to read code". >people who are good at prioritizing their own work; This is a product manager's job and if you're pushing that job onto developers then it's almost guaranteed to interfere with their other work and to be done poorly. It's a bad idea to ask them to do your accounts and file lawsuits too.
- nradov 9y agoYou're describing an idealized theoretical team organization model with strict separation between the engineering manager, product manager, and developer roles. In the real world with highly productive teams those roles tend to blur together. In order to produce actual business value — not just churn out code to spec — developers absolutely need to be able to communicate clearly, empathize with customers, and collaborate with colleagues.
- crdoconnor 9y agoIt's a sad state of affairs if you consider it "idealized" to be able to focus on your job and rely on others to do theirs. Yes, in the real world you sometimes have to work with poor product managers who have little empathy with customers, who deliver unclear specs and vague priorities. That doesn't mean a good developer is somebody who can handle the parts of their job that they failed at. "Communicating clearly" is important, but when developers fail, they usually fail at writing clear, functioning code, not explaining why they did something to others in a conference room.
- watwut 9y agoI would rephrase it to: you need people great in tasks that you actually needs them to do. Great technical star probably don't know AI algorithms and may ressent having to implement math based routins with little tech knowledge being needed. Someone who is great in algorithms might not be best for tasks heavy on configuration. Someone who constantly seeks new might have trouble to perform routine tasks. Great under pressure performer might fail in "as much time as you need" situation (and vice versa).
- GVIrish 9y ago> It depends so much on what you're building. If you're doing _groundbreaking_ research in, say, AI or facial recognition or whatever, you may need people who are technical superstars. I think this is true for high risk, cutting edge tech, the problem is that A LOT of companies think what they're doing meets that definition when it really doesn't. They think their NoSQL datastore with 10 million records and a single page frontend is the like putting someone on the moon. And really maybe the point of the article is more that we should reconsider what makes one a superstar. Raw technical ability is one component, but communication, and teamwork are other very important components. It's like in basketball, someone may be an elite 1v1 player, but someone who is a great passer, defender, and leader is probably more valuable to a team.
- wmccullough 9y ago>A LOT of companies think what they're doing meets that definition when it really doesn't. Can you back that up with data? The majority of companies in the US have zero problems hiring developers who aren't rockstars even when their business model is unique for their industry. My evidence is the disproportionate number of questions from developers on Stackoverflow asking things that they would know if they had a decent amount of mastery in their field.
- GVIrish 9y agoI'm saying most companies that think they're doing something groundbreaking that requires one-of-a-kind talent are wrong. These are the companies that put out silly job ads about how they're looking for ninjas/rockstars/geniuses and they only hire the best of the best in the field. Then they want candidates to jump through their ridiculous interview hoops.
- chrisco255 9y agoHonestly I think this is just a symptom of over optimism on any company's part. This is sort of like how everyone thinks they're better than average at driving. All companies want to believe they are better than average at hiring. They also "choose the best" when, really they're just choosing the best from their limited talent pool.
- smdz 9y ago> If you're doing _groundbreaking_ research in, say, AI or facial recognition or whatever, you may need people who are technical superstars. No - AI and ML stuff does not need technical superstars (i.e. from a programming perspective). Usually it is a rinse-test-repeat kind of job. It needs people with patience and who can interpret data and who can be comfortable with uncertainty and then can make their bosses comfortable with uncertainty on timelines. In most of the other cases, hiring superstar developers help you save costs in the longer run. It helps product (or SaaS) companies. But for consulting biz that means less of the recurring consulting work. Superstar developers cost higher - means more work in fetching some consulting work. Consulting/service businesses will rarely value superstar developers. Because it does not help the topline as much.
- santaclaus 9y ago> If you're doing _groundbreaking_ research I think research is the key word here. If you are developing fundamentally new ML techniques (like the folks at Google), you'll probably need some serious technical chops. > Usually it is a rinse-test-repeat kind of job. It needs people with patience and who can interpret data and who can be comfortable with uncertainty and then can make their bosses comfortable with uncertainty on timelines. That sounds less like research and more like applying established tools (Tensor Flow or Keras or whatever).
- maxxxxx 9y ago"That sounds less like research and more like applying established tools (Tensor Flow or Keras or whatever). " This is what most AI, ML and data science people do from my experience. It's really not that groundbreaking.
- hobofan 9y ago> If you are developing fundamentally new ML techniques (like the folks at Google) Nope, still no superstars needed. The most technically challenging thing they've built is probably is what they are doing with the TPUs, but even there you "just" need people expierienced in the right fields. Most groundbraking research stuff these days is mostly on the mathematical side, not the implementation.