Yesterday a reader commented on my old post about Excel VBA interview questions. As I am, again, spending a lot of my time trying to recruit another developer, I thought I’d tell you about what my current interview plan looks like.

What we’re looking for is a reasonably senior web developer. We’re a small software company with just a handful of developers, so we need someone who can pull their own weight, with no hand-holding or detailed management. Everyone is expected to not just code but also contribute meaningfully to discussions about design and architecture. They also need to share our values and mindset – to value code quality, maintainable code, good design.

The interview is complemented by a coding task, where I email the candidate a 1-page specification for an application and evaluate the code they send back. I therefore spend very little of the interview talking about detailed technical matters. The interview is for me to judge their aptitude and attitude at a higher level.

This is not an interview script. I wouldn’t ask these questions top to bottom. It’s more of a checklist for areas that I try to cover during an interview. This is also not a prioritized list.

For the rest of this post, “you” refers to the candidate.


1. Fit

What kind of a job are you looking for? What kind of company would you like to work for? What is important to you in your work? Why are you looking for a new job?

What I’m trying to establish here is whether the candidate would fit our firm. If they are looking for a fast-paced competitive environment, or a firm with international opportunities, they’re not for us.

What would you like to be doing in 5 years’ time? What do you enjoy most about programming? Have you been involved in requirements or testing in your previous projects?

This is to detect the wannabe project managers and business analysts, and people who are aiming for a managerial role. Nothing wrong with those, but we won’t be able to offer them a meaningful career path in our company. This is also to detect the pure programmers who have no interest in anything outside of code, who will consider testing and requirements work and usability studies to be “not their job”.

2. Passion, learning, interest

How do you keep up with current topics within the industry? Do you read any books? Blogs? Do you do any programming in your spare time? What’s your favourite tool?

Here I try to figure out whether programming is “just a job” for them, or whether they are truly interested in and passionate about writing software. It isn’t necessary for the candidate to do all of this, to read books and blogs and have hobby projects – but if they do none, it’s a great big warning sign.

3. Technical insight, critical thinking, big picture thinking

Explain the purpose of a recent project you worked on. Explain the design and the architecture. What choices and alternatives were considered? Why did you make the choices you made? What would you do differently if you had to do it again?

This separates the “drones”, the passive followers from the active minds. Even if the candidate wasn’t in charge of the project they describe, they should be aware of design choices and trade-offs.

Did you use an Agile process? What were the advantages and disadvantages? Did you use test-driven development, or unit tests or automated tests of any kind? How did that work?

If in this day and age the candidate has nothing to say about unit testing, they are not for us.

4. Some technical questions

This is a bit of a smorgasbord; I pick the areas that are relevant for the candidate’s area of strength. SQL and OOP for back-end developers and JavaScript and CSS for front-end candidates.

The home coding task tests general programming skills. Here I focus more on the specific technologies we work with. This whole area also ties in with #3, i.e. their ability to make trade-offs and informed choices.

OOP: Explain to me a design pattern that you have found useful. Why? Explain to me the purpose of the Single Responsibility Principle.

ASP.NET: Explain to me some different ways to save state between page requests. What are the pros and cons of each one? Which ones did you use in your last project? Why?

SQL: I give them an example table and ask them to write or dictate to me some simple queries against that table.

JavaScript: Explain callbacks, and why they are useful. Explain closures, and why they are useful.

CSS: Tell me about what you would use to build a page. Divs or tables? Why? How can you position a div – how can you center it, put it in a specific position on the page, etc.

5. Leadership and self-leadership

What was your role in the project? What were you responsible for? What are your weaknesses?

We need people with drive and initiative, who are able and willing to take on significant responsibility. The weaknesses question is mostly a basic indicator of self-insight.

Do you know any good developers in the Stockholm area? Send them to me!

ReQtest, the company I work for, is looking to add two more developers to our team, one for front-end work and one for the back-end. The foundation for our application is ASP.NET and C#. On top of that the front-end guy needs great JavaScript and CSS skills; the back-end developer needs experience of database development.

We’re a small and growing company so we offer lots of responsibility and variety in the daily work, and a say in just about all matters regarding both the product and the company. We use an Agile development methodology, and we value code quality and usability highly. It’s a great place to work.

