Skip to main content

Ralsina.Me — Roberto Alsina's website

Be a good lamarckian froggie!


It has been said that while evo­lu­tion in na­ture is Dar­wini­an, evo­lu­tion in cul­ture is Lamar­ck­ian [1].

If that phrase has no mean­ing for you, then you are miss­ing on some­thing im­por­tan­t. Spe­cial­ly if you write soft­ware.

Here's the short ver­sion of the Dar­win/La­mar­ck ar­gu­men­t:

Lamar­ck said that en­vi­ron­ment mod­i­fied you (an ac­quired char­ac­ter), and then you passed those mod­i­fi­ca­tions to your chil­dren.

Dar­win said you changed at ran­dom (mu­ta­tions), and if those changes are a good match for the en­vi­ron­ment you live in, you can af­ford to have more chil­dren than if it is a bad match. So, in the long ter­m, more chil­dren share traits that are a good match for the en­vi­ron­men­t.

Ev­ery­one knows Dar­win seems to have got­ten it right [2]. The sad thing is Lamar­ck­ian evo­lu­tion should be much faster than Dar­win's.

So life is most­ly Dar­wini­an. Cul­ture, and tech­nol­o­gy, are Lamar­ck­ian. Nov­el­ists do in­her­it the traits of pre­vi­ous nov­el­ist­s, who get them from the en­vi­ron­men­t. You can tell that by read­ing 90% of the books around.

There is, ev­ery once in a while, a Dar­wini­an writer, who has some­thing in­side un­like any oth­er, and when he pub­lish­es, he can some­times achieve huge suc­cess, be­cause his trait is a good match for the cur­rent con­di­tion­s.

Of course most usu­al­ly fall with a thud, and ev­ery­one says they suck. Usu­al­ly, mu­ta­tions do suck, re­gard­less of what the X-­men may tell you [3].

But then Lamar­ck takes over. A bazil­lion copy­cats will show up in the time it takes to hack a book to­geth­er. Sure, 99.99% of the copy­cats are much worse than the orig­i­nal, but they have an aten­u­at­ed ver­sion of the trait, which makes them fit their en­vi­ron­ment bet­ter.

All this goes dou­ble for soft­ware. And squared for free soft­ware.

The awe­some speed of Lamar­ck­ian evo­lu­tion has al­lowed the tech­no­log­i­cal ex­plo­sion of the last 2000 years. If we had a Dar­wini­an tech­nol­o­gy drive my guess is we would still be chip­ping flints.

Lamarck's frogs

How did the sci­ence com­mu­ni­ty reach the con­sen­sus that Lamar­ck­ism is wrong? It was a sad in­ci­dent in­volv­ing frogs and In­di­an ink. You see, Lamar­ck­ian the­o­ry pre­dict­ed that frogs sub­ject to cer­tain con­di­tions would de­vel­op what's called "nup­tial pad­s". They did­n't. So Lamar­ck­ian the­o­ry (later a part of Ly­senko­is­m) was wrong. That's sci­ence.

But think about soft­ware. In soft­ware you, pro­gram­mer, are the DNA. You breed pro­gram­s. You spawn them.

If you had to write a frog, and you saw nup­tial pads were use­ful, you by damn would pro­vide your frog with nup­tial pad­s, and make sure ev­ery ver­sion from then on would have nup­tial pads just in case [4].

Your soft­ware is a Lamar­ck­ian frog, not a Dar­wini­an one.

How can you make it be a good frog? Good in the sense of evo­lu­tion­ay suc­cess, that is: fer­tile, breed­ing, ex­pand­ing.

Expose it to multiple environments

New en­vi­ron­ments mean more chance to find traits that may be use­ful. You take your email pro­gram, and you try to make it thrive in a home en­vi­ron­men­t. You find that cute han­dling of mul­ti­me­dia at­tach­ments is a good trait.

