Despite years of efforts to improve the professional approach to developing software systems, many of these projects continue to fail. Investigations into these failures invariably denote poor interactions between humans, both within development teams and with customers and users, as a key factor. Recent evolution in development approaches, like human-centered design and extreme programming, try to address this problem, but until now, an overall view was missing. In this presentation we integrate these initiatives into a simple model, that arranges six key skills along two axes (customer–team and problem–solution) around communication as a core. Many techniques are available to implement these skills in development teams, so failure will no longer be the usual outcome.