It’s a great idea. But it highlights two problems in the South African IT industry. Both problems are favourite topics of mine, so I’m going to indulge in a little ranting this week.
Graduates without real skills
According to the article, the programme is for graduates who can already show the ability to code. And that’s the first problem.
Too many people graduate from our universities of technology (and other institutions) without the ability to code.
We expect graduates to be competent and productive. After all, they’ve spent thousands of rands and a few years to learn those skills. But I’ve spoken to ICT graduates who don’t know what data types are, or the purpose of comments.
This is one reason why many ICT graduates are unemployed. Most companies don’t want the effort of training new graduates.
There are so many factors to blame for this lack of skills. Here are just a few of the factors that I believe play a role:
- Low standards for entry. This means that the wrong people with the wrong aptitude start the programmes.
- Low standards for passing. This means that people graduate without actually having to know the work.
- Government funding rules. These mean that the standards for entry and passing drop even further, so that more people appear to be getting an education.
- Outdated curriculums, often designed by people without the right skills. Think about how long it takes to approve curriculum changes in a big institution. And those changes must be in place for a number of years. But technology doesn’t wait for red tape.
- Lecturers with limited training and very little practical experience. Having trained many of these lecturers, I know that they are often not adequately equipped for their role. (Some of them are great people, with experience and knowledge and motivation. But not enough of them.)
Final year students sometimes ask us for help with their final assignment. Some want extra training, which is good. Some want us to do the assignment, which is a definite no. The one thing they have in common: the training they have already paid for has not given them the skills they need.
Too much work for too few
We know that one of the best ways to train junior programmers is to let them work with senior programmers. But that’s not as easy as it sounds. I can think of a dozen problems, but here’s the most important one: time.
Your senior developers need time to coach juniors. (They also need the right attitude, EQ and teachings skills). But the senior developers are in high demand. They are already overloaded with projects and deadlines. Are you really going to reduce their workload to make proper on-the-job training possible?
Ethics of the team member
Last week I mentioned that coding ethics is not just about hacking. One of the topics I cover in Coding ethics is the ethics of the team member. And just to be clear: this apples to managers and developers.
It seems most companies don’t believe this training is necesary. So I’m curious. How well does your team embody these statements?
- Principle 7 of the ACM/IEEE-CS Software Engineering Code:
Software engineers shall be fair to and supportive of their colleagues.
- Promise 6 of the Programmer’s Oath:
I will do all that I can to keep the productivity of myself, and others, as high as possible.
Is there hope?
At the moment, it seems to me that everyone is on the losing end. Upskilling programmes and internships are a great solution, but there aren’t enough of them. Any ideas?