Live data from Hacker News

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

faculty.washington.edu

81–90 of 174 posts

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

#81
post #7

Earlier quoted context omitted.

And then jumps through large hoops to hide that it's still asking people to estimate. Sure, it's not hours, it's "velocity" and "difficulty", and you don't estimate, you play "Fibonacci Poker". But at the end of the day, the question "can we do this in the allotted amount of time" still gets asked and answered. What agile got right is realizing that the error bars increase superlinearly with duration, and that scope…

First, allotting an amount of time to delivering value is an anti-pattern in itself. Second, Agile doesn't ask people to estimate ("respond to change over follow a plan"). Management asks people to estimate. Jeff Patton says it best in User Story Mapping, the "client-vendor anti-pattern" > It's the client's job to know what he wants, and explain the details to the vendor. It's the vendor's job to listen, understand,…

> Second, Agile doesn't ask people to estimate ("respond to change over follow a plan"). Management asks people to estimate.

I think it would be more accurate to say that those who pay for your time will ask you to estimate on the value which you expect to deliver in said time. That seems like a fair question to me.

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

#82
post #2

I'm surprised there is no reference to time estimation. An important part of their role is estimating how long a task will take to complete, and I've found many people, even engineers with a lot of experience, are terrible at this.

People in general are terrible at predicting the future... I don't think being clairvoyant is a quality that should be expected out of an engineer or anybody. This whole time estimation thing is akin to predicting when the next hurricane or earthquake will occur. The main problem is business people don't understand that so they place this unrealistic burden on engineers. A manager or business guy who needs constant a…

> This whole time estimation thing is akin to predicting when the next hurricane or earthquake will occur.

This myth needs to die. Can you predict if an item will take closer to a month or a decade? If true then it is far easier to predict than hurricanes or earthquakes. You might not make predictions as accurate as management wants all the time, but most can predict how long things will take within a factor of 3x or so and it will be within that margin most of the time, a person who could do that for hurricanes or earthquakes would be the greatest genius in history.

And yes as you get more skilled your predictions will become more accurate. Hence accurate predictions being a sign of skill.

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

#83

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

I think passion is everything. Everyone is 10x at their passion. Strive to have passion in all that you do.

Yes. This "greatness" is actually quite a fragile thing when one considers the mysterious origin of passion, etc. Without motivation there's nothing.

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

#84
post #5
post #2

I'm surprised there is no reference to time estimation. An important part of their role is estimating how long a task will take to complete, and I've found many people, even engineers with a lot of experience, are terrible at this.

> An important part of their role is estimating how long a task will take to complete Agile exists because a very large number of people dispute this.

Perhaps a corollary might be that not enough great engineers exist to give good estimates, so we attempt to avoid giving estimates with much consequence attached.

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

#85

Great software engineers know not to create PDFs when HTML works fine.

Given that it is presumably part of a journal, I am not sure that HTML would have worked fine. The purpose was to publish in one of those. We are a secondary audience.

Woah woah woah, what is this? Requirements analysis?

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

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

> Great software engineers I've known seem to have complete command of all of the ideas, tools, and techniques. They understand their tools "all the way down to the metal" and all the way "up to the esthetics". You can see great people in all crafts (like woodworking).

Do people like this exist today? I mean, the complexity at every level in the stack seems to have grown exponentially(maybe?) for decades. Are there engineers who are experts covering every layer across modern hardware architecture, CPU instruction sets, modern operating system architecture, cybersecurity, networking protocols, web technology, database systems, file systems, cloud infrastructure, quality control, Data Science, AI, AR, VR, Machine learning, UI framework design, wireless interfaces, etc. And that's all before you even consider the non-technical skills of software engineering. The bar moves higher every day and I'm not sure this level of expertise is achievable/maintainable.

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

#87

Earlier quoted context omitted.

What you said includes the decision I mentioned.

Hm, I don't know where you got this idea from... I certainly didn't mean it like that.

Then write down what you mean, people aren't mind readers. However you will find it quite hard to write down what you mean in this case since your statement doesn't work even if you talk about other situations.

Like should you hire a guy to manually set a field in new entries in the database every night instead of writing a short script to do it for you? That is a non code solution, so your answer would be yes. But I'd say no, that is a dumb solution. You could say "But don't follow this rule when it obviously does apply", then I say that figuring out when the rule applies and doesn't apply is a part of being a great software engineer. Short platitudes like what you wrote sounds great but are actually mostly nonsense.

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

#88

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

It’s a form of narcissism. The same way humans marvel at how Earth could possibly have the perfect conditions for life to exist. Shit must be have been meant to be right?

In our own small little worlds, we build software that sort of fits the business, and collect a check. Woah, how’d that happen? I wonder if we’re like, amazing or something?

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

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

> Great software engineers I've known seem to have complete command of all of the ideas, tools, and techniques. They understand their tools "all the way down to the metal" and all the way "up to the esthetics". You can see great people in all crafts (like woodworking). Do people like this exist today? I mean, the complexity at every level in the stack seems to have grown exponentially(maybe?) for decades. Are there e…

You make a mockery of the original statement, if you focus on YOUR stack (not just any) then yes with a bit of focus it should be possible, but you need to stop learning yet another JS framework.

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

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

> Great software engineers I've known seem to have complete command of all of the ideas, tools, and techniques. They understand their tools "all the way down to the metal" and all the way "up to the esthetics". You can see great people in all crafts (like woodworking). Do people like this exist today? I mean, the complexity at every level in the stack seems to have grown exponentially(maybe?) for decades. Are there e…

You don't have to excel at every layer. If you understand the basics of every layer, you're so far ahead in the game that you might as well be a magician.
Post reply on HN