When building software, it’s a good idea to identify the needs of 3 different kinds of audiences.
The first 2 kinds are obvious ones. We know to listen to what our End Users ask for, but not necessarily build everything they ask. And we want to balance what the Business wants with when they want it.
The last audience, the fellow Developer, is often forgotten. This means writing clear and concise code. This also means identifying the common maintenance points in your software and making it easy to work with.
And this also means factoring into the design the capabilities of the development team. Just like it is unacceptable to write bad code, it should be just as unacceptable to over design software beyond the hiring practices of the company you work for.