Reflections on “What should we teach new software developers? Why?”

Reading the latest CACM, I came across an opinion piece by Bjarne Stoustrup entitled “What should we teach new software developers? Why?” The topic of the article fits right into my blog-on-teaching-reflection. There are a few interesting and controversial things in the article, some overt and some implicit.

The tension between “computer science” and “software development” is not adequately addressed, in my opinion. It is true that right now, academic study of computer science often leads directly to employment in software development. I wish Stoustrup had spent some time on whether this was necessary and mutable. I don’t blame him, in such a short article, to simply take the world-as-it-is position.

The natural extension of this article is “How?”, since he has already addressed “What”? and “Why?”. Stoustrup dips into potentially blasphemous territory when he calls for more group projects, but more and more, I fall into that camp. I wish this idea, and much of what Stroustrup preaches, were easier to package for the opposition. It is unfortunate that the same establishment that wants us to teach C++ at the same time won’t listen to Stroustrup’s calls for fundamental change in how we teach!

His comment on “smokestack” courses is especially interesting to me.  Integration is an important part of learning, but by and large, professors don’t want to let go of their territory. To actually teach integration of knowledge requires significant overhaul not only in curriculum and course design, but potentially in the entire reward mechanism for faculty. I have seen this topic arise at the departmental, college, and university levels, and in an age of tight budgets, I am not hopeful for innovation any time soon. Borrowing from Christensen, it’s not clear that the entrenched structures of higher education can disrupt themselves.

Stoustrup’s notion that the lowest degree offered for software development is a Masters is intriguing. I am not sure that I have much else to say about that for now, but I do love for my own students to deeply study practically anything from outside of CS.

These thoughts are incomplete, and I’m not perfectly following Merlin Mann’s suggestion to edit all writing, but at least this is some food for thought. Perhaps I will come back to it later, but as seems to be my modus operandi recently, I feel like I have more topics I’d like to write about than I have time to write at all, so editing gets short-shrifted.


One Response to “Reflections on “What should we teach new software developers? Why?””

  1. Paul Gestwicki Says:

    This paragraph rings true with me:

    “Many professors will object: ‘I don’t have the time to program!’ However, I think that professors who teach students who want to become software professionals will have to make time and their institutions must find ways to reward them for programming. The ultimate goal of CS is to help produce better systems. Would you trust someone who had not seen a patient for years to teach surgery? What would you think of a piano teacher who never touched the keyboard? A CS education must bring a student beyond the necessary book learning to a mastery of its application in complete systems and an appreciation of aesthetics in code.”

    Also, in case anyone else is reading this and is a Facebook friend, check out Jaek’s response to this article on my Facebook page. Great insights.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: