Hacker News new | comments | show | ask | jobs | submit login
Ask HN: What makes for a world-class software engineer?
110 points by Nuance 42 days ago | hide | past | web | favorite | 53 comments



What even is a world-class software engineer?

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.


My boss keeps using that term and it's completely meaningless. I think it's a feel-good term that execs like to get more productivity out of their team (who wouldn't want to be "world class"?).

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.


To me, "world-class software engineer" is literal - an engineer who can thrive anywhere in the world, ideally in any situation one needs software development for.

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.


Does "world-class" refer to the engineer's fame or competence? Because these don't necessarily overlap. Some medium-talent engineers happen to be well-known because they lucked out and hit the startup lottery, and now command $1M/year salaries forever because of their names. I've worked with one or two of them at a FAANG-level company and they're insufferable. The only reason I'd aspire to be one of these phonies is that they basically get to be paid for their past performance rather than what they're doing today.

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?


It's true -- the best often languish in unrecognized obscurity -- FAANGs deliberately keep their most productive/crucial engineers secret -- carefully ensuring they're never named in blog posts or that marquee products don't have their engineering processes presented in an overly-transparent way.

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.


These are terrible examples. What has Martin Fowler actually built? As for google, I don’t think they are good software engineers, they had someone take the idea from prototype to production.


I would think the vast majority of “world class” professional software engineers go unnoticed unless they transition into a more academic, entrepreneurial, or otherwise public role later in their careers.

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.


There are a some, the most obvious example being Linus Torvalds.

At google you have Jeff Dean who has, rightfully, become famous as a world class software engineer.


At Google you also have Ken Thompson, who I'd argue is a world class software engineer :) . Actually, scientist too...


They may also not be interested in publicity. Dave Cutler is reported to have had it written into his contract at microsoft that he didn’t have to deal with the press, and he pretty much never did.


I would say Martin Fowler has built excellent materials such as Clean Code that have helped software engineers across the world improve their skills. This material has substantial leverage over say a single piece of software to better the industry.


I think it means someone who would be considered a 10x developer in any software engineering market in the world.


A world-class software engineer would spot the leaky abstraction of ranking engineers linearly.

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."


OP was clearly asking what makes someone a high quality engineer, so focusing on his specific word choices to respond with the "hello world" of web development is a total non-answer in my opinion.


I think they were just joking around


What the parent post is demonstrating is how much the OP's question is a non sequitur. Quality is always going to be measured by domain so asking for a list of measurable qualities outside of context is unanswerable.

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.


I have tried to be world-class many times in my life. I have failed all times. I am 22, for reference, but it seems the like every time I "level up", I find myself improving but also my taste and what I define as "World class" improves.

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"


What do they do?

- 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.


Michael O Church wrote about a similar scale:

http://sasamat.xen.prgmr.com/michaelochurch/wp/2013/04/22/th...


Probably more than anyone can summarize here, but what has brought me moderate success is focusing on the business rather than the code.

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 :)


Phil Greenspun wrote about "software engineering professionalism", and it's still the best thing I've ever read on the subject:

http://philip.greenspun.com/seia/writeup

I would say "Surgeon 3" exemplifies the world-class professional, quite literally.


Consider the Dreyfus model of skill acquisition. World class developers would be at the top of the pyramid. Not defined by how well they execute in delivering good quality software, but able to see the big picture and think of new ways to approach problems. Not necessarily answering all the questions, but knowing or sensing when we're asking the wrong questions.

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.


Writing code that other people can read and extend, writing the least amount of code possible (as in knowing when not to solve a problem with code, not concision), good communication with coworkers and project managers/clients, deep understanding of the problem that they're trying to solve, the ability to work quickly and with few mistakes or oversights, and lots of experience to build an intuition of what to do in any situation.


This is coming from my experience working with mostly non-technical founders who are trying to turn their idea into a working product and start getting traction in the market:

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.


to me, it's someone like Fabrice Bellard: brilliant, prolific, with deep understanding of hardware and algorithms.

https://en.m.wikipedia.org/wiki/Fabrice_Bellard


Some people are so good that they will shine anywhere but for a lot of us it's better to work somewhere where you get challenged with difficult problems so you can grow.

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.


I wish I were a world class software engineer like Jeff Dean, Linus Torvalds, Don Knuth etc. There seems to be no single way.


I don't know if there's a concrete treshold for that, or rather some combination of field and exposure in the spotlight some standard deviations above some "scale" of skill.


Well I don’t think there’s a definition of world-class but Jonathan Blow not only designed and produced Braid and The Witness, but also programmed most of the engines for those games and they’re largely bug-free. That’s a pretty amazing feat that I don’t think many engineers could do.


Jonathan’s real standout qualities are game design, self promotion and shipping a hit game. As a game dev that has worked on 20 or more games I wouldn’t put one like Braid at the top of my hard to program list. It’s a 2d puzzler. The time manipulation stuff is really great but again not technically difficult. That he is making his own language is more a sign that he’s indepently wealthy and has the time to do so. Many programmers have tried and failed to do the same. I will be impressed if he delivers a game that uses the language even more so if the language spreads further.


Surely that opinion requires believing programming "most of the engine" (prototyping) and engineering production code are the largely the same thing


Are you saying Jonathan Blow only prototyped his games? Because he didn’t — he also programmed the shipped game code. You can watch him program his new game live on his twitch stream or see the archived streams on YouTube: https://www.youtube.com/channel/UCCuoqzrsHlwv1YyPKLuMDUQ (which, by the way, he’s doing in a new programming language he created and made a compiler for)

It’s almost unbelievable what Jonathan Blow and his small team have been able to accomplish.


The ability to ask precise questions.


I would say being able to solve problems even if you have to read up a lot and being able to deliver a solution that’s close to the optimal.


I may be the minority but to me a world class software engineer is someone who understands the industry they work in, is a strong communicator, can admit when they are wrong, can ask for help when they need it, and can learn and adapt to new problems. I don’t expect them to have specific technical skills, besides a certain proficiency in the languages used


- Knowing systematic approaches to evaluating costs and benefits

- 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


* Way, way faster at solving problems than a normal dev

* 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.


I like this list if you add one more point (that happens the most important one):

* 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.


I'd say good code is as easy to understand as possible (note, not always easy to understand as not every domain lends itself to that).

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.


the solutions she comes with are easily explained and understood by everyone working on the codebase.

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.


I strongly suspect that it has nothing to do with readability of the code even tho most people think so. It boils down to the ability to solve the problem at hand while being able to handle the given constraint, quality of code is about correctness not readability or ease to understand.


As an engineer, keeping up to date with the endeavours from the most important players in your niche while following the accepted best practices and trying your own small improvements case by case.


Here is an excellent training video to follow to become world class https://youtu.be/BWsAQsydzR4


A happy disposition and consistently shipping, no matter if the project is small or large. Technical competence and developer due diligence is implied.


Being able to see the future.

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.


I think a work-class software engineer will use the right tool to craft a right-enough solution to solve the right problem.


Software Engineer's that know how to design, sell and market their software.


identify the real customers, listen to their needs, solve their problems, verify the solution is better than the original problem, repeat


A world class engineer

- 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.


Someone who can turn a real world problem into a set of steps, and explain that to a team of other people who can implement it.


Solving world-class problems


A world-class engineer is able to solve problems in an innovative, simple, reliable way.

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. :-)


Although it looks very strange, I am telling the truth (my experience https://github.com/linpengcheng/fa), why is it downvote?

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.

```




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: