Do tell, I’m always interested in peoples paths to their current software philosophy. Mine is born out of working at two companies at either extreme.
Company A:
Writing firmware for routers/switches, the code base was gargantuan written in C and had evolved over time and pretty much no API’s at all, every variable was just extern’ed and used wherever it was needed. It was an unbelievable rats nest of dependency hell. It basically became impossible to change anything without breaking something else. Fixing a bug meant you were pretty much guaranteed to introduce a bug somewhere else. The management solution to this problem was more code reviews, it would take me a week to introduce a line of code. I lasted there for 6 months.
Company B:
Web based applications for managing people/processes. The code base was also gargantuan, written in Java and ridiculously over-engineered. There were more interfaces than classes and roughly only 10% of the code actually did anything. Fixing a bug was a nightmare as you had to drill down through layers upon layers of abstraction to find the code you were after. The company was all about frameworks and design patterns. It is here I grew to hate the phrase “business logic”, also lasted 6 months.