Live data from Hacker News

What distinguishes great software engineers? (2019) [pdf]

faculty.washington.edu

61–70 of 174 posts

Re: What distinguishes great software engineers? (2019) [pdf]

#61
post #46

In 50 years of programming I've worked with a few. One characteristic is a deep understanding and command of all that they touch. For example, I worked with Bill Schelter (GNU Common Lisp). In 1980, prior to the Internet, we were working on a problem (tail recursion). He was using the emacs editor and he found a bug. Bill stopped what he was doing, fetched the sources for emacs (using ftp), found the source of the bu…

I appreciated the first 90% of your comment, and consider the picture of greatness you painted therein something to aspire to. Deep thoughtfulness, personal responsibility, craftsmanship, and virtuosity are all traits I hope to one day embody. But as a matter of argumentation the last line is simply discordant, it does not follow from the anecdote (beyond the obvious fact that the anecdote is anecdotal).

In my experience the most brilliant people aren't brilliant individually or brilliant as a team player or brilliant at X or brilliant at Y, they're simply brilliant. The one exception to this observation, in my experience, is that I've met a few brilliant mathematicians who are very narrowly brilliant.

Re: What distinguishes great software engineers? (2019) [pdf]

#62
post #46

In 50 years of programming I've worked with a few. One characteristic is a deep understanding and command of all that they touch. For example, I worked with Bill Schelter (GNU Common Lisp). In 1980, prior to the Internet, we were working on a problem (tail recursion). He was using the emacs editor and he found a bug. Bill stopped what he was doing, fetched the sources for emacs (using ftp), found the source of the bu…

>> Bill stopped what he was doing, fetched the sources for emacs (using ftp), found the source of the bug, fixed it, and sent off a patch. After that he restarted emacs and continued right where he left off.

>> Greatness isn't about "team player", "hard working", (...) Greatness is a property of the person, a deep love of the craft, and a focus on "doing it right".

In your history I see a great deal of "hard work" and "team player". Moreover, to be able to perform like that, I'm quite sure he has been hard working for a long time. Of course, there is talent and virtuosity which I'm not downplaying. My point is that when people see such a virtuous performance (in all fields, like you mentioned), where there is clearly a lot of talent, there is a tendency to downplay the hard working part.

Re: What distinguishes great software engineers? (2019) [pdf]

#63

Great software engineers create/build software only as a last resort, once all other options have been exhausted. :)

No they don't, writing new code is often cleaner and simpler than adding a library. Exactly when to do either is arguable, and picking the right choice requires skill. So always going the library route when possible means you aren't a great software engineer.

Please read my post again. What I said comes way before the kind of decision that you mentioned.

Re: What distinguishes great software engineers? (2019) [pdf]

#65
post #51

Question for everyone. Doesn't everyone know in the industry what makes great software engineers? And that usually there are only "blockers" that stops you from being great? Let me give an analogy. If you're paid to play basketball wouldn't you know what makes a great basketball player? If you're playing pro basketball, you can be a great basketball player. The only reason why you can;t be great is because there are…

No, they do not. There isn't even a consensus on what "great" means. You play basketball in a very static environment. The rules don't change from game to game, or team to team. The duration of a match is constant. How well the team performs is a well known metric. People do not do engineering in a static environment. The needs asked of one changes from team to team. The quality metrics vary from application to appli…

> You play basketball in a very static environment

I would strongly disagree - basketball is a highly dynamic environment, simply because you have an opponent. Everything you are trying to do, you have someone else trying to stop you. They are as adaptive as you are.

Because of this dynamism, many players who were great in previous eras couldn't survive in the modern era (and vice versa, really)... for example, most centers who played even 10 years ago would be abused in the modern game by opposing centers shooting threes. It simply wasn't part of the game 10 years ago, and now everyone does it. There was literally a player (Roy Hibbert) during the transition who was a star before and suddenly became unplayable as teams adapted to the new environment. He was out of the league in 2 years.

Re: What distinguishes great software engineers? (2019) [pdf]

#66
A steaming dumpster fire of a paper that assumes greatness can be determined by a ranked numerical model, then smears this assumption all over the floor and carpet.

The algorithmic HR startup that inevitably follows will be gamed into oblivion.

Greatness is by acclamation, not quantification.

Re: What distinguishes great software engineers? (2019) [pdf]

#67

Earlier quoted context omitted.

> Imo great engineers produce a lot of good to great quality work fast Sounds awfully like the Myth of the 10x Engineer .

Not quite that high, but you'd be silly to believe there's no difference in speed at all.

It can be that high. It's not the number of lines of code produced but the value/utility created. A great engineer can actually make the same product in X days where it takes an average developer 10X days to come up with the same. The better engineer might (and in most cases, would) have written less code.

Re: What distinguishes great software engineers? (2019) [pdf]

#68

Earlier quoted context omitted.

No they don't, writing new code is often cleaner and simpler than adding a library. Exactly when to do either is arguable, and picking the right choice requires skill. So always going the library route when possible means you aren't a great software engineer.

Please read my post again. What I said comes way before the kind of decision that you mentioned.

What you said includes the decision I mentioned.

Re: What distinguishes great software engineers? (2019) [pdf]

#69
A bit OT - but...I find it a bit interesting, even fascinating, how people in the field of software seem to absolutely obsess over greatness in individual engineers.

You see this is in many shapes and forms - whether it's a discussion what makes one a true "10x" engineer, what lifestyle habits will result in excellent engineers, what personality traits to look after when searching for world-class software engineers. etc.

Having been in many other (technical) fields outside software engineering, I've never seen the same mentality or obsession there.

Re: What distinguishes great software engineers? (2019) [pdf]

#70

Earlier quoted context omitted.

Not quite that high, but you'd be silly to believe there's no difference in speed at all.

It can be that high. It's not the number of lines of code produced but the value/utility created. A great engineer can actually make the same product in X days where it takes an average developer 10X days to come up with the same. The better engineer might (and in most cases, would) have written less code.

Yes it can be that high depending on _how you're measuring_. I think this is why the myth has gone on for a long time. It also greatly depends on who you're comparing. Are you comparing Peter Norvig to a 1st year undergraduate, or someone on Peter's team who has around the same experience and skillset?

But I don't want to derail the thread ;)

Post reply on HN