We know people like Martin Fowler, not just because of their technical excellence, but because of their communication / public speaking / books they wrote.
We know about about Larry Page and Sergey Brin because they created a hugely successful product and company.
Would we call somebody a world-class software engineer if they had the technical excellence, but nobody heard of them because they work in internal projects in some big corp, and they happen to not talk much about their work?
Some factors include: Technical excellence, knowing what to build and what not, knowing when there is a simpler solution than writing software, communication skills (and social skills in general), leadership, grit.
I have no idea if this answer has helped you. A more specific question might elicit more helpful answers.
A quality engineer is one who:
- can solve problems on their own to deliver on commitments - teaches themselves new technologies to stay current - knows when to ask for help vs hunkering down - provides constructive, experience-based insight when applicable
A "world class" engineer sounds like "rockstar", which is maybe the first two of those bullet points, but it completely ignores the communication aspect.
Maybe "world class" means something more to someone else, but I think it's just jargon.
That means understanding industrial processes as much as dot-com tech lingo. The difference between designing for regulatory requirements and putting up a cookie consent waiver. Being able to effectively mentor junior engineers and continually refresh one's knowledge. The ability to navigate office politics and push back on unhealthy work-life balance. And of course, computer science academics.
"World class engineer" may just be jargon, but it's also aspirational. I know people who taught themselves JavaScript and Python in a year and are working at tech giants, and people who've been working in tech for 30 years and struggle to lead a small team. Maybe if we had a roadmap for what makes a world-class engineer, it might become easier to rise to that level.
As you say there are also extremely talented, hard-working, productive engineers working away in obscurity because they'd rather work for slow-growth, stable companies, or they're under agreements that don't let them talk to the outside world. Maybe these engineers are the "world-class" ones.
My question is: Why this desire to be "world-class"? You can make a great living in the trades, and nobody ever asks if you''re a world-class plumber or electrician. Few people ever say "I need to be a world-class accountant, doctor, or lawyer." So, why does everyone aspire to be a top-1% engineer? Is engineering such a competitive field? Is it because of these ridiculous companies that say such idiotic things in their recruiting literature as "We only hire the top 1%!!" The vast majority of engineering employers do not require world-class engineers, so why do so many people aspire to be one?
Some might transition into experts in the Art of Engineering or computer science -- as vonseei suggests below -- but I suggest most are squandered keeping tsunamis of corporate-engineered mediocrity under control.
We know the names of people like mentioned above because of what they created or how prolific and widespread their teaching work is. Professional engineering demands no publicity outside the organization and while there may exist legendary engineers within Google, Apple, etc - people who insiders know and may follow their careers - if you aren’t “in” and connected in a big way you aren’t going to be familiar with them.
I certainly am not.
At google you have Jeff Dean who has, rightfully, become famous as a world class software engineer.
The internet reaches everywhere. If you can make an HTML page with an alert("hi there") script, congratulations, it can reach everyone in the world, you are now a world-class software engineer.
This bit from Venkatesh Rao's "The Office According to the Office" seems appropriate:
"Instead, Dwight found relief in the graded, performance-oriented worlds of school and varied medieval-guild-like worlds, such as farming, animal husbandry and karate. His attempts to understand the world of management, which is decidedly not a world of grades or guilds, are based entirely on peripheral guild-like elements. He is the only one excited about the Survivor-style successor-selection event Michael arranges (in the bus on the way over, he asks, “Will there be business parables?”)...In Dwight’s world, everything worth learning is teachable, and medals, certificates and formal membership in meritocratic institutions is evidence of success. Even where play behaviors are concerned, the Dwights of the world can more easily get lost in points-and-rules worlds...To Dwight, everything is a formal contest, and there are always authority figures who provide legitimacy and rankings."
Skills that amount to the "hello world" of web development can be worth hundreds of thousands of dollars to an expanding or new company, but are worth less than pennies to a Netflix. Trying to measure quality without context is, imo, one of the biggest drivers to the cluster fuck that is tech recruiting.
When I was 14, "world class" meant somebody who could actually make a product that works because all I could do was write basic HTML. When I was 17, "world class" meant somebody who was capable of understanding the abstraction that was casually thrown around the internet. At 19, "world class" meant somebody working at FAANG (or whatever the equivalent of it then was) At 20-21 (last year) I thought it meant somebody who could code and sell to build products that affect millions/billions of lives, like Mark Zuckerberg (watched too much of The Social Network, I guess). It was Zuckerberg or GTFO
Of late I've realised that my skillset didn't matter as much as my ability to figure out how to figure things out and be consistent. Being self-taught and admittedly not "talented", I am in no way "world class" as you may define it, but I know I can figure things out on my own and ask the right people the right questions to continue growing as improving my taste in products.
So what I'm trying to say is world class is a very broad term, but I think if you constantly work on improving yourself you will eventually find you're improving, just like in any other aspect of life.
In hindsight, 14 to 17 year old me would consider current me pretty "World class"
- adder: contributes to a product
- multiplier: changes the ecosystem, giving adders leverage to be more effective
- exponent: changes the game (ships a new paradigm changing how everyone thinks / does it)
Given how rare multipliers are, I consider that “world class”.
I don’t know that you can pre-identify the third category, especially since a critical mass of multipliers can also achieve exponential results.
http://sasamat.xen.prgmr.com/michaelochurch/wp/2013/04/22/th...
I have been able to work on a few cool computer science problems, mostly due to performance concerns regarding larger datasets, but there are often a lot of ways to solve issues like that and often none of them will be objectively the best.
If you don't focus on the business problems you're likely solving a problem they don't have. Problems have value. If you solve a $100k problem for the business it doesn't matter how much time you spent on it if it brings them value.
If you're solving $100k problems every day you best ask for a raise :)
http://philip.greenspun.com/seia/writeup
I would say "Surgeon 3" exemplifies the world-class professional, quite literally.
And really their are different ways of achieving this. If you're a true computer scientist, then this could mean new algorithms, new data structures, new architectures. From a product perspective it could mean new ways of solving old problems. Like designing new methods of user interaction or otherwise attempting to solve problems no one has considered a problem before. It could also come in the form of management. New ways of approaching quality or estimating or productivity.
What makes for a world-class software engineer is the ability to consistently deliver business value.
Learn about your company's market & business strategy. Be reliable. Effectively communicate with the non-technical stakeholders and be the bridge between technology and business goals. Make sure they're aware of pros and cons of every development related decision. Get used to saying no and pushing back on some of their ideas. Don't write code to solve problems that can be solved by an excel spreadsheet.
Your main goal is to build a successful business, writing clean code and using cool tech comes in secondary.
When I look around my company a lot of the young guys are in positions where they will never become very good because the environment what's them to repeat the same thing again and again.
To become a good software engineer you need to have the opportunity to be creative, make mistakes and learn from them.
It’s almost unbelievable what Jonathan Blow and his small team have been able to accomplish.
- Knowing that just because something is good, doesn't mean more of it is better.
- Being cognisant of your own biases and weaknesses.
- Knowing how to delegate effectively
And obviously, being able to communicate that knowledge to mere mortals without alienating your team on a daily basis. For me personally, that means:
- Having a sense of humour.
- Being human
* Comes up with solutions that no one else would ever think of
* Understands and correctly utilizes libraries and tools down to the system call level or lower.
* Knows how to ship and the engineering and business processes behind making that happen.
* Knows other world class devs and can attract them to the host company.
* the solutions she comes with are easily explained and understood by everyone working on the codebase.
Stories like this: https://medium.freecodecamp.org/we-fired-our-top-talent-best... are all too common.
The part about attracting other world class developers helps with this as everyone will be on the same page.
> Stories like this: https://medium.freecodecamp.org/we-fired-our-top-talent-best.... are all too common.
Maybe for some people but I've never had issue with it. Managing top talent is definitely its own skill though. One of the challenges is integrating them into the team and not having other people upset when they get high profile projects. It's not trivial but it is doable and in my experience, well worth it.
As a guideline, that's not terrible. As a hard and fast rule, it seems almost the definition of "lowest common denominator".
Taken to extremes, it can also preclude working with people who aren't generalists but have a really strong niche.
More about what they don’t do than do. Subtle ways that they reduce risk and increase quality. Making projects and systems more stable over time.
- does their part to grow the company by 5% every week
- improves the system that builds the product by 2-3% every week
This means different things at different companies.
https://github.com/linpengcheng/PurefunctionPipelineDataflow
https://github.com/linpengcheng/fa
An accountant who does not understand statistics is not a good AI expert system software engineer. :-)
I feel that I fully comply with the practice of surgeon 3 in the linked article (Phil Greenspun wrote about "software engineering professionalism" http://philip.greenspun.com/seia/writeup) in the comments.
```
Surgeon 3 has developed an innovative procedure and practices it regularly, but also makes time for occasional travel to France, China, Japan, and Argentina to teach other doctors how to practice the innovation.
Most of their fellow physicians would agree that Surgeon 3 is the "most professional" doctor of the group. Surgeon 3 has practiced at the state of the art, improved the state of the art, and taught others how to improve their skills.
```