.. programming knowledge. Those are the one causing trouble in the company I work for. However, you are right in saying that many programmers are like this also because many programmers have limited background in other aspects of programming (architecture, requirements, ...). At least, because they go through the process even those programmers understand that programming in the real world is not simple.
Non-programmers with some programming knowledge on the other hand have the strangest ideas and are the ones in management causing real trouble. Most engineers for example have had project management training. However, they don't have the specific software project management knowledge needed for projects that involve software (most projects).
One manifestation of this is the "gate process" that we use. This process is very rigid and fundamentally Waterfall (requirements -> design -> ...). It is not such a bad fit for the guys in mechanic or electronics however we software people find ourselves in a state of perpetual friction against this high level aspect of our process. Trying to fit some level of iteration into it.
Another example is estimation. They expect estimation to be precise at the 10% level very early in a project (before we start the actual design). As you know this is very difficult (if not impossible) to do for arbitrary software projects.
Software people that end-up in management position are not the worst for us because even if they are not top notch manager at least they have some understanding of the software development process and this crucial.
You are right about cross-pollination but for me most of it needs to be from the software domain to other discipline (management being the biggest offender).
Keep Up with TechRepublic