Mats Henricson

Mats Henricson

Saker som blippar på min radar

Detta kan vi på Crisp, vårt tag cloud

På Crisp har vi skapat ett Google Spreadsheet där varje rad är en teknik eller metod, såsom TDD, Java, JUnit eller Kanban. Sedan har vi en kolumn för varje konsult, där man efter egen bedömning kan skriva siffran 0-5, där 0 betyder att man är helt okunnig, medan

  1. Har hört förkortningen, kanske läst en artikel i CS
  2. Har läst eller hört om det, kanske labbat lite, men inte jobbat med det. Känner till styrkor och svagheter.
  3. Kan jobba med det, men behöver handledning
  4. Kan området bra, kan handleda andra
  5. Expert, troligen en av de bästa i landet

Man kan även färga sin ruta:

  • Rött = Totalt ointresserad, vill inte jobba med det
  • Orange = Vill helst inte jobba med det, men i brist på annat så…
  • Gult = Kan tänka mig att jobba med det
  • Ljusgrönt = Vill gärna jobba med teknikområdet
  • Grönt = Brinner för teknikområdet!

Med dessa siffror är det ganska lätt att räkna ut vad vi på Crisp tycker att vi kan bäst. Man kan även gissa vad vi tycker är hett och intressant. Vi bestämde oss för att göra ett tag cloud, där storleken på varje ord motsvarar ungefär hur bra vi kan något, och färgen, från ljust grönt till mörkt blått motsvarar ungefär hur hett ett område är.

Exempelvis är XML/XSD/XSLT skrivet med stora ljusa bokstäver, för vi har brottats med XML och dess kusiner under över 10 års tid, men vi gör helst annat. Samtidigt är git litet och mörkblått. Inte många Crispare har använt det, och ingen kan det bra, men vi inser att det är framtidsteknologi.

Vi har också tagit bort en hel del, helt enkelt för att det är helt ute, såsom Ada, eller för att vi i stort sett bara vet vad det är, men inga detaljer, såsom Jclouds.


Bilden ovan är bara en PNG, vi ska göra en ny i SVG format så fort vi kan, och små detaljer lär ändras, men this is it, detta är vad vi kan på Crisp.

Free Society Conference and Nordic Summit, Göteborg

FSCONS var nog den bästa konferens jag varit på. Inte för att jag egentligen pratade med så många, presentationerna var oftast för korta, och maten var inte så inspirerande. Inte heller egentligen på grund av all den coola teknik jag fick se. Det är när cool teknik förändrar världen som det blir RIKTIGT intressant! FSCONS är verkligen unik som konferens. Samtidigt som någon har en presentation med titeln "Gender, class and global flows" gör någon annan en presentation av GNU Parallel. Det låter som om det skulle krocka något vansinnigt, men det fungerar!

Jag är mest intresserad av ny teknik, speciellt federerade moln och liknande, och här är en lista över väldigt intressanta föredrag jag lyssnade på:

  • Designed For Decentralisation: Understanding the Internet
  • Centralised Internet Services and Problems of Power
  • Building Socially Responsible Social Networks
  • The Future of RepRap and Free and Open Hardware
  • The economics of open innovation and FOSS
  • Future Transports
  • Distributed email system
  • Keynote: Ethics of Intellectual Monopolies
  • Bits and bytes: the importance of free software in the industry
  • Web Search By The People, For The People

Här är föredrag jag gärna gått på, men inte kunde, eftersom det var tre eller fyra parallella tracks:

  • Kaizendo: Customizable schoolbooks
  • Open Hardware Repository
  • Scalable application layer transfers
  • Workshop: Packaging for Debian using Git
  • One Wire Sensor Networking
  • A Swedish Linux for Schools
  • File sharer? Go to jail!
  • Distributed Democracy
  • Workshop: Icelandic Modern Media Initiative
  • Challenges to Copyright: The shift towards collaboration
  • Self-organized Plenty: The Emergence of Physical Peer Production
  • Design Patterns between Free Software and Permaculture
  • GNU social and GNU FM: Empowering Communities
  • Public Sector ICT Procurement

