Live data from Hacker News

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

faculty.washington.edu

121–130 of 174 posts

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

#121
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 experi…

Isn't that what "Greatness is a property of the person" is saying?

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

#122
post #6

Earlier quoted context omitted.

This is also why I like estimating tasks using the Fibonacci scale without a direct correlation to time. In my teams, we generally set 8 points as something that would take an entire day. Every number after that jumps up in relatively large increments as they are more difficult to accurately determine

Interesting take, mind sharing how do you use fibonacci ? Thanks

Not the OP, but one of the teams I'm on uses fib somewhat differently.

Any point with 1-2 is estimated at A 3 is assumed to be a day or two.

A 5 is assumed to be 3-4 days.

An 8 would be 1-2 weeks.

Anything higher is backlogged until it's broken down into smaller segments.

Not sure how well that compares to usages by other teams, but that's one data point for your question.

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

#123

I think if you follow John Carmack's finger files and his Twitter account you can form your own opinion as to how it works. That guy is clearly a top 10 engineer and he hides little about his thought process. His appearance on the Joe Rogan Experience was great too.

As an aside, in his appearance on JRE, there's one part where Joe Rogan asks him about working hard and JC says something like (going off memory) "I don't really like that idea - of working really hard being the thing. Personally, I've noticed that after a while the quality of my work really drops off. Around 13 hours in I'm not really doing a good job". I remember the moment because I was listening to this while dri…

> Personally, it reminded me of how people say "it's not a sprint, it's a marathon". Yeah, but Haile Gebreselassie runs the marathon at an average of 20 km/h. Some people really do operate at a heck of a limit.

I wonder if that might be missing the broader point of the saying. Yes, it's true that some people do operate "at a heck of a limit" but it's much more true to say that human beings, compared to other animals, have distinct advantages and disadvantages. Bear in mind that few other species can actually /generally/ run marathons -- we evolved the ability to sweat and engage in endurance ran /in the pursuit/ of persistence hunting.

Maybe it's just a personal thing these days, but I'm even more curious about min-floors than max-ceilings. Not just because of patterns like this, but because the thought leadership trope of "let's look at a leader in the field and figure out what we can learn from them" is not very useful. Figuring out why it's so easy for me to get into decent aerobic shape pretty quickly as a human being (for millions of years, it was useful for hunting) is a lot more enlightening.

So to get back to your point, JC is probably even more of a "marathon runner" than he looks like. I've seen that with all great engineers (and founders) -- they have the patience and opportunism to pull solutions out of a different problem space from scratch for a six to seven year stretch of time.

It's not about working hard. It's not about working fast. It's about merely surviving -- and getting creative with how you go about doing that. And it is almost always about efficiency.

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

#124
post #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" an…

I think there's work and there's work. The people who've I've observed with great engineering talent have certainly worked to get it, but they have been selective to the point of selfishness about what work they do. That work might look like "fun" to colleagues, and so they are diplomatic about it, or don't do it completely out in the open.

Of course the proliferation of free engineering tools makes it possible for them to have two lives, one doing the "hard work" that satisfies colleagues during the day, and the other "hard work" that develops talent at night.

I've also seen many young engineers plunge straight into "hard work" consisting of running the CAD terminal and fighting fires, and those engineers were recognized as being productive but lost their fundamental knowledge and did not become great engineers.

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

#125
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…

[deleted]

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

#126

It’s interesting there are so many different answers given to this question whenever it is asked. If we asked, “What makes a good surgeon?” or as pointed out in another comment, “What makes for a great basketball player?” it seems that there would be less debate. It seems to me that this debate is related to another question, “Why do so many software projects fail when you don’t see any skyscrapers collapsing under t…

So many of the thought exercises present in your comment are missing rather obvious validations. Why do we not ask this of other professions? Because other professions have metrics and regulatory bodies. Why are no skyscrapers falling? Because they are well regulated and required a huge infusion of cash to build. A software company with such a large cash infusion is also likely to not fail. Software engineers are bes…

> Software engineers are best analyzed on a bell curve and once identified according to such plotting relative to other developers the criteria becomes clear

Absolutely. Four out of six software engineers are average and interchangeable - they get tickets of average complexity done, and make mistakes, some of which are caught by other average programmers in code reviews.

One out of six engineers is junior, or is effectively junior, and is a drag on teams until they get up to speed. They can only do simple tickets, every pull request must be carefully monitored etc.

One of six engineers is one standard deviation above the rest. If a new system or module or library is to be built, the team defers to them for architecture. They notice subtle problems others miss. They are up to date on the stack and know what features and problems are coming down the road. They tend to do the needed work outside of what the standard ticket requires.

One feature I have noticed about engineers one or more deviations above the mean is their focus, when needed, on the build system. They work to make a simple, working, fast as possible build. If the build is breaking, or gets too complex, they will address the problem in the build system and then get back to work.

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

#127
post #79
post #62

Earlier quoted context omitted.

>> 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" an…

Hard work is the essence of what produces so-called talent. It seems to my understanding that talent is more so the culmination of a chain of clever thinking which ultimately derives more understanding and natural association with XYZ, than a deterministic natural born trait. Albeit, there are most definitely physical strengths tied to DNA, it wouldn't be entirely far-fetched to claim that different people have diffe…

I agree - there's a huge different between wall-clock time spent on a task, and amount of actual progress made.

Perhaps a talent in an area is simply the ability to use your practice time on those things that actually take you further.

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

#128
post #30

Weird to me how down these comments are on what I read as the main message of the paper, i.e. that engineers aren’t just code monkeys. Being a “great engineer” is not strictly determined by technical ability; in fact, social ability plays a big role in a so-called “individual contributor role.”

What is even a code monkey? A coder takes a problem described in human language and solves it using computer code. In order to do this well you need to both be able to properly read and understand problems in human language and be able to write and structure code. There is no world where you can write code without thinking about the hard stuff, at least not if you write something more complex than a basic static fron…

I think the term has negative connotations because of people who build the wrong thing before asking critical questions or clarifying anything that would help shape the requirements.

I understand some people enjoy being just implementers, though. I don't think that's enough but to each their own.

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

#129

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…

People always seem to want to pretend it isn't a factor, but natural talent also matters, for both basketball and software engineering. In basketball, it is quite easy to prove that some people are simply unable to ever be a great basketball player; there has never been an NBA player shorter than 5'3, only 25 shorter than 6'0, and only 10 under 5'10. Are you really telling me NO ONE shorter than 5'3 ever decided the…

If we're bringing up basketball as a comparison for development skills - or intelligence in general - then Scott Alexander has written about this too: https://slatestarcodex.com/2015/02/01/talents-part-2-attitud...

His take is that someone short may never make it to the NBA, but that shouldn't mean we discourage them from ever throwing a ball at a hoop.

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

#130

Earlier quoted context omitted.

People always seem to want to pretend it isn't a factor, but natural talent also matters, for both basketball and software engineering. In basketball, it is quite easy to prove that some people are simply unable to ever be a great basketball player; there has never been an NBA player shorter than 5'3, only 25 shorter than 6'0, and only 10 under 5'10. Are you really telling me NO ONE shorter than 5'3 ever decided the…

> In basketball, it is quite easy to prove that some people are simply unable to ever be a great basketball player; there has never been an NBA player shorter than 5'3, only 25 shorter than 6'0, and only 10 under 5'10. Are you really telling me NO ONE shorter than 5'3 ever decided the trade offs were worth it? Anecdotal, I'm 6'1. At a middle school age, I was _hounded_ into playing basketball (until they realised I h…

> Anecdotal, I'm 6'1. At a middle school age, I was _hounded_ into playing basketball (until they realised I had no talent whatsoever, or any inkling that I wanted to attempt to improve that). There's definitely a selection bias in who gets started playing basketball in the first place.

This has had a bigger impact than you'd imagine :-) For example quite a few tall football players have been nudged when they were kids to play basketball. But luckily some more open minded coaches let them play and found out that they were actually good. The best example is Jan Koller: https://en.wikipedia.org/wiki/Jan_Koller

2.02 (6'8), so definitely towering above most other people :-)

But the things is, genes do matter at a certain level. I really think you can't be an NBA player if you're 1.50 (I think that would be about 4'8). No matter how fast or resilient you are. You'll just be outmuscled, dunking will probably be almost physically impossible.

Post reply on HN