Update: I've revised the results table to highlight the best practices that are offered as an exclusive course and as a potential constituent unit, with the former in orange and the latter in blue. Additionally, I've adjusted the totals for each best practice column to reflect the differences. Update 2: Dr. Gregory Wilson, Adjunct Professor of Computer Science at the University of Toronto recently contacted me to point out that they have a specific course offering in agile best practices (CSC301). While I do observe this in my table of results and raw research notes, I didn't make it clear in the bulleted highlights. CSC301 is exemplary in that it not only instructs on agile, but also design patterns AND refactoring in addition to other topics. Update 3: I've released my findings for CS schools across Canada here.
Update: I've revised the results table to highlight the best practices that are offered as an exclusive course and as a potential constituent unit, with the former in orange and the latter in blue. Additionally, I've adjusted the totals for each best practice column to reflect the differences.
Update 2: Dr. Gregory Wilson, Adjunct Professor of Computer Science at the University of Toronto recently contacted me to point out that they have a specific course offering in agile best practices (CSC301). While I do observe this in my table of results and raw research notes, I didn't make it clear in the bulleted highlights. CSC301 is exemplary in that it not only instructs on agile, but also design patterns AND refactoring in addition to other topics.
Update 3: I've released my findings for CS schools across Canada here.
In addition, I wanted to know about courses offered that did not fit the above criteria, which I defined as Big Design Up Front / Waterfall "bad practices". Often these fall under the rubric of "software engineering".
The Results:
Below is a table that I constructed from the raw data I was able to glean from each university's online course calendar for the current 2007-08 academic year. At a very high level, I wanted to answer the question of whether the topics were covered, and have indicated with "Y" and "N" if the outline specifically mentioned the best practice in question. Those departments that offered instruction exclusively on a given practice (as opposed to a constituent unit) are highlighted in orange.
The last two columns in the table indicate how many "software engineering" vs. best practices courses are required to obtain a computer science degree.
Highlights:
Perhaps most surprising in the findings was that the University of Waterloo offered no best practices courses. This is surprising given Waterloo's vaunted status as the go-to school for IT/software and happy hunting ground for Microsoft.
Conclusions:
Based on this very rough assessment, it seems that post secondary schools in Ontario are failing to impart recognized industry best practices to their students. I imagine that similar findings can be gleaned from other provinces and perhaps most U.S. schools - I hope to expand this research in the days ahead.
The net effect is that students are paying for knowledge that is a serious detriment to their profession and industry, and that a lot of post-graduate effort needs to be expended by employers (unlikely) and the students themselves (more likely) to become aware of and proficient with industry best practices - to go, as Andrew Hunt and David Thomas observe, from journeyman to master.
Unfortunately, as long as there is no demand from business to have better, more professional graduates who are skilled in these recognized best practices, software failures will continue to pile up, while those of us who are still in the game become increasingly cynical about an industry that seems indifferent to success.
It's time for a change, n'est-ce pas?
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.