The easiest way to get derailed in software is misunderstanding the customer’s actual problem and then build the wrong solution. Deeply focusing on what a customer is trying to accomplish, and building a far better, faster, or cheaper solution to the problem is fundamental.