Met het achter ons laten van silo applicaties en het omarmen van publieke cloud technologie lijkt er ook een trend te ontstaan dat it'ers steeds meer van meer dingen moeten weten. Vroeger was het simpel: je bent back-end ontwikkelaar, front-end ontwikkelaar of integratie ontwikkelaar. En binnen deze hokjes specialiseerde je vaak weer. Daar red je het nu niet meer mee!
Als we kijken naar de lijst van bouwblokken die beschikbaar zijn in Microsoft Azure’s Platform as a Service is dat best schrikken. Wat een lijst! Het aantal services neemt ook nog steeds toe. De ontwikkelingen zijn met de komst van cloud computing in een enorme stroomversnelling terecht gekomen. Agile en snelle innovatie gaan kennelijk echt hand in hand. Big data, internet of things, machine learning, bot framework; het zijn allemaal vakgebieden op zich, maar we hebben het wel stuk voor stuk nodig om er moderne oplossingen mee te creëren. Ga er maar aan staan!
Agile oplossingen realiseren
Ook het creëren van oplossingen op de voor ons op een Agile manier beschikbaar gestelde innovatieve cloud platforms gebeurt tegenwoordig meestal op een Agile manier: Eén of meerdere Scrum-teams die aan producten ontwikkelen die telkens verder evolueren aan de hand van realtime business input en een vaak experimentele aanpak. Deze teams zijn multi-disciplinair.
Dat betekent dat elk team in staat is om end-to-end een complete oplossing of deelproduct te realiseren. Een product dat als geheel in productie kan. Inclusief database, back-end logica, front-end en alle integraties. En dat men in staat moet zijn om taken van elkaar over te nemen, elkaar te helpen. Het team levert de oplossing. Men is zo min mogelijk afhankelijk van individuele ’towers of knowledge’. Die schalen namelijk niet. En zijn ook single points of failure.
Domein expertise verschuift
Voor hard-core specialisten is dit een grote uitdaging. In plaats van puur bezig te zijn met een bepaalde technologie, bijvoorbeeld SQL Server, Azure Stream Analytics of .Net ontwikkeling, heeft de ontwikkelaar ook verstand nodig van de oplossing die er gebouwd moet worden én is hands-on kennis van de aanpalende technologieën nodig. Er wordt aan hele stories gewerkt met verschillende mensen en het team moet immers leveren. De gereedschapskist blijkt al snel te klein. Wat een enorme hoeveelheid componenten en technologische doorbraken. Hoe houdt men de ontwikkelingen bij?
Pair programming is hierbij een goed middel om de kennis te delen. En natuurlijk de gewone Scrum rituelen. Tegelijkertijd ontwikkelt het team zich tot een kenniscentrum voor een specifiek business domein. Dat is erg waardevol en blijkt in de praktijk een grote driver voor het sneller kunnen leveren van waardevolle oplossingen. Verticaal specialiseren, als team. Ongeacht de te gebruiken technologie.
Terug in je hokje?
Nee. We eisen veel van de ontwikkelaar en ze worden daar ook prima voor betaald. In plaats van specialistische individuen, is teamontwikkeling veel effectiever. Leren van elkaar, elkaars taken kunnen overnemen, bredere kennis opdoen maar tevens verdieping zoeken. Continue blijven leren hoewel het soms lijkt alsof ‘we’re drinking from the firehose’ (zoals de Amerikanen dat zo mooi zeggen).
We hebben meer generalisten nodig, die voor 80 procent uit de voeten kunnen met alle componenten. En voor de overgebleven 20 procent hebben we dan nog een aantal lone wolves. De towers of knowledge. De echte nerds. Af en toe laten we ze uit hun hokje, en mogen ze hun kunstje doen.