Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)

Category: Programming
Author: Robert C. Martin
This Year Hacker News 3
This Month Reddit 2


by wiremine   2020-10-08
> Immutability is a very useful tool since you have have any kind of dependency -- direct, indirect, implied, etc) -- and there's no worry. But you still need a mechanism to manage mutating data.

I agree. For me it feels like immutable data is a tool, not a universal principle. For example, in low-level C programming or direct control of a register in an embedded context, immutable data isn't a principle, it's just another approach.

What I mean by "universal" is something like SOLID. [1] (Most people only use SOLID for OOP, but Uncle Bob makes it clear in Clean Architecture that he thinks SOLID is universal, and not limited to OOP.)

That said: it does feel like immutable data should be the _default_ approach in many situations. But that's really hard to do in most languages.


by FroggyWizard   2019-07-21

System design is probably the most important thing to learn next. Stuff like SOLID principles, dependency injection etc. This is a book we use a lot at my company:

by that_makes_sense   2019-07-21

I highly recommend this:

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)

Also check out Clean Code also by Robert Martin.

by raiflip   2019-07-12
Another few books I've found incredibly helpful: Clean Code: Clean Architecture: Domain Driven Design:
by scarface74   2019-01-03
(None of these are affiliate links)

And just because it’s asked at every interview.

I’m focused on AWS these days, but a lot of these principals are universal.

by otras   2018-11-07
I'd recommend the following:

Clean Code: A Handbook of Agile Software Craftsmanship [0] is a great book on writing and reading code.

Similarly, Clean Architecture: A Craftsman's Guide to Software Structure and Design [1] is, no surprise, a book on organizing and architecting software.

Designing Data-Intensive Applications [2] may be overkill for your situation, but it's a good read to get an idea about how large scale applications function.

The Architecture of Open Source Applications [3] is a fantastic free resource that walks through how many applications are built. As another comment mentioned, reading code and understanding how other programs are built are great ways to build your "how to do things" repertoire.

Finally, I'd also recommend taking some classes. I started as a self-taught developer, but I've since taken classes both in-person and online that have been a tremendous help. There are many available for free online, and if in-person classes work better for you (motivation, support, resources, etc), definitely go that route. They're a fantastic way to grow.





by anonymous   2017-11-06
Sounds like something beyond the scope of this site. Also, each of the "areas", that you mentioned, is a huge topic. I would start by reading [Clean Architecture]( and [PoEAA]( books before even tying to approach any pf those topics.