Live data from Hacker News

Habits of Expert Software Designers

thereader.mitpress.mit.edu

121–130 of 148 posts

Re: Habits of Expert Software Designers

#121
post #23

Earlier quoted context omitted.

It is always hard to learn from people several levels ahead of you. What they do is amazing and impenetrable. What they say seems to make little sense. You lack too much of the common background. This is why, when I find myself in a situation like that, I try hard to understand the point. Why do these people do these strange things? What do they mean by saying these sentences that seem detached from the practice? Emp…

Don't spend too much time trying to decipher people who claim to be "levels ahead of you." If they actually understood the topic, they could easily explain it in a way that a novice can understand.

> If they actually understood the topic, they could easily explain it in a way that a novice can understand

This is so patently untrue. Folks like Feynman are the exception, not the rule.

Re: Habits of Expert Software Designers

#122
post #101
post #100

Earlier quoted context omitted.

Out of curiosity, what sort of topics require months of years of explanation? I find that most complex topics can be broken down to a point where an average adult could digest them if they're interested enough in learning them. I wouldn't necessarily say that a 5-10 min explanation means that they could apply it in the field, but enough to understand a specific scenario.

A question from a five-years-old: why is sky blue? A correct answer: you need to learn how to read, then some mathematics, then quantum physics, then you can calculate how sunlight scatters on molecules of air. Understanding the physiology of color vision won't hurt, too. This is not very useful. But at least you see some topics to learn more about, and a simplified picture may be built: sunlight contains some blue l…

"Daddy, why is the sky blue?"

"Let's start with you reading (and demonstrating to me a core competence of) the basic texts of physics leading up to Rayleigh scattering--in this case, that would be Newton, Liebniz, Maxwell, Einstein, Heisenberg, and Schrödinger. When you have those six down, I'd be happy to explain to you why the sky is blue."

Inspired by: https://news.ycombinator.com/item?id=1492061

Re: Habits of Expert Software Designers

#123
post #101
post #100

Earlier quoted context omitted.

Out of curiosity, what sort of topics require months of years of explanation? I find that most complex topics can be broken down to a point where an average adult could digest them if they're interested enough in learning them. I wouldn't necessarily say that a 5-10 min explanation means that they could apply it in the field, but enough to understand a specific scenario.

A question from a five-years-old: why is sky blue? A correct answer: you need to learn how to read, then some mathematics, then quantum physics, then you can calculate how sunlight scatters on molecules of air. Understanding the physiology of color vision won't hurt, too. This is not very useful. But at least you see some topics to learn more about, and a simplified picture may be built: sunlight contains some blue l…

And at the end of all that, it ends up boiling down to "It's the result of a superposition of states collapsing into a single state upon observation, and the mechanism by which that state gets selected is non-deterministic" and now you have a very confused five-year-old.

Re: Habits of Expert Software Designers

#124
post #100

Earlier quoted context omitted.

Some of the things that I know about would take months or years to explain to a novice in such a way that they would understand what I was talking about. Not by way of metaphor or by analogy, but to truly see things the way I'm seeing them when I give an explanation. We can try to meet halfway but the requisite knowledge may be lacking. In effect this is what I'm doing when I coach interns and juniors -- giving them…

Out of curiosity, what sort of topics require months of years of explanation? I find that most complex topics can be broken down to a point where an average adult could digest them if they're interested enough in learning them. I wouldn't necessarily say that a 5-10 min explanation means that they could apply it in the field, but enough to understand a specific scenario.

Knowledge is not equivalent to experience. Many things require tacit knowledge just to understand which properties of a thing are important.

Haven’t you ever re-read a book after gaining much practice and realized how much you’d missed on the first time reading? I do that all the time.

Re: Habits of Expert Software Designers

#125
post #99
post #70

Earlier quoted context omitted.

I've come to realize the problem with Java is not the programmers. Most of the strategies they want to use are legitimate improvements in flexibility, and in other languages they do make the source code smaller. Java is simply a poor vehicle. Java forces programmers to choose a point on the spectrum of "more flexibility" "smaller program size". In languages like Lisp, by contrast, the more generic a function is, the…

One problem is that Java lacked functions until Java 8. It still sort of lacks them internally, but tat least you can write free-standing functions here and there, and especially as lambdas inline. Another problem is that Java lacks type aliases. If your data have a complicated type like List >>, you have to copy-paste this type everywhere, without a way to name it succinctly. On top of that, Java lacks type inferenc…

Huh, I always thought I was doing Java wrong when I would try to write the equivalent of four Python list comprehensions in a row and end up declaring a ton of List>> things. Didn't think to blame the language.

