Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

De perfecte web developer

Een vraag die laatst in me op kwam: "Wat zou nu de perfecte web developer zijn?". Deze vraag heeft me aan het denken gezet. Onlangs heb ik het boek "Pragmatic Programmer" gelezen. Dit boek behandelt manieren om een betere programmeur te worden. Meer nog dan croncrete tips te geven over hoe je betere code kunt schrijven of een project beter kunt opzetten, proberen ze je in dit boek bepaalde eigenschappen, van wat zij zien als Goede Programmeurs Eigenschappen (TM), bij te brengen.

Dus, nu hoor ik je denken: hoe ziet nu de perfecte web developer eruit Tri? Daar kunnen we simpel over zijn. Die bestaat niet. Er is niet zoiets als perfect, althans niet iets wat door mensen gemaakt is. Hoeveel mensen ken jij die bijvoorbeeld uit de losse hand een perfecte cirkel kunnen tekenen? Ja, niemand dus. Maar net zoals de wereld de nodige goede schilders kent zijn er natuurlijk ook web developers die boven het maaiveld uitsteken.

Laten we beginnen met de gemiddelde PHP ontwikkelaar. Hij heeft uitstekende kennis van PHP, is behoorlijk bekend met object georienteerd programmeren en zojuist begonnen met design patterns te stoeien. Aangezien PHP meestal met z'n vaste maatje MySQL gebruikt wordt, kent onze ontwikkelaar hier ook het nodige van. Daarnaast beheerst hij ook Javascript, een perfecte aanvulling op PHP. Ondanks dat deze persoon behoorlijk wat know-how heeft kun je niet direct concluderen dat deze persoon een goede web developer is.

Volgens mij heeft een goede webprogrammeur meer vaardigheden en eigenschappen:

Kennis van systemen/software: Hoevaak heb je wel niet een Apache server moeten opzetten, PHP moeten installeren en daarnaast MySQL? Tuurlijk bestaan er van die kant-en-klare pakketten. Daar leer je echter helemaal niets van. Je hebt dan nooit een Apache configuratie gezien of een PHP ini instelling. Hiermee zul je later toch in aanmerking komen. Daarom raad ik ook iedereen aan om een keer te werken met een ander besturingssysteem. Zoals Linux, FreeBSD of Mac OS X. Vooral de eerste twee vraag veel sleutel en configuratie werk. Je moet veel onderzoeken en documentatie lezen om dingen werkend te krijgen. Precies goed voor programmeurs.

Nieuwsgierig zijn is een tweede goede eigenschap. Willen weten hoe iets werkt. Als je bijvoorbeeld weet hoe PHP bepaalde dingen intern doet kan dit je helpen bij je taken. Ook zul je op de hoogte moeten blijven van de meest recente ontwikkelingen binnen de platformen die je gebruikt. Als je PHP gebruikt en nu niet weet wat PDO is, loop je al tijden achter. Bezoek relevante sites, forums en weblogs.

Experimenteren. Open staan voor nieuwe technologie. "Never change a winning team", deze uitspraak is inmiddels verouderd. In deze veranderlijke tijden zul je jezelf snel moeten kunnen aanpassen. Probeer daarom ook de hypes te begrijpen. Afgelopen jaar waren AJAX en Ruby on Rails de grootste hype op web development gebied. Zorg dat je tenminste een mening hebt over deze technologie. Dat je daarover kan discussieren waarom je wel of niet deze hype terecht vind. Redenen als "AJAX bestaat allang en usability is nul" is onzin. Deze technologie is nieuw en is nog niet helemaal begrepen. Usability bij AJAX speelt helemaal geen probleem, als je weet dat je een bepaalde standaarden moet houden. Net als dat je XHTML pagina aan W3C standaard moet voldoen.