Read more on monster.se: front-end developer, back-end developer.

Every year, for the past 10+ years, I have looked back at the year that passed and summed up the major changes in my life and any particular achievements. There have been career shifts, getting married and giving birth, climbing mountains, moving from one country to another, learning new technologies, taking up new hobbies etc.

This year I look back and I can’t point to anything memorable that I have achieved, learned, or experienced. I do useful work, but nothing I do is remarkable either from the company’s point of view or for me personally. I cannot say that I have moved forward from where I was standing the same time last year. And last year was equally dull careerwise, but at least there was the birth of Adrian to remember.

Something has to change in 2012.

I spent a good chunk of this afternoon crafting a job ad. We’re now officially in the market for a fourth developer for our team. We’re looking for an experienced developer who knows web development and particularly likes databases.

The company I work for has no outside financing, and all growth is self-funded. This has its pluses and minuses. We like the stability and the lack of pressure to expand, but it does put limits on our pace. Now finally it’s been judged that we have the financial headroom to grow our team. I’m really looking forward to another pair of hands – there is so much we want to do and so few hours to do it!

This was my day yesterday. A reasonably typical day for us, except for the content of my work. Normally I would spend most of my day on a larger feature but on Fridays we focus on fixing bugs. Compare and contrast this to last year’s post.


5:30 Nurse Adrian, semi-awake. Check his nappy (we use disposables at night) and of course it has leaked again and there is a big wet patch on his pyjamas. Rouse myself enough to strip off his wet pyjamas and nappy and put on a clean nappy. Can’t be bothered to go downstairs for dry pyjamas so I take him in under my blanket. Both quickly fall asleep again.

6:30 Woken by Adrian who is now clearly awake for the day. We nurse.

6:40 Get up and go downstairs with Adrian so we don’t wake the others. Change Adrian into his cloth nappy and put some clothes on him. Groggily potter around and cuddle with Adrian. Bring toys for him to the bathroom.

7:00 Take a shower while Adrian plays on the bathroom floor.

7:10 Pack my lunch for the day. Brush breadcrumbs from around the edges of the kitchen floor. Get the porridge going. (2 dl mixed grains, mostly oats; half a finely diced apple; 4.5 dl water; a chunk of butter.)

7:20 Go upstairs. Pull up the blackout blinds so that Eric and Ingrid can start waking. Get dressed.

7:25 Go downstairs. Take the porridge from the stove. Set the table for myself, Adrian and Ingrid, who will all be eating the porridge.

7:30 Eat breakfast. Help Adrian eat by loading the spoon for him. Adrian is not very interested in breakfast and would rather nurse some more, and pick with the groceries in our temporary pantry.

7:45 Brush teeth. Notice that I have a few minutes to spare before I have to leave so I photograph our newly painted bird feeder and our Halloween pumpkin which is still looking pretty fresh. Put on my coat and hat and gloves.

7:50 Leave for work.

8:00 Get to the train station, arriving at the platform just as the train rolls in. Get on the train. Read the most recent issue of the Economist.

8:10 The train stops at a red light just before Karlberg. The driver announces that due to a fracture in a rail, there is a queue of trains in to Stockholm Central and we will be going slowly. I continue reading.

8:30 Finally reach Stockholm C, 15 minutes late. Unlock bike, cycle to the office just off Östermalms torg.

8:45 At my desk. Check our support inbox, archive yesterday’s email conversations with customers.

Email our server host about problems with our outgoing mail (which is getting blocked as spam by one major US internet provider) and ask them to get their mail server removed from the blacklist.

Notice that the nightly regression tests have come up red with an error message that we have sporadically seen before; set the regression tests to run again. (They come up green 20 minutes later.)

9:00 Continue where I left off on Thursday: working on our tool which analyses our application’s translation files for unused translation strings. Improve the parallel processing code in the tool; fix some bugs in it; go through the results and remove unused translation strings.

11:11 Note that it is 11-11-11 11:11. Text message arrives from Eric, saying the same.

11:30 Break for lunch. Go upstairs to our shared kitchen, heat up the packed lunch, eat. (Jasmine rice, vegetables in satay sauce, blueberry muffin baked by Ingrid and Eric.) Chat to colleagues while eating.

