Re: An Interesting Article in IEEE Spectrum not entirely irrelevant...
I have read that article, and while the points are basically correct, I find them rather simple. Basically, they point out that it isn't easy to identify or prove who is the absolute best at what they do, if there is such a big distinction in the first place, and that you can't guarantee to keep them. Therefore, you must not assume that you will always be able to find and attract some and must plan for more normal levels of productivity and skill. Most businesses already know this because they don't always find and hire people who are perfect at generating code or whatever else they're generating, as much as they might want to. Most aren't even trying, because all the very knowledgeable programmers I know are uninterested in going to work for the kind of company that builds the necessary but boring applications that are most common; there's no way for them to use their unusual knowledge in a place like that and that's what they enjoy.
Other than that, though, the article seems to run out of ideas. I would think that the most important element is how to improve individual productivity if it matters so much, but that's not mentioned. Team performance is great, but there are a lot of tasks in programming, and I'm sticking with programming not because it's the only job where this applies but because it's what the article talked about and what I know, that are not easily parallelizeable. The article is wrong about this, claiming that:
Everyone uses the same software delivery pipeline. If it takes the slowest engineer at your company five hours to ship a single line of code, it’s going to take the fastest engineer at your company five hours to ship a single line of code. The time spent writing code is typically dwarfed by the time spent on every other part of the software development lifecycle.
No, if the slowest engineer takes that long, then they'll produce less code. Maybe they'll turn out to be great reviewers, testers, organizers, or maybe they're just dead weight. The fastest engineer will produce code faster, and as long as the simplest amount of separation has been put in place, they'll be able to do that without waiting on the slowest engineer because the two bits they're writing should be independent of or compatible with one another. You often can't speed up development of a small module by having three people write it, but you can speed up development of three modules by having one person write each of them as long as you can be pretty sure that the modules can be written without coordination. If they don't recognize that, they may be arguing against looking for 10x engineers for a bad reason, "they aren't useful", rather than the many correct ones, only some of which they mention.