Since there is an
essential complexity to most interesting software, we can't expect to reduce complexity, we can only seek to manage it: that means raising the levels of abstraction in the components we create, and eliminating the points of friction in the team and in its processes.