Probeer voor jezelf ook doelen te stellen wat je wilt bereiken. Als je beginnende PHP-er bent, kun je als doelstelling hebben:
"Ik wil binnen een jaar goed OO kunnen programmeren. Na twee jaar moet ik design patterns kunnen toepassen". Jezelf kunnen motiveren is zeer belangrijk. Het geeft ook aan wat je doorzettingsvermogen en leercapaciteiten zijn. Een mooie uitspraak in Pragmatic Programmer:

"The more different things you know, the more valuable you are."

Probeer daarom ook elk jaar jezelf wat nieuws te leren, ook op web development gebied. Leer bijvoorbeeld elk jaar een nieuwe taal. Een beheersing van een goede scripttaal die goed kan omgaan met strings is nooit weg (denk aan sed) of regular expressions. Alles wat je niet op web development gebied leert is altijd mooi meegenomen. Vorig jaar had ik een boek gekocht over boekhouding omdat ik deze nodig heb voor m'n administratie. Ik leerde, ook dankzij het Management vak dat ik op school volg :), boekhouden en de formules kennen. Toevallig een paar weken later moest ik deze kennis toepassen in een web based (simpel)boekhoudapplicatie. Dankzij mijn kennis op een ander gebied, kon ik dit toepassen in mijn code. Ik snapte de formules en de theorie, dus het uitwerken in PHP ging makkelijk. Deze quote is zo belangrijk, dat ik het herhaal.

"The more different things you know, the more valuable you are."

Communicatie is een ander belangrijk aspect. Vooral als je in team verband werkt. In je eentje is je communicatie medium de code en haar commentaar. Deze moet duidelijk zijn en iemand anders moet binnen paar secondes kunnen beoordelen wat je code doet. In team verband zijn er meer omgevingsfactoren. Je moet open en duidelijk kunnen communiceren met je collega's. Een ex-collega van mij was erg leergierig en stug. Als hij een bug had, dan ging hij het tot de bodem onderzoeken waaraan het lag. Ookal kost het hem soms dagen, hij moest en zou zelf erachter komen wat de bug veroorzaakte. Aan de ene kant is dit een goede eigenschap, maar hij mist een vitaal onderdeel. Anderen moesten nu wel wachten totdat hij uitgevogeld is. Een ander ex-collega ging daar beter mee om. Zij was net zo leergierig en iemand die goed wilt onderzoeken wat het probleem veroorzaakt. Maar zij wist wel wanneer ze er niet alleen eruit kon komen en iemand anders erbij moest roepen. Dat maakt een groot verschil. Er is helemaal niks mis met zelfstandigheid, maar je moet wel je grenzen kennen.

Effectief communiceren betekent ook inlevingsvermogen hebben. Iedereen heeft deze eigenschap in andere soorten en maten. Wel moet je begrijpen wie je doelgroep is. Als je software schrijft voor een bank, zal usuability en gebruikersvriendelijkheid een hogere prioriteit hebben dan bij de website van je buurman. Bedenk dus eerst goed wie je doelgroep is en pas je daarop aan, ook in je vocabulair. Bij vergaderingen tussen developers zul je vaak genoeg smijten met technische termen. Tegen je manager praat je toch anders. Deze wilt weten hoe het ervoor staat en of het nog allemaal werkt.

Beheersing van de taal is ook nooit weg. Teksten in je web applicatie laat ik liever door iemand anders schrijven. Je inleven als eindgebruiker is voor programmeurs veel moeilijker. Die weet immers hoe de internals werken. Probeer dus ook foutmeldingen niet te technisch te maken. Dhr Jansen zal schrikken als hij een error krijgt als "Query error. Select mislukte. Probeer het opnieuw." Denk aan je doelgroep.

De perfecte web developer bestaat misschien niet, maar er naar streven doet geen vlieg kwaad.

Reageer ook!

Ik mis in dit verhaal nog enkele punten, namelijk het contact met klant. De bovenstaande punten geven een goede basis voor als je onder een baas werkt, maar als je voor jezelf aan de slag gaat zullen er nog meer belangrijke punten zijn.

