I have just been perusing the latest issue of Crosstalk – The Journal of Defense Software Engineering.  I always start at the back with Backtalk.  This generally provides a more light-hearted opinion on the current issues theme.  This issues Backtalk (as is true with many issues recently) was authored by David Cook, a professor at Stephen F Austin State University.  This is particularly appropriate because this month’s issue is focused on the state of software education – who better to have an opinion than someone whose job it is to deliver that education.

In the article David talks about the difference between education and training, stating emphatically that they are two completely separate animals.  Education – what he does – is about theory and understanding, training is about learning how to get the job done.  Anyone who has studied software engineering (or computer science for those of us who entered the field before software was considered important enough to be an engineering discipline) knows that in all but the rare case you aren’t taught much about the actual practice of delivering software.  The software you built was, of necessity, not very large – maybe 1000 lines of code of 5 or 6 function points (depending on your software measurement religion).  There were not many requirements and they were usually pretty well spelled out. Customer interaction was limited if it existed at all.  And you really only had to write code for the go-path. 

And while I’m sure things have gotten better since I was in University, they can’t have gotten too much better because as David points out in his article, there is only some much you can do in four years.  And the truth is that industry really has to consider that they are partners in the venture.  To paraphrase David – we teach them and provide the building blocks – industry needs to mentor them to use those building blocks effectively in real life. 

Interestingly enough – I was recently reading about Google’s ‘Summer of Code 2015.’ Where Google offers stipends to student developers and pairs them with mentors to develop code for open source projects.  The students get to spend time working on an actual project with actual deadlines under the tutelage of seasoned mentors who can help them learn about the real challenges of software development (as we all know writing a few lines of C# or Java is not the biggest challenge when delivering software under deadline with customers who can’t always articulate their requirements).  I think this is a great contribution to the industry because the focus is specifically on getting commitment from industry experts to spend the time to cultivate (or train) the young minds that people like David are educating.

How does your organization fulfill their side of the promise to take fresh-outs from well-educated software engineering students to software engineers that solve user problems?