Programming is a fundamental skill for problem-solving. In today’s smart world, everything from watches to stock markets is enabled by software programs. Numerous online learning portals in India have risen the emphasis on schoolchildren learning programming. On the contrary, the majority of today’s engineering students are developing a phobia of programming. Many entry-level engineers have told me, “I want to do technical work but don’t want to do programming or coding.” It’s the equivalent of telling, “I want to swim but just don’t want to get in the water.”
Several surveys show that the problem persists among today’s engineering graduates. According to one of the surveys, the following information is revealed:
37.7% percent of survey participants were unable to write a programme that compiles.
9.8% of participants were able to write a programme with few errors.
Only 4.6% of participants were able to write a programme that worked properly.
After closely working with thousands of new engineers at Emertxe, I’ve come to realize that there are three major reasons why programming is such a difficult pill for new engineers to swallow. Let me go over each one one by one.
Engineering – Not by Choice
The first and most important reason is that the majority of engineering students in India today do not choose engineering because they enjoy it. Many of them are compelled to do so due to family and social pressures. For such people, a reference point is someone in their family or friend circle who has completed engineering and is succeeding in their career and life. Because of the growing number of engineering colleges, the entry-level barrier to engineering admissions has almost vanished.
Many of them have a strong right brain dominance, implying that their artistic and creative sides are stronger in them. They lack the analytical bent of mind that is required to learn programming. Individuals have very little understanding of what comes naturally to them. A simple online strength finder test would give them a good idea of what they are good at. On the contrary, these engineers make very good career as marketers, sales executives, and graphic designers. I’ve met a number of such people and thankfully guided them into positions where they are doing very well in their careers. It was perfectly acceptable to be self ignorant say 30 years ago, when such tools were not available. They can now obtain a wealth of information for free by simply pressing a button.
Programs vs Programming
Even if someone has natural problem-solving abilities, the second issue stems from the way programming is taught in engineering colleges. Rather than viewing programming languages as a tool for problem-solving, they have been made to memorize a large amount of source code. The majority of them were taught with 25 programs that they knew by heart in the same way that they learned history. Anything that comes out of those 25 programmes is out of syllabus!
This approach indeed makes them to believe that they have indeed learned programming. Some of them take the smarter route easier of learning Python where a good amount of problems can be solved with the use of libraries. Learning foundational programming languages like C / C++ would actually give them a much better grasp on the programming as they need to build things from scratch with limited library support. By making things easier in the short term, their long term is put into a challenging state.
Given that programming is taught with an incorrect approach, student develop a mental block that they have learned correctly. This creates a major problem in face-to-face interviews where they are unable to answer basic programming questions that arise apart from the 25 initial programmes that they have memorized. In Emertxe we spend a lot of time in making entry level engineers unlearn-learn-relearn when it comes to programming. An in-depth hands-on C programming takes anywhere around 250-300 rigorous hours to make them learn programming in the right way.
The fundamental problem-solving approach of using a programming language as a tool to solve a problem goes a long way toward transitioning them from memorizing programmes to writing code on their own. Some of them require more time to adapt to this approach; however, over time, we are able to gradually transition them with a hands-on approach and best-in-class lab hand holding. Here’s a diagram that depicts the 5-step approach we use to teach programming correctly.
Lack of Applied Learning
Because of this fundamental issue in learning programming in the right way, the majority of tier-2 and tier-3 engineering college students lack confidence. In fact solid programming skill in any one programming language combined with decent understanding of their engineering subjects can get them a job today. This issue gets further amplified as there is a lack of applied learning by creating projects or real time exposure.
Despite the fact that AICTE has mandated internship programmes for engineering students to obtain practical skills, the internship ecosystem in India is completely broken. It is already taking the root of project centres, where students end up paying some money to the project centres in exchange for providing them with internship certificate. Internship remains as the namesake artefact to get a good grade in their college. Academically their papers look good in terms of percentage or CGPA, but there is a big gap exists when it comes to programming.
Conclusion
Engineers are expected to solve problems in real time. Programming is one of the fundamental problem-solving skills. The majority of tier 2 and tier 3 engineering students are led to believe they have learned programming by memorizing a few programmes. This must undergo rapid transformation from memorizing programmes to creating their own programmes in a hands-on manner. With little hope on the horizon for academia, it is up to individual student and their employer to bridge the gap. Online tech learning provided by finishing schools such as Emertxe will continue to play an important role in closing the gap.