Hiring developers: King of the Hill effect

August 14th, 2009

You might have noticed that we’re hiring at Zemanta. As we’re a start-up we’re looking for experienced developers that can get to work right away. The environment of browsers and as if that’s not enough blogging platforms and rich-text editors is very challenging so the bar is set quite high. As we were talking about hiring a new person we tried to write a job description and application invitation that would set the bar high and also test some things we wanted to know before conducting the interviews. It seems we might have went a bit too far as we only got a few applications.

You always expect some people to send you a job application request that will not conform to what you’re requesting and that’s ok – you can easily ignore these applications. You will also always get some people who don’t fit the requirements by a mile but are trying to get “on the shortlist” for possible openings in the future – that’s ok too. And you’ll also get a lot of people that will value their own knowledge far more that they should – these are the ones I wanna talk about here.

You’ve probably met a bunch of “airheads”, “egomaniacs” or whatever you call the people that are full of themselves and describe their knowledge as expert but turn silent when you pop a simple advance question. I call them “king of the hill” types.

Assessing your own knowledge is hard

It’s in our nature to compare. My “house” is bigger than your “house” is part of our minds, even more so in Slovenia, a small market where basically everybody knows everybody. So it’s only natural that we assess our knowledge based on comparison. There’s an obvious problem with that – I will have no idea who you’re comparing yourself with and therefore your score will make no sense to me. In that sense it’s similar to confidence levels in search.

You might think setting a comparison chart would make the scores better, but it really doesn’t. If you tell a developer that he should assess his knowledge of a language based on a scale where 1 is “can read it” and 10 is “i invented it” you’ll get a lot of 8s. Which would mean they’re basically the best developer for that language in the country. When you do, you can easily think that the guy saying it is a moron and discard him as a viable candidate. And you’d be wrong doing that, at least sometimes.

Are you King of the Hill?

When people overestimate their knowledge it’s because of two basic reasons:

  1. They are genuine asswipes that think they know more than the guy that invented the language, but know showing they’re an egomaniac on the interview is not smart. So they’ll lower the score to an 8 to make you feel good. These guys are usually easy to recognize as they’ll be defensive and dismiss any questions they don’t know with something like “that sucks”, “i never need that”, …
  2. They really have no idea what else is out there. I was sure that in the age of internet such people don’t exist anymore, but even in computer related industries you can easily find people that got stuck in a particular part of the web of amateur forums and people of the previous variety. This means they do actually know everything, but don’t realize that everything is a lot bigger than they know.

But this is only a part of the story.

Who to hire then?

I’ve drawn a simple graph to help explain this:

Don\'t hire the King of the HillDon’t hire the King of the Hill!

The beginners

As you start learning about something you’ll know that you know next to nothing. You’ll also see a lot you can learn and might even see where you want to get – as near to the “i inveted it” as possible. At that time your think you know less than you really do – these are the people you should hire only if you are willing to wait until they learn more and if you believe they can. As you learn and overcome the problems you thought were the “the big problems” you’ll go over the equilibrium and become a smart-ass.

The kings

This is where it gets interesting. Some people like to be king of the hill so they will ignore everything beyond that point. They will also make sure that people lower on the actual knowledge axis will not see over that point. They’ll have all sorts of reasons why everything beyond this point is crap. These are the people that make the most damage to development communities, as they’re usually the vocal ones. You should not hire them.

The enlightened

But as I said before they might really just have no idea what’s beyond that point. That’s easily solvable even during the interview – you can show them some code, throw around some ideas and arguments on why that’s good and some people will say “Wow, I didn’t even know all that is possible!” (yep, I actually got a response like that). You should hire this people immediately – seriously, don’t let them leave the interview without signing a contract. Tell them they’re the last interview before the decision and that you decided already and don’t need to wait. And because they’re now sure they know less than they really do, you’ll be able to get great value for money.

You must however be really careful with developers in this stage. They will climb the curve fast and soon they’ll start whining about lack of challenging work. They’ll also start to want more money. They might even want to say they want to be a team leader. When they do, they’re really just saying they want more money. Don’t confuse expert developer knowledge for managerial skills!