Om inget av dessa ämnen intresserar, ja då är man genuint inte intresserad av vad som sker när internet med full kraft kör rakt in i förra seklets samhällsbygge!

Här kan du läsa mer om den konferensen. Vi ses nästa år!

Konsultmarknaden behöver inte vara en Market For Lemons

Ekonomen George Akerlof skrev 1970 en uppsats som beskrev informationsassymmetri i vad han kallade "Market For Lemons". Det exempel han använde var marknaden för begagnade bilar, där säljaren alltid vet mer om den bil som säljs än potentiella köpare. Säljaren vet oftast hur välskött den är, hur den körts, etc.

Köparen, däremot, har svårare att avgöra bilens kvaliteter. Visst, det finns ofta en servicehandbok han kan läsa, men hur är bilen körd? Buskörd av en yngling, eller av en försiktig 47-åring?

Detta skapar informationsassymmetri, vilket ger intressanta följder. Säljaren av en bra bil vill ha bra betalt, medan köparen sällan är villig att betala mer än för en bil som har genomsnittskvalitet. Detta gör att säljare av välskötta bilar missgynnas, vilket gör att de inte tycker det är lönt besväret. Kanske försöker de sälja bilen på annat sätt, exempelvis till en bekant som litar på kvaliteten. Detta betyder att de bästa bilarna sakta men säkert försvinner från den öppna marknaden, eftersom genomsnittspriset bara sjunker. Kvar blir bara dåliga bilar, och då har man fått en "Market For Lemons".

Denna terori om informationsassymetri gav Akerlof och två andra nobelpris i ekonomi 2001.

Men har detta någon som helst relevans för konsultmarknaden? Ja, jag menar det. I en säljsituation vet konsultsäljaren mycket mer än köparen om den konsult som är "till salu". Köparen vet ofta nästan ingenting, annat än vad som går att läsa utifrån den CV som presenteras. Med lite tur finns konsulten på plats under förhandlingarna, så att köparen kan ställa frågor. Ibland kan köparen också hitta lite information på nätet.

Men hur effektivt är detta?

  • Den CV som konsultköparen får se har ofta skrivits just för det uppdrag som diskuteras. Det ger ofta inte en rättvis bild av konsultens egentliga erfarenhet av de tekniker som ska användas.
  • De allra flesta konsultföretag döljer sina konsulter på nätet, av minst två anledningar. För det första är man rädd att konkurrenter ska ringa dem direkt och locka dem att byta arbetsgivare. För det andra så så vill man behålla informationsassymmetrin. Så länge ingen information finns att tillgå om någon av företagets konsulter så måste köparen förmoda att de är av genomsnittlig kompetens. Men så är naturligtvis inte fallet. Om de visste mer om de enskilda konsulterna så skulle de vägra hyra de som inte är duktiga, och insistera på att få plocka russinen ur kakan. Det är inte i det flesta konsultföretags intresse.
  • Konsulter uppmanas traditionellt inte att berätta något om sina svagheter under intervjuer.

Vi på Crisp tycker naturligtvis att vi är väldigt duktiga, och för att bevisa det så har vi sedan många år tillbaka bestämt oss för att göra vad vi kan för att upphäva informationsassymmetrin:

  • Alla Crisp-konsulter har en egen publik sida på www.crisp.se. Där finns telefonnummer och emailadresser. Här är min sida. Ring oss gärna, fråga om specifika tekniker. Om du vill kan du försöka värva oss till ditt företag. Lycka till! ;-)
  • Våra CV:s finns också där, öppet på webben, vilket gör att om vi skriver en specifik CV för ett specifikt uppdrag, så kan du jämföra den med vår vanliga publika CV och avgöra om den du fått är skruvad på ett orimligt sätt för att passa just det uppdraget. Här är min CV i HTML-format.
  • Alla som vill har en egen blog. Där kan du avgöra om du tycker en kandidat kan förklara tekniska saker i text.
  • När vi på Crisp håller föredrag på konferenser, eller håller kurser, så publicerar vi ofta vårt material på vår blog. Samma sak gäller det material som används i vår internutbildning, där materialet ofta läggs ut. Ta en titt får du se.
  • Vi kan även berätta om våra svagheter.