12:00 Back at my desk. Fridays are bug report days which means I am free to choose which bugs or minor improvements I want to work on. I decide to improve a feature in our test runs module (which will update test runs with any changes that have been made to the test cases it contains).

12:45 The code works but the user interface is not updating as expected. Take a break, spend some time answering customer support emails.

13:00 Investigate why the user interface is not refreshing. Discover weird caching code. Fix it so the cache is invalidated when appropriate.

13:30 Remove some unrelated code that I noticed during that work, and remembered it is no longer needed. (We used to validate VAT numbers entered by our customers against a web service provided by some EU agency, but the web service is so unreliable we’ve been forced to give up on this.)

13:45 Fix a bug: a link from our login page needs to be updated because the URLs in our public web site will change as of the next release.

14:00 Fix a bug: on certain pages, the navigation menu does not remember its state. The reason turns out to be a different ClientIdMode setting on those pages.

14:45 Talk to colleagues about some planned changes to our public web site.

15:00 Fix a bug: a particular value in a special field is not sorted correctly in the charts in our application.

15:15 Fix a bug: a certain user setting should be saved in the database instead of cookie, to match the behaviour of other related user settings. Notice that the code could do with some refactoring first. Refactor.

15:40 Start working on the actual bug.

15:55 Pack up and leave.

16:00 Cycle to Stockholm C.

16:10 At station.

16:13 Train leaves.

16:25 Train arrives in Spånga.

16:35 At home. Ingrid is playing with a friend and in their game I immediately get the role of grandmother. Luckily I am not expected to do much more than talk a bit. Adrian throws himself at me. Go upstairs to get changed. We nurse. A quick trip to the basement to fetch my winter coat – the weather has turned cold almost overnight.

17:00 Eric starts making pancakes. Dinner will be half an hour earlier than usual (17:30 instead of 18:00) because Ingrid’s friend E tires earlier than Ingrid and will be going home just after 18:00. Adrian and I hang around in the kitchen. I can’t do anything productive because Adrian won’t let go of me.

17:15 Adrian looks very hungry so I put him in his highchair and give him a pancake.

17:20 The girls come to the kitchen asking for pancakes. We set the table, get out all the accessories, and start eating the pancakes just about as quickly as Eric can make them. I alternate between eating and serving more pancakes to the children. Adrian squirms out of his highchair and comes to sit in my lap.

17:45 The girls are done eating. I continue. Adrian also decides to eat some more.

18:00 All done. Start cleaning up the kitchen while Eric finishes eating.

18:15 Friend E’s father J arrives. They and Ingrid hunt for E’s clothes – for some reason she and most of Ingrid’s other friends change into Ingrid’s clothes when they’re here. They go home.

18:30 Continue cleaning up and other minor household tasks.

18:40 Adrian looks ready to go to bed. Change him into disposable nappy and pyjamas. Brush his teeth. Take him upstairs.

18:55 Nurse.

19:05 Adrian tosses and turns and sits up and lies down and does his best to wind down.

19:15 Adrian falls asleep and so do I.

19:45 Wake. Get downstairs. Check email.

19:55 Play Ludo with Ingrid.

20:20 Ingrid is getting too tired to sit still and focus on the game so we pack up. Eric prepares Ingrid for bed while I read some blog posts.

20:30 Go upstairs with Ingrid. Read a story. Sit by her bed and read blogs while she goes to sleep. She has difficulty falling asleep so this takes quite a bit longer than usual.

21:15 Go downstairs. Talk to Eric.

21:25 Work on a Christmas felt applique/embroidery project.

22:40 Adrian wakes and “calls” for me. Quickly brush teeth. Go upstairs. Nurse. Fall asleep.

On this my tenth day at work I broke my run of codeless days and wrote about three lines of javascript and three lines of C# (both surrounded by lots of boilerplate so it looked like I’d done more work than I did). And a teeny little html page. All this I sent off to a team of developers somewhere to whom we’ve outsourced the development of the next version of our web site, as an example of how we expect the web site to integrate with our product.

But most of my limited hours at work I spent in meetings or with Outlook, discussing and organizing. Activities like this used take up less than half of my time. Now that (a) work has piled up while I was gone and (b) various one-off things are happening, such as us hiring new staff and offshoring web work and (c) I only work half days, they take up all of my time. Not much to be done about it, I guess.

