I disagree. I'm not saying saying that I'm a 10x engineer, but I've sometimes found myself working with folks who feel like they're a 0.1x engineer, so compared to them the 10x difference still applies.
It's not that they were worse engineers or less intelligent or anything like that, it's just that they would opt for the unnecessarily complex decision at every step of the way, and seemingly in other aspects of their life as well. The kind of folks where you find yourself saying "Why don't you just ..." constantly.
I imagine a 10x engineer as someone who can consistently identify the fastest, cleanest and least complex way to get from A to B, reliably, in different situations professionally and personally. That includes making quick decisions and tradeoffs. These people do exist, they get stuff done, and some folks don't want to acknowledge it because they don't want to be seen as the 1x in comparison.
> I imagine a 10x engineer as someone who can consistently identify the fastest, cleanest and least complex way to get from A to B, reliably
Yes but... in today's software culture, the fastest cleanest and least complex solution is very rarely appreciated or even tolerated.
If you can solve all the requirements with a couple $5/mo VMs, you'll still be run over by the buzzword-compliant solution that requires 30 instances in a kubernetes cluster.
I’ll always appreciate the simple solutions, and that comes from being a solo, overstretched developer for much of my early career. What I observed is when more people get involved the solutions always take on extra complexity. This could be due to the need to make work for everyone on the team. To delegate responsibility. One person who has to set up a VM and push code and talk to customers does not need to complicate their life. But when you have a manager and a new hire and an IT department and have meetings then all of a sudden you divide and conquer and there needs to be enough churn to justify everyone’s role in the project. The one person who speaks up and says something like “yo we don’t need this CI and buzzword tech stack and containerizations, microservices and cloud functions, I have a LAMP VM already coded up that meets the requirements” they will certainly be shut down by the rest of the team.
> Yes but... in today's software culture, the fastest cleanest and least complex solution is very rarely appreciated or even tolerated.
Funny how this sentiment is as old as "kids these days".
There are reasons why complex solutions are needed. These reasons are so much valid, that certain areas legally mandate the complexity. While majority of those reasons are safety related, one of the aspects behind safety is reliability and maintainability.
Usually (!), there is a balance. What is the least amount of training you have to supply the person doing maintenance that they could grasp all the assumptions, constraints and links with other components to successfully work on a component? The more complex the system, the less complex an individual component, in a way it interacts with the rest of the system.
For example electrical power supply units. Some fields require PSUs to have galvanic isolation, which makes them much more complex than $2 aliexpress part. However, galvanic isolation means that there are e.g. no weird, parasitic interactions over grounding - it just provides power like a battery would. Swapping a battery with a medical grade PSU would not introduce hidden interactions with the rest of the world.
Likewise, in a software system, a single component becomes (or at least can become. Complexity does not necessarily yield that, but complexity is required to provide this) more isolated, easier to work on alone without introducing breaking changes in different subsystems.
Do you need complexity? Not necessarily. Maybe the project is small and relatively short lived. Maybe you are thrown into a decade old project with requirements and teams having been changed several times in that timeframe. Component isolation backed by complexity would probably be highly appreciated.
> If you can solve all the requirements with a couple $5/mo VMs, you'll still be run over by the buzzword-compliant solution that requires 30 instances in a kubernetes cluster.
Officially triggered. Cuz lord knows that's how all my meetings go.
Why use a simple VM setup and some Ansible to keep it up, when we can put 4 more layers of abstraction in there and pay AWS / Azure / GCP extra money?
Who is gonna get that money? Depends on which provider "wined-and-dined" (coughcough) recently.
I’ve worked with a dev (extreme example) that said why “don’t you just…” and delivered at 10x from A to B only to find the going from B to C is now a daunting task, because of how we got to B. It is a lot like the sysadmin that gets praised for saving the day every time his servers crashes. Sometimes the extra complexity in getting to B is the preparation to keep on going. It is a trade off, and the optimal answer may not always be predictable.
I know exactly the type you you mean. Looping back to OP, this can create a lot of viscosity in the project.
Your 10x engineer in one situation will grind to a halt if they work with a few of these 0.1x engineers, if they have to interface with each other.
The person that increases the compile times of the project to near infinity to save a runtime instruction with the C++ type system has an effect on the whole system.
10x IME is only possible if you have very fast feedback loops, that means fast unit tests, fast incremental compilation times. You can only be fast if you can iterate fast. And if you're working with enough people that slow down your feedback you'll get slower.
I've seen it happen plenty of times. The situation aspect still holds.
I think it's a combination of both. There are potential 10xers, but the environment needs to be right for them to flourish.
True, I can’t stand over-engineered solutions, I don’t think those people are ever going to get a high velocity. Maybe it’s safer to say the situation is a necessary but not sufficient.
> it's just that they would opt for the unnecessarily complex decision at every step of the way
But this does not invalidate the previous point about the environment. If the environment is loose and with low accountability, those unnecessarily complex decisions receive a big pass; if the environment has strict principles about simplicity and made that as an incentive, those practices faces much hard time to spread in that particular environment.
I think this is a case of “Show me the incentives and I will show you the outcome.”
It's not that they were worse engineers or less intelligent or anything like that, it's just that they would opt for the unnecessarily complex decision at every step of the way, and seemingly in other aspects of their life as well. The kind of folks where you find yourself saying "Why don't you just ..." constantly.
I imagine a 10x engineer as someone who can consistently identify the fastest, cleanest and least complex way to get from A to B, reliably, in different situations professionally and personally. That includes making quick decisions and tradeoffs. These people do exist, they get stuff done, and some folks don't want to acknowledge it because they don't want to be seen as the 1x in comparison.