What Should We Teach Software Developers

The great thing about having the career and credentials that Bjarne Stroustrup has is that he can talk about the “Emperor’s clothing” with out people saying “you don’t know what you are talking about.” So it was with interest that grew with each paragraph that I read his recent article in CACM. (What Should We Teach New Software Developers? Why?) One telling quote:

I see the mismatch between what universities produce and what industry needs as a threat to both the viability of CS and to the computing industry.

I have to agree. With a  career that spans both industry and academia, Bjarne Stroustrup knows what he is talking about when he talks both of the needs of industry and the role that academics perceive for themselves. All to often people in computer science see two “stovepipes” – one for academics into pure research and one for industry into a trade education. Neither view is helpful in the long run. While there is no question that pure research is important if it doesn't find its way into production at some point its long term utility is seriously in question. Without improved tools, techniques and skill sets industry is doomed to high rates of project failure, unreliable software and a failure of computing to make the differences in the world that we all believe are possible.

The failure of many academic programs to train people who can successfully work on large important projects causes industry to lose faith in the educational process. On the other hand the failure of industry to look at research results and adopt good information means that opportunities for improvement in the process of software development. There is blame to go around. And credit as well. But the need for more communication and cooperation is clear.