Friday, 24 May 2019

Development Job: My Interview Log

Where have you been, and what have you been doing?... Well, in the short I've been very busy with the new job, which brings me to post, as there was a little confusion raised about my post the other night.... That post, like many of them here, was set up to go out months ago (in 2018 to be honest) I'd actually forgot it was in rotation, it wasn't for a recent job interview.

But it's about interviews I want to talk, so in my job search last year I had five interviews, count them... FIVE.... I'm not sure where on the scale of interviews that stands, to me it was a lot, to others it maybe very few, for you see the last time I was seeking a new role (in 2003 so a LONG time ago) five interviews was a lot, I had new roles very quickly for a time and interviewed for them once.

This time however I interviewed them as much as they interviewed me, indeed my current boss can vouch for the fact that after they'd made an offer I actually asked to go back and meet them some more, I wanted the right fit.  Being honest, I think I have it, it's interesting work and in a new field and includes international travel (as much as that can be a drag).

However, I wanted to talk today about the other four interviews, all of them started as phone interviews, two of them didn't go further than that, two did... One did and lead to an offer I kindly declined, lets just dissect what I can from them.

The first phone interview was for a company literally around the corner from my old house, I only decided to interview because of the proximity, a literal 10 minute commute really appealed after the 1 hour + drive I'd endured so long.  The interview was about server control, fiber channel, fat pipes, bits and bobs, but nothing development, I was after a hybrid role to allow me to stretch more with my server work but keep the development side ticking over... Simply the role didn't seem a fit so I left it there.

The second was also a phone interview and Brexit got mightily in the way here, it was for a company based in France, who wanted to move a certain subset of their products to the UK before Brexit, so they could possibly avoid import/export problems if the UK drops out of the customs union, it was all very very dodgy sounding and seemed they were willing to pay, and pay well, but you were taking all the risk.  Three times they repeated that "you will only receive one months severance pay in the first five years", very odd to say in an interview.  Then the kicker was that my boss would be in France, I would have to pay (myself) to travel back and forth, and I thought to myself my schoolboy French (GCSE grade E no less) would not suffice.  Plus it was in a very boring industry.

The next interview was a phone call, that progressed to my being invited for a face to face, and is perhaps the worst interview I've ever been in.  It began with them handing a laptop to me and asking me to write code... Except, they didn't want me to write code... They wanted me to write the Unit tests (google or NUnit - your choice)... BEFORE the code existed.  Now, this is a little alien to me, Test Driven Development (TDD) has always been a bit of a dark art, to write a test of code which doesn't exist yet seemed even more strange.

I get the principle, you write tests then write the code to conform to those tests, but this smacks of doing the work twice to me, I'm much more at home writing the code then testing it, or littering it with asserts, than TDD.  And I personally always favour a positive forward branch approach to code, so I make checks to get to the functional guts of a function then handle the error conditions in each "else", not the most popular approach but less off the wall than this chap was asking.

I went along with this test, let him show me what he wanted, then asked "the foo-bar program, it's maybe 9 lines of code, we've written fifty in tests, it's taken forty minutes to catch every case.  I can't but help think this is just to make someone none-tech-savvie happy that their code runs instead of them understanding the code themselves".

There was a distinct gust of cold air in the room at this point, and the technical interviewer left, handing me over to the WORST three hours of interview, YES, three hours.  They loved me, they talked about me, my life, told me their situations, about the company, about plans and products, stuff they really shouldn't have unless they were hiring me.... They were so happy they were promising me a job offer by the end of the week, even the end of the day. But on my mind was that test, it made me utterly not interested, that TDD session had me stone cold on the idea of not working there*.

At the end of the interview, I said this, that the technical test was a major off put, I said that I felt it smacked of their being a manager stood before a board berating everyone that their test was orange or god forbid red, rather than the code be succinct or of quality.  And that I would withdraw from the application.  They looked surprised and asked me why I didn't like the TDD approach, but I didn't want to elaborate.

As I went into the car-park, where I had parked, the sun had come around in the hours I'd been in there, so what was an opaque window I could now see into... there was a large man, with a bluetooth headset on, stood in front of a large wall mounted display, with the tests showing green or orange or red, and he would theatrically put his hand to his ear and make a person in the room look up as he spoke to them through this headset... I could not help but chuckle.

The final interview was from a friend, whom hearing I was on the job market instantly wanted to work with me again, he set up an interview with their C# web crew and told me to get my bum in their seat.  But this role was a long way away and even with the M1 it was an hour still... But on the days I went down there, massive traffic jams and I spent 3 hours in the car both ways, so it was already not going to be on the cards.  What was interesting though was this progressed to two interviews, two face-to-faces.  Because, the first two guys who interviewed me were leaving, they were hiring me as their own replacement.

My friend kept me interested and the pay was excellent, even if it was C# rather than C++ and they did their own NOC work and even though it wasn't a 100% fit it felt okay and the industry was familiar, as I'd worked within it before.  But on the second interview I was asked the BEST technical question... "if you have millions of strings, how would you optimised concatenating them together"... I asked if they were sorted, they were, so I said "from a single thread, optimise by threading the operation, concatenate the first half to the second or however many cores you have".

The guy just looked at me... "What about StringBuilder"... That was his whole reply, string builder, which is allocating it's memory half over each time and appending my memcpy under the hood was the solution he wanted, not threading, not pointer amalgamation, not memory defragmentation "StringBuilder".  This continued, rather than their thinking about solutions in code in terms of the problem, they thought of them purely in terms of C# classes, C# C# C#.  It was a little woeful.

I then asked about the roll out of the product, asked how they were working on it, remember I'm interviewing to be their boss... "because there's a bug in there"... I had done my homework, I'd spent a bit of time on their site, and found a definite bug, you do a search term and you get informed there's maybe 40 results or 200 results.  How many of these results can you see?... Just one.  The resulting search list was only showing the first result, none of the others.  If you changed the sorting order (to say by price) and did the same search, a different single result was shown, but still it said there were X others.... I pointed this out.

I literally sat there and showed them the bug.  And the chap looked at me, blinked and said (in front of his own departing managers) "There are no bugs".

I literally laughed, I thought it was a joke.  The managers just looked at me almost cringing, looked at him and we left it there, walking out to my car I asked the manager, "Is that why you're leaving?  You can't control or tell that technical bod when there's a problem?".... His answer was "Yes".

The last interview was were I've come to, about which I will say no more, but I hope you've enjoyed my little journey through strange, interesting and sometimes scary interviews in 2018.

* Interestingly a chap on the team I'm now on had worked at that company, he'd left them when the TDD mania began, funny that.

Sunday, 12 May 2019

Development Job : Interview Questions?

I was asked a question a few hours ago, "how would you kill a named process"... This annoyed me on two levels, firstly, as I was put on the spot, but secondly I had already blogged about this exact problem just a few weeks ago...

The quiz master knew this, or rather they should have, given all the information they had about me, including this blog... So to ask tells me more about them, than my answering would tell them about me.

It tells me that they're working to a bare minimum investigative level, they're looking perhaps too much to their goal (which it to get answers they like) rather than checking anything produced before.

This would be a little like asking Sir John Geilgud, whilst interviewing for a country play.... "Have you done any acting?"

It frustrates me.