The programmer who can do ten things at once is not a legend

The programmer who can do ten things at once is not a legend

[[129585]]

Last night, I posted the following:

“Some people talk about so-called “10x” or “super” programmers being myths. But are famous athletes, artists, writers, and, uh, rock stars myths?

— Yevgeniy Brikman (@brikis98) September 29, 2013”

I received a lot of replies and questions, but Weibo is not suitable for discussing issues, so I wrote this blog to further discuss it.

There are already a lot of articles claiming that 10x programmers don't exist. The opposing viewpoints generally fall into three categories:

The original 10x number came from a study (Sackman, Erikson, and Grant (1968)) and was not very convincing.

Productivity is a fuzzy concept that is difficult to measure, so we shouldn’t claim metrics such as 10x.

Individual talents do vary, but one programmer cannot be 10 times more capable than another.

I disagree with the above views. Let me look at these arguments one by one.

[Translator's note]: The term 10x programmer (the 10x effect comes from an interesting observation: the productivity of great programmers is not just 15-20% higher than that of ordinary programmers, but is likely to be 10 times or more) originally came from www.forbes.com and www.tempobook.com

There is more than one study of 10x programmers

While the academic experts in armchairs on Twitter and Hacker News love to refute their peers’ research findings, the evidence for 10x programmers is quite compelling and is not limited to a single study. Allow me to quote the top-voted answer from StackOverflow:

"The original study by Sackman, Erikson, and Grant in 1968 found huge differences in programmer productivity. They studied professional programmers with an average of seven years of experience and found that the ratio between the best and worst programmers in terms of first-time code time was about 20 to 1; debugging time was about 25 to 1; program size was about 5 to 1; and program execution speed was about 10 to 1. They also found no relationship between programmer experience and code quality.

A detailed examination of their findings reveals some methodological flaws. . . However, even with these flaws taken into account, their data still shows a gap of more than 10 times between the best and worst programmers.

In the years following the original study, the finding of “multiple orders of magnitude differences in programmer performance” was confirmed by many other studies of professional programmers (Curtis 1981, Mills 1983, DeMarco and Lister 1985, Curtis et al. 1986, Card 1987, Boehm and Papaccio 1988, Valett and McGarry 1989, Boehm et al. 2000)…”

You can read more here and here.

Even if you can’t measure it, you can still infer it

Even if you ignore the above studies and claim that "programming productivity" is hard to measure - that means we can still talk about 10x programmers. Just because something is hard to measure doesn't mean we can't measure it.

For example, how did you choose the programming language for your most recent project? Did you search for studies proving that one language is more efficient than another? Personally, I don't need to empirically prove that Ruby is many times more efficient than C for building websites. You can throw out some rough criteria (availability of libraries, community support, documentation, etc.), but the reality is that most people choose a language based on intuitive reasoning, not double-blind studies. Despite the lack of data, I'd bet that choosing Ruby over C for website development will prove to be the right decision most of the time.

Of course, programming is not unique: what metric would determine whether one writer, artist, teacher, or philosopher is better than another? I can't give you a "productivity metric" that says Shakespeare, Nabokov, or Orwell are several times better than the average writer, just by observation, but most people would agree that they are.

Programming is not manual labor

The biggest problem with 10x programmers is that some people think programming is just manual labor and programmers are just assembly line workers. Some programmers may be better than others, but one programmer cannot consistently solve 10 times more problems than another. A team of 10 will always outperform one programmer! Nine women cannot give birth to a baby in a month!

The above logic makes it sound like programming efficiency equals typing speed; as if 10x programmers simply produce 10 times more code than average programmers. This reasoning ignores the fact that programming is a creative profession, not a manual labor. There are many, many ways to solve the same problem. Think more like criminal investigation-level reasoning rather than simple infantile reasoning: 10 average detectives versus one Sherlock. Who can solve the case faster?

A 10x programmer has problem-solving skills and insights that a normal programmer can't; they will avoid all the problems that a normal programmer would spend a lot of time on. Ten engineers who write bad code are definitely not as good as one programmer who writes good code.

Programming is a choice

Think about how many decisions go into building a piece of software, like a website: What language do you use? What architecture do you use? What do you use to store data? What do you use for caching? Where do you host the site? How do you monitor it? How do you push new changes? How do you store your code? What automated tests do you need to set up?

10 average programmers can make "average" decisions at each stage, and the costs or benefits of these decisions will be multiplied. Imagine that traffic grows exponentially, but this average team builds an average website, with difficult to partition data storage, insufficiently redundant hosting, no version control with proper backups, no continuous integration environment, and no monitoring. How effective can these 10 programmers be if they spend all their time putting out fires everywhere?

If a programmer can model the problem in a way that reduces the amount of work by a factor of two, then that one programmer outperforms a team of 10. From my years of experience, a great programmer knows that the mistakes that are more expensive to fix after the fact. By making a good decision up front, a 10x programmer can avoid months of work.

Programming is not about writing more code; it’s about writing the right code. Becoming a 10x programmer is not about doing twice as much work, it’s about making better decisions more often.

This isn’t to say that 10x programmers never make mistakes; it’s that programmers make many choices every day, and great programmers make the right choices more often than average programmers.

And this doesn't just refer to programming. Would you rather have 10 average scientists or Newton? 10 average scientists didn't come up with the three laws of motion, gravity, binomial series, calculus, etc.; one Newton did that. Would you rather have one Michael Jordan or 10 average players on your team? (Note: Jordan makes 10 times the average NBA player)? Would you rather have Steve Jobs or Elon Musk running your company or handing the keys to 10 average entrepreneurs?

10x programmers are very rare

It's important to take the long view. Star programmers, athletes, writers, and scientists are extremely rare. I don't recommend a hiring system that only hires these "rock stars"; it will just look stupid and lonely. Don't let the best be your enemy: hire the best engineers you can find, and give them the opportunity to get better and better.

However, don't fall into the fallacy that all programmers are created equal. There is a huge spectrum of ability in any creative profession. At one end are the types of employees who can destroy an organization, adding technical debt with every line of code they write. At the other end are those who can write any possible code and are many times better than the average person.

<<:  Would you like to exchange your Android phone for an Apple phone?

>>:  With an annual profit of over 900 million, Jiuyou launched the platform 2.0 strategy

Recommend

How to write social media content to attract users!

  Why is the reading volume of content posted on W...

After being abducted for 53 years, she almost saw her mother - but she died

On August 18, the Miami Seaquarium in the United ...

The underlying logic of Douyin e-commerce product selection

Anyone who has worked in e-commerce may have hear...

How should companies promote on Xiaohongshu?

Recently, especially in the past one or two years...

Android: Imitate WeChat source code

Source code introduction: Test account: 123456888...

What is the Winter Olympics weather service? | 50 days to go

December 16, 2021 "50 Days Countdown to Wint...

The most comprehensive guide to B station information flow advertising is online

BillBill is abbreviated as Bilibili . As the plat...