So I was kicking around some ideas with partner-in-crime and work friend Chris James of Learn Go With Tests fame, on the subject of "what even is a 'senior' software developer?". This wasn't an entirely abstract conversation; we were once again trying to work out what the best questions to ask at an interview were - interviews where we were doing the interviewing.
Chris was thinking about what skills and knowledge a "mid level" (again, whatever that is) needs to become a senior developer. I was (once again) bemoaning the number of developers who can spit out a few buzzwords and parrot some fashionable ideas they've seen on Twitter, but then never apply those ideas to their work.
And somehow these two threads turned into the ultimate non-technical interview question:
Which three books have most influenced the way you work?
We instantly wondered whether we'd be excluding people. And the answer is: yes. It's an interview, the whole point ultimately is to exclude some people - the people who you don't want to get the job. So the better question is: is this question excluding the right people?
And I think it is. This is a question for a senior software developer. I would genuinely expect a senior developer to have read at least three books. Three books that were worth reading, and which were influential on the way they work. This is a knowledege industry (or at least it ought to be and not the fashion industry it feels like half of the time), it's really not too much that we expect the senior developers in our discipline to have read three - more than three - actual books.
Not blog posts - not that I've got anything against blog posts. I've learned a lot through blog posts. But the attribute I'm looking for in a senior is somebody who can think "big" and think "slow", who can pay attention to a long form piece of writing which has ideas in it that won't fit into a five-hundred word explanation. I'd probably accept a journal paper at a pinch. But not a blog post. And definitely not a tweet.
Of course, this still doesn't weed out the people who try to fake it. Yes, they will say, I've read The Structure and Interpretation of Computer Programs. It was wonderful. Job please.
Well, no - no job yet. Because the next question is:
Please explain how those books have influenced the way you work. Frame your answer as though you were talking to a junior developer.
One of the most important skills of a senior developer is the ability to pass knowledge and skills along to the "next generation". I want a senior developer to make all the developers in an organization better, and especially the
"junior" developers on their team. I don't want them to sit on their mighty tower of 1337 h4xx0r skillz - I need them to be educators and explainers, raising their game by raising everyone else's game. And if they can't explain why these important ideas are important to them, hopefully in a way that will inspire other developers to read the same book, then I really don't understand how they'll fit in with my idea of seniority. Maybe they should go and interview at a place that wants you to invert binary trees on a whiteboard or whatever.
I'll go further: I don't even care that much if it's not a "tech" book. Maybe they learned something from a book about management. Or a book about chess. Or a book about sixteenth century Italian opera fans. It doesn't matter. As long as they can explain what they got from that book in a way that someone with little context in software development can understand, it'll indicate the sort of skills I would be looking for.
So now what do you do?
- Ask all of those senior developers you know to name their three books.
- ... and of course explain why those books to you.
- Put them all together in a big unordered list
- Think about what you want to be learning next, what's missing from your skill set and then...
- Read a book
Seriously - read a book. Don't doomscroll Twitter, don't read another blog post about the 27 new technologies you need to learn to be a DevTechOpsDataMonk. Don't learn yet another "Hello World" in the language du jour or the hot new JS framework. Read a book! Now is the time to step up, to move towards mastery of your discipline. Get that book, read that book, take notes about that book, bore your colleagues, friends and family by talking about that book, blog about that book. But read that book and read that book now.
And if not now, when?
Just write down your three books with a quick description and explanation of each, and now you're ready for all those juniors who are beating a path to your door. Let me know your list!
And, of course there's a bonus here - I'll hopefully get to hear about books I ought to read!
So there it is - does this sound right to you? Are you a senior developer who couldn't answer this question, and thinks it's dumb? Tell me why. Can you think of a better interview question that would test the same areas? Or a better way of asking the same question? Do you think books are just for old people who still think posting reaction GIFs is a thing. Or are you just waiting for me to name my three books? I might do it in a follow-up post. In any case, feel free to hit me up on Twitter or the comments to start a conversation.