The experts

The best you can do at this stage is making them architect or senior developer. And with that done you need to start sending them to topnotch conferences and encourage them to write papers trying to get a gig at one of them. They’ll meet with the inventors, see that they’re actually normal people with a unique set of knowledge that is much wider than they expected. The new “lack of focus” will keep them busy and inspire them. They might become a better developer or stay at the same level, but they’ll be happy. They’ll be the kid with a new toy. With the ability to find a new toy when this one gets boring. That’s what supporting extracurricular activities and flexibility is good for.

Reblog this post [with Zemanta]

Know a JavaScript developer?

July 21st, 2009

If you haven’t heard yet, we’re looking for a JavaScript developer at Zemanta. I think the ad says it all.

Are you the frontend developer we are looking for?

Zemanta is developing a platform for contextually enhancing content and your job would be to help us develop tools that make this easy and fun for writers and readers alike.

If you have an exceptional understanding of Javascript and the internals of browsers, thrive on challenges and love learning new skills, then we would love to talk to you. Knowing Python and Django framework is a plus, but not a prerequisite.

“I have nothing to offer but blood, toil, tears and sweat.”

(Winston Churchill on life at a startup)

Well, not quite. Working in a startup means working in an ever-changing environment. We expect you to be flexible, do what needs to be done when needed, but offer flexibility in return. We care about good work and meeting deadlines. We don’t care where or when you do it, as long as you keep true to mutual agreements which include occasional meetings and we promise not to overburden you with work. A self-reliant member of a team is how you see yourself.

Schools you might have attended are none of our concern. We care only about how good of a developer and person you are. We expect you to send us examples of your work or explain persuasively why we should hire you. Zemanta is an international company, so your application, as much of our communication, will have to be in English.

Please send your application saved as an HTML or TXT document to [email protected].

Closing date for applications: 31.7.2009

In a time when practically all pages include some sort of JavaScript I am surprised that we don’t have more JavaScript developers popping up – this now surely is a full time job even in Slovenia. So you are one challenge yourself and send your job application and if you know one, send him our way…

Reblog this post [with Zemanta]

Do we have SEO experts in Slovenia?

July 21st, 2009

I am fascinated that finally somebody decided to show people that most of the local SEO experts are actually a bunch of asshats. I’m not saying all of them are and some do actually give you sound advice (that you could get elsewhere for free). Most of them (assumption as I haven’t heard of any yet) will not be able to actually help you be better at Google beyond rewriting code and doing text optimization and similar.

That’s why I’m supporting had in trying to become the best result for retorik and retorika on Google and save 590 EUR that people would otherwise pay to get to learn how to become the first result on search engines.

Reblog this post [with Zemanta]

Developing for Opera

July 16th, 2009

I’ve recently put a lot of time into Zemanta stuff working in Opera. There are a few things I’ve noticed that really bother me as a developer when developing for Opera.

OperaImage via Wikipedia
  1. The easiest way to be sure you’re getting a non cached file is to actually have it open in a tab and reload that tab. Emptying the cache does not seems to work as I’ve found out while caught in an alert loop.[1]

  2. I found the “don’t run scripts on this page anymore” checkbox in the alert box fascinating, but less so after I clicked it and couldn’t find a way to turn scripts back on for that specific page. Fortunately restarting the browser did the job.

  3. We load a loader.js that in turn loads other Javascript and CSS files. Unfortunately it seems I have to manually load these files in tabs in order to get them to work – even though I can see them in Dragonfly when I click them they seem to be blank. When I reload, the content appears. After that they work as expected. But even then I don’t see them loaded in the Network tab of Dragonfly.

  4. Can’t get the CSS loaded from a script to work. I don’t have any ideas, they just don’t work. I don’t see them in Dragonfly network tab (but I don’t see Javascript files either and they work).

  5. When using Dragonfly I cannot get out of the inspect DOm mode so I can’t use the site to do something while watching what is happening in the DOM – what you must do is switch to a different tab, do your stuff and then switch back.

  6. When you look at errors on a WordPress page Opera spits out loads of “-… is an unknown property” – thanks very much but properties that start with a – are supposed to be unknown to most of the browsers as they are vendor specific. This means that finding the error you’re looking for is much more difficult than it should be.

