You need to have a much more flexible set of roles, and you have to realize that even within the programming area, people vary. And people measure productivity of programmers and it varies by a factor of ten within a small group very regularly and sometimes by a factor of 100. Sometimes they are, but when they are they quite often did their programming fifteen years ago and are a bit out of touch. It is very hard. It is a very immature discipline, and it has to not only mature, but it has to mature on its own conditions, not in simple imitation of, say, hardware design.
Software is different and difficult.
So we need to look into it. But I know full well that this is not a mature engineering discipline. This field has spread out into so many different areas, it's impossible to teach everything to every student. We do not know how to specialize yet. A lot of attempts to specialize have left out critical parts that are needed to do a job well.