Tag Archives: technology

What do you know?

How do you interview people for developer and technical jobs? This is an enduring question, and one with many angry factions.

It’s too big a subject to tackle in its entirety and I have no intention of trying. Instead, I want to talk about one aspect: should you ask Computer Science questions or not?

In one corner are the people who argue that you never need to implement a linked list or write Quick Sort in real life, so asking you to do that in an interview is unreasonable and excludes good candidates. They argue that there are more important things to consider, such as the use of applications frameworks or design or working with other people.

In the other are those who say that algorithms are a fundamental part of writing software and, while you may not need to write a Quick Sort, you do need to understand it and to be able to explain it.

The first group calls the second elitist. The second calls the first naive. Who’s right?

Of course, I come at this with my own bias. I have a Computer Science degree but I did it some time ago and don’t have perfect recall on this stuff. Ask me the Big O notation for Quick Sort and I’ll understand the question and maybe make a stab at the answer, but I’m not going to pretend I’m 100% sure.

There are two main angles I want to consider: the intent of the interviewer; and the knowledge a developer actually needs to do the job.

Let’s start with the former.

So, your interviewer asks you to implement a linked list on a whiteboard. Why? What are they hoping to find out about you?

If the answer is… well, the answer, then I’m very firmly with the “you don’t need to know this stuff” crowd. People tend to want a specific answer when either they want a cookie cutter computer science graduate or they wouldn’t understand the answer.

Alternatively they might be trying to see how you think; how you’d start with a simple solution and build up; how you’d test it. In these cases, the answer is less important than how you got there.

Another thing to consider is that, as an interviewer, you want to get the most information in the least amount of time. Starting with a “real” business problem might require too much context to be explained before you could really start. But the candidate hopefully already know what a linked list does, even if they’ve never had to write one.

Of course, sat in a conference room with a stranger it’s very hard to tell which of the two camps your interviewer falls into (and practically impossible if they’re on the phone).

So that’s pretty inconclusive. There are good reasons to ask but you can’t tell whether that’s the case for your interviewer.

So how about job requirements?

This angle is easier. Most jobs don’t require standard algorithms that you’d come across in a computer science or software engineering degree. A knowledge of user interface frameworks probably is more useful for many projects.

But what about the rest? There are jobs where knowing algorithms is important. On projects where low-level or performance intensive code is required understanding the fundamentals can be important. Maybe you’ll be writing a game or something with very low latency requirements or an engine that processes vast amounts of data.

In my last project I deliberately avoided using the system provided Quick Sort and implemented my own Heap Sort. I may not have been able to tell you the Big O notation for heap sort and quick sort, but I do know that quick sorts’ Achilles heel is that it works poorly on already sorted data. (It’s only fair to note that they didn’t ask me about algorithms when I interviewed for that position. In fact, they didn’t ask me much of anything! That’s a long story for another time.)

I’m not saying that you need a Computer Science degree to know those things. I’m not saying that the project would have failed without that background (though the fact that someone knew saved tens of thousands of pounds in hardware costs). And, most importantly, I’m not saying that the kinds of projects that you do are anything like mine. I am saying that the people who say this stuff isn’t useful or important are wrong.

So what do we conclude?

Well, firstly, and most importantly, no one size fits all. Your interview process needs to be tuned for the kinds of position you’re trying to fill.

Secondly, if the only questions are about linked lists and sort algorithms, that’s a big red flag. These aren’t the only interesting subjects for any job. If you’re not at least asked about how you work in teams, you should be worried.

Finally, having said all that, you can’t escape from the fact that programming is about algorithms. According to Wikipedia:

Programming involves activities such as analysis, developing understanding, generating algorithms

You should be expected to understand and to be able to explain algorithms.

But you should also understand team work, several programming languages, relevant frameworks, user interface design, source control, your IDE, the Unix command line, security, Linux, web servers, leadership and management, the film that the line “pop quiz, hotshot” comes from and know the correct answers to “tabs or spaces?” Developing software is hard and has many facets.

Focusing on any one aspect to the exclusion of others is a mistake. And that’s true both for you as an individual and you as an employer.

Humane Recruitment

There are many ways that recruitment is broken for both candidates and potential employers, but this time I want to focus on one aspect that I experienced recently as a candidate: how companies and recruiters don’t treat prospective hires with respect. I’ve changed jobs a few times over the years and some of the ways that I’ve been (mis)treated in the last year surprised even me.

Let’s start with something that I’m sure we’ve all experienced: not getting a response back from an initial application.

“We get so many applications that we’re unable to respond to each one individually.” I totally accept that this happens. It sucks and I don’t believe them. Writing a single, bulk email to every candidate saying “Thanks but no thanks” would be better than getting nothing.

It is appalling, but I was prepared for it.

What I was not prepared for was getting the cold shoulder after an interview.

One company I had three interviews with and spent the best part of a day on an exercise they set and got no response for two months afterwards, even after prompting several times. By “no response” I mean literally nothing. Not a call, not a “we’re still considering options.” They were seemingly ignoring my messages. I’m not even sure that I would have had any response had I not kept bugging them.

