There was a discussion in my cube yesterday with an engineer that I thought interesting in the context of attempts to get better growth and performance from our company. The position of the engineer was lack of communication between development and management is a problem for many companies, but this is really the fault of management because they cannot understand engineering. If the manager takes the time to explain his or her techniques, tools and terminology, a programmer with their assumed mathematical skills will likely understand what the manager knows, but the reverse cannot be assumed. Programming is innately complex and mysterious and no matter how long and how well the programmer explains their techniques, tool, and terminology, the manager will never catch on. For this reason, the arguer went on, development decisions and design decisions must be left strictly to the engineering staff. Interference by product planners, line managers, upper management, and for God's sake, anyone from the sales staff is just interference and time wasted plus exposure to risk that the product will not perform.
Do you believe this?
My position is this: programming is not that complex although some applications are. Any discipline practiced widely enough suffers from from terminology legacy, that is, the language used is likely a polyglot with layers of overlapping terms accrued from many years of practice and reinvention. That which is assumed to be science by some is just common practice. Further, any terms acquired in a discussion or description that are not applied with some regularity become meatware clutter, that is, they can be pronounced but applying them well without experience is dubious. It becomes a case of "A little learning is a dangerous thing. Drink deep or taste not of the Pierian spring" as Willy the Shake wrote.
Truthfully, of those of you who sling code for a living, how many of you know how discounted cash flow (DCF) and earnings-based valuations work and can be reconciled? Do you know what the key performance variables are for forecasts (sales growth, profit margins, working capital turnover and long-term asset turnover) as well as financial leverage and cost of capital? Do you know how to get those values (from whom, who is credible, how do you vette the data, etc.)?
You might be able to write the code to calculate the values, but I suspect that given some reasonable practice, so can your manager. I also suspect your manager has a better grasp of when to use that software and when to trust their gut. All the counter examples exist on the other side of the knowledge chasm, of course, but I think the point is made.
Too often, we don't trust each other and that is really why so many of our businesses fail or have mediocre growth. We do have to trust each other to do their job. Otherwise, we are drinking from the well of our incompetence.