ifacethoughts

The FizzBuzz Fizz And Weak Programmers

Imran rightly points out that a lot of programmers, who talk well about programming, cannot actually code. Jeff Atwood follows up with his views on it. My experience has been a little different, when I got a bit of experience of hiring.

The programmers knew the syntax, but they did not know why they were something that way. They knew about interface, but they were unable to explain how it was related to polymorphism. They could not explain when they would design an interface. Mind you, my questions were largely programming language independent, they were about the concept. I wanted to know if they knew OOP when they came as C++, Java, Ruby, PHP or any OOP language programmers. Only 1 in 20 candidates knew about the Design Principles, and only 2-3 had heard about them saddled with their misconceptions. This is not only about freshers, even the experienced ones knew about MVC, but could not explain why they should be using it. I think a weak programmer is not the one who cannot code, I think he/she is the one who cannot explain why they use certain code.

A programmer should know why he/she is using something, and more importantly when he/she should not use it. Without this, knowing syntax is just like knowing words, playing the role of a typist. Do not get me wrong. I do not think that coding is not important. I think that only coding is not important. Just that the other things take higher priority. I believe coding is a skill that can be learned, but understanding the concepts requires a specific aptitude which has to be earned.

Another reason is that the answer to such questions start and end with the code. In my opinion any program should start with requirements and end with benefit. This aspect can be overlooked with the FizzBuzz question. Maybe the question can be asked in a different way so that the software engineering knowledge is tested rather than just coding.

I think instead of asking to code as the first thing to do, I would like to ask them understanding about the underlying concepts. If this is through, their knowledge of coding makes sense. That, according to me, is the first step to identify the weak programmers.

Discussion [Participate or Link]

  1. Rune Juhl-Petersen said:

    I totally agree with you. Syntax and programming languages are tools like Word could be for at writer. No one would ever grade a writer based on what word-processing tools he masters. What is important is whether a programmer can abstract from code and think beyond syntax.

  2. Abhijit Nadgouda said:

    Yes, thinking beyond syntax is something very important. And that beyond should be about the user and his/her benefits.

  3. More Questions For Programmers on iface thoughts said:

    […] the FizzBuzz episode, I think I should write about some questions I like to ask which are not directly related to any […]

  4. Agnas Home Page » Blog Archive » Un post que se hizo esperar said:

    […] (esta es una palabra que acabo de inventar) de problemas natos. Ejemplo de esto último es este blog donde el comentarista menciona que es increíble cómo muchos supuestos programadores en realidad […]

  5. A Programmer, Not A Translator | iface thoughts said:

    […] I did some interviews for a company for hiring some programmer positions. The company wanted to hire Java experts, wherein I think lies a problem, but let us get back to it later. I interviewed a couple of people and was surprised to see that they knew Java very well, but not basic programming concepts itself. They knew about hashtables, but were unsure how they would implement one. It was same with a lot of other things and I remembered by post on identifying weak programmers. […]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

freshthoughts

contactme

Abhijit Nadgouda
iface Consulting
India
+91 9819820312
My bookmarks

badgesand...

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.