Thursday 24th July, 2008 @ 00:26
At my awesome new job I’ve had the luck of giving technical interviews to our software engineering applicants.
I’ve really enjoyed the process and been doing quite a lot of reading from wise people like Joel Spolsky on the type of things that you should and shouldn’t be asking in an interview.
Two of the most important things Joel emphasises are that it is essential to have an applicant writing code in the interview and that you are better to not hire a good software engineer than hire a bad one. Thankfully our judgement has seemed good on the latter as everyone working at Mendeley seem to be not only great people but all of our software engineers (including me!) are really passionate about writing software that is more than just “good enough“.
I’ve found Joel’s first point an interesting conundrum. How should you get people coding in an interview? Obviously I’m not going to detail our exact interviewing process on my blog but I personally believe that getting the applicant to write out a solution to a simple algorithmic problem on paper (while you watch them) is a great way of seeing how they approach a problem, how quickly their mind works and how careful they are with validating their requirements. It’s interesting the sheer variation in the above exercise from people with very similar academic backgrounds and length of experience, even when asked a very simple algorithmic problem.
It’s an interesting experience as an interviewer looking at personally appeals to me about a candidate. This is by no means an exhaustive list or even that all of these indicate a good software engineer but just my own thoughts:
- A very solid technical understanding is obviously crucial. On these lines, however, I think it is important to not oversell yourself. Nothing is worse than someone claiming to be an “expert” in a technology and they don’t have more than a basic understanding of it. If your understanding is basic and you’re being interviewed, that’s ok. Just sell your other attributes. If it was a requirement, you wouldn’t have got this far!
- If there’s one thing I think is the number one attribute in a software engineer it’s the drive to learn new technologies and techniques. If software is clearly more than just a job to you and you are reading software blogs, listening to software podcasts or contributing in OSS outside of work, chances are you are going to take more pride in your work than someone to writing software is just a 9-5.
- No matter how good someone is technically, if they aren’t going to fit in the team then they shouldn’t be hired. The last thing you want is a new member disrupting the social dynamic of a group of people that currently get along. I think everyone wants to work with people that they’d be happy to talk to outside of work so if you’re a likeable person than that reflect well on you.
Also, as an interviewee I’ll share some of what has annoyed me in interviews:
- If you don’t ask me any technical questions, you probably have some software engineers in your team that suck at programming. I don’t really want to work with people like that.
- Please don’t keep me waiting for weeks only to tell me I didn’t get the job based on something that I said in my original CV/cover letter I sent to you.
- If I don’t get a job I want constructive criticism so I can improve myself.
I try to keep the latter points in mind when interviewing people so as not to annoy others as I was annoyed.
I’d be grateful for anyone else’s input as either an interviewer or interviewee.
Let the argument commence!
Posted in My Life, Software Development
No Comments »
Thursday 17th July, 2008 @ 01:50
My sound card (a Creative Sound Blaster Audigy 2) has got lots of inputs, especially with the nice drive bay expansion port.
Unfortunately, the default ALSA device seems to have no way to access the “Line 2/Mic 2” channel on the front drive-bay expansion which I use for recording due to it seemingly being the lowest-noise channel.
If you point JACK’s “Input Device” to “hw:0,2” then it will pick up the 16 channel inputs and you can connect them nicely to be able to access this port (channels 9 and 10) in JACK-enabled applications.
I’m currently working on some voice acting for The Nameless Mod (which is looking like it’s going to be spectacular, check it out) and the best program I’ve found to do this recording in is Audacity. Audacity however seems to stubbornly refuse to let me use it’s JACK support (which is apparently buggy beyond use currently anyway).
I found that if I point Audacity to record 16 channels from “hw:0,2” then I can access all the Audigy’s input channels (as JACK does) but unfortunately this means that every time I record I get all 16 channels (a PortAudio limitation from what I can tell from the source). This isn’t ideal as it means, to record a bunch of lines in rapid succession, I need to spend huge amounts of time deleting the unwanted 15 other channels. As it’s not possible to select the channels to record from Audacity I needed to get a little more creative and ended up with this:
pcm.mic2 {
type plug
slave.pcm "hw:0,2"
slave.channels 16
ttable.0.8 1
ttable.1.9 1
ttable.8.0 1
ttable.9.1 1
}
If you add the above to your “~/.asoundrc” or “/etc/asound.conf” then you will find that in Audacity’s “Recoding” dropdown you will now have the option “ALSA: mic2“. This is simply the same as “hw:0,2” but with the 9th channel swapped with the 1st and the 10th swapped with the second, thus allowing you to select “2: Stereo” or “1: Mono” from the “Channels” dropdown and get the Line/Mic 2 input(s) in Audacity without the need to constantly delete unwanted tracks.
Enjoy!
Note: You probably also want to ensure that Audacity records at the Audigy 2’s native rate or 48000Hz and using a 16-bit sample format.
Posted in Music, Software Development
No Comments »
Tuesday 15th July, 2008 @ 22:36
I saw an interesting article on BBC News today, I encourage you to read it before continuing.
Maybe it’s just me but when I was 15 I did some very stupid things. Some involved girls, some involved computers and some involved fire. I was a bit of an idiot.
Thankfully I was never in the wrong place at the wrong time and never did anything as stupid as throwing a grenade at an American soldier.
Even if this kid did what it is claimed he did, he was 15 at the time. 15! 3 more years of being a child. 8 more years before he can drink in the US. This Canadian citizen has been held for 6 years now and awaits the potential of life in prison. He is being held in a camp that seems to live outside international law and claims to have been tortured, something I don’t think many would be surprised by, given past reports.
After watching stuff like this I feel physically sick. It genuinely terrifies me that the US feel they have any even slight moral authority over any other regime with this torture camp still running. It sickens me to the core and I’m glad it does too.
Is it just me or should children be cut more slack than grown adults? They screw up and one (albeit huge) screw-up shouldn’t destroy their life.
Residents of the US, I really hope your next leader closes this camp down before the rest of the world becomes more disgusted that we already are at your flagrant abuse of human rights.
Posted in Politics
No Comments »
@ 01:08
Apparently it’s been over two months since I last blogged. For a change this hasn’t actually been due to having a lack of anything interesting to say but just not having enough free time. London days seem a few hours shorter than those elsewhere in the UK and my perpetual busyness isn’t overly conducive to my blogging.
My employers Mendeley have made the recent wise decision of employing some excellent other software engineers, including KDE’s own Fred Emmott who is working in my team. He’s a great guy to work with but is annoyingly productive; every time I find something to do and get on with my own work it seems like five minutes before he’s fixed the bug/added the feature and is looking for more stuff to do! Any suggestions on how to make him less productive?
It was a nice surprise to view the 2.6.26 kernel changelog and find that some of the code I wrote at Wolfson Microelectronics two summers ago has finally been merged. I can now grep for myself in the kernel! Yey!
I hope to blog more regularly now, hopefully with less self-indulgent posts and more useful ones as I’ve been having some interesting battles with the mighty CMake at work that deserve sharing.
I guess I’m signing off for the evening as it is late o’clock but hopefully see some of you soon as:

Posted in Random, Software Development
No Comments »