Implementation Vs Logical Skills
Data is never wrong. Most of the times even the greatest of the greatest relied on data to achieve certain tasks.Even our NASA relies on historical data to achieve most of their goals.
Anyways, why this rambling on data? over the last few days ( approx. 300+ days) what I observed is that most programmers do know the "logic", but where they lacked is how to "implement" it using their language of choice.
When I say this, many will contest, if you know the logic , you should be able to implement it. Ahh! Not necessarily. For.e.g if we ask a prospective candidate ( hypothetical) to write few lines of code to sum all the squares of odd nos. from 1 to 10 and print the result. For your surprise you can see that most of them will write a for loop and then sit thinking what to do. It will appear mostly, like this at the end of interview,
'for (int i=0,i<10;i++){
//sum of the squares of all odd nos.
//Note there won't be any code here, because the candidate lacks implementation skills.
//and do not know what to write or how to implement the logic
//He/she knows that sum = square (1)+square(3)+square(5)+square(7)+square(9)
//But cannot transform that thought to code on computer or paper.
}`
So, what is the reason of this lack of implementation skills? I felt, it is due to the following,
- Lack of practice in solving problems and implementing them in language of choice ( C++/Java/Python/Ruby/PHP/ anything else)
- Generally people tend to memorize the api's and methods esp. the Java fanatics, and forget how and where to use them.
- Most of the jobs (especially the outsourced ones) does not require good implementation skills.
- Programmer is not putting conscious effort to improve and test his/her skills.
- Haven't actually understood the importance of having sound implementation skills.
- Lack of good interviewers, who can actually ask good questions and find good candidates ( most of them relies on questions available on internet, memorize them and spit it out).
- Lack of awareness of world around them, and advances in the industry. They still live in the old stone age where they could survive with some copy paste skills of by adding few "if" or "while" conditions when a Nullpointer exception happens.
- Basics are not right, and rush towards the "Holy Grail" of outsourced world, role of a "Project Manager". Once you reach this role, there is no looking back, "I am the boss" :)
- There might be many more, but these are the ones that caught my eyes repeatedly.
In our outsourced world, a "software engineer" is treated as a street urchin, but people forget he/she is the one who actually writes lines of code that runs safety critical systems.I am sure, down the lane if this trend continues India's reputation as an outsourcing hub will disappear due to the lack of quality engineers with good implementation skills we can produce.
If we look at the top competitive programming arena's it is quite evident that we are far behind the programmers from Russia,Poland,Ukraine and China.Unless and until our upcoming engineers improve their implementation skills, the situation is going to deteriorate and merely having good english speaking skills will not get any jobs.Because, everyone uses english to implement code no matter whether they are from India or abroad so what matters will be the quality of code and its syntactical and semantical brilliance.
That said, I will conclude this article saying, to become a good software engineer you should have sound implementation skills and good debugging skills.