Many Fresh Computer Science Graduates Lack Deeper Understanding of Core Concepts

In current and previous company I got opportunity to conduct technical interviews for entry level and experienced software engineers openings. Here I want to share some points that may help students and to identify some important issues in general to improve Pakistan IT workforce.
  1. The first biggest issue is with depth of knowledge. To make real software, it is not enough that you can write a code and compile it. It is more important that you actually know what is happening at hardware or a bit lower software level. Why it is required? because in writing real world software, a lot of times we face issue that can be solved only if you know how inside stuff works and what is the impact of decisions you made during selecting a data structure in code and creating a database design.

    Let me give you another simple example. If we talk about how an HTTP request of generated client and responded by server. If you really want to give a very concrete observation, you must know what actually happens in browser, OS, network stack level and inside web server when you issue an HTTP request. Saying that browser originate a request, servers process the request and send a response is correct but a view from 35000 feet height.

  2. It is not much issue if a candidate don't know answer of some of the questions asked. But it is very important in which direction he thinks for the solution. Sometime, by putting a bit difficult question, interviewer only wants to see the direction a candidate thinks in. Because if he don't know something but thinks in right direction for the solution, he will surely get the solution. In opposite case, even if he got the solution, he will not be confident and may not justify it.

    It must be noted, to think in right direction, you don't need just a positive attitude. You must know how things actually works. What are your core CS, Data Structure, and Networks concepts and how much programming you have actually done. So if you want to learn thinking in right direction for the issues you don't know, start learning things from inside. You will automatically start thinking in right direction.

    So the first two points are fundamentally about learning things - inside/deeper. I must also add, although the university plays a great role in shaping our behaviour of attention to details by assigning assignments of higher complexity. But I personally believe, even if your institute lacks it. Just read, read, and read ... books, blogs and specifications etc. and practice them, you will really start understanding things deep inside, very soon, much faster than you think it may take.

  3. The 3rd point is very strange even for me. I generally use to think, if one can come up with a logic to do something, then writing the actual code is matter of few minutes. But recently I very closely seen, transferring the logic into code requires a different skill that many programmers don't know they have. It is transferring thoughts into mathematical expressions in a way that it manifest the original idea.

    Recently I met with a candidate who was very right in explaining how the binary search tree works. But when I asked to write a pseudo code that implements binary search tree using array. He was just unable to transform the his logic inside into mathematical expressions. So the mathematical skills and programming practice really develops in you the capability to manifest the thought into mathematical expression or program artifacts (functions, threads, control flow statements, recursion, etc.).
I am always interesting to learn new observations, so please share with me your thoughts on the matters I am talking about.

Comments

  1. I'm not sure I agree with this... The thing is many programmers working in the computer science field (which is software development) are not CS graduates, and that's why there's a lot of bad programmers right now.

    PS: The title of the article should say "Lack" not "Lacks"

    ReplyDelete
  2. Yes, this is also one of the problem but even guys who join after CS program, during their studies, don't bother to read things in depth. They keep passing courses and read only what is required to get good grade.

    I must mention, it also depends on university's quality of education and student's attitude towards studies.

    Title corrected, thanks.

    ReplyDelete

Post a Comment