Skip to content

Yet another programming solutions log

Sample bits from programming for the future generations.

Technologies Technologies
  • Algorithms and Data Structures
  • Java Tutorials
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Spock Framework Tutorial
  • Spring Framework
  • Bash Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Developer’s Tools
  • Productivity
  • About
Expand Search Form

Top Software Design Books

farenda 2015-11-30 0

A list of Top Software Design books. Some of them are eye openers, some are hard read, but all of them will definitely change the way you build systems!

“Clean Code” Robert C. Martin

Clean Code

 

Clean code is the basis of good software design, and anyone who is to write any piece of code should read this book! Skills from this book are a must for professional software developers. Design won’t help when the code is not clean.

“Applying UML and Patterns” Craig Larman

Applying UML and Patterns Fantastic book, worth reading for at least two reasons:

  1. It describes GRASP patterns.
    These are fundamental design principles, which together with SOLID and GOF patterns should be known by every (good) software developer.
  2. It shows how an experienced software designer thinks.
    The author goes through design process of two applications (one business system and a game) and shows what he thinks at each step, how he applies GRASP patterns, why he chooses one think over another. Very valuable book!

Don’t get fooled by UML in the title. I thought the same: “What!? Yet another UML book?“. IMHO putting UML in the title was a marketing mistake, that puts many off the book, but the book is worth more than its price!

“Agile Principles, Patterns, and Practices in C#” Robert C. Martin

agile-principles-patterns-and-practices-in-csharp

Does SOLID ring the bell? It’s all here and more.
Great chapter with application of Test-Driven Development and how it leads to simple design that does the job.
Like “Applying UML and Patters” it was eyes opener for me. And again, don’t get fooled by the title – just replace C# with Java and the code will compile with JDK just fine. ;-)

“Design Patterns: Elements of Reusable Object-Oriented Software” Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Design Patterns

A book with description of 23 basic design patterns that many people talk about, but not many know.
GOF is hard to read, especially that examples are in C++ and Smalltalk (who speaks Smalltalk these deays?), but still it contains many insights and the descriptions of design patterns are very deep and valuable.
Alternatively/also one can read a different book about GOF patterns. Head First Design Pattens doesn’t describe all of them, but is much easier to read and has some good examples.

“Domain-Driven Design: Tackling Complexity in the Heart of Software” Eric Evans

Domain-Driven Design

This book is invaluable for software developers that work with complex domains. The author shows many valuable viewpoints and concepts. Things like Ubiquitous language and Bounded Context had a great impact in some of my projects. Be warned: the book is bloody hard to read!

 

“Refactoring to Patterns” Joshua Kerievsky

Refactoring to Patterns

In most (all?) enterprise projects the work have to be done in existing projects. Hardly anyone starts projects from scratch, so to apply Design Patterns one have to refactor to them. And this book is about that.
If you would have to learn only one thing from all of these books, learn Compose Method pattern from this book. It turns shi**y code into readable, more maintainable one. I use it everyday.

This list is far from complete and will be updated. :-)
Share with the World!
Categories Reading Tags books
Previous: Java Atomic Example
Next: Java CountDownLatch example

Recent Posts

  • Java 8 Date Time concepts
  • Maven dependency to local JAR
  • Caesar cipher in Java
  • Java casting trick
  • Java 8 flatMap practical example
  • Linked List – remove element
  • Linked List – insert element at position
  • Linked List add element at the end
  • Create Java Streams
  • Floyd Cycle detection in Java

Pages

  • About Farenda
  • Algorithms and Data Structures
  • Bash Tutorial
  • Bean Validation Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Java 8 Streams and Lambda Expressions Tutorial
  • Java Basics Tutorial
  • Java Collections Tutorial
  • Java Concurrency Tutorial
  • Java IO Tutorial
  • Java Tutorials
  • Java Util Tutorial
  • Java XML Tutorial
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Software Developer’s Tools
  • Spock Framework Tutorial
  • Spring Framework

Tags

algorithms bash bean-validation books clojure design-patterns embedmongo exercises git gof gradle groovy hateoas hsqldb i18n java java-basics java-collections java-concurrency java-io java-lang java-time java-util java-xml java8 java8-files junit linux lists log4j logging maven mongodb performance quartz refactoring regex rest slf4j solid spring spring-boot spring-core sql unit-tests

Yet another programming solutions log © 2022

sponsored