Educating professional practice by emphasizing worked examples

this essay discusses the challenge of educating computer science students on writing professional quality production code. It informs our own inquiry into what to teach at CGSC and how to teach it. I think it has a lot to say about what we should be emphasizing  for our staff officers.

One of our graduating seniors shared the below blog post with me, and I shared it with all the faculty who teach the lower division courses in Georgia Tech’s College of Computing.  Andrew makes the strong statement in his blog post: “Students shouldn’t be able to graduate with a Computer Science degree from Georgia Tech without being able to read and write production quality code.”

My sense is that most of the faculty who have responded agree with Andrew.  Our students should know how to read significant code (e.g., walking through the whole Linux kernel in OS course).  One of our professors talked about the value of watching his own code be rewritten by a professional, expert programmer — it was stunning how much better the code got.  We could teach more about readingproduction code at the University, but I’m not sure that we could teach enough aboutwriting production code at the University.  As Bjarne Stroustrup pointed out, faculty don’t build much these days.  Programming well has much in common with craft and art, and it’s not something that the University does well.

If the University could not teach reading and writing production code well, where should students learn it?  One answer is, “On the job.”  Craft is often taught as an apprenticeship.  I worry that the computing industry has given up on its professional development responsibilities.  We talk about people being lifelong learners.  Is that entirely an individual responsibility?  When I was at Bell Labs and Bellcore, there were dozens of classes that I could (and did!) take. Where has that gone?  Is everyone a contractor these days, or does industry have a responsibility to develop its human resources?

i face this exact challenge at a military college for the US Army when it comes to educating officers on how to write logistics support plans that incorporate a lot of science and art together. The Army has been doing stability operations for so long that we are losing experience in how to support major conventional operations, which is a lot more challenging than the current mission sets the officers have been experiencing for the last 5 years.
This essay inspires me to go after the problem from the angle of having experts rewrite student-generated solutions in their presence, and then graduating to an exercise where a group of students works on improving a first iteration solution.  Thanks for the effort!
Tortoise Capital Management © 1996 Frontier Theme