Each year a horde of new computer science graduates grace the job market with impressive certificates and awards, they claim to have skills in Java, C++, C, Php, JavaScript, COM, Oracle, SQL etc but the majority of them really struggle to write meaningful code besides the equivalent of “Hello World!”, here are some of the reasons I believe to be chief causes:

They never wrote code

One thing that is universal amongst strong programmers is that they wrote a lot of code (a lot of code) that tried to address real world problems through side-projects. For example before I even graduated I was already a code ninja having written code for 10 major projects and had been a co-founder in 2 start-up companies. On the contrary some of my classmates had a codephobia (I don’t know if that word exists), to put it in simple terms they were afraid of anything that resembled code. One might wonder how did they manage pass courses and assessments that involved writing or interpreting code, the solution was simple, they used the CPF (Crame Pass Forget) method which means once the course is over they have a distinction but they don’t know the stuff they wrote to get the distinction.

They never wanted to code

Given that some high paying jobs are in the IT Industry, some people have Computer Science degrees simply because of the pay. They never wanted to code in the first place or college was like a nightmare and they never acquired any programming skill. They merely went through the course work. Since coding is so painful to them, they simply forget how to program in the real world but instead they choose to pursue other fields in the IT industry that involve less code like Networking, Hardware, Management etc

Real world code

Theoretically speaking, you can discuss abstract data types, common algorithm patterns, etc. all you want but converting that knowledge to implement code that solves real problems is a whole new level. So some graduates may know all the abstract concepts such as if statements, loops, classes, functions etc but struggle with joining all these concepts to come up with a software.