Software professionalism is not just about technical brilliance; it is about consistently delivering high quality product within the committed time, says L. N. Rajaram, Director of Chennai-based Expert Software Consultants Ltd (http://bit.ly/F4TRajaramESC). “It is about both knowledge and the skills to apply it correctly. Skills can be mastered only through the discipline of repeated practice.”
He rues that the most neglected skills of measuring and managing one’s own time and defects are in fact the essence of software professionalism. “A professional understands the dynamics of his/ her professional activities. A professional knows what the right practices to be followed are, and the precautions to be taken. A professional understands the consequences of doing or not doing the recommended practices. Finally, the software professional is continuously experimenting and learning and mastering his/ her own best practices that give best results,” explains Rajaram, during the course of a recent email interaction with Business Line.
Excerpts from the interview.
What do you see as the inadequacies in higher education for creating effective software professionals?
Higher education in India is heavily focussed on all the wrong things: Jobs for one thing and exams for another. Of course, there is no harm in aspiring to get a good job after one becomes a well-educated professional, but in most professional colleges providing higher education, preparing students to be thoroughbred professionals does not seem to be the priority.
The intrinsic complexity of software is embedded both in the abstraction one has to cope with while solving the problem through principles of software design and the wide extent and high level of detail that one has to cope with while writing the code. High levels of skills to cope with both these aspects need to be acquired through practice and rigour.
The small and trivial assignments and the superficial way of assessing these do not expose the students to the rigours of programming even one bit. The whole focus on examinations and marks kills whatever little creativity and initiative the student may possess. Hundreds of bright graduates whom I have spoken to have lamented this fact that they never got an opportunity to learn anything in college.
Most of the software professionals are not even computer science or IT graduates. They may be from mechanical, civil, electrical, electronic, or other disciplines. Their exposure to actual practice of programming is even less.
On the other hand the practice of teaching a variety of engineering subjects such as strength of materials, thermodynamics, metallurgy, hydraulics, engineering mechanics are all done away with. The current monochromatic education only helps produce ‘engineers’ who are expected to do the simple tasks that they are told to do.
We do not have many software products out of Indian soil…
I will rate Tally and the Indian Railways reservation systems as exceptions. I was involved in the early days of brainstorming sessions of CRIS, the Indian Railways organisation that was given the latter initiative. As usual, many doubts were expressed then. The system was not only successfully developed and launched against all odds but has survived and evolved into a super-marvel of technology that has so drastically changed the quality of travel of millions of common people. (I would like to add that our company developed one of the first email products in the world in 1990 and set-up a private email network for ITC besides other Indian companies. But the lack of financial resources to expand our operations was the big problem then.)
Would you like to talk about some of the roadblocks to creating an innovative IT product in India?
There is an intrinsic lack of confidence amongst Indian users that it is possible to build good products in India.
Big companies have taken the route of providing service and it is against their interests to risk their reputation on futuristic ideas and products. Many of them do provide service around their own ‘products’ built incrementally while executing projects for various clients. These can hardly be called innovative products.
Many small companies have developed good innovative products; but selling Indian products in India takes a lot of investment and patience. Venture capital has neither the competence nor the inclination to look at truly futuristic ideas and products.
Product engineering is a very high-end skill. And most small companies wanting to develop products lose their engineers, often trained and mentored painstakingly by the promoter, to big companies offering more money and marriageability. Sounds silly but that is India.
Under these circumstances, it would be a miracle if any great innovative product came out of India. Indian Railways Passenger Reservation System is truly a miracle.
In these circumstances, who will provide IT solutions to enhance the quality of life of common people in the country?
The most obvious players and the obvious reason why they don’t take this initiative can simply and logically be listed as follows:
* The multi-billion dollar Indian IT industry that earns dollars on headcount.
* The Government sector with a constitutional obligation and a huge budget is too slow, too insensitive, too bureaucratic and too opaque for genuine players to take advantage of their funds.
* The academia that has turned education institutions into efficient centres of ‘graduate’ production has neither the competence nor the inclination.
* The large number of SMEs trying to find suitable terrains in the IT ecosystem where they can survive and grow but are hard-pressed to find takers for their home-grown solutions.
* The social/ rural NGO sector that ‘serves’ the common folks but doesn’t generally seem to relish the idea of adopting IT to empower the folks with whom they are in close proximity.
The one glimmer of hope is a large repository of open source software available for free on the Net. There are free and well-tested hospital management systems, education and training management systems, library management systems, CRM systems, ERP systems, financial accounting systems, and an enormous amount of literary and scientific content. IT solutions to most of the routine problems are available.
Hopefully, we will have by some miracle passionate entrepreneurs and students and graduates from colleges situated in rural and tier-3 towns addressing local problems with their own ingenuity and by adopting, packaging and deploying the solutions available for free on the Net and in the process creating a new opportunity for contributing our own efforts to the free and open source software movement.
Your views on planning and design, as the essence of engineering.
We need to distinguish between engineering and craft. Craft involves the skill of an artisan to produce a product through trial and error through repeated attempts until a product with satisfactory functionality and quality is ready.
There is in engineering a blueprint of the invention that specifies the product functionality, and the external structure and the internal working of the product to show how it will provide that functionality. This is design. There is also a blueprint that describes how a team of workers will build the product. This is easy to understand in civil engineering where, for instance, the blueprint of a bridge to be constructed is first prepared so that the scientific principles of structural dynamics can be applied to verify the quality of the product, upfront.
Secondly, a plan that gives the workflow, the tasks involved, the human and other resources required, the schedule and allotment of tasks to different workers, needs to be drawn up for efficiently constructing the bridge as per the blueprint. This has been the adopted practice in civil engineering for more than 1,000 years.
We seem to have forgotten this lesson in software engineering. Most ‘engineers’ are actually involved in the software craft with their restricted skills of coding and testing. They write code and test if it works and go back to correct code and again test until for reasons beyond their control they stop and deliver, oblivious to the fact whether the original functionality was realised or not.
Software design needs to go down to the level of detail which acts as a well thought-out blueprint for code and software plan has to specify to a team of engineers how they can work as a team while splitting the work amongst themselves, taking care of all the interdependencies that exist between different components being developed by different engineers.