
10+ years of experience and no hash maps or Fizz Buzz for data engineers - stared
http://nadbordrozd.github.io/blog/2017/06/20/you-wont-believe-how-this-islington-single-dad-is-making-ps500-slash-day-working-from-home/
======
Quarrelsome
I once attended an interview for a contract in the south of the UK with a
company that I had applied to before a couple years back but sadly had a
mandatory "must have degree" caveat. Strangely enough they'd dropped it the
second time round.

I step into the interview room and this tired looking 55-60 year old gent asks
me the first question.

> What does the "private" keyword do.

Said in such a tired fashion that I skipped the question mark to effectively
transmit its delivery. So I answer, as you do and this gent breathes the
biggest sigh of relief I've ever heard. I ask him what's up and he replies:

> You're the sixth candidate I've asked that to today and the only one to get
> it right.

We have issues with finding real talent in the UK (my company STILL has an
entire team of 4-6 developers to fill) and Brexit really isn't helping.

~~~
headmelted
This can't possibly be true... can it?

~~~
Quarrelsome
I exaggerated the number a little. I think I was the third or fourth. At that
company I met a contractor who thought architecture meant just turning
everything into a Singleton. I was asked to write some tests for his code
(fml).

> Its in the Gang of Four!

Was his defence.

~~~
Ntrails
One chap at my last place had a crusade against the global variables littered
throughout the code base. By gods did he fight the good fight. After what
must've been a good 2 years of active bitching and pruning, a new product was
developed by a sub team without him - to be considered the pinnacle of tech
that the team could produce.

Look at this - just a single global variable!!! Amazing! The progress!

Just that one global Dictionary<string,object> which contained everything the
various classes would ever want, all easily grabbed with nothing more than a
string and a quick cast into whatever the actual type was.

 _Magic_

~~~
Cakez0r
I can't tell if you're being sarcastic or not, but that is way worse than just
having several globals.

~~~
Ntrails
So. Much. Worse.

(sarcasm on the internet failure)

------
bartread
I've done a lot of recruitment over the years. In fact in a previous role I
spent an entire year doing nothing but recruitment. This sort of thing is
sadly commonplace.

It's not trendy or popular at the moment but asking somebody to write some
simple code on a whiteboard is a _really_ _good_ indicator of whether or not
they're a good programmer. Even if they're nervous and uncomfortable doing it
you'll find out if they're a good programmer or not.

That being said you want to try and weed out the people who definitely aren't
good programmers before you invest the time in interviewing them. Things like
Codility _can_ be helpful, or you can do a 20 - 30 minute telescreen/Skype
call and ask them to write out some code in a shared Google Doc.

Honestly, if you can't reliably write some simple code on spec - e.g., write a
function to reverse a string in a C-like language (if you're recruiting for
Java, C#, C, C++, Go) - you may be many things, but programmer is not one of
them.

An argument I often hear against this sort of question is that it's not
"realistic", but that misses the point. The point with problems like this
(also Fizz Buzz, and the simple data structure problem in the article) is not
to be "realistic" but to cut to the essence of a person's skillset and leave
very little room for blagging. If you can't handle these things I don't
believe you can handle more "realistic" problems either.

Being a software developer is obviously more than "just programming", but the
fundamentals matter, and programming is absolutely fundamental to software
development. Do not accept any hand-waving or flannel from anyone on this
point, ever.

~~~
collyw
I would disagree. I was far better at that sort of thing straight out of
university where we did a lot of small scale coding problems. Now I think a
lot more about architecture and avoiding clever coding, more about database
design and how everything fits together. I write far better code than I did 15
years ago, but I am poorer at white board style problems.

~~~
rkangel
If we were talking about Google interview style problems - data structures and
algorithms I might agree.

If you can't do something as simple as FizzBuzz, or reverse a string (in a
language of your choice) then you aren't a programmer. You might be something
else - a system engineer, possibly an architect - but you are not going to be
useful in the role of writing code.

~~~
collyw
I am probably in agreement with you when you go down to that level of
programing basics.

------
drej
I went to this data engineering interview and it appeared they had the same
list of questions for all their roles (ranging from senior C++ engineers to
Python ETL guys). After really struggling with some questions on libc, low
level network and bitwise operations, I was asked "do you know how to quit
vim?"

I've never felt more super human.

~~~
wiredfool
Little known fact: ! is pronounced 'dammit' in when in vim.

(at least for emacs users)

------
YourAnMoran
The story of the senior Java developer is startling but plausible.

If you work on legacy applications for 15 years and you're never the originial
author who starts from scratch, it is very possible that you'll never write a
main method. You always have one already.

~~~
andyjohnson0
I'd still expect such a person to have written standalone utilities and throw-
away test applications.

~~~
Joe-Z
Even then, this is stuff that the IDE simply generates for you. Why would I
memorize the signature of a method I will probably never use?

