Skip to main content

Ralsina.Me — Roberto Alsina's website

Posts about python (old posts, page 61)

Finding a programmer that can program.

If you haven't read Jeff At­wood's Why Can't Pro­gram­mer­s.. Pro­gram? go ahead, then come back.

Now, are you scared enough? Don't be, the prob­lem there is with the hir­ing process.

Yes, there are lots of peo­ple who show up for pro­gram­ming po­si­tions and can't pro­gram. That's not un­usu­al!

It's re­lat­ed to some­thing I read by Joel Spol­sky (a­maz­ing­ly, Jeff At­wood's part­ner in stack­over­flow.­com).

Sup­pose you are a com­pa­ny that tries to hire in the top 1% of pro­gram­mer­s, and have an open po­si­tion.

You get 100 ap­pli­cants. Of those, 99 can't pro­gram. 1 can. You hire him.

Then the com­pa­ny next door needs to do the same thing. They may get 100 ap­pli­can­t. 99 can't pro­gram ... and prob­a­bly 80 of them are the same the pre­vi­ous com­pa­ny re­ject­ed be­fore!

So no, hir­ing the best 1 out of 100 is not a way to get a pro­gram­mer in the top 1% at al­l, that's just sta­tis­tics in­tu­ition get­ting the worse of you.

You don't want to hire in the top 1% of ap­pli­cants, you want to hire in the top 1% of pro­gram­mers. Dif­fer­ent uni­vers­es.

These two things are the two sides of the same coin. 99% of ap­pli­cants are use­less, that's why they are ap­pli­cants, be­cause they can't get a job and they can't get a job be­cause they are use­less as pro­gram­mers.

So, judg­ing pro­gram­mers by the stan­dard of the ap­pli­cants you get is like judg­ing qual­i­ty of a restau­rant by lick­ing its dump­ster.

But now, hav­ing tak­en care of this, how do you find a pro­gram­mer that can ac­tu­al­ly pro­gram?

Easy! Find one that has pro­grams he can show you!

I would nev­er hire a pro­gram­mer that can't show me code. There must be some­thing wrong with him, be­cause pro­gram­mers write pro­grams.

That's just what we do. If we did­n't what kind of pro­gram­mers would we be?

Let's see some ob­vi­ous ob­jec­tions to my ar­gu­men­t:

  1. He wrote code for his pre­vi­ous em­­ploy­er and can't show it.

    So, he did. What else has he writ­ten? Some open source code? Maybe snip­pets in a blog? An­swers in stack­­over­flow?

    Noth­ing? He has writ­ten noth­ing he was not paid to write? He is not who I wan­t. He on­­ly pro­­grams for mon­ey, he lacks pas­­sion for pro­­gram­ming, he does­n't en­joy it. He is prob­a­bly not very good at it.

  2. He is just fin­ish­ing col­lege, he has not writ­ten much code yet!

    Why? What stopped him? He has been learn­ing to pro­­gram for years, what has he done with the knowl­­edge he has been re­­ceiv­ing? Sav­ing it for his 25th brth­­day par­­ty? He has not prac­ticed his craft? Not the pro­­gram­mer I need.

But hav­ing him show you code is not enough, of course. It al­so has to be good code, if you are se­ri­ous about hir­ing ex­cel­lent pro­gram­mer­s.

So here's some bonus cri­te­ri­a:

  1. Check the lan­guages he us­es. If he codes COBOL for plea­­sure, he may or may not be what you wan­t.

  2. Open source == bonus points: it means he is not ashamed of his code, plus it makes his cre­­den­­tials triv­ial to ver­i­­fy.

  3. If he leads a project with mul­ti­­ple con­trib­u­­tors and does a good job he is half way to be­­com­ing a pro­­gram­mer/­­man­ager, so huge bonus points.

  4. Projects with long com­mit his­­to­ries show re­spon­s­a­bil­i­­ty and a lev­­el head.

  5. De­vel­op­­ment mail­ing lists let you gauge his per­­son­al­i­­ty. Is he abra­­sive? Is he thin-skinned? Is he an­noy­ing?

