FWIW: I (@rondy) am not the creator of the content shared here, which is an excerpt from Edmond Lau's book. I simply copied and pasted it from another location and saved it as a personal note, before it gained popularity on news.ycombinator.com. Unfortunately, I cannot recall the exact origin of the original source, nor was I able to find the author's name, so I am can't provide the appropriate credits.
- By Edmond Lau
- Highly Recommended 👍
- http://www.theeffectiveengineer.com/
- Single responsibility principle: a class should have only a single responsibility
- Open/closed principle: software entities should be open for extension, but closed for modification
- Liskov substitution principle: objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
- Interface segregation principle: many client-specific interfaces are better than one general-purpose interface
- Dependency inversion principle: high level modules should not depend on low level modules, both should depend on abstractions
https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Building with Confidence | |
- Investment into quality i.e. spending time improving infrastructure, refactoring code, looking for better solutions (CRITICAL) | |
- Once a week half a day bug hunt with dev team or full-time Automated QA Engineer | |
- Demanding and giving developers time to do proper testing of their own effort. | |
- Test-driven development (or BDD) and Continuous Integration | |
- Code reviews | |
- Investment into writing library-style code | |
Running Tight Ship | |
- Pre-planning meeting where the dev teams play "Planning poker" (CRITICAL) |