visit
Lebron James is better than me at basketball. I could never have beaten Bobby Fischer at chess. I can play guitar, but not quite as well as Jimi Hendrix. That being said, as the world’s OKest developer, I would bet anyone ten bucks that I could code circles around any of those guys.
So who’s the expert? If Hendrix made statements about software development, he would have had the world’s attention, but not a lot of credibility on the topic. However, if Bobby Fischer voiced opinions on software, he would have gotten both the air time and a lot of interested listeners, even though, to my knowledge, he was never a developer.Daniel J. Levitin in his book highlights the difference between experts working within their field of expertise and experts who are just sharing their own opinions.“Experts talk in two different ways, and it is vital that you know how to tell these apart. In the first way, they review facts and evidence, synthesizing them and forming a conclusion based on the evidence. Along the way, they share with you what the evidence is, why it’s relevant, and how it helped them to form their conclusion. This is the way science is supposed to be, the way court trials proceed, and the way the best business decisions, medical diagnoses, and military strategies are made.” — Daniel J. LevitinLet’s call this the “Genuine Expert.” This is the developer who has spent years building and maintaining enterprise-scale distributed systems. They understand the failure modes and matching risk mitigation strategies from years of working in the trenches. While they may or may not have a degree from a prestigious university, they can clearly and confidently explain what they know and why it’s correct.While this developer knows a lot about their field of expertise, they are also very open to new data that challenges their current assumptions. It’s hard to pull the wool over their eyes with new trendy stuff, but they are the first to admit flaws in their current position if that’s what the data shows.This is in contrast to what I’ll call the “Fraudulent Expert:”
“The second way experts talk is to just share their opinions. They are human. Like the rest of us, they can be given to stories, to spinning loose threads of the own introspections, what-ifs, and untested ideas. There’s nothing wrong with this — some good, testable ideas from from this sort of associative thinking — but it should not be confused with a logical, evidence-based argument. Books and articles for popular audiences by pundits and scientists often contain this kind of rampant speculation, and we but them because we are impressed by the writer’s expertise and rhetorical talent. But properly done, the writer should also lift the veil of authority, let you look behind the curtain, and see at least some of the evidence for yourself.” — Daniel J. LevitinAny technical leader within an organization should have a sufficient level of charisma and approachability such that they can appropriately influence the direction of their team; however, they if they exert opinions without “lifting the veil of authority,” their expertise is fraudulent.A genuine microservices expert will defer to the expertise of a more junior frontend developer. An expert full-stack engineer will defer to the expertise of a highly specialized database administrator.
An expert isn’t someone who implements the latest hotness from Twitter while the rest of the team unravels the disaster from last month’s fad-fueled coding binge. If you see an article on HackerNoon about new methodologies for continuous integration, how does that author stack up against Jez Humble? He didn’t just do things by the book, he wrote the book. Literally. It’s called and it’s fantastic.
Fundamentally, it’s important to know how to identify experts in all the noise without falling into the trap of the equal voice fallacy.“There is a cult of ignorance in the United States, and there always has been. The strain of anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that ‘my ignorance is just as good as your knowledge.’” — Isaac AsimovEveryone in an organization is bound to have different areas and levels of expertise. This is a result of the naturally diverse interests, cultures, and career choices that we all bring to the workplace. This diversity is crucial. Just like a multicellular organism is composed of various tissues that perform various functions, a multi-person organization is composed of various people who excel at various tasks.A liver abandoned on the sidewalk isn’t exactly a viable organism. But equally non-viable is a human body complete with a brain but missing a liver. The nervous system contains specialized tissue for receiving, transmitting, and processing data throughout the body. Together, the neurons in the brain form an amazingly complex yet efficient computational powerhouse; however, the most capable neuron is useless when tasked to metabolize fats for energy, a trivial task for even the most junior liver cell.In a similar way, members of the most diverse team, while equal as humans, are incongruent with respect to capability and expertise. A mid-level developer is guaranteed to understand debugging code far more expertly than a CFO with decades of accounting experience. (This assumes, of course, that the CFO doesn’t have professional programming experience.) Similarly, a Principal Software Engineer who has been through the meat grinder of web development will not have the financial instincts innate to an average mid-level accountant. (This again assumes that the engineer didn’t pursue a degree in accounting.)
But diversity extends beyond the just areas of expertise. Various members of the same team who perform more or less the same function are bound to vary with respect to their level of expertise. But, achieving a high level of expertise in software development does not happen overnight. Those who naively look on from the sidelines mistakenly see an oversimplified process of 1) write a killer app, and 2) rake in the cash. But the reality is that just the problems encountered in software development, let alone the solutions, can take the better part of a decade to fully comprehend.
Consider this excerpt from :“There are no instant experts in chess — certainly no instant masters or grandmasters. There appears not to be on record any case (including Bobby Fischer) where a person reached grandmaster level with less than about a decade’s intense preoccupation with the game.” — Herbert Simon and William Chase, Scientific AmericanScott Kaufman, author of , cites this principle when stating that chess has a “vocabulary” just like a natural language.
“[Herbert Simon and William Chase] argue that these hours are comparable to the amount of time people have spent reading by the time they become adults. Just as adults have a reading vocabulary of about 50,000 words, chess masters have a “chess vocabulary” of about 50,000 patterns stored in memory, with grandmasters having an even larger vocabulary.” — Scott Kaufman, Ungifted: Intelligence RedefinedMalcolm Gladwell continues this line of thinking in his book and describes how even with innate talent, ten thousand hours of dedicated practice are needed to achieve “true expertise.”
“In fact, researchers have settled on what they believe is the magic number for true expertise: ten thousand hours.” — Malcolm Gladwell, Outliers: The Story of SuccessExpertise in software engineering is no different. There are established software and architectural design patterns when building systems. There are integration and delivery patterns when deploying systems. And there are common failure modes and mitigation strategies when maintaining and debugging systems. It is the years of absorbing these patterns that allow expert engineers to instinctually apply solutions while junior developers struggle even to understand the problems.Now, everyone is going to learn at a different rate, and everyone is going to have a different level of innate talent, but regardless of your intelligence or level of expertise in an orthogonal field, if you want to be an “outlier” with respect to developing software, there are no shortcuts — you have to put in your ten thousand hours just like the rest of us.This means that if you have not done time in the trenches and software engineering seems trivial, then you are still blissfully unaware of how much you don’t know. This also means that in a meeting if you say something like “How can ______ be so hard? Can’t you just ______?” and the software experts in the room look at each other, hide their smiles, and say nothing, then the ignorance lies on your side of the table, not theirs.
Now back to the quote from Asimov. The collective ignorance of non-software employees and more junior developers is not just as good as the knowledge of an expert Software Engineer. Thus a responsible software decision-making process never gives the ignorance of the CEO and the knowledge of the engineering expert the same weight. (Please understand this is not saying that developers have taken over the software asylum. A developer is never going to out-rank an executive and the decision made by the CEO is always going to trump those of the software team.)
Modern science doesn’t really have an answer for why natural languages exhibit the following pattern. But it gets weirder. A LOT of datasets exhibit the pattern. I first learned about this principle from . The host, Michael Stevens, runs through a list of many many completely unrelated datasets that are “Zipffy.”
“Moreover, Zipf’s Law doesn’t just mysteriously describe word use. It’s also found in city populations, solar flare intensities, protein sequences and immune receptors, the amount of traffic websites get, earthquake magnitudes, the number of times academic papers are cited, last names, the firing patterns of neural networks, ingredients used in cookbooks, the number of phone calls people receive, the diameter of moon craters, the number of people that die in wars, the popularity of opening chess moves, and even the rate at which we forget.” — Michael Stevens, VsauceThis mathematical law is the basis for the Pareto Principle, also called the 80/20 rule. Vilfredo Pareto observed that 80% of Italy is owned by 20% of the population. Microsoft found that 80% of all errors are caused by 20% of the bugs. Additionally, in software, 80% of the functionality will be built within the first 20% of the project schedule. In any “zipffy” dataset, the first 20% of the data contains 80% of the total value.With a large enough sample size, you will also find that 20% of your developers produce 80% of your commits. Only 20% of the commits will produce 80% of the business value within an application. (Another 20% of your developers will also consume 20% of the coffee.)Being able to quantify “development effort” is inherently difficult. If you measure commits authored, then developers break large commits into small ones. If you measure based on tickets completed, then they break them into the smallest possible subtask. But if someone told me that 20% of the development team contributed 80% of the effort (even if they couldn’t quantify the results), that claim would at least pass the smell test.(As a side note, one might ask: “Why not just fire the 80%?” The answer is that even if you did, 20% of those that remain would still produce 80% of the business value, and you would still be in the same situation. That’s just how a Pareto distribution works.)So given a Pareto distribution with a sample size of 1000 developers, how many developers would you expect to produce 10 times the average? You can ignore all of the “top ten traits of a 10 Xer” articles you may have read. In a group of 1000 developers, you can only expect about 13 (1.3%) of them to be “10x Developers.”But if you have a group of 3 devs at a small startup, statistically speaking no one is going to be producing 10x the output of the other two developers. You may see a “10 Xer” once you have 100 or so engineers in the building.
“Leaders become great not because of their power but because of their ability to empower others.” — John C. Maxwell
Lastly, don’t make it your goal to get into the top 1.3%. In another article, I describe the fallacy of thinking that software development is a Zero-Sum Game. It’s not. Experts exist, and it’s admirable to continuously pursue expertise, but here is nothing to be gained by ensuring that you are the smartest person in the room. Stated differently don’t try to be a “10 Xer,” but if you find yourself in that position, understand your responsibility to those around you.
As a software developer, zero-sum thinking makes people hesitant to mentor junior developers, contribute to open source projects, champion other people’s ideas, or engage in any other activity that would aid in the success of someone else. Passionately investing in others is a great way to suppress your own ego. Be a resource for others. Market your peers’ ideas. Publically recognize your team’s success. Fight for the underdog. Make yourself vulnerable by depending on the success of your peers.