A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
What do we talk about when we talk about architecture?
As with any metaphor, describing software through the lens of architecture can hide as much as it can reveal. It can both promise more than it can deliver and deliver more than it promises.
Designing Software Architectures - A Practical Approach
This book is about that design process and about one particular design method, called Attribute-Driven Design (ADD). We believe that this method is a powerful tool that will help you perform design in a principled, disciplined, and repeatable way. In this book, employing ADD and several examples of ADD’s use in the real world, we show you how to perform architectural design. Even though you may not currently possess sufficient design experience, we illustrate how the method promotes reusing design concepts—that is, proven solutions that embody the experience of others.
software architecture patterns
Software Architecture Patterns by Mark Richards
Understanding Common Architecture Patterns and When to Use Them
12 More Essential Skills for Software Architects
Software architecture is about learning how to relate to people and learning how to think about
things with an eye toward architecture. 12 Essential Skills of Software Architects focused on soft skills – without these, the rest of the journey is nearly impossible
Deep Learning - Ian Goodfellow (2017-10-31)
Deep Learning - Ian Goodfellow 英文清晰原版，整理于2017-10-31，有完整的书签, 并且对大小做了优化。
Building Evolutionary Architectures - Support Constant Change
For a long time, the software industry followed the notion that architecture was something that ought to be developed and completed before writing the first line of code. Inspired by the construction industry, it was felt that the sign of a successful software architecture was something that didn’t need to change during development, often a reaction to the high costs of scrap and rework that would occur due to a re-architecture event.
This vision of architecture was rudely challenged by the rise of agile software
methods. The pre-planned architecture approach was founded on the notion that requirements should also be fixed before coding began, leading to a phased (or waterfall) approach where requirements was followed by architecture which itself was followed by construction (programming). The agile world, however, challenged the very notion of fixed requirements, observing that regular changes in requirements were a business necessity in the modern world, and providing project planning techniques to embrace controlled change.
BDD in Action
Since its modest beginnings as a coaching experiment over a decade ago, BehaviorDriven Development (BDD) has taken off in a way I never would have imagined. I’d like to tell you how it started, and why I believe it is more relevant today than it has ever been.