Hi! 17+ years of experience in software engineering over here. Here's my take:
Building any software system is like trying to constantly improve a house with a million moving parts, all the time. Every component must work with every other component, and any tiny error in say, the plumbing...