Jez Higgins

Freelance software grandad
software created
extended or repaired


Follow me on Mastodon
Applications, Libraries, Code
Talks & Presentations

Hire me
Contact

Older posts are available in the archive or through tags.

Feed

We’ve failed them : Yr glygfa o Hescwm Uchaf, rhif 6

Over the past four or five months, I’ve been pulled into the recruiting process where I’m working. I say pulled in because I didn’t have any prior experience or training in recruiting, and because I’m not sure our process is particularly great. I don’t think it’s bad, necessarily, but it is quite drawn out. At least I think so, although people tell me it’s not unusual for a company of that type.

As part of the process, we give people a "refactoring exercise". It’s a small chunk of not very good real code, and ask people to make it better. We’re deliberately a bit vague about what better might be, because we don’t want to steer them in any particular direction. They can take as much or as little time as they like and, although few do, are free to submit code, notes, tests, and whatever else they might wish too. Afterwards, we have a good read through, then have a call with the candidate to talk about what they’ve done, how they found it, what they were thinking about and aiming for, do a bit of pairing on the code, explore the paths untaken.

It’s in this conversation where I generally get involved and, actually, it can be a lot of fun. People take the code in all kinds of ways, and have lots of different ideas, and I’ve had some really good conversations with people.

When it’s not fun, though, it can be really quite depressing. People who look like they should be good candidates - six or seven or eight years in, working in the same sector, for well known companies, who are bright and pleasant - turn out to be pretty poor programmers.

We’re not looking for perfection. I’m not looking for people to reproduce what I did when I started - I’m over 50 and been working four, five, even six times longer for a start. I was able to treat the whole recruitment process in a way they can’t. What I’m looking for is promise.

When I did the refactoring exercise, I treated as a piece of theatre. I took a day, and really sank myself into it, ending up submitting as radical a refactoring as I could, wrapped with a set of characterising unit tests, a pageful of notes, and a git archive with 70 or 80 commits in it. I was, in very real way, showing off.

People earlier in their career don’t have that freedom, which is fine, and they often seem to lack confidence. I’ve had a number of candidates who take the code in a particular direction and don’t follow through. It’s like they’ve set off on a path, then rein themselves in. In our conversations, I try to encourage to say yeah, let’s go down that path and see where it takes us. And some can, and some really can’t.

If, for example, someone says "I added this interface to make things more abstract" it’s natural for us to ask how it does that, why is this a good change to make. It’s kind of awkward when they can’t answer. I don’t mean they’re not expressing themselves well, I mean can’t answer.

We offer the exercise in Python, C++, C#, and probably something else I’ve forgotten. Each language cohort has it’s own particular tics, and immediately creating interfaces to important looking classes seems to be some kind of C# reflex.

Some candidates make good looking large scale changes, but seem almost blind to the smaller scale things. I have had people expressly say that didn’t write tests because there was no need, but then stumble when asked how they know the code still works as before. In as many ways as people do well, there are people who are simply floundering.

I do not blame a single one of them. I wish we could hire them, I really do, because I think I have colleagues here who could really show them what working with code can be, what a joy, what a challenge. I don’t doubt that all of them could be terrific programmers, who could really contribute, and have a good time doing it. But we can’t, or at least we can’t take them all.

They aren’t failing candidates, they’re candidates that have been failed.

They’ve been failed by the trade at large, because collectively we know, or at least have some pretty good ideas, about how people can learn and grow their skills.

They’ve been failed by their past employers, for not having the desire to help their own staff develop, not having the structures in place.

And they’ve been failed by me and my peers, who do know our stuff. It doesn’t take a huge amount of time to really make a difference - half an hour here, a day or two there, even just a suggestion can change someone’s course for the better. We should be able to do that in spite of our employers' apathy, and I think we have a responsibility to. Sadly, if the people presenting themselves for interview with us are a guide, we’ve been pretty remiss.


Tagged the-trade


Jez Higgins

Freelance software grandad
software created
extended or repaired

Follow me on Mastodon
Applications, Libraries, Code
Talks & Presentations

Hire me
Contact

Older posts are available in the archive or through tags.

Feed