On the home front, Adrian is happier than he’s ever been. And I, too, feel better than I’ve done in weeks. Everybody is feeling good. And the reason is simple: we all have time for each other. Each afternoon the whole family is at home. Everybody gets the attention they need and want.

I spent the last weeks (or maybe even months) of my time at home in a near-constant state of low-level stress. Alone in charge of one to two kids for about eleven hours every weekday, with Eric at home for an hour in the morning and another hour in the evening. Each afternoon was a three-hour juggling session, trying to get dinner on the table while offering some love and attention to both kids.

The stress sort of crept up on me, so while I noticed it, I wasn’t fully aware of its weight on me. I was irritable much of the time, true. And I wasn’t sleeping very well. And each evening after the kids went to bed I was so exhausted mentally that I couldn’t even find the energy to read a book. But it somehow came to feel normal. Not good, but normal.

Having a stressed-out, irritable mum affected the kids, too, especially Adrian. I think we were both mirroring each other’s frustration, which is why he was mildly dissatisfied so much of the time. Now that I’m feeling better, he is, too.

I suppose that this is as good as everyday life can get (for the foreseeable future). Soon I will work longer days – probably not full load but I will at least get back to my previous 80% – because this is financially untenable in the long run. That still gets me home by 4.30 or so, well in time before someone needs to start cooking dinner, so it will reduce but not totally take away the time we can now spend with the kids in the afternoons. But then in January Eric also goes back to work, full time, and Adrian starts at nursery, and our evenings will again have lots of hurrying and little time for just being with each other.

I will savour this as much as I possibly can, while it lasts.

At work today I got started with handing over the responsibility for customer support to our new employee. This included some admin work around e-mail inboxes, aliases, logins, access rights etc., and looking for helpdesk software. JIRA, Zendesk, HelpSpot, Tender… too many options!

It is becoming a sport for me to see how many days I can do useful work – things that I do actually need to do, and now rather than in a month’s time – without writing any actual code. Today I resolved a few customer support issues, brought some of our stats and metrics files up to date, and looked through unprocessed bug reports in our backlog. The number of open bug reports that we hope to fix at some point (as opposed to those we close because fixing them would be too much work for too little benefit) has increased by 16% while I was away. That doesn’t surprise me at all. The number always goes up, as soon as we stop focusing on it. Now that we have a chart to look at again, hopefully we can get it back down again.

It was my sixth day at work and I did not touch any code today either. Instead I followed up and checked various statistics and went through bug reports, and held an almost two-hour intro to our product for a new employee, and then joined the team for a welcome lunch for the new employee, and then prepared for a customer meeting I am to have tomorrow. And that meeting is scheduled to last 4 hours so there won’t be any coding done tomorrow, either.

The new joiner, by the way, is going to be in charge of customer support, help files, and other such stuff. Handing over the responsibility for customer support from the developer team to a dedicated support person will be such a good thing. Getting her up and running will take a lot of my time but the potential gain in productivity over a longer time is huge.

At work: more software installations. Visual Studio, Resharper, SQL Server Management Studio, TortoiseSVN, AnkhSVN, CCTray, Notepad++, Office, Filezilla, and probably some that I’ve forgotten already.

During the afternoon I replanted the three tomato plants I bought 10 days ago, and cleaned out all the paper junk that’s accumulated in Ingrid’s room. Almost every day she brings paper home from nursery, sometimes with drawings, sometimes with scribbles, sometimes just folded up and wrapped up with sticky tape. Of course she wants to save them all, but then a few days later she forgets all about them. I plan to go through all her toys someday soon, too.

Adrian is still semi-ill, and eating and sleeping badly. I think I got about four hours of sleep this past night, in three separate pieces. But tonight he fell asleep on his own: we nursed, I turned him on his tummy, he twisted and tossed for a while, and then he was asleep.

Eric took him to his 8-month checkup and it was uneventful. He can sit unsupported, he is not cross-eyed, his babbling includes non-vowel sounds: check, check, check. 9.4 kg and 69.7 cm.

We had a lovely storm during dinner, with lightning and thunder and hail and pouring rain. Falling cherry petals filling the air made the storm look even more fierce.

Related Posts Plugin for WordPress, Blogger...