Software development has a spectrum. At one end is the business domain or the context for the problem to be solved. At the other end is the technology - the code, tools and systems that solve the problem.
There are many roles spread across this spectrum. Some common ones are User, Domain Expert, Business Analyst, Project Manager, Technical Analyst and Developer.
Where do these roles fit on the spectrum? Is there a standard for where they fit?
User and Developer are easy - they are at the ends. Project Manager is somewhere in the middle. Domain Expert and Business Analyst are somewhere between the middle and the business domain. Technical Analyst is somewhere between the middle and the technology.
As a software developer, what roles do you interface with? What roles influence you? What roles provide the knowledge you need in order to do your job?
If the majority of your interface is on the right side of this spectrum then your knowledge and experience is second-hand and chances are you aren't even aware of the problem. As a result, you are probably creating software that doesn't reflect the business domain. And unfortunately, the result is that the problem domain is often altered to fit the solution.