Software Principle #1: Earn your complexity
Complexity is everywhere. In every domain, under ever rock, lies something that requires years of experience to fully understand.
In software development, we learn about these complexities and try to model them using computer languages in our best guess efforts. The thing is though: very rarely are engineers domain experts.