• Judgement

    Should job seeking programmers understand object oriented programming?

    Mon 16 Apr 2012



    Do you think job seeking programmers should understand object oriented programming fundamentals? Apparently some people think not. Our recent blog post "Unfortunately, we'll reject most software developer job applications.” explains how we ask interview questions about object oriented programming.

    The blog post was discussed on Hacker News, leading to about 3,000 people visiting this site over two days.

    Some Hacker News commenters disagreed with what we had to say in that post.

    The original blog post identifies 5 interview questions that most job seeking programmers cannot give clear and concise answers to. These are the five questions:

    1: Explain public.
    2: Explain private.
    3: Explain protected.
    4: What is an abstract class?
    5: What is an interface?

    These are the objections to our interview questions, and our response:

    Objection #1: these questions are pointless because they are specific to the Java language. Not true. A quick Google search shows that public, private, protected, abstract class and interface are concepts found in Java, C#, PHP, C++ (except interfaces), Delphi, Objective-C, VB.NET and to a greater or lesser extent these concepts are found in many other languages. The precise implementation may vary slightly from language to language but nevertheless the concepts are similar. The questions are not Java language specific.

    Objection #2: these questions are irrelevant to Python/Perl and dynamic programming languages.
    The manner in which, and extent to which each dynamic programming language implements object oriented principles varies. Although Python and Perl may implement object orientation in a somewhat different way, and in fact can be avoided entirely in many cases, developers in these languages will still benefit from understanding of "mainstream" object oriented programming concepts.

    Objection #3: The questions are irrelevant to functional programming!
    We’ve never been asked to find Lisp, Scheme, Clojure, Haskell or F# programmers. One employer once asked for Scala developers, nevertheless they still required answers to these 5 questions. Also, functional programming can be understood more clearly when contrasted with the alternative approach of object oriented programming, but if you don't understand object oriented programming, then do you fully understand how functional is different?

    Objection #4: These questions are irrelevant because I don't memorize names of concepts, I just know how to use them.
    Don't agree. If you don’t know the name for your programming practices then how do you know which computer science concept they relate to? If you don’t know the terms for the concepts then how can you discuss them with other programmers in any meaningful way? People who say they do not know terms but understand their meaning are justifying their knowledge gap.

    Some Hacker News commenters appeared to object to the questions based on some sort of general complaint that recruiters suck and how dare they ask questions? Perhaps true but such arguments are less compelling than others put forward.

    Regardless of the language that you program with, a thorough understanding of mainstream object oriented principles gives a point of reference to understand how each language varies from the mainstream. Effective software engineers have a strong understanding of mainstream object oriented concepts and use this knowledge as a start point for better understanding the language that they are currently developing with. Programmers will benefit from being multi-dimensional, programming with a variety of languages and applying generalized development skills using the best tool for the job. A thorough knowledge of the core principles of object oriented programming is central to this flexibility.

    Not all Hacker News commenters objected. A number of people agreed that our questions are appropriate. One Hacker News commenter who concurred was garethsprice, who summed it all up rather well with this comment:

    This industry shocks me sometimes, it's akin to accountants claiming that no-one needs to understand economics as they're personally really good at counting US dollar bills and that's all they do all day at their job, so why would anyone need to understand all that fancy theory stuff or be able to explain it to anyone else.

    +1 to Gareth



    andrew.stuart@supercoders.com.au

    Copyright © SuperCoders 2010 - 2012 All Rights Reserved.