
Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)

pairing does not reduce the efficiency of the programming staff but does significantly reduce the defect rate.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
It is always a good idea for the team to write and maintain a short rationale and structure document. But that document needs to be short and salient. By short, I mean one or two dozen pages at most. By salient, I mean that it should discuss the overall design rationale and only the highest-level structures in the system.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
An axis of change is an axis of change only if the changes occur. It is not wise to apply SRP—or any other principle, for that matter—if there is no symptom.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
There is one consequence of considering code as software design that completely overwhelms all others. It is so important and so obvious that it is a total blind spot for most software organizations. This is the fact that software is cheap to build. It does not qualify as inexpensive; it is so cheap it is almost free. If source code is a software d
... See moreRobert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
Was this worth the time we invested in it? After all, the function worked when we started. I strongly recommend that you always practice such refactoring for every module you write and for every module you maintain. The time investment is very small compared to the effort you’ll be saving yourself and others in the near future. Refactoring is like
... See moreRobert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
I find this to be a delightfully twisted pattern. No matter how many instances of Monostate you create, they all behave as though they were a single object. You can even destroy or decommission all the current instances without losing the data.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
Note the pressure that the acceptance tests placed on the architecture of the payroll system. The very fact that we considered the tests first led us to the notion of an API for the functions of the payroll system. Clearly, the UI will use this API to achieve its ends.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
Pair programming dramatically increases the spread of knowledge throughout the team. Although specialties remain, and tasks that require certain specialties will usually belong to the appropriate specialists, those specialists will pair with nearly everyone else on the team.
Robert C. Martin • Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series)
Once, when tensions are especially high, Elaine volunteers, “I’ll work extra hard to make up some of the missing time.” You are about to correct her when, fortunately, Joe looks her in the eye and says, “When once you proceed down the dark path, forever will it dominate your destiny.”