A late night in the office, for a server migration job. It was past 2 in the morning when I felt confident that we were done enough so that I could leave. And then at it again the next morning for the inevitable post-migration “firefighting”.

This job is seriously messing up my life.

I ask myself for the N:th time why I am still staying at my current job. I guess I’m still hoping for a turnaround. I give it until September, and if the situation is no better then, I will give up.

The team is trying to complete three priority 1 projects at the same time, all of which require constant attention, all of which must be done before midsummer. I’m like a juggler with too many balls, and more are being hefted at me. Other projects that we should prepare are getting no attention, so the next couple of months will be singularly unproductive because we’ll be picking upp all the dropped balls.

I am accumulating overtime daily, frequently catching up with work late at night at home. I sleep badly. I’ve missed breakfast twice in a week, and I haven’t gone to the gym in two weeks.

I’m walking precariously close to the line where I will break, but I’ve been doing it for so long now that I know the signs that mean I’m getting too close. When I cannot fall asleep at night, or when I wake up from weird dreams again and again, or when I wake up and yesterday’s stomach ache is still there.

I am so used to feeling constantly stressed – faster, faster! – that I don’t remember how to relax and slow down any more. Yesterday I had to tell myself to pretend I was not in a hurry, so that I could try and figure out how I might behave in that scenario.

By Sunday evening, after two days of focused effort on slowing down, I feel somewhat like a normal human being again. And tomorrow it’s back into the fray again.

The situation at work is spinning out of control.

We got a new CEO a couple of months ago. Various workshops about our processes and practises followed, and were welcomed by the team, because we knew things needed to change. Agreement was easier to find in some questions than in others, but in general, we worked until we agreed on key points.

Now I feel that the development process has effectively been hijacked by the CEO. The development teams no longer have much say about important parts of it.

Previously we had workshops. Now we have meetings where we are told what to do. We sigh with resignation, and he does not seem to even notice.

We do not have agile self-organising teams any more. We have top-down planning and scheduling instead. We don’t really even have teams any more – just a bucket of people. (A “bucket” being the technical term for “an unordered collection of weakly related items”.)

The chances that I will still want to be with the company in, say, half a year’s time are decreasing by the day. Currently I’d put them at 10%. This thought actually feels quite liberating.

So I went to the gym and took out my frustration on the kettlebells. I cycled to and from work to tire myself out, so I can sleep at night. When I got home, I found peace in photography again, and then attacked some of the more stubborn large rocks in the ditch I’m digging.

Today is release day at work. The release responsibility rotates so most developers are reasonably proficient in pressing the right buttons, and it wasn’t my turn this time. I normally stay in the office for the release anyway, especially if the developer pressing the buttons is a junior one, because I feel ultimately responsible. Today I couldn’t stay late, so I logged in from home instead, after picking up the kids from school.

It turns out the kids are surprisingly good at entertaining themselves and doing things together if they really, really don’t have the alternative of hanging around an adult. They spent a good long while playing with kinetic sand, and they even cleaned it all up after themselves.

A nightmare of a day at work.

We have a major release planned for 17:00. Four hours before release, key functionality that we really, really want to get out to customers is still not release-ready.

The web site is down already when I get into the office at 8. Infrastructure issues at our hosting provider. At 15:40 the application, the thing our customers are paying for and the thing we want to upgrade, also goes down.

At this time I go out for a long walk to clear my head of all the frustration, and take some photos of the neighbourhood.

(When I come back, all the servers are still down. We take a pizza break and start preparing ourselves mentally for having to cancel the release that we’ve been planning for since before summer. At the very last moment, when we are minutes away from cancelling, the servers come back online and we forge ahead after all.)

Our developer team took a day off from ordinary work and had a “dev day” with a few discussions but mostly with coding for fun together.

Took the camera to work. This is our bi-weekly Monday morning combined breakfast/company meeting/demo, in what is normally our lunch room but also serves as a meeting room for the largest meetings.

Recruitment-related tasks have been filling most of my days at work since January. Now I am finally seeing a glimpse of light at the end of the tunnel. We are close to signing a contract with a good back end developer, and today for the first time we had a really promising candidate for the front end role.

By now I have a pretty solid and stable process worked out. First I read their CV and/or cover letter, and ask for clarification where I their background really seems to not fit our needs. Well over half of the candidates get discarded at this stage – surprisingly many candidates seem to apply for any job that seems even remotely related to their skills, and don’t hesitate to apply for jobs that they are clearly under-qualified for.

Next I ask them to do a coding task at home, at their own pace. After this we have a brief phone interview. I used to do it the other way round, because I didn’t want to do give them unnecessary work – the task takes a couple of hours to do at least, whereas a phone interview is no more than 30–40 minutes. But it turned out that a lot of people who sounded knowledgeable on the phone failed the coding task, so it ended up wasting a lot of my time instead. And since I get to decide, I’d rather have them waste their time, not mine. The coding task not only filters out the candidates who can talk but not do – it also gives us something concrete to discuss during the phone interview, and therefore makes the interview much more effective.

Now the funnel works quite well. Occasionally I say yes to someone who I am unsure about, and thus far these candidates have always disappointed in the next round. So if the candidate doesn’t seem to have enough relevant experience, they don’t do well on the coding task. And the ones whose coding task does not impress don’t make a better impression on the phone.

All the coding tasks until now have been sort of mediocre, “good enough” at best. We’ve been trying to weigh them against each other but never really come to any firm conclusions. Is one kind of mediocrity better than another? What’s worse, stupid variable naming or badly organized code? How bad is too bad?

The one we got today stood head and shoulders above all the previous ones, and the interesting thing was that this time there was no discussion, no hemming and hawing. The moment we saw the code it was obvious to all those involved that this one was in a completely different league from the others. Distinguishing a really good solution from a mediocre one is so much easier than comparing two mediocre ones. Even if we for some reason end up not hiring this guy, he has at least given us a yardstick for evaluating future candidates.

Another observation we made today was that the good front end developers we’ve met (including those in our team) are all ex back end developers. In other words, they are developers who have chosen to specialize in front end work. The ones who come from the other direction – the designers, the web developers – lack the necessary fundamental development skills. Their solution may work but just it’s like a house of straw: you can see at a glance that it is structurally weak. They don’t build, they hack.

PS: I just counted: I have received 43 applications for this job, reviewed 13 coding tasks, had 10 phone interviews and 2 face-to-face interviews (with 2 more already booked).

This week I have spent almost all my time thinking about recruitment ads, CVs, coding tasks, phone interviews and other such stuff. It is mostly not fun, and sometimes downright depressing. The wheat is there but buried in lots of chaff. To top it all off, one of the candidates that I (politely) rejected has become abusive and is harassing the company about it. Oh how I am looking forward to the day when this process is finished and we have our new colleagues with us… and then of course I will soon start it all over again.

We had a team “conference” yesterday. First we talked.

Then we had a nice dinner.