I've run into a few "programmers" who were totally self taught in the art of programming. The whole idea of developing a flowchart to them is a totally unheard of concept.
Also, in many cases in large originizations theres not true intergrator on the project. The project seems to be broken down into tasks done on the project by different teams that dont fully understand the entire application. Hence you have the job of the intergrater. This guy is supposed to get everybody togeather and develop a flow chart of the sequence of operations. Once the flowchart is done and everybody agrees on it, than you get down to programming.
This all may seem too obivous, but I've seen it happen, resulting in a program, or system that never really works quite right, and requires constant trial and error editing.
Also consider the idea of trying to program around the misapplication of field devices. I've seen some posts here, where the programmer seems to be having a problem attempting to get the results he needs due to the use of the wrong components in the field.