Maybe that example was made terrible because the author couldn't think of a good ways to show how great this can be. I'm obviously a fan of SOLID, and OCP is exactly why I don't worry if I have only one class at the beginning. Because I know eventually requirements would change and I'd end up with more classes.
Some time ago I was asked by a less experienced coworker during a code review why I wrote a particularly complex piece of code instead just having a bunch of if statements. Eventually this piece got extended to do several other things, but because it was structured well, extending it was easy with minimum impact for the code-base. This is why design matters.
Above claims are based on nearly 2 decades of writing software, 3/4 of it in big companies with very complex requirements.
I wouldn't say that inheritance is for avoiding code duplication. It should be used to express "is a" relationship. An example seen in one of my projects: a mixin with error-handling code for a REST service client used for more than one service has log messages tightly coupled to a particular service. That's exactly because someone thought it was ok to reuse.
In my opinion, inheritance makes sense when you can follow Liskov's principle. Otherwise you should be careful.
If i were you, I would rework that https://qui.is-a.dev/Server-Guide because at the beginning it isn't clear what is the goal of your guide. One needs to read it to finally figure out.
Maybe that example was made terrible because the author couldn't think of a good ways to show how great this can be. I'm obviously a fan of SOLID, and OCP is exactly why I don't worry if I have only one class at the beginning. Because I know eventually requirements would change and I'd end up with more classes.
Some time ago I was asked by a less experienced coworker during a code review why I wrote a particularly complex piece of code instead just having a bunch of if statements. Eventually this piece got extended to do several other things, but because it was structured well, extending it was easy with minimum impact for the code-base. This is why design matters.
Above claims are based on nearly 2 decades of writing software, 3/4 of it in big companies with very complex requirements.