Software development is an additive practice, where opinions and ideas are usually added to a big-ole-shipping-ball of software. I think this is where most complexity comes from.
Sometimes it can be a subtractive practice, where a person can delete / simplify, but this happens much less than it should.