What about code reengineering and working with legacy code. It is not just maintaining old code but also knowing how to add and remove components well, without breaking downstream and/or upstream systems. And if you do have to break it, managing expectations and communicating those ahead of time.