To that end, I often recommend that developers go and find jobs outside of traditional software businesses for a while. If you spend a few years writing code for a publishing house or an oil company you'll see more of the challenges that affect those businesses that you can apply software to. If you spend your entire career working in a software company it's unlikely you'll realise that these problems exist because (generally speaking) software companies have already realised they're a problem and addressed them.