OBS!

Detta är ett något censurerat CV, där en hel del kontaktuppgifter saknas. För ett fullständigt sådant: tag kontakt med mig.

Beskrivning

Kreativ, intelligent, och kunnig systemutvecklare och integratör, med stor erfarenhet av både utvecklingsprojekt och förvaltnings-/driftprocesser.

Uppdaterad på webbstandards och rörelser inom webb- och Open Source-världen.

God systemarkitekt och data-/objektmodellerare. Arbetar objektorienterat för servicedrivna arkitekturer. Arbetar enligt processer som tar hänsyn till affären i systemen (företrädesvis RUP).´ Modellerar gärna i UML.

Van att leda utvecklingsteam, van att kommunicera med icketekniker utifrån verksamhetens perspektiv på systemen, och van att sedan översätta verksamhetskraven till tekniska specifikationer för tekniker att arbeta utifrån. Kunnig inom IT-relaterade processer och "mjuka" (personrelaterade) aspekter av informationsteknik.

Är en pedagogisk utbildare.

Bakgrund

Sedan jag som 12-åring skrev '10 print "Ola"' på en ABC-80 i skolan, har jag varit fascinerad av systemutveckling. Det jag älskar med det är att bra system får människor att glänsa. "The mission is to make people kick ass" för att citera Kathy Sierra. Liksom att det får verksamheter att blomstra.

Sedan kan det handla om något så prosaiskt som att få kundkort att snyggt hoppa från säljstödsystemet till telefonisystemet, eller skript som konverterar textfiler till databasrader, eller lösa teckenkodningsproblem så att japanska tecken blir rätt på skärmen. Det handlar om att människor ska få fantastiska verktyg i sin hand, verktyg som gömmer undan och automatiserar det tråkiga och tidsödande, men möjliggör det som tidigare var omöjligt.

Därför har jag utvecklat en slagsida åt metoder som är användningsfallsdrivna, testdrivna, affärsnyttoorienterade, arkitekturcentrerade och iterativa. Som t ex RUP.

Genom åren har jag använt många olika språk och tekniker. Från BASIC till assembler till pascal, C, C++ till Java till Ruby. Relationsdatabaser, excelark, objektdatabaser, GIS-data, textfiler, PDF:er och XML-dokument. ASCII till ISO-8859-1 till UTF-8. Från ad hoc-kommunikation mellan system till ordentliga serviceorienterade arkitekturer.

Java har varit mitt huvudsakliga verktyg sedan 1997 då jag först kom i kontakt med det. Jag har programmerat Java så gott som dagligen sedan dess, både professionellt och som hobby.

Jag har arbetat professionellt med systemutveckling sedan sommaren 1998. Först som konsult i ett konsultbolag, sedan som frilanskonsult, sedan med intern systemutveckling, arbetsledning och driftsadministration, och nu senast med ett ordboksredigeringsverktyg åt Svenska Akademien genom min anställning på Språkdata vid Göteborgs Universitet.

Jag har alltså arbetat både som konsult, och i linjeorganisation. Både med utvecklarperspektiv och med driftperspektiv. Både som anställd och som frilans. Både med stora och med små projekt. Både varit tvungen att rådda många samtidiga småpuckar och fått koncentrera mig på att ta fram ett enda verktyg under ett år. Både fått sätta mig in i andras kod, och fått ta fram system från början. Så jag vet vad som skiljer och vad som krävs i olika situationer.

Jag fungerar bäst...

Jag fungerar sämst...

Systemutveckling är något jag kan, ur en massa olika aspekter. Det jag kommit att mer och mer intressera mig för (och fått tillfälle att praktisera) är kvalitetssäkring, verksamhetsutveckling, strategifrågor, metodutveckling, arbetsledning och mjukvaruekonomi. Det är ett fascinerande område, eftersom det ofta är precis där, i processerna, snarare än på den enskilda utvecklarens bord, som de stora misstagen sker. Ofta alldeles i onödan.

Vissa saker som jag gjort

Det roligaste jag gjort var en EJB som styrde MP3-spelarprogrammet på servern i källaren hemma.

Det svåraste var ett mellanlager som mappade ett komplext DOM-träd på en relationsdatabas. Dokumentobjektmodellen och relationsmodellen hänger inte riktigt samman utan vidare.

Det vackraste var en serviceorienterad meddelandearkitektur där meddelandet kunde vara allt ifrån uppkopplingar till tidssynkade servrar runt om i världen, till automatgenererade PGP-signerade mail, eller till automatgenererade fax.

Det mest flexibla ett komponentbibliotek för basala databearbetningsuppgifter (kommunicera med servrar, hantera text, hantera relationsdatabaser, hantera sökmotorer), som jag i egenskap av egenkonsult kunde använda i många kundprojekt.

Det uslaste jag gjort var en tungrodd servlet för enkla beräkningar som egentligen borde utförts med javascript direkt i användarens webbläsare. Där frångick jag min faiblesse för enkla och handfasta lösningar.

Ställen jag arbetat och arbetar på

Processer

Jag gillar...

...Portfolio Management - När en organisation värdesätter och följer upp sina system som tillgångar, och inte klumpar samman dem i en dunkel "IT-drift"-post i budgeten. Istället krävs...

