Generalist of specialist , de pro’s en cons

Stel je vaak jezelf de vraag indien je een generalist of een specialist moet worden? Dan is het belangrijk om de voor- en nadelen te weten beide rollen. Alleen zo kan een beslissing genomen worden om zich al dan niet te specialiseren of te verbreden in een rol.

Indien je meer wilt weten over hoe een carrière uit te bouwen in software development, dan raad ik het fantastische boek ‘The Passionate Programmer’ van Chad Fowler aan.

Generalist , het manusje van alles

Vroeger werd het gezegde ‘een manusje van alles’ nogal denigrerend bedoeld voor iemand die niet de ingesteldheid hadden om zich te specialiseren in één vak. In software development is dat niet het geval.

Een generalist wordt ook vaak omschreven als full-stack developer (het developer buzzwoord op dit moment). Veel bedrijven zien echter het label van generalist nog altijd als iets slecht. In development is dit echter een verkeerde opvatting. Ontwikkelaars snappen dat software ‘soft’ is, en dus bij gevolg kan software zich snel aanpassen aan de vereisten van het project.

Juist omdat software zich snel kan aanpassen aan vereisten, is een brede kennis heel interessant voor bedrijven. Iemand die een project van begin tot eind kan afwerken en verschillende technologieën kan laten praten met elkaar + een volledige scalable omgeving opzetten en ook de code schrijven die erop draait + ook de deployment en training verzorgen. Dat is een persoon die moeilijk te vinden is en daarom waardevol.

zwitsers-mes-pixabay.jpg


Een ander overweging is het feit dat een generalist zich niet vastpint op 1 programmeertaal maar meerdere talen kan schrijven en ook laten praten met elkaar. Dit betekent dat als voor een project technolgie x het beste is, maar die moet praten met technologie y, dat een generalist een oplossing zou weten.

Ook weet een generalist zich snel aan te passen aan een nieuwe werkomgeving, structuur en programmeertaal. Daarom is een generalist interessant om aan te nemen.

Een nadeel aan die brede kennis, is dat het bijna onmogelijk is om tot op het bot te gaan van een programmeertaal en ook de kleine details te leren.

Ik zie mezelf als een generalist op dit moment. Dit betekent echter niet dat ik geen specialist zal worden...

Specialist , diepe kennis

Het sollicitatiegesprek... ik heb al het genoegen gehad om meerdere te voeren. Een vraag die ik vaak stel is: ‘Geef jezelf een cijfer van 1 tot 10 in programmeertaal X’.  Als ik dan een 8-9 krijg, dan verwacht ik een expert...

De volgende vraag is: ‘Hoe zou je een website kraken in programmeertaal x?’
Meestal krijg ik een verbaasde en vragende blik. Het antwoord is dan ook vaak ‘Ik weet het niet, ik heb dat nooit gedaan.’
Onbegrijpelijk want zelfs een verkeerd antwoord is beter dan geen antwoord.

Hoe kan iemand zichzelf een 8 of 9 geven als die niet weet hoe een bepaalde taal werkt, of hoe personen met minder goede bedoelingen een webapplicatie zouden kraken? Een specialist of expert weet alles over een bepaalde programmeer- of scriptingtaal en kan dus de nodige bescherming geven. (Hiermee bedoel ik zeker en vast niet dat een generalist geen veilige applicaties kan programmeren, maar het is een voorbeeld.)

Specialisten zijn ook felbegeerd, want zij kunnen alles maken in een bepaalde programmeertaal van start tot eind. Zij kunnen ook snel problemen oplossen waar anderen zouden op zoeken. ‘Je betaalt niet een goeie loodgieter om op de buizen te slaan... maar je betaalt de loodgieter om te weten waar hij moet slaan.’

Het nadeel is dat een specialist enkel alles kent van 1 taal... wat limiterend kan zijn als de vereisten van een project niet overeenstemmen met wat de taal goed kan.

Dus ...

Voel zelf aan welke rol je meer aanspreekt. Als iemand je niet zeker bent van je huidige werkomgeving of je bent nog jong... Dan zou ik gaan voor een brede kennis (generalist). Stel een lijst op van verschillende programmeertalen en geef een cijfer van hoe graag je iets wil leren.

Als je nu in een Object georiënteerde programmeertaal zit, bekijk een functionele programmeertaal (of omgekeerd). Laat verschillende programmeertalen praten met elkaar via een API.
Bekijk zeker eens de TIOBE index om te zien welke programeertalen populair worden en investeer daar tijd in. Zo kan je misschien een job vinden waar je jezelf wilt in specialiseren.

Als je zeker bent van wat je wilt doen, dan specialiseer je jezelf zoveel mogelijk in het onderwerp. Als het PHP is, ga na hoe PHP-FPM werkt tegenover een normal Apache opstellling, of vergelijk Apache met nginx... Bekijk het systeem waarop jouw PHP code draait, en hoe je het eventueel kan optimaliseren.