Thursday 24th July, 2008 @ 12:26 am
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
1 Comment
»
Thursday 17th July, 2008 @ 1:50 am
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 @ 1:08 am
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
2 Comments »
Wednesday 7th May, 2008 @ 12:14 pm
I’ve recently left BT and joined a start-up called Mendeley. I’m now writing Qt code for a living which will hopefully benefit my KDE contribution’s quality and hopefully my work on KDE will benefit Mendeley. I’ve moved to London for the job, hence the decreased number of blog posts lately and my vanishing from the internet. I hope to get back to blogging and doing KDE work when the dust settles but let’s hear some more about what I’m doing.
Mendeley is providing a tool for managing academic and research knowledge, allowing people to be able to better find and manage academic papers and use a network of others to avoid mundane tasks when trying to seek academic knowledge. There will also be interesting benefits for those producing papers as well.
This consists of a desktop Qt application (for Windows/Mac/Linux and maybe other Qt supported platforms) which can plug into your Mendeley.com account and allows metadata to be gathered and shared. The desktop application and web application usage will remain free-as-in-beer but the desktop client will be (at least initially) proprietary.
We’re also looking for a talented PHP/Javascript developer with database experience (preferably MySQL) to join the team based in Central London. You will have a lot of responsibility from the beginning and must be passionate about the problems Mendeley are trying to solve and using social networks to solve them (*cough* Web 2.0! *cough*). You can read the full job advert on Mendeley’s site.
Although this may look like a blatant plug it’s also because I believe the sort of people that read a fairly technical blog like this may be more suitable for the position than on a random jobs board.
I’m enjoying Mendeley a lot so far. I’ve been able to make a real difference in my first two days and the other guys are great fun to work with and I look forward to learning more about academic research and Qt in the coming months!
Posted in My Life, Software Development
6 Comments »
Next Page »