programmers think their job is to write code, but their job is to implement solutions. sometimes those solutions involve pushing back and asking the customer to think about their workflow a different way, sometimes those solutions involve tweaking something existing or fixing a small bug, and other times those solutions require writing and fleshing out a whole new module/feature/product. the only way you know what the solution reduces the risk and provides value to your client is by communicating with them.