This pretty much describes my mumble-many years of increasing scope as a programmer. There is plenty of irreducible complexity around, but there’s FAR MORE accidental complexity from incorrect attempts at encapsulation, forcing edge cases into “standard mechanisms” (bloating those standards), failing to force edge cases into “standard mechanisms” (bloating the non-core systems), insufficiently abstracted or too-abstracted models of data and behaviors, etc.
It’s easy to move complexity around a system. Done haphazardly, this increases overall complexity. Done carefully, it can decrease overall complexity. Knowing the difference (and being able to push back on (l)users who are not listening to process changes that make the world easier) is what makes it worth hiring a Principal rather than just a Senior SDE.
This pretty much describes my mumble-many years of increasing scope as a programmer. There is plenty of irreducible complexity around, but there’s FAR MORE accidental complexity from incorrect attempts at encapsulation, forcing edge cases into “standard mechanisms” (bloating those standards), failing to force edge cases into “standard mechanisms” (bloating the non-core systems), insufficiently abstracted or too-abstracted models of data and behaviors, etc.
It’s easy to move complexity around a system. Done haphazardly, this increases overall complexity. Done carefully, it can decrease overall complexity. Knowing the difference (and being able to push back on (l)users who are not listening to process changes that make the world easier) is what makes it worth hiring a Principal rather than just a Senior SDE.