Business


13
Aug 11

Developer litmus test

Here’s the situation: you need to hire a new developer. You’ve put up a job posting, you’ve got ton of CVs, and even after you discard the ones obviously not suited to the job, you still have a lot more potential candidates than you’d like to interview in person.

One way to trim this even further is to give them a task and see how well they execute it. Unfortunately, this only tests the programming abilities of the candidate. While important, these are not the only skills they need to have. Also, the assignment can easily be gamed – the candidate can ask (or even pay) someone to solve it for them.

The “patches welcome” test

Open source contributors usually start by making a small tweak or fix in the existing project code, not by developing all new codebase. Similarly, new hires usually first work on the existing code, before being put in charge of a new component of the system.

Can we apply the same principle to candidate assignments? I think we can.

We can make up a standalone project that uses the same languages or framework that the new hire will use – something that can be done in a day. We actually implement it, but leave it full of errors (syntax, logic, or valid but obviously poorly performant code).

The setup

Instead of writing corret code and inventing errors, it’s better to just write the whole thing in one go, never bothering to check and fix any syntax or logic errors (in fact, it’s best if you disable syntax highlighting and other code validation checks that your editor might have).

We put the project on a code hosting site and give the candidates no further instructions than “this needs fixing, documenting and unit tests – patches welcome.” We leave the code wide open, so candidates don’t think we’re abusing the test to have the “real” work done.

Then, we wait, see what they come up with.

Benefits

This tests a lot:

  1. whether the candidate can use git (or hg or your preferred vcs) or, failing that, that they can (and do) learn the very basics
  2. whether they can read and understand others’ code and modify/refactor it without making it into a pasta
  3. that the candidate can actually program and fix the code in question
  4. that they know the frameworks or libraries you need them to know
  5. whether they can follow the code/style conventions
  6. that they write unit tests (if applicable to the assignment)
  7. whether they’ve identified valid but poorly performant parts of the code
  8. can they write documentation
  9. whether they split their work in smaller chunks (commits/patches) or give one big code dump at the end

Conveniently, it also serves as a quick intro for your coding practices for the candidate you do end up hiring.

While this does take a bit more involvement up front (lose a day to write the test), I believe this is far more accurate test across various skills needed for a good developer, than just a simple fizzbuzz.


17
Dec 10

Experiences building Encode

A few days ago I soft-launched a new project of mine: Encode, an online video converter.

The idea for Encode started as a spinoff of another project I’m working on. I was researching how Zencoder worked and thought how it would be nice to provide the same functionality, trimmed down for the average Joe user. Sure enough, I found tons of video converters on the net, most of them free, but with severe limitations for practical use, like 10MB upload limit, limited duration, or a couple of hours waiting queue. My plan was to charge for conversion instead of limiting the users or spam them with upsells. I toyed with the idea in my spare time for about a month, playing with Zencoder API and thinking how I could do it.

My main concern was (and is) the payment part. Since I’m based in Croatia, a lot of payment options, including PayPal, are not available to me. After researching several possibilities, I went with FastSpring. They’re a webshop platform so Encode customers basically have to order the “video conversion” product. This is somewhat hidden by the combined order & checkout page, but still it’s not as streamlined as I would prefer – one click, enter payment details, click to confirm, done. Also, a minimal per-transaction fee of $0.75 is a hefty percentage if your prices are in the $3-$8 range.

Pricing problem nearly killed the whole project off, but around that time, I found out about the November Startup Sprint a few of the HNers were planning. This prompted me to at least try, and see what happens. The motivational emails/reminders from 21times were a huge productivity boost, as they motivated me to at least do something each day. My November turned out to be pretty hectic, with me being abroad for 3 out of 4 weeks, so I hacked on it from hotel rooms.

I also thought a lot about it as a product, why the user would want to use it (ie. the benefits) and not what technical features I was building in. For me as a technical person, this is a big shift in perspective. I’ve found Patrick’s MicroISV on a Shoestring posts, 47 Hats’ MicroISV Sites That Sell book and Eric Sink’s Business of Software posts, as well as the ones I (re) read from 21times’ mails invaluable for this.

Also, I’ve found Patrick’s Bingo Card Creator experiences a great market size comparison tool. If you’re wondering whether your (nights & weekends) project has large enough market – go to Google Trends and compare search terms your customers might use with “bingo cards” – here’s an example of “bingo cards” vs “convert video” search trends. Patrick built an entire business on top of this (he’s recently launched Appointment Reminder, a tool for automating client appointment reminders, which I’m sure will see the same or more success), so if your customer pool is comparable or more, so can you (if your execution is good).

In total, building Encode took me about two months of nights & weekends, half of it toying around with ideas and experimenting, and the other half actually building it. As I have absolutely no design skills, I’ve outsourced that part to Lucijan Blagonic, a web designer from Croatia I’ve already worked a lot with before. On the tech side, I’m using Zencoder as a backend, running on Linode VPS, using Amazon S3 for storage, the app is written in Python and Tornado and uses MongoDB – more about those in a future post.

In the end, the launch date slipped into mid-December, but since I’m doing it in my spare time, there was no rush. And now the easy part is done, I have to switch from building to marketing and promoting it, something I know little about. Time to learn :-)


2
May 06

An end of an era, and a new beginning

Note: this is a repost of an old post from my previous blog(s); it’s probably quite obsolete by now and is included here for archival purposes.

I’ve got some big changes in my life recently. Changes I’ve been totally preocupied with, and now it seems like the transition is gone, and a good moment to reflect back.

In March, I finally finished my university studies at FER and got a degree. The degree is diplomirani inženjer računarstva (diploma engineer in computer science, which is roughly equivalent to western M.Sc degree). The studies have been a long and bumpy ride, with 2 years off to pursue non-academic goals, but overall it was a very positive experience in my life.

I’ve also made a nice wrap-up of the studies by choosing a somewhat difficult and definitely unique diploma project – my own operating systems (my friends can attest that sometimes I shoot very high :-) I dig microkernel systems and it’s been my long desire to tackle with one, so the diploma thesis project seemed a right time to do it. I doubt I’ll be in position to do it in some commercial setup.

Anyways, I’ve setup a small component-based OS on top of L4Ka::Pistachio microkernel, and I’m planning to release the source code (under the MIT/X11 license) when I get the time – in the meantime, interested Croatian readers can take a look at my diploma thesis [pdf, 2MB].

For several months before the graduation, I’ve nurtured the idea of starting my own business. After weighting all the pros and the cons, I’ve started the paperwork flow (which here in Croatia there’s quite some) to do it. So here I am, a proud owner of Rei, registered for various IT services.

I plan to focus on software development for the web and on Linux and other open source platforms, and doing Internet multimedia stuff (streaming), again hopefully on open source. Today I’ve finally set up the webpage for the company, which wraps about everything needed for start. I’m already head over heels in stuff to do, and I’m looking
forward to the future…:-)