
Nygard shows readers how to design and architect their application for the harsh realities it will face. With a combination of case studies and practical advice, this guide will help readers avoid the pitfalls that cost companies hundreds of thousands--sometimes millions--of dollars.
Yes. At one point I thought a set of good programs can be composed into a good architecture. Then at another stage- with agile, etc.- I was thinking about evolutionary architectures.
But experience and dealing with different kind of problems and systems work best. Also, I have seen Conway's law hold when many other patterns, principles fail.
Books like Garlan Shaw are good but help if you have some experience. Some other books/ courses like Neal Ford's help, but for me those helped only to know the terms/ ideas. Practice and rewrites, tech-upgrades helped more. Also, books like Michael Nygard's Release It.
> Dijkstra claims simplicity is a prerequisite for reliability. According to Dijkstra, if we encounter a system that’s reliable, it must be a simple system, because simplicity is required to achieve reliability. reliability ⇒ simplicity
Begged question. Dijkstra did not reason by analytically smashing a problem's bones with Occam's axe.
This author seems to not understand anything about his premise and wildly waves his hands to a associate his begged question with attributions to authors:
> reliability ⇒ complexity Look at classic works on improving the reliability of real-world systems like Michael Nygard’s Release It!, Joe Armstrong’s Making reliable distributed systems in the presence of software errors, and Jim Gray’s Why Do Computers Stop and What Can Be Done About It?
Suggestions for how to incrementally decrease the failure modes of a system you don't understand should not be attributed to Dijkstra! He didn't think like this. He was interested in reasoning about program correctness. His concerns were why should you trust the output of a program; formally, how do you know it is correct; how can you show you understand a program. He reasoned about programming mathematically, from axioms, through theorems, to lemmas, to proofs. He did his reasoning about correctness via consideration of carefully defined problems and computing machines.
To clarify context about "computational" correctness, Dijkstra'a life spanned a time where the word computer went from meaning a human being performing a calculation— implying all the richness of human thought brought to bear on a problem— to the edge our modern world of pocket devices with trillions of parts running at billions of cycles per second.
As to any analogy of reliability taken from biology: please note that life's primary contour of fitness is expressed in death!
Those certifications are worth having too. CKAD is a performance based exam and is therefore quite practical, which I think will make you a better engineer.
People / Soft Skills:
* How to win friends and Influence People - Dale Carnegie
* Secrets of Consulting - Gerald Weinberg
* Peopleware - Tom DeMarco & Timothy Lister
* Nurtured by Love - Shinici Suzuki
* Turn the Ship Around! - David Marquet
* Never Split the Difference - Chris Voss
http://dhemery.com/articles/resistance_as_a_resource/
http://dhemery.com/articles/managing_yourself_through_change...
Macro Skills:
* Toyota Production System - Taiichii Ohno
* Workplace Management - Taiichii Ohno
* Thinking in Systems - Donella Meadows
* Fifth Discipline - Peter Senge
Agile:
* Extreme Programming, Explained (2nd ed.) - Kent Beck (the annotated bibliography is a goldmine)
* Chaos: Making a New Science - James Gleick
Programming:
* Implementation Patterns - Kent Beck
* Test-Driven Development, By Example - Kent Beck
* Refactoring (both editions) - Martin Fowler
* Refactoring to Patterns - Joshua Kerievsky
* Practical Object Oriented Design - Sandi Metz
* Functional Programming in Scala - Chiusano & Bjarnason
* Growing Object-Oriented Software, Guided By Tests - Freeman & Pryce ("The Goose Book")
* Modern Java in Action - Raoul-Gabriel Urma
* Java Concurrency in Practice - Brian Goetz
* Grokking Algorithms - Aditya Y. Bhargava
Architecture:
* Righting Software - Juval Lowy
* Release It! - Michael Nygard
* Site Reliability Engineering - Beyer, et al. ("The SRE Book”)
* Domain Driven Design - Eric Evans
* Introduction to Permaculture - Bill Mollison and Mia Slay
* Fun with a Pencil - Andrew Loomis
Design:
* All books by Edward Tufte, especially “The visual display of quantitative information”
* The Elements of Typographic Style - Robert Bringhurst
* Understanding Comics - Scott McCloud
* Design of Everyday Things - Don Norman
* Notes on the Synthesis of Form - Christopher Alexander
* The Timeless Way of Building - Christopher Alexander