I assume they found another, marginally preferable candidate but took a long time to convince them to take the job. Did they think I’d wait? (Reminds me of this piece.) Did they think I’d be flattered to be second? Given the cost of a bad hire, when I’ve been recruiting, a “maybe” is always effectively a “no.”

Is this how the recruiters would like to be treated? Even if there are really so many qualified candidates that you can treat people like this, should you? These companies treat you as a commodity. I’ll come back to why this is a mistake.

A quick aside: I’m using the words “recruiter” and “company” more or less interchangeably. I’ve seen the behaviour I’m talking about here both from recruitment companies and internal “talent acquisition” teams.

Even when I wasn’t completely ignored I didn’t feel that I was treated like a human. For example, another interview appeared to go well, at the end the hiring manager said “We’ll get you in for your next interview soon.” The next day I got an automated “no thanks” message, addressed to “Dear candidate.”

Both parts of that feel like a failure. Why tell me good news if there was the possibility of bad? Is it passive-aggressive? Was it just as simple as he didn’t want to give me bad news in person? Why not just say “We’ll get back to you soon”? Similarly, the automated message just felt like cowardice. I don’t expect long and chatty. I’d like to see a reason, but don’t expect it (The reason I don’t expect it is another rant.). But after meeting someone, investing some time into a relationship, I don’t think it’s unreasonable to expect something more personal than a form message.

How do I know it was a form message? I’d had exactly the same message – the same wording, the same punctuation, the same title and job description of the source – from another company using the same recruitment website.

There are two other variations that I want to mention. First, the rejection because of a missing skill that wasn’t mentioned in the job description. And, closely related, a rejection because of a missing skill you never claimed to have. Both, again, show a lack of respect for the candidates time.

I’ve pitched this all from the candidates perspective so far, but it’s bad for this hiring company, too.

Many of these examples are a waste of time for the people conducting the interviews as well as the candidates. And you know the old adage: time is money. A few minutes reading a CV / resume would show that a particular skill is “missing.” If everything else looked good, a quick phone screen would confirm.

But it’s worse than just the immediate effects. It’s also a reputational risk.

When I sat on the other side of the table, I always wanted to portray the company I worked for in a positive light. Just because you don’t get a job doesn’t mean you should end up disliking the company. Almost by definition, we work in the same industry. I may end up in a position where I could recommend your product. Or you. Why give me a reason to find your competitors or communicate your products your flaws? (One project I worked on at an earlier job, I found we won the work because we were nicer people to deal with. Sometimes it doesn’t take much to tip the balance.)

I recognise that I won’t be a good fit for every job I apply for, for a whole host of reasons, both mine and theirs. And I know that recruitment is an expensive and error prone process, but doing it badly could actually take more time and alienate people that you should been keeping on your side. Why not do it right?

iPhone 6s

I wasn’t sure that I wanted a “big” iPhone as I was perfectly happy with the 4” form-factor. But if I was going to get a new phone and the new ones are bigger, I reasoned, I may as well go really big and go for a 6s Plus. On paper it made perfect sense.

Then I played with one in an Apple Store and I laughed. In practice it was comically big. I really didn’t want a phone I could only realistically use with two hands.

In many ways, my main complaint with the iPhone 6S is the same. It’s a lot bigger and I can only just use it one handed. Even a couple of months in, I think I still want a 4” phone.

Which is not to say that it’s not good. The camera is excellent. It’s much faster than my old 5. It’s my first device with Touch ID, and it’s great. Going back to punching in my PIN code every time would get annoying very quickly.

At launch I thought that 3D Touch would be a game changer and that Live Photos were a gimmick. I may have had that the wrong way around. The problem with 3D touch is that it’s not available everywhere, so you quickly forget to use it. This is not entirely Apples fault. Even my own apps don’t fully support 3D Touch yet. Live Photos, on the other hand, “just work” and they do capture a moment in a way that a simple photo doesn’t. They’re good for those serendipitous moments that you wouldn’t try to record a video of.

Overall I like it, but with more reservations than I’ve had with any of my previous iPhones after a couple of months with it.

Webcam

I’m not entirely sure what I was thinking. In about 2005 I bought an iSight, Apple’s relatively short-lived external webcam. It was a beautiful device. Sleek, easy to use and functional.

At least, I think it was functional.

For a device that cost me well over £100 I didn’t really think it through. No one else I knew at the time had a Mac with iChat. Or a webcam.

Before I finally gave in and sold it on eBay I did use it a few times with my then girlfriend (now wife). And it was really nice; like the future. Having grown up with old, slow computers the idea of playing video on them is still slightly magical to me. To have a computer simultaneously record, compress, transmit, receive, decode and display high resolution videos still strikes me as pretty amazing.

Even now, web chatting once a week, I think it’s neat. My son, before he was two, thought nothing of having long, detailed “conversations” with his grandparents. What’s high-tech to me is entirely normal to him.

And all this leads me to my latest technology purchase: a webcam. I got it for two reasons: firstly, I’ve been using my laptop with the lid closed a lot, which means I can’t use its builtin webcam. The second reason: it only cost £5.

I’ve probably already used it more than I ever used the iSight.

