The 10x efficient developer is dying

4ca69aa76b948b9a24223a5378757a16.gif

[Editor's Note] This article is the author's critique and reflection on the concept of a 10x efficient developer. The authors argue that this concept is based on faulty assumptions and measurement methods, leading to undesirable outcomes such as an over-reliance on individual heroism, neglect of teamwork, and a lack of focus on software quality and maintainability. The author puts forward some alternative views and suggestions, such as valuing the principles and practices of software engineering, cultivating team trust and collaboration, and using more reasonable evaluation criteria and tools. The author predicts that as the software industry grows and changes, the myth of the 10x developer will fade away and be replaced by more professional and balanced developers.

Original link: https://blog.testdouble.com/posts/2023-07-12-the-looming-demise-of-the-10x-developer//

Do not redistribute without permission!

Author | Justin Searls Translator |

Editor in charge | Xia Meng

Listing | CSDN (ID: CSDNnews)

Recently, I was very excited to introduce the Sorbet type checker to the Mocktail project, which will greatly improve the development efficiency of Ruby programmers.

However, the expected goal has not yet been achieved.

I've made 150 code commits so far, and there are still many issues to be ironed out before the project can be released. This is a daunting task. I not only need to invest a lot of time to learn Sorbet, but also face various edge cases and hard-to-locate bugs, some are problems with the type system itself, and some are code problems revealed by the type system. I'm doing something innovative, so I alternate between excitement and fear.

In addition to my current exploration, there is a deeper question worthy of all of us programmers to think about, that is: " Why do I always demand too much of myself ?"

4afd300faac388675f0cae7df93d2eb9.png

what makes me different

I am a person who loves programming.

I often run into some tough problems that keep me up at night trying to find a solution. Every morning, I wake up with a new idea. I don't get enough sleep, and even when I'm asleep, I'm thinking things through my head. This makes me unable to balance life and work. In the end, I found myself only getting 20% ​​of my work done, and I was stuck in this cycle every day, and the time just passed by. Until one day, my desire to solve the problem outweighed my guilt about ignoring other things, and I began to rush to find the answer. When I was about to break through, the pressure I put on myself was like a "life or death" deadline set by a demanding boss.

Then, at 4pm on an ordinary Sunday, the job was finally done.

Sometimes people are interested in what he does, but usually they aren't, not even himself.

I'll spend some time sorting through the mail, tidying up the room, and shaving. Then, I move on to the next self-scheduled, repetitive task.

My life pattern has remained largely unchanged since I was 13 years old. I can definitely say that I have been busy with various sub-tasks, implementing innovative ideas, but maintaining a healthy personal life and a sustainable work life has been difficult.

When I worked as a consultant at Crowe, I did 2,100 hours of consulting work for clients in one year, which equated to over 40 hours a week without a break throughout the year, and that didn't include travel time. This does not include travel time and approximately 6 hours of administrative work per week. Even so, I spent evenings and weekends trying to develop an Apple application using the bug-ridden, poorly documented initial iPhone SDK. This app is the native client for the vBulletin web forum, and while I know nothing about the underlying technology, I put my heart and soul into perfecting it. Did I get enough rest that year? I have already forgotten. Memories of that year have also become blurred.

In the end, my app was rejected by Apple because there may be a risk of users posting indecent content or pictures. It's a pity, but it's not a big deal, I can develop other products.

I don't know what vocabulary to use to describe my above behavior objectively without involving too much value judgment. perfectionist? Zealot? Enthusiast? Whatever we call this urge, it's not exactly a good thing, but it has brought me some negative effects. However, this is also a reflection of my choice to actively seek solutions rather than passively repress or change when faced with my own characteristics and character flaws.

Other examples:

  • When I'm under stress, I'm constantly thinking. I regain some control by creating a stress response associated with the project I'm building, which forces my brain to think deeply about work that benefits me. This is a way to not only mask my unproductive, irrational worries on a daily basis, but also to increase productivity and generate more beneficial thinking by harnessing the stress response. During this time, even when I'm away from the keyboard, I can still generate productive thinking almost as efficiently as if I were working directly at the keyboard.

  • My hearing is not good, especially in groups and noisy environments, my hearing performance is even worse. (One reason I always blah blah blah is because I feel safer leading the conversation than risking possibly offending someone by misinterpreting their words.) Like participating in the fill-in-the-blank game, I often feel like I need to know some background knowledge to understand what someone is saying. Over the years, I've turned this "fill in the blank" technique into a source of innovation and humor. Most of my puns and wordplay actually stem from surprise discoveries I made while filling in the gaps in my listening comprehension. My most innovative ideas often come when I misinterpret what other people are saying and later discover that they are actually discussing something else.

  • I'm very weak in studies - lack of interest, easily distracted, good at refuting. I have never liked studying, try to avoid learning. Whenever I'm trying to make sense of something, at the slightest sign of discomfort, I'll cling to whatever gives me a moment's escape. When I do start to make progress, I tend to find myself taking issue with some of the premises, or trying to challenge and prove the author wrong. However, once I really master a certain knowledge point, I will use it proficiently. That means I research every detail thoroughly to avoid all pitfalls. Professionally, this apparent weakness became my superpower. Since I am used to learning everything the hard way, it makes me a natural advisor and mentor. Because I've explored all the wrong paths, I can usually foresee them before they get stuck, understand why they strayed from the right path, and guide them on how to get back on the right track.

The reason I chose this topic today is not because any of the above points make me special. In fact, such contradictions are common among programmers born before 1990, and have even become a norm.

de3a8e76e117279cdf556bb31a936f95.png

A Unique Era of Programmers

What I just described reminds me of characters from The Big Bang Theory or Silicon Valley. I admit the truth: in my best moments, I'm more of a stereotyped, overcrafted character. For decades, we've associated a host of negative traits with programmers, as if the connection was intrinsic and inescapable. I always thought this stereotype was nonsense—anyone can learn to code and be good at it—but now I'm starting to realize that it might as well be a product of the times we live in.

In other words, I've come to believe that the era of the independently-learned, technology-obsessed, distinctive programmer is drawing to a close .

So, why do I have such thoughts? Because at a specific, generational moment, there was a group of people who were drawn into the software industry, and I was one of them. This moment occurred during the short transition period between the widespread popularization of home computers and the closure of major platforms. In this interim stage of information technology maturity, computers are accessible and explorable. Just using a computer requires understanding a lot of how it works before it becomes a consumer device that can't be easily disassembled. Growing up in understanding how computers work makes programming easier to master. Thanks to a few lucky coincidences, and the marketing tactics of companies like RadioShack, society has inadvertently handed over an opportunity for social mobility to boys in upper-middle-class America, who prefer the company of their computers to the outdoors with their peers. I am one of them, and I have also met many programmers who have had similar experiences with me.

However, programmers have not always been like this. I remember asking a computer science professor about gender disparities at our school in 2003 (we had only one woman in my class, who later switched majors), and he recalled that in 1990 and before the rise of the hacker and gamer subculture, my university had a large number of female students in computer science. Nationally, female computer science enrollment doubled to a peak of 37.1 percent in 1984, before declining precipitously.

We have reason to believe that the image of the programmer is not static, because there is a lot of evidence that the next generation of professional programmers will no longer consist of only programming enthusiasts. People who develop software today differ significantly from their predecessors. What I'm trying to say is that the software industry pays well: it's turned programming from a middle-class job that only appealed to those who really love computers to a comfortable upper-middle-class career that can appeal to anyone who wants to secure their own financial future. Think about how many people who have changed careers in the past decade have been advised to "learn to program". Countless people have chosen this industry simply because programming is a relatively stable, high-paying career. (Of course, there's nothing wrong with that!)

02150931a51da3f2a4c82b7f657cc54c.png

The Brewing of Intergenerational Conflict

While I'm not sure anyone would say "OK Boomer" to my parents, I can imagine that such a title might not make them uncomfortable.

Likewise, I'm not sure if anyone has a specific title for my generation, but I believe enough discontent has built up in society that someone might even have coined a catchy title on TikTok.

Many in my peer circle still consider themselves social outsiders, having grown up with CRT TVs in their parents' basements. But I speculate that the next generation will see a seemingly homogeneous group of fortysomethings in hoodies and sandals (plus socks!) deftly taking control of the software industry in its mature economy.

Think about this change, and you might start to think of those older programmers as the Enthusiast Generation, because they were in a unique starting environment that is unlikely to be replicated. Once I introduced the concept of "generational," it became more understandable to see many of the controversial issues that have arisen in the past decade through the lens of intergenerational conflict. As with any discussion of generations, it is important to note that the boundaries are not clear, that there are many exceptions, and that many observations will be localized to specific geographies and cultures (such as the United States and perhaps Canada). Categorizing people into different generations can only give us a new way of looking at changes in populations, which requires a time span long enough to see the accumulation of gradual changes over decades.

For the sake of examples, I will highlight three high-profile conflicts and explain them through the lens of generational change.

Passion

I remember about 8 years ago, the word "passion" was all the rage. This makes me a little uncomfortable. But in fact, almost anything can cause me to feel dissatisfied.

I remember thinking, "Banning the word 'passion' just leads people to choose other words like 'self-driven', 'highly motivated' and 'aspirational'." I remember asking myself, "Should we be screening candidates who see programming as a hobby outside of work?" Maybe someone else on the team will offer to work overtime without being asked. Perhaps so-called "unlimited" time off is a hindrance to advancement opportunities. Maybe networking requires a cutting-edge perspective on lunchtime discussions of Emacs and Vim, mechanical keyboard switches, or whatever the topic is on the front page of Hacker News. That sounds like a pretty painful existence, especially if programming isn't what motivates you to get out of bed every morning.

If we take into account the possibility that we are going through a generational change, then arguing over the question of "passion" will prove that the assumption that most programmers will always be passionate about programming is wrong, and the opposite is true.

Craftsmanship

This reminds me of another controversial word - "ingenuity". I witnessed its origins first-hand as a reaction to the downplaying of the technical aspects of the agile software movement in the late 2000s in favor of more profitable soft skills training and consulting services. In case you missed it, most of the topics related to ingenuity can be summarized under the "Slow Code" movement (a movement that promotes slowing down in software development and focusing on quality and maintainability). There is a lot of talk about "think before you run", establishing apprenticeship programs to train new programmers, and utilizing automated testing for various non-testing purposes.

I have been an active member of this community, speaking at conferences many times, putting my name on the manifesto, and always encouraging software quality improvements to anyone who will listen.

In retrospect, however, the purpose of the ingenuity movement was not only to reinvigorate the great engineering insights that came with agile methods such as Extreme Programming, it was also a response to a rapidly proliferating generation of programmers who didn't care as much about code quality as we do. There is an opinion that serious programmers are under threat and cannot be compared in numbers with less serious programmers. If your team doesn't have tight control over what's in the codebase, you'll be mired in complexity, unable to cope with long build times, and yet again faced with yet another legacy system.

If we look at this point of tension as another manifestation of the generational shift we're going through, the problem becomes even more apparent: "what kind of code do you allow in your codebase" can easily be confused with "who do you give authority over your codebase".

There are so many terms like "test-driven design" that even routine conversations are full of rhetorical traps. The emphasis on apprenticeships also has some underexplored assumptions: it means that there is only one "right way" to program, that our generation has uniquely found it, and that the only way to learn it is by imitating those who came before us. I've seen a lot of talk about treating software development as a profession, just as we do with plumbers, electricians, and professionally certified engineers, licensing programmers. Everyone doesn't want to write bad software, but if you follow the instructions in this movement, you can't write code.

10x developer

Before you start making your point, I know you probably already have an opinion about the so-called "10x" developers. Maybe you've read some articles, like this one, that one, or others. This term refers to those mysterious developers who are believed to be able to produce as much as ten other programmers. However, for "10 times" developers, there is no clear definition of which aspects of output and which ten programmers refer to.

The concept of "10x" existed long before we talked about modern programmers. It seems to stem from an unreliable study, conducted in 1968, that concluded that among experienced programmers, the best were ten times more productive (relative to the average) than the worst. We remember it because it was referenced in Fred Brooks' seminal book, The Mythical Man-Month.

It's a fact of life that some people are better at their jobs than others. At least until the 2010s, this was undisputed. However, as the concept became debated, especially from those associated with venture capital, who argued that entrepreneurs should "only hire 10x as many developers," it sparked heated discussions among industry figures.

In response, many felt that those who held this formulation were choosing an odd argument and claiming that "10x developers don't exist". This sparked even more counter-criticism, as most people could cite examples of people whose work was worth a tenth of their own. As time went on, the conversation stalled, with clear battle lines dividing supporters from critics. On the one hand, supporters argue that many well-paid programmers are not necessarily very good, but some of them are worth far more than the typical salary range (this is also the "unfair salary" that Google used to be proud of). Critics, on the other hand, tend to blame all the negative stereotypes about programmers on these so-called super-productive developers, implying that the high output of 10x developers often comes with hard-to-measure organizational and technical costs.

Looking back, however, the outcome could have been very different if we had viewed this debate as a manifestation of intergenerational conflict.

Frankly, based on my experience, I do believe that some programmers are at least an order of magnitude better at programming than others. I've worked with programmers who could solve problems in minutes that took me days or even weeks to solve. I've personally witnessed a single programmer build in one day what an entire team would have taken two weeks to complete, without any antisocial, unsustainable side effects. In fact, on the contrary, I have experienced programmers who have not made any progress or made any progress for days, weeks or even months, and they finally look for ways to save face.

While it might be uncomfortable to admit this, it's not entirely unreasonable to speculate that, in general, amateur programmers who are passionate about programming may outperform professional programmers who put down their keyboards after get off work every day.

In my experience, the following qualities distinguish the two:

  1. Insatiable: Willingness to spend more time practicing programming, rather than just being forced to work long hours, is an intrinsically motivated voluntary act that often makes a person a better programmer.

  2. Perseverance: Having boundless curiosity and relentless tenacity in the pursuit of answers, whether it's spelunk open source code stack traces in their job descriptions or debugging other teams' code, this pursuit leads to better information and faster progress.

  3. The golden mean: Take pride in the quality of your work and strive for excellence, but don't fall into the trap of perfectionism and find the right compromises where necessary to produce better, easier-to-maintain software.

In the context of this intergenerational rift, the characteristics of the above three points are not only reflected in the model of the previous generation, but also have wider applicability. These traits are found in people who program in their spare time, who are obsessed with not giving up on difficult problems, and who are personally invested in the quality of their work product.

I can't imagine that this dynamic would be enjoyable for members of a new generation who don't want to spend more than 40 hours a week in front of a computer, who have important family commitments, or who don't want to think about refactoring technology asynchronously while getting chores done. They will always be surpassed by more enthusiastic colleagues, and for these colleagues, "programmer" is not just a status, but a profession. I don't have an answer.

It's an uncomfortable conversation because it reveals an uncomfortable reality.

b2b8bde1af67b37305c1442191fd20f3.png

Strategies to deal with this phenomenon

If programmers of different generations belong to different generations, they are leading a huge shift in this industry. This analogy can help us identify common threads between many challenges we face today. This analogy can also allow us to predict and plan for the inevitable future difficulties as more and more members of earlier generations gradually drop out.

Suppose you have read this far and accepted the following two points of view:

  1. The next generation of programmers is less likely to be driven by the love of programming than the previous generation, and may choose this career for other reasons.

  2. The software industry has not fully considered the characteristics and needs of the next generation of programmers, but has followed the old models and methods. This may cause the software industry to lose touch with the times and fail to adapt to new changes and challenges.

If so, then as you can probably imagine, there are a lot of problems to be solved here. Some of the hot issues we reviewed above were already well known, even if we didn't find a common cause at the time. It is likely that many more challenges lie beneath the surface, waiting for the spark that will spark them. It is up to us whether we want to proactively identify and solve these problems.

Here are some questions that came to my mind after a few days of thinking about it:

  • The new generation of programmers is more likely to expect support from human resources and management, while the previous generation of programmers is more likely to believe that active management (such as career development planning, mentoring and goal setting) will reduce their autonomy and intrinsic motivation. Can the organization effectively meet the needs of both groups?

  • There is a general consensus in the industry that no one knows how to teach people to code. A computer science degree doesn't prepare programmers for programming jobs, it's always been an exercise left to students to figure it out in their own time. If the industry was going to outlive us enthusiastic programmers, wouldn't it take a sustainable approach to educating the next generation instead of asking them to teach themselves everything?

  • Betting your business on an infinitely self-starting, self-sufficient, self-disciplined candidate is like investing in the long-term prospects of fossil fuel extraction. How do corporate cultures centered around passionate programmers adapt to a new generation that needs more guidance, support, and accountability?

The only thing we know for sure is that change is the norm as time goes on, so planning for a future that is different from the past is often worth the extra time.

What challenges do you see in this generational shift? Welcome to share your views in the comment area!

f18e439bf94d0db3833e14a6699406f3.gif

Guess you like

Origin blog.csdn.net/FL63Zv9Zou86950w/article/details/131862261