...Business Alignment - När en verksamhet har beskrivit sina verksamhetsprocesser och mål så att IT kan användas för att verkligen uppfylla de målen. Detta kräver...

...Kravfångning - Bedrivet på ett sätt som innefattar rotorsaksanalys (vad är det egentliga problemet), och som leder till mätbara krav på en...

...Arkitektur - Att lösningen på problemen designas, och att designen förankras i verksamheten. Alltför ofta sker arkitekturen ad hoc, när den i själva verket tillhör en strategiskt viktig komponent, och därför ska beslutas om på rätt nivå, innan det går till...

...Utveckling - Iterativt, testdrivet, arkitekturdrivet, användningsfallsdrivet.

Ett tänkesätt som lämpar sig för verksamhetsarkitektur, lika väl som för informationsarkitektur och systemarkitektur.

Tekniker

Det finns många intressanta och kostnadseffektiva tekniker. Här är några av mina favoriter.

Web Services

Web Services är en teknik där man gör komponenter som är anropsbara över nätverket. Ett standardiserat sätt för komponenter skrivna i olika språk, på olika plattformar och maskiner, att nätverka med varandra.

Jag har tillverkat webservices i PHP, Java och C#. Jag har anropat web services från PHP, Perl, Java och VBScript. Jag är väl förtrogen med hur web services är uppbyggda, och de protokoll som de bygger på (SOAP, HTTP, HTTPS, XML, RDF, WSDL, XML-RPC).

Dynamiska webbar

En webbläsare behöver inte med nödvändighet användas till att läsa dokument. Man kan också bygga mycket dynamiska gränssnitt med dem.

Tack vare tekniker som JavaScript, CSS, och DHTML kan man tillverka mycket moderna och effektiva applikationsgränssnitt som körs i användarens vanliga webbläsare.

XML

Jag är duktig på teknikerna i XML-familjen: beskriver XML-strukturer i XMLSchema, navigerar i dem via XPath, konverterar dem via XSLT, styr utseendet via CSS och XSL:FO, beskriver datatyper genom XML:RDF osv.

Relationsdatabaser

Relationsdatabaser må vara 90-tal, men de är fortfarande oerhört kraftfulla verktyg när det gäller att hantera information som till sin natur passar i en relationsmodell. Jag har programmerat mot Oracle, MS SQL Server, PostgreSQL och MySQL. Jag har driftat MS SQL Server, PostgreSQL och MySQL.

Övriga tekniker

Applikationsservrar, nätverk, mailservrar, filservrar tillhör några av de saker som jag arbetat mycket med.

Programmering

Jag är en duktig programmerare. Jag kan en mängd olika klassiska algoritmer och designmönster och vet när de ska användas. Jag är väl bevandrad i konsten att bygga datorprogram.

Java

Java är mitt primära programmeringsspråk. Sedan 1997 har jag programmerat java bokstavligt talat dagligen och följt miljön från version 1.0.2 och framåt.

Jag har utvecklat mängder med resurssnåla komponenter för avancerad filhantering, databashantering, texttolkning, kryptering, datakonvertering, HTTP, FTP, SSH, flödeshantering m. m. Jag har även engagerat mig i utvecklingen av sådana komponenter inom Jakarta Commons (Apaches OpenSource-projekt för generella, fria och effektiva java-komponenter).

Jag har skapat Java-API:er för att kommunicera med och styra andra program, sökmotorer, DNS:er, konfigurera servrar (e-post, webb mm), registrera domännamn, etikettskrivare m. fl saker man kan kommunicera med och därmed fjärrstyra och automatisera.

Jag kan använda Java för att generera och modifiera PDF-dokument, e-post, Word-filer, Excel-dokument, zip-filer och många andra dataformat.

Jag använder Java för att koppla upp mig mot webbplatser, ftp-platser, mailservrar, delade windowskataloger och scp-konton. Jag låter Java fråga LDAP-servrar och AD:n och relationsdatabaser, jag använder java för att logga på mig på unixdatorer, utföra någonting och sedan logga ut.

Jag använder Java för att automatgenerera gränssnitt till databearbetning. Gränssnitten validerar datat, anpassas till den som ska använda det (med ett individ-/gruppbaserat rättighets- och konfigurationssystem) och skickar det sedan till de bakomliggande lagren för behandling. Ändrar man en datadefinition på ett ställe, så slår det igenom på alla andra, utan att ytterligare kod behöver underhållas.

Jag skapar Enterprise JavaBeans i trelagersarkitekturer som bakomliggande kontrollager för administrativa datasystem. Dessa komponenter driftsätts på en applikationsserver och görs sedan anropsbara via SOAP, så att man kan integrera dem med Microsoft-miljön, med PHP, med Perl, och förstås med javabaserade system.

Jag skapar MBeans (JMX) för att administrera mina web services. Jag använder JNDI-träd för att hålla persistenta factoryklasser, jag använder JMS för att skicka meddelanden mellan komponenter, och jag använder Java till mycket, mycket mer...

Övriga språk

Förutom Java har jag jobbat mycket i PHP, VBScript, och SQL, något mindre med shell-skript, Perl, python, sed/awk, SQL, och lite C# (som känns väldigt hemtamt för någon från javavärlden).

Datorer jag programmerat