Re: Habits of Expert Software Designers

#126
post #99
post #70

Earlier quoted context omitted.

I've come to realize the problem with Java is not the programmers. Most of the strategies they want to use are legitimate improvements in flexibility, and in other languages they do make the source code smaller. Java is simply a poor vehicle. Java forces programmers to choose a point on the spectrum of "more flexibility" "smaller program size". In languages like Lisp, by contrast, the more generic a function is, the…

One problem is that Java lacked functions until Java 8. It still sort of lacks them internally, but tat least you can write free-standing functions here and there, and especially as lambdas inline. Another problem is that Java lacks type aliases. If your data have a complicated type like List >>, you have to copy-paste this type everywhere, without a way to name it succinctly. On top of that, Java lacks type inferenc…

> If your data have a complicated type like List>>, you have to copy-paste this type everywhere, without a way to name it succinctly.

Java has had generic type inference since at least 7 [0], so all you need is

It's not perfect, but I believe it's been improved with each version.

[0] https://docs.oracle.com/javase/7/docs/technotes/guides/langu...

Re: Habits of Expert Software Designers

#127
These lists tend to be trite, and this one is no exception. For example,

"Experts are not satisfied with just any abstraction, they deliberately seek elegant abstractions through which complex structures can be introduced, understood, and referred to efficiently."

Every developer I've ever talked to believed down to their core that this was what they were doing. Yet 99% of software is utter bilge.

This includes mine. I look at everything I've written 5 or more years ago, and it's all garbage. Most of the work I do is rewriting it.

There's no way around it, it takes a lot of experience to be even able to recognize a good design, let alone write one. No list of 10 rules is going to help much.

It's like painting. No "10 Habits of Famous Artists" is going to help you become a great artist.

Re: Habits of Expert Software Designers

#128

Earlier quoted context omitted.

Don't spend too much time trying to decipher people who claim to be "levels ahead of you." If they actually understood the topic, they could easily explain it in a way that a novice can understand.

Some of the things that I know about would take months or years to explain to a novice in such a way that they would understand what I was talking about. Not by way of metaphor or by analogy, but to truly see things the way I'm seeing them when I give an explanation. We can try to meet halfway but the requisite knowledge may be lacking. In effect this is what I'm doing when I coach interns and juniors -- giving them…

"Feynman was a truly great teacher. He prided himself on being able to devise ways to explain even the most profound ideas to beginning students. Once, I said to him, 'Dick, explain to me, so that I can understand it, why spin one-half particles obey Fermi-Dirac statistics.' Sizing up his audience perfectly, Feynman said, 'I'll prepare a freshman lecture on it.' But he came back a few days later to say, 'I couldn't do it. I couldn't reduce it to the freshman level. That means we don't really understand it.'"

-- David L. Goodstein, Feynman's Lost Lecture: The Motion of Planets Around the Sun, ISBN:978-0393039184.

Re: Habits of Expert Software Designers

#129

Earlier quoted context omitted.

Some of the things that I know about would take months or years to explain to a novice in such a way that they would understand what I was talking about. Not by way of metaphor or by analogy, but to truly see things the way I'm seeing them when I give an explanation. We can try to meet halfway but the requisite knowledge may be lacking. In effect this is what I'm doing when I coach interns and juniors -- giving them…

"Feynman was a truly great teacher. He prided himself on being able to devise ways to explain even the most profound ideas to beginning students. Once, I said to him, 'Dick, explain to me, so that I can understand it, why spin one-half particles obey Fermi-Dirac statistics.' Sizing up his audience perfectly, Feynman said, 'I'll prepare a freshman lecture on it.' But he came back a few days later to say, 'I couldn't d…

> That means we don't really understand it.

I wonder if other physicists shared the sentiment.

Re: Habits of Expert Software Designers

#130

These lists tend to be trite, and this one is no exception. For example, "Experts are not satisfied with just any abstraction, they deliberately seek elegant abstractions through which complex structures can be introduced, understood, and referred to efficiently." Every developer I've ever talked to believed down to their core that this was what they were doing. Yet 99% of software is utter bilge. This includes mine.…

> > they deliberately seek elegant abstractions through which complex structures can be introduced, understood, and referred to efficiently."

> Every developer I've ever talked to believed down to their core that this was what they were doing.

Really? I’ve worked with a lot of people who are just trying to make the thing do the thing.

Even most of the people who are interested in good abstractions often are under such pressure to perform “I’m just shipping here don’t mind me” that they largely stop thinking about the right abstraction.

Maybe I’ve worked at too many troubled startups though lol.

Post reply on HN