Trying to learn software design by looking at code is kind of like trying to learn about architecture looking at the bricks that make up a building.
To learn about design you need a wider perspective. You can theoretically learn it from code but it won’t be most effective. Look at great documentation and literature about design instead.
Yeah, I guess without the context I wouldn't really understand why it was designed that way. Or know what situations a design like that would be good for.
Is there any documentation or literature that has helped you?
Once upon a time there was an email MTA (email server) called qmail. It had an architecture that was surprising and Daniel Bernstein documented his philosophy. It left an impact on me by showing me how we can rely on the OS-supplied facilities to accomplish a lot. I don't think qmail is some shining star that will teach you everything you need to know about software design. It is an interesting case study to add to your repertoire.
See https://en.wikipedia.org/wiki/Qmail