Friday, September 21, 2007

CompSci != Software Engineering

Regarding Chris Chapman's article Reviewing Ontario CompSci Schools: Who's Teaching Best Practices? of September 17,2007

I was going to post this as a comment on his blog, but it turned into a posting of my own :)

I definitely appreciate the sentiments Chris has raised and respect the research he has done (even if he says it is a rough assessment). My biggest beef with this analysis, however, is that it completely ignores the fact that as many as half of the schools looked into also offer Computer Engineering with a Software specialization, if not true Software Engineering within the Engineering (not the Science) faculties.

I will insist that this is an important distinction. A Science faculty is going to emphasize research and development, as well as the more hard/pure/abstract aspects of Computer Science. Topics such as best practices in industry, ethics and professionalism are of course going to be elective, as they might be in mathematics or botany programs. I suppose the unfortunate reality is that most Comp Sci grads still go into industry as a developer (for instance) but the industry has made the assumption that such grads are software professionals truly grounded in best practices and methodology.

Software engineering is such an oft-abused word and by no means does a comp-sci grad necessarily have software engineering skills or even understand what software engineering really means. Especially in Ontario (to tow the line of the PEO) it is becoming clear why so many engineering faculties are trying to bring software engineering into their domain - industry is expecting a software developer to have engineering skills! And as you imply, it is to the detriment to us all in the software industry if these issues are not cleared up: people in the industry need to have a grounding in best practices and projects need to completed successfully within time/budget etc.

Having come through the Software Engineering program at UWO, I agree that there is still some bias towards requirements engineering (which for better or worse is still an approach used in the industry) but other methodologies including Agile are gaining more ground. The academic calendar for Western's SE program can be seen on this link:

Universities by nature still tend to be slow moving of course and with such a rapidly evolving industry like software, there will likely always be a disparity between what is taught and what is done. That means industry may have to bear the burden of ramping up new grads. So be it - I'm sure this is nothing new to most employers. That said, I am all for academic programs (particularly ones with an industry focus, like engineering) teaching and making mandatory courses on best practices.

The reasons for software project failures are many, not the least of which is people understanding the difference between software and other "hard engineering" projects. I think much of the solution lies in educating industry on where best practices are truly taught (as Chris has helped show) but more importantly actually teaching them to all software graduates (especially those becoming software professionals) and this will likely include the continued migration of teaching software engineering into the engineering schools.


Chris R. Chapman said...

Great post Ben; I concur with your observation and in fact, I rather coincidentally wrote about the distinction between CS and SE in a follow-up post today.

You are correct in pointing out that there are specialization streams that direct students in according directions - nothing wrong with that, and it makes sense.

However, I fail to see why best practices should be solely in the domain of software engineers - these are skills that are readily applicable irrespective of domain specialization and certainly wouldn't hurt to be exposed to.

What's most troubling is the inconsistency with which "software engineering" concepts are applied - some programs demand it, some don't, some require only one half-baked, half-credit course with no labs, some require four full-credit courses. And shockingly, some of these programs get CIPS endorsements (not that I really view CIPS that highly to begin with).

I'll be releasing the rest of my research for schools in the remaining provinces next week, which already seem to fit the pattern set by Ontario, with some notable and surprising exceptions!

Thanks again for your comments, Ben! Much obliged!

Benjamin said...

Chris - yes just as I posted my comments I noticed you had a new post :)

You are right - best practices are not to become exclusive to certain practitioners, and further should be built into any education around software. We only stand to gain from that.

I have a lot of hope though that since it is now common knowledge software projects are prone to fail without proper planning, management and best practices, organizations that tackle them will insist on team members with that required background. This in turn will help drive educational institutions to respond and incorporate a more appropriate amount software engineering into the core of all of their programs.

I look forward to reading your continued research on the subject!