The software development community widely accepts that software should be modular and reusable. You should use libraries rather than reinventing things yourself. There’s OOP, DRY, SOLID, abstraction, encapsulation, agile, continuous delivery, and SOLID. You have frameworks and testing and code reviews and Kanban.
I lump all of these together under the umbrella of “Software Orthodoxy”. Good and proper developers follow these mantras and encourage others to do the same. Ramshackle software houses regretfully wish they hadn’t fallen off “good” path of software orthodoxy. They are caught in a prison of technical debt. Development procedes at a glacial pace and every release is a potential nightmare of instability.
Or maybe that’s just what the followers of software orthodoxy have been led to believe. If everyone is following the same set of guidelines, how will we know that we’re following the best approach? I would argue that we should encourage a huge variety of approaches to development. This would prevent the software development industry from sticking to a local maximum. Rather than continually investing in the same patterns again and again, the software development community should embrace those who are fighting against the norms.
The “handmade” software community is a seed bank. The enclaves of functional programming seem to occupy their own niche as well.