Een daarvan is het kunnen analyseren van de eisen van een klant. Je kunt nog zoveel weten van alle talen, OOP en design patterns, als je niet weet wat de klant precies wil is het heel moeilijk om die kennis toe te passen. Enige kennis van het opstellen van requirements en het werken met UML diagrammen is in mijn ogen niet onbelangrijk.

Een ander punt is de communicatie richting de klant. In elk project zal de opdrachtgever anders zijn en het is de kunst om daar goed op in te spelen. Een reclamebureau zal bijvoorbeeld meer gericht zijn op het ontwerp gedeelte dan op het technische. Hierdoor hebben ze meer begeleiding nodig bij het opstellen van de requirements in vergelijking tot een andere opdrachtgever.

Edwin, dat is als je in je eentje werkt erg handig ja. Verder, heb je daar bij (middel)grote bedrijven mensen voor. Ik vind het geen vereiste voor een webdeveloper.

de koude pizza / doodgeslagen cola programmeurs krijgen qua communicatie weinig voor elkaar, en dat hoeft ook niet, ze hebben zo hun andere kwaliteiten...

Er zijn (nog te weinig) mensen die goed kunnen lullen, en minder kunnen programeren, maar wel weten hoe ze een boodschap door moeten geven aan de echte die hard nerd (NOI auteurs ;-))

Natuurlijk allemaal leuk aan aardig, maar wanneer je voor een baas werkt ben je toch al gauw afhankelijk van de ruimte die je krijg om te experimenteren en onderzoeken.

Wanneer je gericht werkzaam bent binnen een IT bedrijf zal dit niet snel een probleem vormen. Binnen een bedrijf waar IT niet de core-business vormt is dit vaak een stuk lastiger en stuit je op onbegrip.

Dus een aanvullende tip: blijf niet te lang hangen bij een werkgever die je te weinig ruimte geeft voor zelfontwikkeling.

@Joost: helemaal mee eens, met uitzondering van UML dan. Dat is wat mij betreft ook "gewoon" een "taal": Unified Modelling Language ;-).

@Ruud: Experimenteren kan natuurlijk ook buiten de baas z'n tijd!

Dat kan zeker, maar je moet er maar zin in hebben. Ik niet in ieder geval.

Ik probeer het programmeren en scripten zoveel mogelijk te zien als een hobby. Daarom werk ik ook liever freelance. Zo heb je ruimte om te doen wat je wil. Hier en daar een nieuwe techniek toepassen. Want nieuwe technieken leren doe je vooral door ze toepassen. En om voor elke nieuwe techniek een nieuwe applicatie (voor de lol) te maken is natuurlijk geen werk. Daarom is initiatief nemen heel belangrijk. Naar de opdrachtgever stappen en zeggen: "Als ik het zus en zo doe gaat het ook en maak ik gebruik van 'die' en 'die' techniek die 'deze' en 'deze' voordelen heeft.". Dat is IMO een van de belangrijkste zaken, naast de kennis zelve natuurlijk:)

Leren door en tijdens het programmeres, deze twee zaken mogen niet gescheiden worden. Anders wordt het een vorm van "dagelijkse sleur".

[...] Ik heb me eraan gewaagd om iets te schrijven over Ruby On Rails. In De perfecte web developer heb ik al vermeld dat je moet experimenteren met nieuwe technologie. Enkele maanden geleden heb ik ook Rails uitgeprobeerd, maar mijn eerste impressie was niet positief. Dat kwam voornamelijk door de Ruby syntax. Wanneer je C-achtige (C, Perl, PHP) syntax bent gewend is de Ruby syntax net Spaans, soms herken je wat maar soms ook weer niet. Toch had ik de moed gevonden om opnieuw te experimenteren nadat Mathieu als grap vertelde dat iedereen op Ruby moest overstappen nadat Martin Fowler had gesproken. [...]

[...] Begin dit jaar schreef Tri Pham een interessant artikel op Scriptorama over de perfecte webdeveloper. Zijn conclusie was simpel maar doeltreffend: [...]

Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>