Then there's the ob­vi­ous stuff, ref­er­ences from pre­vi­ous em­ploy­er­s, in­ter­views, ex­er­cis­es, an such. But those are the least im­por­tant fil­ter­s, the most im­por­tant thing is that he must be able to code. And show­ing you his code is the way to do it.

Hacked on kuatia for a couple of hours...

As men­tioned pre­vi­ous­ly, I am hack­ing a bit on a proof-of-­con­cept word pro­ces­sor. Right now, it's host­ed on google­code and called ku­a­tia.

Now, it is far from be­ing use­ful for any­thing, but... it can do nest­ed item­ized and bul­let­ed list­s.

Here's a scree­nie of the ed­i­tor and the PDF out­put it pro­duces via re­Struc­tured Text:

editando2

Per­son­al­ly I think that's not too bad.

Marave 0.7 released

I just up­load­ed ver­sion 0.7 of Mar­ave, my fullscreen text ed­i­tor to http://­mar­ave.­google­code.­com

Mar­ave is a "re­lax­ing" text ed­i­tor in­spired by ommwriter, Dark­Room and many oth­er­s. It com­bines a spar­tan fullscreen UI with a van­ish­ing UI, which gets out of the way of your tex­t.

It sup­ports syn­tax high­light­ing, inine spellcheck­ing, back­ground mu­sic, au­di­ble key­board feed­back, themes, is ex­ten­si­ble via plu­g­in­s, and much more.

Here's a screen­shot:

marave18

There are no ma­jor new fea­tures in 0.7, but there are im­por­tant in­ter­nal changes and some ma­jor bugs fixed:

  • Fixed bug that broke open­ing files if you had no spellcheck­­er

  • Im­­ple­­men­t­ed ba­sic RTL lan­guage sup­­port

  • Sev­er­al oth­­er mi­nor fix­es

  • Refac­­tored the ed­i­­tor com­po­­nent so it can be reused

A teaser for an idea

I have been think­ing on what I re­al­ly re­al­ly want in a word pro­ces­sor. And then what would it take to cre­ate such a thing.

A few min­utes of play­ing have led me the way of this teas­er (video here if you can't see it):

Could some­thing come out of it? Who knows.

Editor: a better QTextEdit

Writ­ing an ed­i­tor is rein­vent­ing the wheel. I know that. I tell my­self Mar­ave is a fine wheel, with dis­tinct fea­tures, and I think that is true, but, if you are rein­vent­ing the wheel, there's no need to rein­vent the axle and the spoke, too.

So, I refac­tored the stuff that I think a text ed­i­tor must pro­vide in­to a nice li­brary, so the next time some­one must in­vent a wheel, he can use Mar­ave's neat spokes and axles:

So, in­tro­duc­ing Ed­i­tor, the most-ob­vi­ous­ly named class ev­er! It's a text edit­ing wid­get for PyQt with ex­tra fea­tures, which you can use as a drop-in re­place­ment for a QTextE­d­it or QPlain­TextE­d­it.

Right now, it lives in­side Mar­ave's SVN but it may even move out some­day.

Here are its fea­tures:

  • Syn­­tax high­­­light­ing

    And I don't mean "in the­o­ry", like QTex­tE­d­it and com­­pa­ny do! Ed­i­­tor can high­­­light a bunch of lan­guages, be­­cause it us­es GNU source high­­­light via Loren­­zo Bet­­tini's Source High­­­light Qt.

  • Spell check­­ing

    If you have PyEn­chant in­­stalled and the right dic­­tio­­nar­ies, it will do on­­line spellcheck­­ing.

  • Search and Search+Re­­place wid­gets

    The Ed­i­­tor class can give you nice wid­gets for search or search and re­­place al­ready hooked with the ed­i­­tor wid­get, so you can add them to your ap­p's UI eas­i­­ly.

  • new/open/save/saveas meth­od­s:

    Don't im­­ple­­ment open­ing/sav­ing, etc your­­self! That's al­ways the same code!

Hope­ful­ly this will be help­ful for some­one else :-)


Contents © 2000-2020 Roberto Alsina