Students learning DRY on day 1 and then applying it to the max before intuitively understanding the problems DRY solves.
I encounter people trying to establish standards and abstract patterns on the first pass of code...
I put, for instance, TDD in the drills category. I don’t think you should live in TDD. nor do I think you should avoid TDD because someone said they thought it wasn’t a viable lifestyle choice. You should do it for a while every six months or a year to knock the cobwebs off and remind you what sort of tests you’re going to need and write code that complements good tests, rather than fighting them.
DRY is a bit more complex. I think DRY in unit and integration tests is a slow death. Tests should be DAMP because requirements change, and so do languages, frameworks and libraries. DAMP avoids the sunk cost fallacy which I’ve seen nerd snipe too many people. Test isn’t useful anymore? Just delete it. Or replace it. Boom, done.
The military also. Individuals learn 'part task' drills (e.g. firing a tank gun), then practice them in a team environment (e.g. the different crew roles working together in a single tank) and then finally (in something fairly unique to the military) exercising collectively: multiple teams working together to achieve a common task. E.g. several tanks coordinating an attack, then adding in infantry, etc.
Brought to mind "wax on, wax off" from the original Karate Kid movie.
DAMP... Do Always More Pasting
Descriptive And Meaningful Prose
Just have your test say what it does. Don’t play code gold and get clever. Tests for different features should be able to die separately. No coupling.
a concrete problem domain has an ideal solution with ideal abstractions for its purposes
seek to understand your problem domain to a reasonable extent before writing hard-to-change code
Of course, we don't understand the problem domain perfectly from the start, and neither do we write perfect programs from the start. It's an iterative process of optimization, where you alternatively work on a specific understanding or work on the understanding. Everyone has to figure out that balance for themselves.That's precisely why it's useful.
"On your discretion" would just lead to endless bikeshedding - as having a useful discretion requires that you are already advanced enough to not need such advice.
It's not that new devs really understand three to be some special number either: just a useful heuristic, which can be 2 or 4 or 5 if needed.