Wat ik kan

Ik durf, zonder arrogant te willen klinken, wel te stellen dat ik een persoon ben die meerdere talenten heeft. Mijn expertise is zeer divers (binnen de scope van software ontwikkeling) en is vooral opgedaan in de praktijk. De afgelopen 11 jaar, mijn totale professionele werkperiode als zelfstandig ondernemer, heb ik veel uitdagingen voorgeschoteld gekregen en tot op heden ben ik altijd nog in staat geweest om ze op te lossen.

Gedurende mijn carrière heb ik vele verschillende dingen gedaan, dat is waar zelfstandig ondernemerschap om draait, die flexibiliteit. Ik heb sales gedaan (niet echt mijn ding); Ik heb bergen documentatie en (technische) specificaties geschreven in zowel het Nederlands als in het Engels; Ik heb ontelbare regels code geschreven; Ik heb support/helpdesk werkzaamheden verricht; Ik heb algemeen management gedaan; Ik heb ontwikkelteams geleid in zowel Nederland als in het buitenland; Ik heb Crystal Reports cursussen gegeven; You name it, and I've done it!

Ik denk dat wat mij onderscheid van de rest, is dat ik een duizendpoot ben met een niet te stillen honger voor kennis en informatie. I ben gek op het doen van research werk. Er is niets dat meer voldoening schept dan om een ogenschijnlijk onoplosbaar probleem te analyseren, er een oplossing voor te zoeken en het vervolgens te implementeren. Gek genoeg raak ik juist meer gemotiveerd als de lat hoog word gelegd door (technische) beperkingen.

Ik heb besloten om mezelf los te weken van mijn vorige bedrijf, omdat ik mezelf gedwongen voelde in rollen die me geen uitdaging (meer) boden en te veel bezig was met in mijn ogen bijzaken (wel degelijk belangrijk). Datgene wat ik echt wil doen en waar ik goed in ben, is software ontwikkeling in al zijn facetten. Welke methodologie ook wordt nagestreefd 'waterfall', 'Agile', 'TDD', maakt me niet uit. Het komt in mijn ogen altijd, hoe groot of hoe klein het project ook is, neer op 3 fasen: ASSES, MODEL, BUILD. In al deze fasen kan ik een rol vervullen!

ASSES

Informatie inwinnen, daar gaat het in deze fase om. Hoe? luisteren en leren! Gedurende deze fase is er maar 1 doel, achterhalen welk probleem moet er opgelost worden, welke beperkingen gelden er en welke criteria staan vast? In mijn optiek is het onmogelijk om goede software te schrijven zonder een duidelijk beeld van de te verwachten uitkomst (van een 'scrum' of een compleet project.

Knappe koppen hebben al veel manieren uitgedacht om tot solide functionele specificaties te komen. Persoonlijk ben ik geen fan van 1 specifieke methode maar vertrouw op mijn intuïtie en kies een methode die past bij de situatie, zij het een standaard methode of common sense.

MODEL

Als vast staat wat er precies gevraagd wordt, begint de echte hersengymnastiek. Gedurende deze fase worden de functionele specificaties vertaald naar technische specificaties, richtlijnen en een database model indien nodig. Op dit moment worden ook mogelijke verbeteringen bepaald en worden onmogelijkheden getackeld.

Zoals alle software ontwikkelaars, werk ik het liefst op basis van accurate en uitgebreide specificaties. Ik ben realist genoeg om te bevatten dat dit niet altijd mogelijk is om welke redenen dan ook. Overigens hoeft goede documentatie absoluut niet omvangrijk te zijn. Soms is er echter een boekwerk nodig om een complex proces uit te schrijven, een ander moment kan de functionaliteit in 1 simpel flowchart worden vastgelegd.

Ik heb in het verleden vele applicaties gezien waarvan de modelleer fase compleet was overgeslagen, of er simpelweg te weinig tijd en energie in was gestoken. Dergelijke applicaties zijn een hel voor elke ontwikkelaar, omdat wijzigingen aan dergelijke systemen regelmatig onverwachte/ongewenste bijwerkingen hebben. Je ziet dan ook vaak dat 'te snel' ontwikkelde systemen vroegtijdig worden uitgefaseerd wegens gebrek aan schaalbaarheid en uitbreidbaarheid.

BUILD

Ik zou bijna zeggen dat dit de fase is waarin er niets meer mis kan gaan, maar dan zou ik liegen. Gedurende deze fase worden de specificaties omgezet in uitvoerbare programmacode. Over het algemeen duurt deze fase het langst, domweg omdat er veel werk verzet dient te worden.

Persoonlijk vind ik dit de meest ontspannen fase, omdat je in deze fase zelfstandig 9ook al werk je in project teams) je creativiteit kunt botvieren op de programmatuur. Je maakt echt iets dat als het goed is zienderogen evolueert tot een prachtig stuk software.

Ondanks dat ik ben opgeleid als een Java en C programmeur, ben ik al jaren vertrouwd met Microsoft's ontwikkelplatformen. Dat begon toen ik als 17 jarige wijsneus stage ging lopen en op de eerste dag de floppies van Visual C++ in mijn handen gedrukt kreeg en me werd gevraagd om in 5 maanden een bestaand management training applicatie uit te breiden met print functionaliteit. De opdracht was relatief saai, maar het bood me de kans om over de schouders van ervaren ontwikkelaars mee te kijken. Zij hebben me veel geleerd en hebben de vonk over doen springen.

Tot op heden heb ik Java Applets (kent u ze nog?) ontwikkeld, ActiveX controls, browser toolbars, PocketPC applicaties (voor van die lompe iPaqs), ladingen ASP pagina's, Javascript bibliotheken, tientallen Com componenten en de laatste jaren mooie .NET applicaties (web & windows).

Als gevolg van mijn betrokkenheid bij diverse ontwikkeltrajecten, met een voorkeur voor web ontwikkeling, heb ik in de loop der jaren kennis op gedaan van vele tools, platformen en technieken, zoals:

  • .NET 1.1, 2.0, 3.5;
  • C#;
  • VB.NET;
  • Javascript / jQuery;
  • Windows;
  • IIS;
  • SQL Server;
  • Visual Studio;
  • SEO;
  • HTML, XML, XHTML;
  • CSS;
  • Web Services & SOAP;
  • WCF;
  • REST;
  • ASP.NET;
  • AJAX & JSON;
  • MVC;
  • Subversion;
  • LLBLGen Pro;
  • Cocoa (touch);
  • Microsoft Enterprise Library;
Waarschijnlijk ben ik in dit overzicht een aantal zaken vergeten. Ik zal de lijst bijwerken als ik nieuwe dingen bijleer en/of ze me herinner.