#3 doesn’t fit. Unit tests are close to useless and have so much magical-thinking bullshit connected to them that they end up being in the deficit column.
Want to be an awesomely crappy developer? Enthusiastically follow fads. The goofier the better. Agile! Scrum! TDD!! You’ll get very little done because you can’t concentrate and what you get done will be loaded with bugs. And the solution is to write unit tests, not to demand fewer interruptions.
I’ve been working from home either freelancing or remoting and I’ve been away from the onsite world since 2010; I come back to an industry afloat in an ocean of liquified boiling bullshit. The fundamental problems with TDD are evident to anyone who has ever worked in a sane workplace; nomenclature is so degraded that it may as well be grunts and groans (“refactoring”; “stories”; “technical debt”); nobody can concentrate. And they just accept this.
You make a few good points but on formatting you leave out all the important ones. Consistency in formatting is only virtuous if the formatting is good, and very little is. Most formatting is jagged and cluttered and a lot of people still use early returns, some even stridently defend them.
I’ve written in a lot more detail on many of these issues, please feel free to read the SD articles under my name and comment if you like.
As far as I’m concerned software development has gone crazy. I wouldn’t last a week in the world of jargon and interruption and have no intention of trying. I will never work onsite again but with my record of achievement and experience I can call those shots. Right now I’m doing technical writing because unlike those goofy-ass unit testers I write documents.