Since we lost a third of our developer team a few months ago, we’re looking to hire a new one. We’ve interviewed half a dozen candidates of quite varying quality, and discarded many more CVs. After most interviews we’ve felt guardedly hopeful – “this might work” – and gone on to the next step (a take-home exam, a programming task that the candidate solves at home and sends to us for review). After today’s interview I felt pity instead.

The candidate had worked as a developer since 1995: first 4 years in one place and then 10 years in the next. But she didn’t have 14 years of experience – she had 1 year of experience, 14 times over. She failed technical questions that a competent developer who’d worked with these technologies for more than a few years should be able to answer without hesitation. (Example: in ASP.NET, name some ways of storing state – ViewState, Session, Application etc – and name the differences between them.) Her career had totally stagnated.

And the reason was obvious: she was passive, waiting to be served the necessary experience and learning. She wasn’t stupid, she just lacked drive. Had she read any interesting books about software development recently? No. Blogs? No. Did she have any hobby projects aside from her main work? No. Then I asked her point blank, how do you keep your skills up to date? And she said, I expect that to happen at work, through the work I do.

I’m sorry, but it doesn’t work like that.

The sad part was that even though she had more or less seen the problem, and wanted to move on, she was not at all aware of the cause of the problem. She’s going to have a very hard time finding a satisfying job. A recruiting manager might accept the weak skill set, but who’s going to hire a candidate who tells you quite honestly that she takes no initiative to learn? And when she finds a job, it will be in a team with low expectations, and thus more stagnation for her. In another ten years, she’ll be stuck in some dead-end job, maintaining boring obsolescent non-essential applications. And she will be bitter and frustrated.

What a waste. She was a nice person and I really don’t want that to happen to her. I felt tempted to write to her, after she gets the rejection email from my boss, and tell her all this. Wake up! Take charge! Ask questions! But I’m afraid it would be perceived as insulting, and would be unlikely to have the desired effect.

The Rails learning project continues. I’ve got an actual application to work on, one that will be useful when it’s done: a web-based version of our expense tracking application. The old one was done in Access and has served us well over many years. But file sharing has always been a pain since we often have different OS versions (and now different OSes) on our two computers, and can’t be bothered with hooking up external hard drives etc. So we want a solution that we can both access more easily. Thus, web, and Rails.

It’s fun and educational but it is also painful. The trivial tasks are trivial, but the moment I try to do something other than plain CRUD with strings and numbers, I get stuck. Every task takes me a whole evening. At this rate the application won’t be done until Christmas.

Today’s stuckness: time zones. I want to be able to migrate the data from our existing database, and CSV files seemed like a sensible medium. Exporting from Access to CSV went easily. Importing text went well enough, once I figured out that I needed to open and resave the file with different encoding. But importing dates did not. My data file had an entry for 1998-01-01 and after importing it somehow became 1997-12-31 23:00. When I got that fixed (by changing the application’s time zone to UTC) the data looked right but whenever I re-imported the data file, the dates were not recognized as matching what was already in the database, so the records were appended rather than updated. It turns out that in SQLite a date without time is not the same as a datetime with time = 0. Who comes up with this stuff?