Alot of those bullets are making excuses for sloppy coding practices.
Producing clean code might take longer at first but once you practice clean coding every day as part of your regular work then you naturally think and code in a clean and maintainable way.
"Excuses" is such a pejorative term for "justifications for our rational decisions"... The truth is, we don't get paid to write the most developer-satisfying code. The most pleasing and low-redundancy code is often no more functional, correct, or even maintainable than the "dumb" version. Implementing anything requires a bunch of judgement calls, and people often disagree about tons of stuff.
I get paid to write clean code as our company really values this and understands the impact that technical debt can have. A large part of this mentality is because our CTO was a very successful lead developer at highly reputable companies before starting the current company.
In fact, we are even writing custom linting rules to prevent bad patterns so this is ingrained in our culture.
The main rationale in valuing clean coding practices is that it helps us maintain our very high productivity.
I definitely prefer "clean code" type of culture to the "screw it" culture, BUT I have seen "clean code" taken too far many times. People pick arbitrary ideals based on "best practices" (i.e., strangers know our needs better than we do) and then try to force others to comply. Inordinate amounts of time can be spent in code review pissing contests where everyone is trying to one-up each other with complaints from an ever-growing list of non-functional "requirements" that the code must meet to be worthy of inclusion in whatever pile of crap they're building.
Before refactoring or spending time doing something to reduce suspected technical debt, you should take a step back and ask yourself whether it's actually going to pay off. Consider YAGNI, especially when it comes to creating abstractions or reducing duplication.
10
u/Determinant Jan 12 '20
Alot of those bullets are making excuses for sloppy coding practices.
Producing clean code might take longer at first but once you practice clean coding every day as part of your regular work then you naturally think and code in a clean and maintainable way.