Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Good abstractions don't just exist to reduce code reuse; they help people reason about software. They turn logical operations into higher order concepts that are easy to think about. If this weren't true we would write all our programs as single, very long functions.

The right abstractions will reduce complexity not add to it. Consider the following information architecture:

Cats are warm-blooded animals that produce milk and give live birth. Dogs are warm-blooded animals that produce milk and give live birth. Humans are warm-blooded animals that produce milk and give live birth.

vs

Mammals are warm-blooded animals that produce milk and give live birth. Cats are mammals. Dogs are mammals. Humans are mammals.

I would argue the latter is less complex even though it contains an abstraction.

Also, you can't always fix things retroactively. As an IC, you don't control what efforts are funded. Not all organizations invest significant resources in cleaning up tech debt, even it helps long-term productivity.



> The right abstractions will reduce complexity not add to it.

Platypus joined the chat.


I think the point of the thread is that you're probably not going to need a platypus or a human or even a dog. If the requirements are that you support a cat only, then you just need a Cat class and no big abstraction taxonomy.


Monotremes are mammals that lay eggs. Platypi are monotremes.

(If you like, you can change the definition of “mammal” to say “give birth to live young, except for monotremes”. That's exhaustive.)


This works until the analogue of monotremes shows up to ruin your supposedly flawless categorisation.


I didn't say the categorization was flawless; I said it reduced the complexity of the information. Categories can be useful without being flawless.


It is not a “can be”, it’s a “must be”. Models or an abstraction of complexity are necessarily both reductionist and useful.


YAGNI




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: