PROGRAMMING FOR THE FUTURE
Most Computer Science and Engineering (CSE) students have long faced the problem of meeting industry standards and requirements after graduating from their respective curriculums. For many of them, there is a gap between academia and industry. Most CSE programs in Bangladeshi universities have a similar curriculum that's designed to prepare students adequately for the job market. Yet, different software, tech, and IT companies have to train new recruits for months to fit their standards.
Are our CSE graduates well prepared for the industry? And the gap many students and graduates talk about, does it really exist?
"My university made me career-ready by teaching me how to learn. However, I wasn't taught the tech stacks I needed to write my first piece of professional code the day I joined," says Afia Rahman, a software engineering intern at a leading software company in Dhaka. "It took me some time to learn the tech stacks I needed in my field, but thanks to what I learned at my university, all that wasn't too overwhelming."
Of course, there were interns from other universities who were taught everything they needed to know by their respective institutions. But that didn't bother Afia. "Although it was demotivating to me at first, I was lucky that I had been taught programming through flowcharts, tracing and coding," she says. "Almost every other language becomes easier to learn if you're taught this way."
Despite what she learned from her university courses, Afia still had to struggle a lot when she entered the industry. While her university equipped her with the knowledge necessary to explore software engineering, machine learning (ML), AI, and other tech industries, the courses themselves were not enough to equip her with the practical knowledge she needed in the actual work field.
"I was surprised by these small gaps in my knowledge," she says. "Those gaps need a lot of googling to figure out, and the time taken to discover them can be expensive."
In order to fill in those gaps, the industry needs to step in. The tech sector is vast. Be it software engineering, mobile or web app development, machine learning, data analytics or electronics, each company or organisation works with its own tech stack. While some of the programming language, frameworks or technology might be common or seen as standard in the respective industry, it is highly likely that there are major differences in the overall stack itself. Hence, companies have to recruit individuals who meet their standards, but then have to train them in their own way.
For these organisations, life would definitely have been a lot easier had the universities prepared their graduates for the industry directly.
However, it is difficult to put the blame on the universities as well, given that they have only four years to prepare the students for the real world.
"Each semester is very compact within which you have to complete a generalised field of CSE and hence, learning specialised topics or frameworks would become difficult and tiring for the students," says Samiha Haque, a lecturer at the Department of Computer Science and Engineering (CSE), Brac University.
"Not all companies follow the same specialised tools, so which one should you focus on? I think it's more of a trade-off between learning a more generalised version of that field and focusing on a specific branch of that field which will be helpful to some but not to most, and I think universities try to pick the former."
Afia agrees with Samiha. "Students need to be taught how to learn, instead of being fed the contents directly," she says. "They need to get stuck and have that eureka moment to actually grasp why their program isn't working."
She further adds, "I had some amazing faculty members from my time who not only taught the fundamentals we needed during classes, but advised us on how the world would be out there and how comfortable we need to become with the core concepts so that any language becomes a piece of cake. In class, we were taught how to understand the syntax, and trace our code, which helped us better understand the program, discover mistakes, and so on. This helped me not only picturise how the program was swaying and flowing from one logic to another, but also helped me learn other languages faster."
So, in a way, universities focus on the basic and advanced concepts, and it's needless to say that most of them do a pretty good job at it. Then, however, it becomes difficult for them to spoon feed everything students need to perform well in their careers. And while some universities do take the initiative to incorporate a lot of the industry-standard tech stack in their curriculum, it definitely comes at the expense of leaving out a lot of necessary conceptual courses and lessons.
Almost all the CSE departments in Bangladesh maintain some similarity in their curriculums. As Samiha mentioned, universities have to cover a lot of ground in a short time. Instead of getting their students accustomed to various programming languages, frameworks, libraries, and other related technology or tech stack, universities prepare them, not for the jobs, but for the opportunities. By teaching students about algorithms, data structures, machine learning and artificial intelligence, universities allow students to choose from a wide range of opportunities that the tech or IT field has to offer.
"Teachers discuss the competitive job market," says Samiha. "But I don't think the curriculum is necessarily built to train students on how to crack a job. Universities will give them a taste of the basics, which will help them to fix their aim. Once it's locked in place, they can then evolve their skills from there."
At one end, universities are preparing their students in the limited time they get. Then you have the industry itself spending hours to train these new recruits. In between, both the academia and industry expect students and graduates to acquire knowledge on their own.
"I definitely believe CS students should learn certain technical skills on their own," says Mashrur Mahmud, an AI Engineer at Intelligent Machines Limited. "It isn't possible for universities to teach their students everything. Specifically in the context of machine learning and AI, I believe if students solely rely on university courses, that is just setting themselves up for failure later on."
"Those who are self-taught or have the habit of learning things outside of curriculum often excel here," adds Mashur. "ML/AI is a constantly evolving field, and you need to keep learning on your own in order to keep up."
The case is the same for the software engineering, app and web development sector, as explained by Afia. "Software engineering is a volatile field, forever changing," she says. "It keeps shifting from one tech stack to the other, whichever fits its then-current performance needs. Hence, to cope with such changes, CSE students need to become comfortable with the idea of self-learning certain technical skills."
"The university can help them with one stack," adds Afia. "Spoon feeding students only harms them since they lose that comfort to keep shifting from one environment of programming to another."
Having established all that, let's return to that gap between academia and industry. Does it exist? Yes, and no.
There are three key elements in this situation – academia, industry, and students. As long as universities maintain their standards, and impart their lessons properly, they'll have done their part. Tech companies need to understand the scenario, and provide training that's necessary for their employees to meet the required standards.
Finally, students have to play the intermediary role, where they take it upon themselves to gather knowledge on their own, and do a bit of self-learning. The moment one of these elements fail to play their respective role, the gap is created. But as long as they do what's expected of them from the other, that gap becomes non-existent.