[clug] [OT] Bjarne Stroustrop on

Alex Satrapa grail at goldweb.com.au
Tue Apr 6 18:21:54 MDT 2010

On 07/04/2010, at 08:50 , steve jenkin wrote:

> "What Should We Teach New Software Developers? Why?"
> <http://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext>

Bjarne Stroustrop:
> Let me point to the issue of scale. Many industrial systems consist of millions of lines of code, whereas a student can graduate with honors from top CS programs without ever writing a program larger than 1,000 lines. All major industrial projects involve several people whereas many CS programs value individual work to the point of discouraging teamwork.

I think the key difference between academia and industry is that in academic circles we're looking for more ways to describe, visualise and categorise problems, while in industrial circles we're more interested in solving problems.

To me the disconnect is between expectations of what a "Computer Scientist" should be able to do. We need a new category, just plain "Programmer". "Programmer" is to "Computer Scientist" as "mechanic" is to "automotive engineer". We might train programmers to recognise certain types of abstract problems (the way we teach mechanics to diagnose engine faults), but we'd be more interested in teaching programmers about concrete problems such as critical paths, queues, avoiding copying of data, etc (the way we teach mechanics to put the screws back in the reverse order they took them out, and to use the minimal amount of gasket goo possible for a better seal).

The industry skills I'd love to see new graduates possess are:
 - ability to describe a problem and derive a solution
 - ability to translate an abstract solution into the language/framework of the day
 - awareness of version control systems
 - discipline in use of version control
 - discipline in use of task tracking systems
 - access to a common vocabulary to describe the types of problems
 - ability to talk to humans
 - ability to work in teams to achieve goals

My time in a Software Engineering degree was very good at teaching me to *avoid* talking to other people about my software, since any similarity between programs would be grounds for accusations of plagiarism or collusion. It was also good at developing a loathing for Ada - I was studying part-time, and during my degree they changed the prerequisites for certain courses from Pascal/C/Assembly programming to Ada programming.

My own belief is that we shouldn't be sending folks to universities in order to get trade jobs. Programming is a trade. Send folks to university to study computer science so they can invent new ways of building software. Send folks to technical college to learn how to build software as part of a team.


More information about the linux mailing list