Ill-Informed Commentary Considered Harmful
The April 2010 issue of Communications of the ACM has an article by Keith Wright titled “Capstone programming Courses Considered Harmful”. Dr. Wright teaches business intelligence courses at the University of Houston-Downtown, and once you get past the three and a half columns of autobiography that he opens with, his thesis is:
- Enrolment in CS programs is down. OK, no problem so far.
- “…a lucrative United States career as a generalist professional programmer [is] a thing of the past” because the jobs are being offshored. Hm… OK, it’s not that clear-cut, but I’m still on side.
- Further, there has been a “…dramatic decline in demand for U.S. programmers over the period from 1974 to 2004.” Uh, what? Oh, there’s a footnote (pg. 126): “Demand for database, ERP, and ecommerce servers skills are on the rise.” I’m confused: does he think that making Oracle, SAP, and WebSphere behave doesn’t count as programming? And even if that’s true, demand for programmers has declined from 1974 to 2004? Crap.
- “When designing computing curriculums, it is useful to first consider the capstone courses.” Not the way I’d do it, but OK.
- I need to break the next paragraph down line by line:
- “Many of today’s capstone courses involve locating real programming projects in the community.” Sure, the good ones.
- “However, this is often too time consuming.” Compared to what? And why does he think it’s any harder for CS than for the engineering schools (most of which have to include a year-long capstone to keep their accreditation)?
- “Furthermore, real projects are usually too difficult for college seniors.” Crap. There are projects of all shapes and sizes out there, from porting Django to Python 3 down to tweaking the web site for a local community group.
- “Other capstone computing courses have students working individually on imaginary projects, giving them a chance to build something they own.” OK.
- “Unfortunately, this may give students a poor understanding of the real world.” Well, sure, if it’s done badly, and the same can be said of any coursework.
- “Finally, we do students a disservice if capstone courses give them the impression they are likely to become professional programmers.” Ah, now we come to it…
That last point is, I think, the hinge of the whole article. Wright thinks that most CS graduates are going to go off and do things that aren’t programming (like, you know, building web applications ‘n’ stuff), and that having them do a big programming project in their final year is therefore misleading. His solution?
I believe part of the answer lies in industry best practices like those captured in the IT Infrastructure Library (ITIL) and the corresponding international standard—ISO 20000. So I suggest…that capstone programming projects be replaced with the following internships:
- Service desk (first-line customer support).
- Change management.
- Programming (good to see this hasn’t been thrown out completely).
- Networking (configuring, diagnosing problems, etc.).
- Problem control (by which he means operating system administration).
- Service level management: “Emphasized would be the writing of ethical service level agreements, underpinning contracts, and operational level agreements.” Yee hah, I can feel my heart pounding faster already.
I find it hard to think of a better way than this to drive bright students away from computer science: if we offered the UCOSP students job training for Fortune 500 IT departments, we wouldn’t have any UCOSP students. Yes, a stint on the help desk is a good reality check, and it’s important for computer scientists to realize how confusing our creations are to the 99.5% of humanity who can’t think recursively. And yes, software engineers should know what a service level contract looks like (preferably an ethical one, whatever that means), but computer science is supposed to be exciting, dammit, and Wright’s vision of computing is about as exciting as a vending machine ham-and-cheese sandwich. Compare his ideas with those of real innovators like David Humphrey (who, by the way, has actually tried his out), and it’s painfully clear who’s looking backward, and who’s going to lead us forward.

Wow, what world is that guy living in? If anything, short of PEY, the Capstone courses are the ones that most resemble what Software developers will encounter in the ‘real world’. At least I found this true for the project courses I took at UofT. Maybe the problem is with the capstone projects offered at the University of Houston-Downtown?
That’s strange. If lucrative United States careers are a thing of the past, why did all my friends leave to live in Seattle?! or Mountain View? If I remember correctly, the only places still hiring during the recession were Microsoft and Google.
And: Service Desk internships? Maybe Wright meant his version of Capstone courses for people who barely pass their other CS courses?
Thanks for such a god breakdown of something that sorely needed breaking down. As a very recent computer engineering grad (from one of the top ten computer science/engineering programs in the USA) my capstone courses were among the most fun, most challenging, and most useful in the real world.
The format of the classes was essentially “here are some restrictions and requirements, now create a project that fulfils these and complete it within the time available.” For example, one class (the OS capstone), was literally “here is the Windows 2000 source code; find something that you think should be improved, improve it, and present what you did.” Except for the fact that I had to develop a project on my own, the work I did was *very* much like what I do in “the real world” now. I honed some coding skills, but that was the least of it. I learned project management. I learned how to work with a group of programmers. I learned how to sell a project, and how to make presentations on progress and completion. Very, very valuable.
Ha, Wright is so full of crap. Read his article and had the same bad aftertaste. You’re right on one thing, he’s not leading us anywhere in the near future…