What I really hate the most when working with Opera is the lack of information about what is going on. They’ve added some really nice features in the recent releases but it is still quite far away from being a browser that people develop for. In this way it is sort of similar to IE but IE is a must and Opera isn’t…

If any of these are my mistakes I’d be glad if someone set me straight and taught me to use Opera as a developer. I bet others would too.

  1. When you have a loop that alerts something and you keep getting the alert – the only way of getting out is removing the alert from code, emptying cache and trying to hit reload between alerts. In Opera this does not seem to work as the only way to get the new file is to reload the file and you can’t do that between alerts. back
Reblog this post [with Zemanta]

On Jetpack

May 23rd, 2009
Aza Raskin of MozillaImage by gkanai via Flickr

MozillaLabs released Jetpack – a lightweight way of extending the browser. It’s essentially an API that allows you to write extensions for Firefox with web technologies. You can check out the video here:

Mozilla Labs Jetpack – Intro & Tutorial from Aza Raskin on Vimeo.

While you’re at it you should also read the guiding principles.

What I want to do here is list what I want from a lightweight extending system (in no specific order):

  • Only web technologies should be used in the development process (CHECK)
  • Installing as easy as Greasemonkey user scripts (CHECK)
  • Should take care that add-on authors don’t need to update for every version (CHECK)
  • Provides local storage and cross-domain posting capabilities
  • Add-on updates are handled automatically
  • Central add-on repository with usage & install statistics
  • Easy access to add-on options (think options button in add-ons list)
  • Possibility to use web pages as configuration interfaces for add-on settings

My current way of creating Firefox add-ons is to build Greasemonkey user scripts and compiling them to add-ons into a full .xpi. This provides a good framework to add other things that normal Greasemonkey scripts cannot do.

As I checked Jetpack I missed a lot of the things from the list – too many to be able to create a Jetpack version of Tweecious. Since it’s still in 0.1 my hopes are still high.

Reblog this post [with Zemanta]

Essential Firefox add-ons

April 7th, 2009

I’ve recently had to install a Firefox on the new iMac which lead me to ponder what add-ons do you really need.

Image representing Firefox as depicted in Crun...Image via CrunchBase

This is the list I compiled:

Infrastructure

These add-ons will enhance the capabilities of your browser. You might not need them right away, but it’s smart to have them installed for when you need them (and I’m sure you will).

  1. Google Gears allows you to use off-line Gmail and makes a lot of web applications faster.
  2. Greasemonkey lets you install user scripts that will make pages nicer, give them additional features and other kinky stuff.
  3. Operator will expose microformated content so you can easily use it.

Developer

If you’re the dedicated support guy for this specific installation (people will call you when things go wrong) you should install these now – they’ll help you fix stuff later.

  1. Firebug will let you inspect pages and see what’s wrong and why.
  2. Html Validator validates the code on the page so it’s easier to spot why something looks weird on screen.
  3. Web developer toolbar adds a lot of useful features for debugging pages to a handy toolbar.

Interface

These are just a few I like that make the browsing experience a bit nicer.

  1. Cooliris makes searching for images a lot friendlier.
  2. FoxTab helps when you have lots of tabs open. Unfortunately it isn’t supported on Mac OS X 10.5.6 yet
  3. Inquisitor is a nice search add-on that will enhance the search box.
  4. Fission moves the progress bar into the address bar (Safari style).

Sharing

To make your social networking and blogging a bit easier.

  1. Delicious is a great add-on if you use their social bookmarking service.
  2. Fotofox lets you upload photos to a bunch of photo sites easily.
  3. Zemanta integrates with your blogging platform and recommends images, videos, links, articles and tags.
  4. (Shameless plug) Tweecious is great for people who use Twitter and Delicious – it takes twittered links and posts them to Delicious.

You might also want to install dictionaries for the languages you use when writing in Firefox. You can get some more ideas at Fashion your Firefox.

Reblog this post [with Zemanta]