My issue at hand is when developers are tasked to design the business solution (not technical solution) because they believe or their superiors believe that they have the skill-set to design a business solution to solve real business problems. Stop it! A Developer is NOT a Domain Expert!
To clarify, most developers are not domain experts (other than the domain of development). The developers that do have a skill-set that allows them better define workflow and use cases are usually described as “rockstars” or they end up in working for themselves consulting.
First let me provide background to give some context. I live in a professional development services, dealing with business customers in a variety of domains/industries, creating business applications. We are often approached to create a custom software solution to solve business problems or to fill a gap. In most cases, the business solution has not yet been designed, or has been design but is arguably not the correct solution.
In my experience, most developers are not business analysts and do not have the proper experience or knowledge of business (models) or skill set to create a business solution that truly solves business problems. Yes, we can create exactly what a user requests. Yes, we can provide suggestions for technical or usability features. Yes, we can create a great technical solution. However, we need to understand our capabilities and make the customer understand we don’t own the content or are the subject matter experts. Too often developers are put into situations by themselves, leaders, or customers that they do not qualify nor should the have the responsibility for. Just because you can create any piece of software, doesn’t mean you should define the business solution.
I’m a strong believer in Domain Driven Design. Collaboration between domain experts and developers is essential when creating software for a complex domain. However, don’t be fooled thinking a developer understands a foreign domain enough or better than a domain expert in order to fill that role.
Note: This article was rewritten to differentiate between Developers and Domain Experts instead of Developers and Business Analyst.