communication
it’s safe to say that almost all software projects require the collaboration of stakeholders in different roles (domain experts, product owners, engineers, designers) as in any collaborative effort the outcome depends on how well all those parties can work together. for example, do all stakeholders agree on what problem is being solved? what about the solution they are building do they hold any conflicting assumptions about its functional and non-functional requirements? agreement and alignment on all project-related matters are essential to a project’s success. yet despite the importance of effective communication in the project success, it is rarely observed in software projects, often businesspeople and engineers have no direct interaction with one another, instead domain knowledge is pushed down from domain experts to engineers, and it is delivered through people playing the role as mediators or translators systems/business analysts or product owners. during this traditional software development lifecycle, the domain knowledge is translated into an engineer-friendly form known as an analysis model, which is a description of the system requirements rather than an understanding of the business domain behind it. such mediation is hazardous to knowledge sharing because in any translation there’s information is lost and in this case, it is domain knowledge that is essential for solving business problems. also often these documents got out of date quickly.