Nästa gång du söker en konsult till ett uppdrag, ta en funderare över varför du inte kan hitta någon information om dem på konsultföretagets webb. Vem tjänar på att informationen är assymetrisk? På Crisp delar vi med oss av vad vi kan, vad vi tror, tycker och brinner för. Vi vill vara så transparenta som möjligt! Vi tror att det är i vårt, och ditt, intresse.

Det där kan jag (faktiskt) inte?

På mitt nuvarande uppdrag fick vi nyligen stora problem efter vi släppt senaste releasen. Jag försökte hjälpa till, men prestandaproblem är inte min starka sida. Det blev lätt att jag ville säga "Det där kan jag faktiskt inte".

Men vaddå "faktiskt"? Som om jag kunde allt annat, förutom prestandaproblem?

För att ge exempel på total transparens tänkte jag faktiskt skriva ner saker jag är riktigt dålig på, så att folk vet vad de får om de anlitar mig som konsult. Here we go!

  • CSS – varje gång jag tvingas skruva på CSS så är det mer tur än skicklighet ifall jag lyckas med annat än rent triviala saker. Jag saknar erfarenhet och förståelse för grundprinciperna.
  • JavaScript – den längsta JavaScript funktion jag någonsin skrivit var på typ 10 rader, och jag har aldrig skrivit något av någon som helst substans, så luta er inte mot mig när era closures krånglar!
  • Toolsmith – varje projekt behöver en toolsmith som ser till att continuous integration fungerar, att deployment fungerar, att properties-filer patchas automatiskt, installerar wikis och annan viktig mjukvara. Jag är riktigt usel på bash och liknande också, inklusibe sed, awk, grep, etc etc etc. Egentligen är det ett under att jag kunnat köra Linux i runt tre år. Jag hankar mig fram som glad amatör.
  • Maven – kan bara grundprinciperna, saknar kunnande för att göra annat än det enklaste. Har förut avskytt Maven, men det används överallt, så det är bara att bita ihop.
  • Prestanda – jag har läst 5 böcker i ämnet, men har ingen riktig erfarenhet av att tuna applikationer eller databaser.
  • Säkerhet – kan noll och intet, så jag hoppas andra kan hoppa in och göra det jobbet i de projekt jag sitter i. Finns det ingen annan så får jag naturligtvis göra det själv, men min startsträcka blir rätt lång.
  • Skalbarhet – här är jag lite kluven i mitt omdöme, för det kan också vara fallet att jag har en inbyggd känsla för skalbarhet som gör att jag aldrig tänker på det.
  • Subversion/Perforce/Git/Mercurial etc – jag saknar egentligen intresse, och blir nervös inför minsta merge. Jepp, så är det.
  • SQL – jag har blivit bra mycket bättre genom åren, men kan fortfarande inte skilja på en yttre och en inre join. Har faktiskt sumpat två jobbintervjuer på att inte kunna svaret på den frågan. Jag vet inte ens varför det är viktigt att kunna skillnaden!
  • Regexp. Så fort jag inser att jag måste skriva lite regexp så darrar fingrarna till lite. Som oftast ror jag hem det, men inte utan att kontakta någon av mina kunniga Crisp-kollegor.

Säkert många saker jag glömt. Vågar ni lista ner era svagheter, eller är det bara jag som har svagheter? ;-)

Notes from NoSQL Europe in London, part 0

