Top recommended books for software development and clean code

from the CommonsWare Community archives

At March 22, 2020, 2:29am, sagarsuri56 asked:

I have seen a lot many books on clean code and how to approach software development but I didn’t a clear practical approach in any of those books. I have not seen a clear set of “rules” for clean code or better software development.

Can you suggest be based on your experience, how should I approach this problem and become a better developer. @mmurphy

At March 22, 2020, 12:51pm, mmurphy replied:

I try very hard to avoid discussing architecture. I will offer my own take on Google’s architecture recommendations, and that’s about it.

My focus is on guidance for how to use APIs (Android framework, Jetpack libraries, etc.) and get stuff accomplished using those. There, a lot of the time, the answers are fairly “black and white”: there is the right way to use those APIs and a lot of wrong ways. Architecture tends to be more just a set of opinions. There is no right or wrong, only things that are in alignment with an opinion and those things that are not. And, until/unless we settle on some dominant architecture = dominant set of opinions, I am not really in position to offer a meta-opinion on whose opinions I think are right and whose opinions I think are wrong.

Your area of concern is perfectly valid, and I am not dismissing it. I am dismissing my ability to assist. I’m just not the right resource for that sort of concern.


At March 23, 2020, 3:23pm, Jan replied:

I like the way Murphy’s books discuss some pros and cons of a design approach. For example, the jetpack book chapter on binding data has a Why Bother section at end that is helpful.

At March 25, 2020, 11:09pm, sudokai replied:

I like the book “A Philosophy of Software Design” by John Ousterhout, specifically the first half. The reason I like it is that it goes a bit against the “best practices” touted by classics such as Clean Code or any TDD book, and it explains why. Personally, I’ve always found Uncle Bob’s books and talks too academic. Many Clean Code principles such as DRY and Single Responsibility become antipatterns when used indiscriminately. It doesn’t help when people go around parroting those guidelines as if there were “The 10 Commandments of software development”.

On TDD (Test Driven Development), I recommend watching this talk if you are unconvinced as I was:
Just ignore anything that mentions “The 3 laws of TDD” or any book on TDD for that matter. They are unpractical and will bore you to death.

Ending on a philosophical note, I’m of the opinion that, it’s better to write beautiful software than beautiful code. As programmers, it’s easy for us to become way too fixated on our code and lose the perspective of why we write code in the first place. Take your favorite software, can you tell if it’s written using Object-Oriented Programming? Can you tell if it uses MVVM?

Software is created to delight users, not to look pretty in programmers’ editors. Never forget that. :slight_smile:

At March 31, 2020, 3:34am, sagarsuri56 replied:

Thanks @sudokai for the references. I will surely go through the book and video.

At April 17, 2020, 7:53pm, Zakariyaf replied:

I’m new here and clean code is one of the reasons that brought me here.
I really enjoyed reading this thread, and came to the conclusion that clean code is a must for apps which are meant to evolve through a long period of time. It’s really challenging to implement, but it’s worth it in my opinion :slight_smile:

At June 6, 2021, 12:38pm, kafran replied:

Can someone suggest a book for better understanding OOP? I’m having difficulties to understand the relationship between classes: composition, aggregation, inheritance, etc.