Is it as pretty as the iSight? Is it as well made? No and no. But it’s amazing what £5 can get you these days. I added the following as a review:

Considering the cost it’s remarkably well put together, comes with a decent length USB cable, has a flexible stand and works straight out of the box. The LEDs are a bit of a gimmick and the picture quality is a little muddy compared with the built-in camera on my MacBook, but it’s totally usable and easily forgiven given the price.

Webcams have moved from an expensive toy that I wanted to like but couldn’t actually use to a practically disposable tool — I’m sure there are drinks in your favourite coffee chain that cost more — that I use almost daily in less than ten years. I don’t mind being a foolish early adopter if it helps get genuinely useful technology into the hands of more people. If only all my other toys prove to be quite to useful.

Not so smart phones

The flood of new so-called smart watches continues. Some people seem to love theirs, others remain to be convinced.

Count me in with the unconvinced, though only because the current ones seem to be poorly conceived.

Marco Arment says:

Portability is critical to modern device usefulness, and there are only two classes that matter anymore: always with you, and not… Smartphones dominate always with you.

I think this gets to the heart of why the current range of devices — both those for sale and also those just announced at CES — just are not very compelling.

Let’s ignore for the moment the fact that most of them look awful.

Actually, no. Let’s not. You can’t sell a device for hundreds of pounds, one designed to sit on your wrist, replacing the only jewellery that many men wear, and make it look like a digital watch from 1981. I half expect the next smart watch to have a calculator keyboard on like the old Casios.

(For what it’s worth, I think new Pebbles are a big step forward over the original version. Unfortunately I like my super-thin Skagen so I’d still consider it a long way from acceptable.)

But yes, let’s assume the form-factor was more pleasing. Then it still doesn’t work. They’re not replacing anything. They’re accessories for an already expensive and always-with-you device. Sure, looking at your wrist is easier than getting your phone out of your pocket, but is it really that much easier? Is it several hundred pounds better? Is it worth the hit on you phones battery life and the inconvenience of yet another device to charge? I think most people will conclude, no.

So in summary, I think that smart watches have two main problems:

  1. Aesthetics
  2. They’re companion devices

The first is solvable with advancing technology and a degree of taste. The latter means that not every manufacturer will solve it but once the components become small enough putting them in an attractive case becomes possible.

Moore’s Law can partly solve the second point, too, but it’s not enough on its own. You’d also need changes in the way you interact with the device if it’s to be a full replacement for a smartphone.

I don’t think the answer to that is speech. Sure, Siri will get better, but there are places where you can’t or wouldn’t want to talk to your devices. And it would be hard to do an Android and get bigger and bigger screens — at least until we evolve to have bigger fore-arms.

Instead, I wonder if smart-watches are really a bit of a technological dead-end. If over time components tend smaller and smaller, then why stop at wrist watch size?

The other side of the equation is the smart phone. Is it really the best form-factor that we can possibly imagine? Do we use smart phones because they are the best place to put small computers, radios and piles of sensors?

Or put another way: if you could have the same functionality that’s currently in your smart phone in the form of a watch, would you take it? If you could take all that functionality and not even have to wear a watch, would you take it?

The smart phone is a great compromise. It’s small and with you most of the time. But you still have to carry it. You can still easily lose or drop it and break it.

Smart watches and Google Glass try to solve these problems but, as Marco says, they do so with some pretty serious draw-backs. The smartphone is better for most people right now but that won’t always be the case.

Facebook IPO Fail?

This is really starting to bug me. Nearly a week after Facebook’s IPO and the papers are still saying that it was a failure. It wasn’t, or at least, whether or not is was depends on who you are. And I suspect you prefer the winner to the so-called losers.

Let’s start with the basics. What is an IPO? It’s simple: a company sells a part of itself in exchange for cash. In the physical world, that’s the same as me making something and selling it to you. For the sake of this example, let’s say that I sell it to you for £1.

And what’s the share price? Well, once the IPO has completed, someone else can buy a share from you. The share price is basically just the price that you can agree on. Maybe you could sell it for £1.20. In this scenario, you just made 20%. Well done you.

And what about me? Well, I’ve made nothing more.

Let’s apply that back to Facebook. The initial price was $38. That’s the amount that Facebook got for each share. Let’s say that, as many expected, the share price rocketed to $50. Who benefits? From my example above, it should be clear that it would mostly be the people who bought the shares. The banks, the speculators. In short: not Facebook.

It doesn’t take a lot of thought to realise why the share price would rise so rapidly on the first day. Is it because the value of the stock increases rapidly in only a few hours? Or is it because the stock was originally underpriced? Contrary to what you read in a lot of papers, a rapid rise on the day of the IPO really means that the banks did a poor job of pricing the shares and that the company made far less money than they should have.

(To be clear, Facebook benefits from having a higher share price over time. I’m just talking here about the price rocketing on day one.)

Facebook wanted to get the most money possible out of the shares that they were offering. It turns out that the did an excellent job. They sold them for $38 and by the end of the day the market pretty much agreed. They left very little money on the table.

So unless you feel sorry for the banks or the speculators who failed to make a quick buck, the Facebook IPO was actually pretty successful.