Agree -- also one of the most under-rated skills is someone who keeps up to date on all the latest frameworks / libraries, etc. More often than not, you're building something that solves a unique problem and you do that by stitching together pieces of other people's engineering.
I would argue that this presents several sub-skills:
Being able to do this quickly b/c you don't have to spend the time learning
Being able to do this effectively -- by not painting yourself into a corner b/c you well versed in best practices and anti-patterns with using said 3rd party technology
Being able to do this smartly -- because you are well-versed in a lot of the different options, you can effectively way their pros/cons, and make smart decisions on which 3rd party stuff to use, and when to build vs. buy
I think these skills are more effective (towards your end goal) than simply being able to quickly code some brilliant labyrinth of an algorithm in less SLOC than a 1 or 2-xer. I feel like the emphasis is always put on the latter, and these skills are overlooked.
Combine these with effective communication, and then you are talking about someone who can get things done.
I think you came close to the biggest differentiator: adaptability. Great programmers can dive into a new technology and use their past experience to quickly gain competency in it. If I hand node.js to a great programmer, I expect that he/she will be able to start being productive with it in just a day or two. Lesser programmers struggle to apply their past experience to that new paradigm. It takes months for them to truly get comfortable.
That type of agility is hugely helpful in an organization.
Communication/Collaboration & ability to write elegant code are pretty symbiotic but I'd generally say it's harder to find someone who can elegantly design/code a system than it is to find people to talk about it(Reqs, specs etc).
Smaller teams means more of the communication takes place in the 10x programmer's head rather than in multiple meetings between 1x programmers. A team of 3 10X programmers should be more efficient than 30 1x programmers simply because communication will be more efficient.
Hah, my own anecdotal evidence has been in favor of smaller teams for the communications reason you cite. Probably a bit of a bad analogy but it made me think of 3 Unix processes vs 30. Way harder to manage IPC between 30 processes as opposed to 3.
Here's what McConnell writes on the topic, in chapter 30 of "Making Software." (The rest of this comment comes from McConnell.)
Some people have objected to the "10x" label, making an argument like "We had a super programmer on our team once. He was so obnoxious he alienated the whole team, and overall productivity was actually better without him.
In general, any practical definition of a real 10x programmer has to include the effect the programmer has on the rest of the team. I have known super programmers who were obnoxious. More often, a supposed super programmer with an obnoxious personality was really an average programmer, or worse than average, using an obnoxious personality to hide a lack of performance. The true super programmers I've worked with have generally also been cooperative team players, although of course there are always exceptions."
Great response. It's hard to get any real work done when you have to constantly context switch between different things. Ed didn't know that he'd have to waste 3 hours of his time. It was only supposed to take 10 minutes after all.
I've often had people ask me how I could context switch all the time like I did and stay sane and a bit productive. I usually reply this: "I might be a bit rusty but I can still dual task". It's generally enough for them to realize that they are asking me to do something that they would never accept to do themselves. They might not know the first thing about computer science, project management or actual IT work, but at least they understand that they're doing something wrong when they see me multitask only because of the additional work they give me.
Call that passive-aggressivity, social engineering or mind games, I call it just a game. Multitasking at work is tons of fun when you've practiced enough to recognize and leave all error-prone activities out of the picture. And it's very good to make people double-check their problem before they come bother you, even though you're behaving like an open and helpful guy all the time.
I had something similar happen to me earlier in the week. The conversation went something like this:
Boss: Hey, we've got an urgent production issue that needs to be looked at. I'm getting some heat on this one and I need someone to diagnose it to see if it's a blocker for our release.
Me: Would you be able to ask X and Y to investigate? It seems they are on the support rotation for production issues. It'll take me at least an hour to clean up what I'm doing and switch over to run the old production instance locally.
Boss: It's urgent, I think you need to drop whatever you're doing and look at this.
Me: OK, sure.
(50 minutes later, as I'm almost done building the old production instance)
...
X and Y come back from a meeting.
Boss: I'll have X and Y look at this, you can go back to working on your stories for this sprint.
One of the advantages of doing eXtreme Programming with lots of pair programming is that we eventually setup machines to be assigned to certain branches. Costs more computers, but is more productive. The best thing ofcourse is to reduce that buildtime, but not a whole lot you can do there.
Either the article is completely wrong about GPA or I must be an outlier. I barely had a 3.0 in college and got multiple internships at "Major" companies.
Very interesting - which companies/school, if I may ask?
I think if you've done extraordinary things outside classes (great internships, awesome research, major open source contributions or own projects), you don't need a great GPA to stand out. But for most students graduating today, that's not the case.
Same here. I currently have a 3.2, but before last semester, it was a 3.1 (I'm done with 6 of 8 semesters). I had a internship with Amazon this summer, and they invited me back for this winter/summer (8 month coop). Before that, I was at Philips medical. I know a classmate that also has a 3.0/3.1 and had an internship with Google this summer.
I don't go to a extremely highly ranked school either.
Just reread the article, and I'm going to call nonsense on the GPA part again. From my exp, if you have a >3.0 you're good to go, as long as you know your technical stuff. The only co I have ever had a problem with is NVIDIA, which explicitly required >3.5.
'Last fall, Senator Mitch McConnell said that if Buffett was feeling “guilty” about paying too little in taxes, he should “send in a check.”'
'So, Buffett has pledged to match one for one all such voluntary contributions made by Republican members of Congress. “And, I’ll even go three for one for McConnell.” That could be quite a bill if McConnell takes the challenge; after all, the Senator is worth at least $10 million. As Buffett put it to me: “I’m not worried.”'
In some sense yes : If you know the starting conditions, one could just crank it through to the outcomes (assuming the strongest form of their result). OTOH, one can't measure everything, since you'd be collapsing wavefunctions everywhere - changing the state of the universe as you go.
Apparently Jean-Louis was one of the few people that stood up to Steve in Europe when he visited back in the 80s, and this earned him Steve's respect. Back then, Jean-Louis was in charge of Apple France and didn't cave to setting Steve's unrealistic sales forecasts for the Macintosh.
Later on, Sculley (then CEO of Apple) chose Jean-Louis to replace Steve as head of the Macintosh division (which the Lisa team was folded into). Steve would later reflect on Jean-Louis as a "terrible" bozo--probably because he thought he was betrayed by him.
One thing I did notice about Steve from reading Isaacson's book is that he categorized people into two camps. They were either bozos or heroes, and nothing in between. Either an idea was the most amazing thing ever, or it was utterly shit.
* Pay attention to fees. Avoid actively managed funds.