The tweet both part 1 and 2 is here:
Whiteboard programming has multiple benefits. a) it helps gauge the communication skills of the applicant b) catch “fraudulent” devs who cannot code without autocomplete, intellisens, and so on c) (personal opinion) it exposes better what the applicant is thinking 1/2 2/2 because when people sit with a keyboard they seem to be more quite, where at the whiteboard words flow more freely
The main issue people had was the following “b) catch “fraudulent” devs who cannot code without autocomplete, intellisens, and so on”. There was a couple of issues
- People apparently do not know what fraudulent mean
- and thought I said that all who use intellisens and auto complete are not developers
In this post I would like to fully explained what I mean with b) to address the issues people clearly had with it. So first of, fraudulent does not mean a cheater (look it up people), it is synonym for one who is deceiving, i.e., some one who wants to give the impression that they are a developer but is not, in the case. NOW! The reason this is at all relevant for me, is because I have been part of hiring committees a couple of times, where an applicant could not even write a simple for loop on the white board. In one case it was so bad that I wrote the following on the whiteboard and asked the applicant to replace the blank spots with the appropriate tokens.
for (___ in ____): print(___)
But the applicant was unable to fill in the code, even though the applicants CV listed the last position as a software developer (for a fortune 500 company) working in Python for roughly five years. Therefore, to me an the other members of the hiring committee this applicant was a fraud. Sadly this is not the only time I have experienced this and therefore I am a firm believer in white board programming and its ability to expose “fraudulent programmers”.
Back to the fraudulent versus cheating, people thought I meant that people who are depended on auto complete and other intellisense tools are cheaters.
I would like to emphasis here that it is okay to utilise intellisense tools, if they make you a better developer or improves your performance.
However, I do believe that you should know the basics of the languages you use (not the none standard library libraries) to be able to write trivial programs and use the basic data structures without the need for intellisense.
Now why do I think this?
I believe this because I have seen and know developers who in, for instance, C# translates
for-loops to LINQ expression which they are unable to read, or translates a function to a lambda expression even though they cannot read it.
Why, you ask?
The argument is (and I kid you not) and I quote: “It makes me look smarter to management”.
Even though code well written in simple structures can be a) more effective and b) easy to maintain later.