0.1.2 A note for software architects
0.3 A note on the bibliography
1.1.1 The problem with projects
1.2.1 What Makes a Garden Grow?
1.3.3 Earlier notions of software engineering
1.3.4 Moving forward with software engineering
2.2 Checklist for a new code base
2.2.3 Turn on all error messages
2.3 Adding checks to existing code bases
3.2 Why programming is difficult
3.2.2 Code is read more than it’s written
3.3 Towards software engineering
3.3.1 Relationship to computer science
4.1 Start with working software
4.1.1 From data ingress to data persistence
4.2.3 Moderation of static analysis
4.4.3 Configuration with database
4.4.5 Boundary test with Fake database
5.1.1 The Transformation Priority Premise
5.1.3 Copy DTO to Domain Model
6.1 Short-term versus long-term memory
6.2.4 Devil’s Advocate versus Red Green Refactor
6.2.5 When do you have enough tests?
7.2 Code that fits in your brain
8.1.4 Favour well-named code over comments
8.1.6 Command Query Separation
8.1.7 Hierarchy of communication
8.2.2 Interacting with an encapsulated object
11.1.1 Changing the safety net
11.1.3 Separate refactoring of test and production code
12.2.1 Reproduce defects as tests
12.2.3 Non-deterministic defects
13.1.3 Referential transparency
14.2.1 Regularly update dependencies
15.3.2 Behavioural code analysis
A.5 Checklist for a new code base
A.9 Decorators for cross-cutting concerns
A.12 Functional core, imperative shell
A.13 Hierarchy of communication
A.14 Justify exceptions from the rule
A.18 Regularly update dependencies
A.19 Reproduce defects as tests
A.22 Separate refactoring of test and production code
A.26 Transformation Priority Premise
18.117.81.240