Project Learning

Joel Spolsky is an interesting guy with strong opinions about software development and the education of people going into software development. Recently he posted a blog article called Capstone projects and time management which is pretty critical of university computer science/software engineering programs. For example:

It is amazing how easy it is to sail through a Computer Science degree from a top university without ever learning the basic tools of software developers, without ever working on a team, and without ever taking a course for which you don’t get an automatic F for collaborating. Many CS departments are trapped in the 1980s, teaching the same old curriculum that has by now become completely divorced from the reality of modern software development.

Mark Dennehy  has a reply posted called Joel Spolsky, Snake-Oil Salesman that makes all the expected academic rebuttals. For example:

Undergraduate courses in CS and CEng are not there to teach industrial tools, but basic principles

No student is expected to graduate and be able the next day to walk into an industrial role without supervision or training, and no student has ever been expected to do that in Engineering since the first undergraduate course started in TCD in 1841.

And well you probably know the rest though I have to say this is one of the bests collections/explanations of the issues I’ve read in  a while. So what is the right thing to do? I have some ideas (why blog if otherwise? :-) )

I stand with a foot in industry (employed by a company) and a foot in education (by inclination,experience and the focus of my work). I’ve taught students who have gone on to careers in industry and I’ve worked with many recent graduates throughout my career. It seem that often industry doesn’t understand what academia is trying to do, can do, and thinks they should be doing. Likewise many in academia seem to care little about what industry thinks they need in new hires and recent graduates. Plus academia doesn’t have time to teach everything they would like let alone what industry would like them to teach. Compromise is the word of the day.

It’s hard, very hard, to fit large projects into a curriculum. In high school, in university and even in graduate school the semester or the quarter is the rule and that is not enough time for a really large project. Emphasis on individual students learning concepts in a deep may make all but small team projects are difficult to manage, to grade and even to conceive. I think there is some room for projects outside of class though.

Unfortunately a lot of students have to work jobs to help pay for their education and that takes up a lot of time. The full-time student in the old sense of the word isn’t as common as it once was. But I think that when students can they should think about creating projects outside of their course work. At the university level, the Imagine Cup is one potential opportunity. I think that students could also look at service projects for local organizations may also be possible. Non-profits often cannot afford professional work but may be willing to accept help from teams of students. 

The benefit to students are that they are forced to develop scheduling and time management because projects that are done the day before a deadline are not likely to meet the needs of clients. many competitions that are project based, such as the Imagine Cup, have intermediate deadlines that also have to be met. Students also gain experience that they can talk about during interviews. Companies are impressed by students whose learning and achievement goes beyond what is required by course work.

While none of this is necessarily a magic bullet there is a chance for students to go beyond what they are learning in class.