my coworker and I were discussing this thread and the problem in general, and we were thinking about how unique the situation here is. We work for a national lab, and the setting is a oh-so-lovely mix of academia and bureaucracy. The programmers here are all grouped into the lower-paid technician category, and the scientists are the better-paid and more-respected staff members.
Very few of us have any private sector experience or academic training in computer science. Most of the coders are trained as scientists, who learned to code along the way. Now, I want to say now that one doesn't need to have a degree in CS to code well, but more of that most of the coders here have learned to code in an environment without thinking about things like OOP or abstraction. And nobody really seems to value elegant code or even understandable code.
It would be nearly impossible to ever have a coder-type person in charge of everyone, because people in charge need to bring in their own funding, generally scientists. Or each project would have to be willing to chip in to fund a lead-programmer/software architect type person, which isn't going to happen in these lean times.
And of course, once you are in , you are basically in for life. I must be the only person who is limited-term on the team (i.e., could actually get rid of), and I haven't mentioned, am the youngest and the only female coder. Which probably doesn't help when I am trying to convince guys 15 years older to try out my code.