Hexagonal Architecture: A Netflix blog post talking about organizing a program into layers, and responsibilities in the Hexagonal Way). The principle objects they call out are business entities, repositories, services, data sources, and transports. Seems to me like you can go a long way with just these concepts and come to a well factored program. 
Hexagonal Architecture Concepts
Entities
Repositories
Services
Data sources
Transports
Software Testing
Ian Cooper on Testing
DevTernity 2017: Ian Cooper – TDD, Where Did It All Go Wrong
Write tests to requirements. Make sure the feature you’re building for a customer does what it needs to do. Test the value! This could mean integration, and end to end testing. Units are great but there’s more to think about
Lots to think about in chapter 12. On my mind right now is a new classification of tests as small, medium, and large
Small tests are less brittle and fast – they don’t leave the test process,
Mediums are slower and fail sometimes – they can call out to another process but don’t leave a machine, and
Larges are expensive to maintain and flakey in general – they involve multiple processes between separate machine hosts sending messages across an unreliable network