Then you try it in a cor­po­rate en­vi­ron­men­t. Now the good trait is cor­po­rate LDAP ad­dress­book­s.

And then a cypher­punk en­vi­ron­men­t: sup­port for ev­ery kind of cryp­to plug­in known to man.

So, the larg­er the in­stalled base, the bet­ter for the frog. And the bet­ter the frog, the larg­er the in­stalled base. That's why 99% of free soft­ware projects die, IMO, they don't have enough users to push for fea­tures, or they start so weak they die from com­pe­ti­tion, they get shot out of their nich­es.

Be a copycat

Yes, copy­ing fea­tures is good. If a fea­ture is use­ful, then by all that's holy go and steal it. One big dif­fer­ence be­tween soft­ware and frogs is that you can copy oth­er pro­gram­s, but frogs can't copy, say, lizard­s. I bet they would find scales use­ful, but they just can't do it.

In my book, if some­one says they dis­like some­thing be­cause it looks (or work­s) much like some­thing else, he is be­ing stupid. If you hate it be­cause it works bad­ly that's a rea­son­able thing. Hat­ing it be­cause it looks like win­dows, that's stupid.

Infect yourself

Get your­self DNA from oth­er pro­gram­s. If frogs could do that, they would be jump­ing with joy [5]. Virus­es can do that. They are do­ing well.

Prostethic limbs are good

Use li­braries. If you are doubt­ing be­tween writ­ing a piece of code and us­ing a li­brary, usu­al­ly it's a bet­ter idea to use the li­brary, un­less said li­brary sucks bad­ly. In which case, the good idea is to write a li­brary that does­n't suck. [6]

Small eggs are better

Are you think­ing of spread­ing your pro­gram­ming DNA? There's two routes. You can have a few care­ful­ly at­tend­ed ba­bies. Or you can have a mil­lion ba­bies and not care about them.

Flies do one thing, whales do the oth­er. And al­though I can agree I'd like whales bet­ter than flies, I have nev­er seen a save the flies poster. So be­lieve me, small eggs is usu­al­ly smarter.

Write small things. Lots of them. And if you are care­ful, maybe a bunch of them can some­day co­a­lesce in­to an evil swarm that will eat whales. Ok, maybe that's overex­tend­ing the anal­o­gy.

Abandon your babies. Maybe eat them.

Eat­ing your own spawn is a com­mon trait in na­ture, on species that have a big num­ber of chil­dren. Since al­most all of them are go­ing to die any­way, and the par­ent can pro­duce an­oth­er mil­lion in two month­s, he can eat a few thou­sand­s, and it makes al­most no dif­fer­ence.

So, if you see one of your projects is los­ing mo­men­tum, and work­ing on it is no fun, please drop it. Or shelve it for a while. Maybe lat­er you can eat pieces of it to pro­duce a bet­ter thing. Of course this on­ly ap­plies if you are us­ing the small eggs path. Ele­phants don't eat their kid­s!

This may seem weird, but it will prob­a­bly make you a hap­pi­er pro­gram­mer, even if your pro­duc­tion as a whole goes down. And hap­py pro­gram­mers write free soft­ware. Sad pro­gram­mers write CRM ex­ten­sion mod­ules in VB.NET.

Roberto Alsina / 2006-04-04 16:35:

Comments for this story are here:

Fisa / 2009-12-18 17:19:

Genial :)

ra / 2009-12-18 19:14:

I liked the article a lot :) I'll try to keep it in mind if I ever go back to the developing path some day :)

Joac / 2009-12-18 19:16:

Muy bueno! sirve muy bien para la reflexión.

Maintenance Man / 2009-12-19 18:10:

I can't imagine abandoning a baby. But I get the point. Now I will run out and code me up a quick lil baby.

About_Asbestos_Mesothelioma / 2010-01-19 19:41:

I'll back again for sure, thanks for great article :D

employment background check / 2011-12-27 23:24:

Hi very nice article

Contents © 2000-2024 Roberto Alsina