Teaching Programming to Students
Jenny McKinnell the CEO of CITI asked some of the local HoDs for CS the following question and below you will find my response. Note this was typed 12 March, and the next day Twitter released new usage numbers and claimed 140M tweets a day…another reason why CS is so exciting these days…you just cannot keep up even if try.
Jenny:
I would be very interested in your comments on the article below. It seems to highlight the point that we should rather be teaching people to programme, than teaching them a particular programme. Are you aware of any research that proves or disproves this assertion? It is important for me to know because I am inundated with requests by software vendors to promote the idea that students get taught particular certifications whilst still at university. If there is a case to be made to rather be driving programmes to teach good fundamentals, then we could work together to raise funding from the SETAs etc for short courses etc to provide the basics to unemployed graduates and individuals who want to work in IT or who are finding their current skills are obsolete.
The ‘Anti-Java’ Professor and the Jobless Programmers
James Maguire
07/29/2008
This article can be found online at the following location:
http://itmanagement.earthweb.com/entdev/article.php/3761921/The+Anti-Java+Professor+and+the+Jobless+Programmers.htm
….
My Response:
This piece has been through the washer a few times, so I’ll be brief on that part: this poor person grew up when flight software was the most complex thing going and for that you need real-time guarantees which Java cannot give you due to garbage collection, he confuses Java with Javascript as well by the looks of it and is clearly blissfully unaware that most of the server-side coding for pretty much any internet related service is now in Java…and if he thinks those systems are not complex he clearly hasn’t seen how Twitter handles 95M tweets in a day or 1100 a second. Ah and the old outsourcing thing…this guy wrote the article when people in the US still outsourced programming jobs, they don’t do it nearly as much anymore…because outsourcing programming jobs DOESN’T WORK!! South African firms will learn this the hard way too.
On to your real question, one needs to teach students to program, but sadly one must pick a language for that and my view is you pick the language that makes it simple for them to learn, which means clear semantics (and strongly typed) and good tool support. Java has this in spades, so in my opinion it is a no-brainer to teach students Java.
Another thing about programming or more specifically good programmers is that people are not born good programmers, to become good at it you need experience and experience you only gain from making mistakes, which in turn you only get by doing lots of programming. So by implication, Universities really cannot teach students to be good programmers, at best we can show them the basics and let them program as much as possible…and once they have spent a few years in the real-world they will (hopefully) be good. Thus teaching students Java puts them slightly ahead, since that means they will be faster on the programming curve since so many people use Java, and they might get to be a good programmer slightly faster than someone that was taught, say C for example, and then in the outside world used only Java (and thus wasted time getting to know Java).
Now on to my pet peeve! These software vendors that want students certified in whatever they are selling don’t have the students’ best interest at heart, they simply want more people locked into their brand. Show me a good programmer that wants to have a Microsoft or Cisco, or XXX certification, they don’t need it…they have jobs coming out of their ears. Which leaves us with another sad truth, up-skilling people without jobs means we are talking about people that cannot program, since if they could they would not be jobless. Needless to say the certifications will not make them good programmers either, but maybe it will give them a short-term job…until that skill is no longer needed and then they need to do the next certification
I do however leave the option open that there are people with the potential of being good programmers, but are now, say, music teachers, but I don’t think being certified in something will make them good programmers…they need to be taught the basics just like all the other students coming through the system.
I’m all for short courses in new technologies, but not to people without a programming background. If the SETAs can support that I’m happy and will gladly participate…however for people that cannot program one needs LONG courses first.
In summary:
1. Nothing wrong with Java
2. Teach students how to program, and then let them program, and program, and program, …
3. People promoting outsourcing of programming jobs, clearly haven’t done it yet
4. Don’t come within a mile of Stellenbosch CS if you want our students certified in using your product
5. We’ll teach you a short-course on how to use Hadoop for doing MapReduce, but we will not teach you how to configure a Cisco router!