Without tests, you can’t know how the production code works. When you write a test for the production code, you define how the production code works. Latter you can easily change the production code with refactoring or rewrite. Do test have to be written as good as the production code or better?
Entities can be changed. Why represent them as immutable objects?
When you get a new email message or a instant mobile message, do you really need to read it as soon as possible? Do you need to be notified that message has arrived?
Do you upload your thread dump on public site for analysis and you don’t want to expose your code?
What can a program code tell us about social interactions and psychology of people working on a project?