The phrase ‘low-end coding skills' is one that is often used by chief executive officers and other senior management members of the Indian IT industry, often in the context of “moving up the value chain”. This has also become a frequently quoted phrase by journalists covering the IT sector.
I am writing this article to dispel some myths around “coding skills” and place some facts about how difficult it is to really find a good programmer — that most critical cog in the wheel of software development.
Less than 25 per cent of the engineering graduates hired by IT service firms will be able to write a 100-line programme in any language to solve a given problem. Colleges lack good faculty who have practical experience in programming. Learning to programme is similar to learning to cycle or swim. One needs to try solving problems independently, thinking of the algorithmic steps, then implementing it in a chosen language, and testing and debugging it thoroughly to make sure it works. Time spent in this cycle results in learning, and hours of sincere practice produces a good programmer.
College courses don't have the required assignment/ project component to put them through this process. Many students memorise the sample programmes. Imparting good programming skills to engineering students is one area where the industry probably needs to step up and support.
Some organisations have understood this and have ensured that their training programmes for campus graduates are long enough to produce programmers. But, quite a few others design their modules with a premise that the engineers they have hired possess basic programming skills. They try to impart higher order skills, which are either domain skills or skills around specific application packages.
The IT services industry is under pressure to reduce unbilled time, and this puts pressure on the training departments to “optimise” their induction courses. There is also a move to de-skill the job so that you won't really need a programmer. It works to some extent in package implementations, but to develop custom logic, we need the “real” programmers to get the job done.
In projects that need a much higher percentage of original code development, the skill gap is a serious challenge. A long-term career path for engineers doing de-skilled activities is questionable. Real programmers command a premium in the market, evident even in the campuses. Today they can be afforded only by multinational companies doing product development with non-linear business models.
I am not belittling any of the higher-level domain skills that one needs to provide innovative solutions. But, to deliver such solutions, we need the right set of programmers who can write quality code with good productivity (as measured by features completed and not metrics like Lines of Code).
In our eagerness to stress the need for domain skills, consulting skills, let us not devalue the most critical skill needed to produce software. Such statements by the CEO only add to the woes of those managing SW engineers as everyone wants to stop coding as soon as possible.
Automatic code generation and code reuse are ways to reduce the need for programmers, but engineers still need basic algorithmic thinking to use the modelling tools and reusable modules.
Let's respect this poor soul who is the foundation on which the IT industry is built and not belittle him or her by referring to the skill they possess as “low-end coding skills'. Whenever an IT CEO uses this phrase, I shudder; because it shows how disconnected they are from the ground reality in the projects that their organisation is executing.
(The author is an architect in an IT services firm.)