------
legulere
Why should I know the exact signature of the main method? It's not like you
write it every day. Eclipse offers to add the main method for you with one
clicking I guess IntelliJ does as well. Hell after programming only
Rust/Haskell/... for a while I forget the order of the statements of for loops
in C/Java

For the first question it is very much possible that the interviewer expressed
himself not clearly enough what he actually wants.

~~~
Quarrelsome
how do you start to understand a technology you've never used?

~~~
mmjaa
You let the IDE do all the work?

~~~
Quarrelsome
and if that technology doesn't have IDE support? Lets say that due to an
emergency you are the only person that can look at a problem with a WinForm
client and there is an issue with Initialisation prior to the WinForm loading.
Lets say (since this is a _very_ good example) that you need to create an
architecture to share components between WinForm. Without knowing of static
void main within program.cs you're not going to find the entry point and any
attempts to share components is going to result in static sadness without
doing some sort of service container gubbins or constructor shenanigans
(although that will fuck the designer) prior to Application.Run(form) hitting
in static void main.

The ignorance of static void main is a key reason why so many WinForm
applications actually suck and why so many developers make the sad mistake of
putting their user interface FIRST which has the knock on effect of making
code reuse problematic. This is fine when people make utils but I have a very
long experience of seeing companies struggle with this issue as their util
grows into something more complex. The entry point IS important and if you're
trapped in an IDE you suck. Go read pragmatic programmer the chapter: Wizards.
You need to know how Wizards do their magic or you get burnt hard when the
magic breaks.

~~~
legulere
you state that it's a problem when programmers don't know about the main
function and I agree. The article on the other hand complained about people
not knowing the exact function signature of main without thinking.

------
candiodari
I guess you missed [http://joelgrus.com/2016/05/23/fizz-buzz-in-
tensorflow/](http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/)

Along with a thorough discussion about why it works and how it could be
improved would give me pretty good faith about a data engineer's capabilities.

------
fiftyacorn
This has always been true in London - if you are willing to blag it you can
get a well paid contract role. You can normally spot them because they have a
lot of 3-6 month contracts, and no renewals

~~~
robinduckett
I've never had a contract that wasn't renewed (apart from one two week project
based contract because the work was completed), in three years I've had four
clients. All contracts started off as three month contracts.

------
headmelted
I realise that the way you've worded the exchange is just to make an example
of your point, that said - I would've known the answer to the question, but
the way it's worded might have made me look at you sideways in an interview if
only because of how it's been framed.

If you had worded the query "Regardless of programming language, what's the
[accepted/efficient] way to store a series of variables so that I can quickly
find a single value later" I'd have given an answer.

Also, as hashtables / dictionaries are key-value stores I'd have been thrown
off by the fact that in the question you're not looking for a value by a
seperate key, but by the value itself. Fair point on the applicant not knowing
how long that would take to return though, and not being familiar with the
most common parts of the standard library after 16 years.

------
roel_v
Is 500GBP a normal contracting rate for such experienced developers? Seems so
low, compared to mainland Europe.

~~~
headmelted
Too true. Sigh.

We'll always have Switzerland, roel_v.

(It's Zug that has the 6% tax rate, right?)

------
edem
I think that these people are not necessarily dumb. Thr problem is that they
started traversing the knowledge tree depth-first instead of using breadth-
first for at least a few years.

------
Cakez0r
The UK software contracting market seems to be flooded with people like this
in general. It's infuriating if you can actually do the work because it makes
it very difficult to make it past CV sift stage when everybody is blagging.

------
forgottenacc57
This guy is just so awesome, and right!

Everyone sucks!

I loved hearing about how people suck. I LAUGHED with him, at them.

------
cbushko
I have personally encountered this because while working on a legacy java code
base. Maps were never used because java didn't even have maps until after 1.3
or 1.4.

Our codebase pre-dated that by a long haul...

------
DrinkWater
Well, if thats true i am taking the next one-way flight to London.

~~~
mattlondon
In my experience at previous employment there were a lot of chancers in
technical contracting for Java and front-end dev in London.

They all interview well, but when on the ground and asked to do stuff they are
usually found out to be useless fairly quickly.

The "one weird trick companies dont want you to know!" is that it takes about
a week or two for people to fully appreciate the contractor is useless and
needs to be sacked, by which point they've made £500/day over a week or two
which is £2500-5000 for half a month's effort which for a majority of people
in London is a pretty tidy sum.

My lesson learnt from this is dont just quiz people in a face-to-face
interview, but get them to _do_ something in the interview.

~~~
jkadlec
Contractor in London here. I've seen this for Python / dev-ops as well, well
more the aftermath since the contractors were usually already gone. But the
level of incompetence was jarring for someone on 500 pounds per day (this was
before Brexit).

