The author is generalizing their preference here to say it's "right". Some brains need this, others need the abstraction before the examples provide the most benefit. As noted by others this preference influences how one learns code effectively too. It's a pretty basic trait. The author's stated preference is most common but it is not the only one.
Not sure I’m following here. Happen to have a concrete example of when abstracting first is more helpful?
The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
21–30 of 74 posts
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#22Makes sense. I always intuitively understood that going from for example electronic engineering to computer science is probably easier than the other way around, but this article makes a great point. Without some low-level knowledge, you do not fully understand the higher level. Then you can only parrot the higher level (I’m also looking at you here LLM).
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#23This is presumably about math problems, but I always approach programming problems this way. One issue I have with math problems is that sometimes I wish I could immediately go down one level of abstraction and see something like a physics or programming problem that applies that specific or related problem I'm working on. I haven't found a resource like this yet.
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#24Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#25That's the same principle which makes it wise to first do some copy pasting before you abstract stuff into a common library. Gathering some (more than two) concrete use cases before you factor out the common functionality makes much better library functions. A common sign of prematurely deduplicated code is a common function with lots of boolean flags and other knobs to tweak its behaviour for every use case added af…
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#26Earlier quoted context omitted.
Not sure I’m following here. Happen to have a concrete example of when abstracting first is more helpful?
This question seems to bring a frame that implies there is an example that would apply to everyone. I'm claiming such an example doesn't exist but I will try (please note these are overly simplified). Consider addition... "We're going to learn addition today" One approach: "it is combining two quantities into one. For example, 1 + 1 = 2, 2 + 2 = 4" Another: "1 + 1 = 2, 2 + 2 = 4, you see, we are combining the quantit…
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#27Don't know how I finished my CS degree, because most of the theory I just understood years after leaving university and doing some hands on work...
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#28This is presumably about math problems, but I always approach programming problems this way. One issue I have with math problems is that sometimes I wish I could immediately go down one level of abstraction and see something like a physics or programming problem that applies that specific or related problem I'm working on. I haven't found a resource like this yet.
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#29That's the same principle which makes it wise to first do some copy pasting before you abstract stuff into a common library. Gathering some (more than two) concrete use cases before you factor out the common functionality makes much better library functions. A common sign of prematurely deduplicated code is a common function with lots of boolean flags and other knobs to tweak its behaviour for every use case added af…
Rule of 3s. Even more basic than this, never create an abstraction for a routine only used once.
Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction
#30Earlier quoted context omitted.
This question seems to bring a frame that implies there is an example that would apply to everyone. I'm claiming such an example doesn't exist but I will try (please note these are overly simplified). Consider addition... "We're going to learn addition today" One approach: "it is combining two quantities into one. For example, 1 + 1 = 2, 2 + 2 = 4" Another: "1 + 1 = 2, 2 + 2 = 4, you see, we are combining the quantit…
I don't think this is the distinction being made here. Abstractions may be useful framing, but the author contrasts, after hearing what addition is, are you going to start studying multiplication, or are you going to look at examples of addition. We'd never think about teaching a child multiplication before they know their addition tables. However, in higher level math, and I saw this in uni, it's common to study str…
I agree about the shift in university. I really enjoyed what felt like a removal of the noise. Of course, the interconnection of the pieces and learning to instantiate the concepts into concrete are expected work of students. That all said, abstraction (or models) are lossy compressions and noticing their failures is essential to avoid becoming detached and/or delusional.