I am currently, after going overland from Scala Days in Lausanne by hitching, train and boat across the English Channel, in London for the NoSQL Europe conference today and tomorrow. I will try to blog from every session. It might be a bit incoherent and inconsistent, but it’s all I can offer.

You can also follow my tweets more directly.

Developer Superstition

Superstition is a bad thing. At least that’s what I have always believed, regarding myself as totally devoid of the stuff. I mean, me, Mats Henricson, superstitious? No way!

But superstition grows out of ignorance, and that’s a valley I must admit I have walked in. And some time ago it struck me that I am indeed plagued by superstition as a developer. Let me elaborate.

Suppose you’re in a slow edit-compile-debug cycle, and suddenly your changes to file X aren’t deployed to Tomcat any more. After some brief investigation it turns out you can get your changes through to Tomcat by prepending your Maven command with "clean", i.e. a clean compile, instead of just incremental.

At this moment your are in dangerous territory, because if you never find the root cause to the problem you are quite likely to ALWAYS do clean builds, thus slowing you down forever!

Does this resemble a situation in your past? If so, then you are also superstitious!

I have added all sorts of shit procedures to my daily work. I do WAY to many clean builds. I restart my laptop twice a day because I can’t get it to dynamically go from wireless to wire, or from my second screen at work to my second screen at home, since they are of different size. My Ubuntu 9.10 distro have problems with that, and I just haven’t found the root cause to it.

Staving off superstition is simple in theory but hard in practice, since it requires you to go to the root of the cause of problems. I have suddenly gotten much more respect for stubborn people!

Technology stressed? Perhaps it is time to panic!

Four years ago I spent a few months assembling a rather wide-spread document which I named "State of the art in Server Side Java". It was at the time well researched enough to end up as an entry on The Server Side.

Soon thereafter I got sidetracked to follow Ajax for a few years. I even went as the only Swede to the first ever Ajax conference in San Francisco, and blogged a lot from there.

These days there are simply so much things going on in Server Side Java land to have a slight clue as to where that freight-train is heading. There’s Hadoop and all its cousins for distributed computing, Actors, Terracotta, a school of new whacky persistence paradigms, a handful of JVM-based languages that only Ola Bini has the energy to follow. Annotations have, as I predicted, totally changed the way we program, and just about every day I bump into a new annotation I’ve never seen before (yesterday it was @PathParam).

It would feel OK if this plethora of technologies were somewhat obscure, but in my current project we use a lot of stuff I don’t know well enough, such as Maven, Jersey, WebLogic, Spring transactions and JPA, just to mention a few.

And even though the Ajax anarchy has somewhat collapsed into a few leaders, such as jQuery, Dojo, DWR and GWT, the whole arena is just all over the place. I’ve stopped following Ajax these days, there is just too much going on.

So, what do I spend time on, if I don’t stay up-to-date with server side Java or Ajax? Well, I’m swamped by RSS and Twitter. I abuse technology news like a drug addict, and believed I was reasonably knowledgeable, until I read this blog post yesterday which listed 14 technologies to follow at JavaOne. I had heard of 3 of them, which made me start thinking.

What the heck is going on? Is this technology race accelerating, not just at the rate of the SW industry expanding, but at a pace where it is getting out of control? Have humans triggered the singularity themselves, without the need for a Super Intelligence? Well, perhaps not. The slice of knowledge any human can follow has been shrinking constantly for a long time. But I can’t help getting this idea that the explosion of open source software is giving us the shoulders of giants we can stand on to accelerate our knowledge. And more of it is coming from unexpected countries. Recently I bumped into Debasish Ghosh. Following this guy from India on Twitter is like riding a rollercoaster – new exciting stuff all the time.

So, should we panic? Should we give up? Will every future job search have a list of required skills from a potential list of skills so huge that nobody will ever have a full set? What if we go with maximum speed into polyglot programming, and fragment even further in all directions? Today I heard about two sites where they used Clojure on the server, with Rails as UI. Who the hell can fill that skill set?