Namn | Ola Berg |
---|---|
Född | 1969 |
Yrke | Programmerare, systemarkitekt, systemansvarig, kravfångare, arbetsledare |
Bas | Göteborgsområdet, Västra Götaland |
E-post | ola.berg@fundament.se |
Telefon | 0704 222 414 |
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...
- ...när jag får lösa problem, enskilt eller i grupp
- ...när jag får lära ut
- ...när jag får inspirera och arbetsleda
- ...när det är lagom ont om tid (sparkar igång flödet)
- ...när jag vet vad som krävs av mig
Jag fungerar sämst...
- ...när jag måste ta på mig en massa administration
- ...när kraven på mig är otydliga
- ...när mina kunskaper inte kommer till användning
- ...när jag inte får se det stora sammanhanget, vari min roll består
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
- API för sökmotor
- Artikeldatabaser
- Dokumentdatabaser
- Automatkategorisering
- CRM-system
- Serverfjärrstyrningsprogramvara
- Orderhanteringssystem
- System för inscanning och automatisk XML-uppmärkning av ett pappersbaserat artikelarkiv
- Överlevt 2001-2002 som egen företagare i systemutvecklarbranschen
- Styrt upp kravfångnings- och testprocesser
- Generell databashanterare över webb
- Gränssnittskomponenter i javaskript
- Ett otal webbgränssnitt över olika databaser och äldre system som har behövt webbifieras.
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å
- GTI - Göteborgs Tekniska Institut (under studier 1998).
Timlärare i programmering. - Information Highway sedermera Adcore (1998-2001).
Konsult i ett antal projekt åt Volvo, Sveriges Rese- och Turistråd, Agent25 m. fl. - Arkitema Systemarkitekter HB (hösten 2001 - augusti 2002).
Systemutvecklingsprojekt företrädesvis i Java åt bl a torget.se. - House of Ports AB (augusti 2002 - mars 2005).
Linjeorganisation och arbetsledning, drift av webbhotell, underhåll av interna system, införsel av SOA. - XXXX (april 2005 - dags dato).
Javaklient för ett publiceringssystem. Skapar bl a typsatta dokument utifrån data i en databas.
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
- ABC-80 1982-1985 (BASIC),
- Sinclair Spectrum 1983-1988 (BASIC, Z80-assembler),
- Skoldatorn Compis 1985-1989 (Comal, Pascal, assembler mot grafikkortet för ett polygonbaserat 3D-API),
- Amiga 500 1988-1993 (BASIC, C, 68000-assembler),
- Macintosh Perfoma (System 7) 1993-1997 (C, C++),
- Windows 95/NT/2000 1997- (C/C++, Java, VBScript, VisualBasic, C#)
- Linux 1998- (C, Java, Perl, PHP, Python, Bash shellscript, C# m.m.)