Managing Development Complexities across Hardware and Software Teams