Instapcompetentieprofiel van een programmeur In opdracht van Cevora (maart 2012)
Michel Albertijn & Johan Desseyn
Instapcompetentieprofiel van een programmeur Inhoudstafel Inleiding 1. Een instapcompetentieprofiel 1.1. Concept 1.2. Gebruikswaarde 1.3. Gegevensverzameling 2. De instapcompetenties doorgelicht 2.1. Een leertraject 2.2. Het leertraject van de programmeur 2.3. Samenvatting: het twaalfmaandenprofiel 3. Het instapcompetentieprofiel en opleiding 3.1. Totaalopleiding gericht op eenvoudige en goed afgebakende realisaties 3.2. Leerdoelstellingen voor de programmeur 3.3. Opleiding en beroepsevoluties 3.4. Andere bijzonderheden Bijlage 1: Lijst van competenties die werden voorgelegd aan de respondenten Bijlage 2: Tijdsintensiteit en moeilijkheidsgraad van de competenties voor programmeur Bijlage 3: Bevraagde bedrijven
PAGINA 1
2 3 3 5 6 7 7 9 17 18 19 21 26 30 31 35 40
Inleiding 1. Wat is een instapcompetentieprofiel?
Een instapcompetentieprofiel is een doorlichting van de noodzakelijke competenties voor een beginnend programmeur. komt tot stand op basis van twintig gestandaardiseerde interviews met bedrijven. is geen opleidingsprofiel. biedt ondersteuning bij het inhoudelijk en structureel uitwerken van opleidingen. kan gelezen worden als een verzameling leerdoelstellingen. is kwantitatief onderbouwd.
2. Concrete uitwerking
Een instapcompetentieprofiel deelt de competenties voor een programmeur in volgens het tijdstip waarop ze van een beginnend beroepsbeoefenaar verwacht worden. geeft per competentie een indicatie van belang voor de dagelijkse uitoefening van het beroep, gebaseerd op tijdsintensiteit en moeilijkheidsgraad. peilt naar mogelijke evoluties in het beroep die een impact kunnen hebben op het profiel.
Dit rapport bevat verder een overzicht van de gebruikte programmeertalen en – omgevingen bij de bevraagde bedrijven.
PAGINA 2
1. Een instapcompetentieprofiel 1.1. Concept Doorlichting van de noodzakelijke competenties voor een beginnend medewerker — Dit onderzoek brengt de instapcompetenties van een programmeur in kaart. De instapcompetenties zijn de competenties die bedrijven verwachten van een beginnend medewerker. Een beginnend medewerker wordt gedefinieerd als een persoon zonder specifieke beroepservaring tijdens het eerste jaar voltijdse tewerkstelling in de nieuwe functie. Bij instapcompetenties gaat het enerzijds om een pakket competenties die werkgevers verwachten vanaf de eerste werkdag, en anderzijds om competenties die de beginneling gaandeweg aanleert, terwijl hij het beroep in kwestie al uitoefent. Samen vormen zij het geheel van competenties dat gedurende het eerste jaar noodzakelijk is. Het leertraject — Dit rapport belicht het leertraject van een programmeur. Het leertraject biedt een overzicht van de competenties die in de praktijk achtereenvolgens van een beginnend programmeur verwacht worden: Welke competenties zijn noodzakelijk om kans te maken op aanwerving? Welke competenties dient de beginnende programmeur als eerste onder de knie te krijgen? Hoe verloopt het verdere leerproces? Het belang van competenties op basis van tijdsintensiteit en moeilijkheidsgraad — Sommige competenties vergen in de uitoefening van het beroep van programmeur meer tijd dan andere of zijn moeilijker. De mate waarin een programmeur precies deze competenties vlot beheerst is bepalend voor zijn rendement binnen het bedrijf. Daarom is het gerechtvaardigd zulke tijdsintensieve en moeilijke competenties binnen het instapcompetentieprofiel een groter belang toe te kennen. De gemeten tijdsintensiteit en de moeilijkheidsgraad van de verschillende competenties worden in dit rapport verwerkt naar een schaal voor het relatieve belang van elke competentie. Deze vormt in het kader van opleiding een belangrijke aanvulling op het leertraject. Waar het leertraject enkel de volgorde van aanleren van de diverse competenties blootlegt, geeft het relatieve belang bijkomende informatie: het brengt een rangorde onder de
PAGINA 3
competenties aan en maakt bijgevolg duidelijk op welke competenties een opleiding de nadruk dient te leggen. Geen geïdealiseerd beeld — Het leertraject stelt géén ideaalbeeld voorop. Het leertraject beschrijft de realistische verwachtingen die in de praktijk door bedrijven gehanteerd worden. Geen statisch gegeven — Competentieprofielen evolueren. Innovatie en herdefiniëring van de functie kan ervoor zorgen dat de verhoudingen tussen de competenties wijzigen. Daarom peilt dit onderzoek naar toekomstige ontwikkelingen. De analyse wijst uit welke competenties in de nabije toekomst waarschijnlijk in belang zullen afnemen dan wel toenemen. Daarnaast speelt er een tweede dynamisch element: ook de situatie op de arbeidsmarkt heeft invloed. In tijden van arbeidsschaarste zullen bedrijven immers aan een beginnend programmeur lagere eisen stellen dan wanneer er een groot aantal sollicitanten beschikbaar is. Het is dus goed voor ogen te houden dat vraag en aanbod op de arbeidsmarkt een bepalende rol spelen in de reële verwachtingen ten aanzien van de (kandidaat-)beroepsbeoefenaars. Gehanteerde programmeertalen en ontwikkelomgevingen — In het verlengde van het instapcompetentieprofiel peilde het onderzoek ook naar de programmeertalen en omgevingen die binnen de bevraagde bedrijven gebruikt werden. Het resultaat geeft een overzicht van de variatie in gehanteerde talen en de populariteit van bepaalde ontwikkelomgevingen.
PAGINA 4
1.2. Gebruikswaarde Basis voor opleiding — Een instapcompetentieprofiel is een basisinstrument voor het uitwerken en verfijnen van een opleidingsaanbod voor kandidaat- of beginnende beroepsbeoefenaars. Het baseert zich op de huidige verwachtingen op de arbeidsmarkt ten aanzien van een beginnend beroepsbeoefenaar om de noodzakelijke competenties tegenover elkaar af te wegen en te rangschikken. Het overzicht van welke competenties op welk ogenblik in het leertraject belangrijk zijn, biedt een uitgebreide basis voor het uitstippelen van een nieuw opleidingsaanbod of het evalueren en actualiseren van een bestaand programma. Het bevat informatie die helpt bij het beantwoorden van volgende vragen: Is het zinvol een onderscheid te maken tussen een basis- en een vervolmakingsopleiding?; Kiest men best voor een intensief totaalpakket?; Moet men de opleiding beperken tot een selectie van competenties?; … Welke competenties verdienen aandacht in een (eventuele) basisopleiding? Welke competenties dienen in een (eventuele) vervolmakingsopleiding aan bod te komen? Op welke competenties moet een (eventuele) totaalopleiding de nadruk leggen? Met welke trends moet de opleider rekening houden bij het uitstippelen van het aanbod? Instrument voor screening — Een instapcompetentieprofiel is eveneens een handig instrument bij het screenen van werkzoekenden en het detecteren van opleidingsbehoeftes bij beginnende beroepsbeoefenaars. Ook bij het evalueren van startende werknemers kan het instapcompetentieprofiel een nuttige controlelijst zijn.
PAGINA 5
Geen opleidingsprogramma Een instapcompetentieprofiel is geen opleidingsprogramma. De doorlichting van de noodzakelijke competenties levert informatie over wanneer welke competenties belangrijk zijn, maar zegt niets over hoe dergelijke competenties aangeleerd moeten worden. Het profiel resulteert in leerdoelstellingen. Het leertraject zegt wanneer een bepaalde competentie verworven moet zijn, en de schaal voor het relatieve belang vertelt iets over het belang van de competentie in het profiel. Als een opleiding niet alle competenties kan aanleren, is het belang het beste criterium om bepaalde competenties als leerdoelstelling te weerhouden en andere te schrappen. Hoe die leerdoelstellingen finaal in een opleidingsprogramma moeten worden omgezet is het werk van pedagogen.
1.3. Gegevensverzameling Competentielijst gebaseerd op uitgebreid vooronderzoek — Dit instapcompetentieprofiel vertrekt vanuit eerder onderzoek van Tempera naar de competenties van een programmeur (zie margetekst). Deze voorstudie bakent het beroep af, situeert het binnen de sector, om vervolgens de inhoud van de verschillende vaardigheden voor een programmeur op te lijsten en te detailleren. Dit gebeurt onder meer via competentieomschrijvingen die een vaste zinsopbouw volgen. Het zijn deze beschrijvingen die gehanteerd werden bij de interviews met bedrijven. Omwille van hun gelijkvormige opbouw zijn ze haast in één oogopslag te begrijpen, en daardoor zeer praktisch in gebruik voor het peilen naar competentieverwachtingen bij bedrijven. Steekproef van twintig Belgische bedrijven — Het onderzoek steunt op de bevraging van zaakvoerders of (direct) leidinggevenden van de programmeurs bij twintig Belgische bedrijven. Deze steekproef werd samengesteld uit een lijst van bedrijven die eerder gebruik maakten van de informatica-opleidingen van Cevora. De selectie gebeurde verder op basis van de beschikbaar- en bereidwilligheid van een Nederlandstalige gesprekspartner, en beoogde eveneens een zo groot mogelijke geografische spreiding en een variatie in grote en kleine bedrijven, al dan niet gespecialiseerd in ICT. Gestandaardiseerde interviews — De interviews zijn volledig gestandaardiseerd en kwantitatief van inslag. Dit verzekert de onderlinge vergelijkbaarheid van de interviews en maakt een transparante analyse en rapportering mogelijk. Elk interview levert soortgelijke gegevens op rond het leertraject, de relatieve tijdsintensiteit en moeilijkheidsgraad van competenties, mogelijke evoluties in de competentieverwachtingen en de gehanteerde programmeertalen en omgevingen. De interviews vonden plaats in de periode januari- februari 2012.
PAGINA 6
Basis voor de competentielijst De gehanteerde lijst van competenties is overgenomen uit een voorstudie die Tempera in opdracht van Cevora uitvoerde en die het profiel van programmeur in kaart bracht. (Kwalificatieprofiel Programmeur. Beschrijving van de benodigde competenties voor een programmeur. Tempera -studie in opdracht van Cevora, december 2011)
2. De instapcompetenties doorgelicht 2.1. Een leertraject
De mediaan in plaats van het rekenkundig gemiddelde
Leervolgorde — Op de volgende bladzijden staat het leertraject van een programmeur beschreven. Het geeft aan in welke fase een beginnend programmeur een bepaalde competentie onder de knie heeft. Om te berekenen wanneer een programmeur een competentie heeft aangeleerd, wordt de mediaan van de inschatting van het leertraject door de bedrijven gehanteerd. De mediaan is de middelste waarde van een verdeling. De mediaan werd boven het rekenkundig gemiddelde verkozen, omdat afwijkende scores bij het rekenkundig gemiddelde een veel groter gewicht krijgen. De competenties worden opgedeeld in competenties te beheersen bij aanwerving, en nadien per leerperiode van twee maanden tot het tweede semester.
Een voorbeeld verduidelijkt waarom de mediaan te verkiezen is:
Voor de programmeur resulteert dit in vijf onderscheiden leerfases:
Slechts één bedrijf situeert het aanleren van de vaardigheid na 14 maanden. Werken met de mediaanwaarde nuanceert het gewicht van dit bedrijf, terwijl het rekenkundig gemiddelde dit afwijkende bedrijf een zodanig belang toekent, dat het gemiddelde hoger eindigt dan het oordeel van de zes overige bedrijven.
competenties te beheersen bij aanwerving; competenties aangeleerd na 2 maanden; competenties aangeleerd na 4 maanden; competenties aangeleerd na 6 maanden; competenties aangeleerd in het tweede semester.
Uitdieping gebaseerd op belang — Het beschreven leertraject wordt aangevuld met informatie over het relatieve belang van de competenties. In de tabellen op de volgende bladzijden geeft de kolom uiterst rechts het belang van een competentie weer. Dit belang is gebaseerd op de tijdsintensiteit en moeilijkheidsgraad van de competenties. Aan bedrijven werd gevraagd een ‘tijdsscore’ en een ‘moeilijkheidsscore’ toe te kennen aan de verschillende competenties (zie bijlage). Het gemiddelde van beide scores resulteerde in een schaal voor het relatieve belang van de competenties. De schaal verdeelt de competenties in vier groepen. De belangrijkste competenties krijgen vier zwarte bolletjes naast hun omschrijving, de minst belangrijke één.
PAGINA 7
Een vaardigheid krijgt van zeven geïnterviewden de volgende scores: 5 maanden 6 maanden 6 maanden 6 maanden 6 maanden 7 maanden 14 maanden
Mediaan = 6 Rekenkundig gemiddelde = 7,1
De competenties ingedeeld op basis van hun relatief belang Het belang van competenties binnen het profiel wordt afgeleid uit hun score voor tijdsintensiteit en moeilijkheidsgraad. Via het gemiddelde van beide waardes worden de competenties van hoog naar laag gerangschikt in vier groepen die telkens een kwart van het totale aantal competenties vertegenwoordigen. Het aantal zwarte bolletjes geeft aan tot welk kwart een competentie behoort: Minst belangrijk || || || \/ Meest belangrijk
●●●● ●●●● ●●●● ●●●●
Competenties die zich tussenin situeren, krijgen naargelang hun belang in het profiel twee of drie zwarte bolletjes. De schaal geeft in een oogopslag een indicatie van het belang van elke competentie binnen het leertraject en vormt dus een belangrijke inhoudelijke uitdieping. Consensus over competenties verwacht van volleerde programmeurs — Bedrijven zijn het grotendeels eens wat betreft de competenties die ze verwachten van hun volleerde programmeurs. Op twee na alle competenties uit de voorgelegde lijst worden door meer dan 2/3 van de bedrijven onderschreven als must voor hun volleerde programmeurs. Deze vaardigheden staan in de tabellen tegen een witte achtergrond vermeld. De twee resterende competenties worden door respectievelijk 13 (comp. 25 ivm. Handleidingen voor eindgebruikers) en 11 (comp. 33 ivm rechten en plichten met betrekking tot het gebruik van software) bedrijven verwacht van hun programmeurs. Deze vaardigheden staan afgebeeld tegen een grijze achtergrond. Het zijn vaardigheden die blijkbaar minder vaak verwacht worden van programmeurs, maar niettemin relevant blijven: méér van één derde van de bedrijven vindt ze immers wel degelijk essentieel voor hun programmeur.
PAGINA 8
Interpretatie van de tabellen De tabellen met het leertraject geven per competentie informatie over drie elementen: de chronologische plaats in het leertraject, bij aanwerving, en per verdere leerperiode; het relatieve belang van elke competentie op basis van tijdsintensiteit en moeilijkheid (het aantal zwarte bolletjes); het al dan niet bestaan van een consensus over de noodzaak van de competentie binnen het profiel (de witte of grijze achtergrondkleur). De gecombineerde resultaten voor de drie elementen maken het mogelijk de sleutelcompetenties duidelijk te onderscheiden van de minder belangrijke competenties. Voor sommige competenties stemmen de drie elementen minder overeen. In dat geval is het uiteindelijke gewicht van een competentie binnen het profiel voor interpretatie vatbaar. Een grijze achtergrondkleur of een plaats verderop in het leertraject nuanceren immers enigszins het belang van een competentie met veel zwarte bolletjes. Hoewel dus niet alle bedrijven zo’n competentie (bij aanvang) van programmeur verwachten, is ze op basis van tijdsintensiteit en moeilijkheid nog steeds van belang.
2.2. Het leertraject van de programmeur Hoge aanwervingsdrempel — Voor de programmeur bestaat er een aanzienlijke aanwervingsdrempel. Bij aanwerving moeten 19 van de 33 competenties beheerst zijn. Dit komt overeen met 57,6 procent van het totale aantal competenties. Tabel 1 geeft een overzicht. Zes van de negentien competenties zijn zeer belangrijk (vier zwarte bolletjes). Drie andere competenties krijgen elk drie zwarte bolletjes en behoren dus eveneens tot de belangrijkste helft competenties. Eén van de twee competenties uit het profiel waarover minder eensgezindheid bestaat of ze essentieel zijn voor een programmeur, duikt eveneens op in deze lijst. Ze staat tegen een grijze achtergrond. De prioritair te beheersen competenties spreiden zich over een groot variatie aan competentie. Van enkele competentieclusters wordt verwacht dat ze reeds volledig beheerst worden. Dit is het geval voor de clusters code schrijven, testen, en overleg plegen. Ook het duo competenties met betrekking tot leervermogen en –bereidheid ( opvolgen van evoluties en het opnemen van leerervaringen) kan als geheel worden beschouwd dat reeds bij aanwerving verworven dient te zijn. Ook een aantal andere competenties met een belangrijke attitude component vinden we in dit lijstje: discreet omgaan met informatie, tijdsbesteding loggen en kunnen omgaan met veranderingen. Daarnaast valt in de lijst ook op dat reeds een deel van de competenties uit de cluster analyse voorkomen. Tabel 1: De aanwervingsdrempel voor een beginnend programmeur Categorie CODE SCHRIJVEN
CODE SCHRIJVEN
PAGINA 9
Competentie
Belang
1. kan, aan de hand van een programmeerontwikkelomgeving eigen aan de programmeeromgeving (bvb. Eclipse en Netbeans voor Java; Visual Studio voor .net), uitvoerbare code genereren om een volledig uitgeanalyseerd ontwerp (één op één relatie tussen code en ontwerp) te realiseren
●●●●
2. kan standaarden en bedrijfs- en projectgebonden afspraken, regels en conventies omtrent de manier wanneer waarop code eruit moet zien (bijv. naamgeving variabelen, …) toepassen om gestandaardiseerde en bedrijfs- of projectconforme code op te leveren
●●●●
CODE SCHRIJVEN
3. kan de bijhorende programmadocumentatie (over functionaliteit, installatie, opbouw, …) van een benoemd stuk code, bibliotheek (libraries, API’s) of programma begrijpen om de bestaande code te integreren, te hergebruiken of gericht aan te passen bij het oplossen van een specifieke ontwikkeluitdaging
●●●●
CODE SCHRIJVEN
4. kan, eventueel aan de hand van bijhorende documentatie, de structuren van een ontwikkelpatroon concreet invullen om een benoemd ontwikkelpatroon (design pattern) toe te passen op een specifieke ontwikkeluitdaging
●●●●
ANALYSE
7. kan, aan de hand van benoemde en gedefinieerde ontwikkeluitdagingen, oplossingsstrategieën zoeken (op het internet, via overleg met collega’s, in bestaande programma’s, op basis van ervaring en creativiteit) om niet-uitgeanalyseerde opdrachten te detailleren in een onmiddellijk uitvoerbaar ontwerp
●●●●
9. kan gekregen opdrachten die geschetst zijn via een ontwerp aan de hand van pseudocode en grafische schema’s (UML, flowcharts, …) begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
●●●●
ANALYSE
10. kan gekregen opdrachten die geformuleerd zijn in een natuurlijke taal begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
●●●●
PROGRAMMA’S DOCUMENTEREN
16. kan het gebruik en de installatie van een zelf geschreven stuk code schriftelijk documenteren in een handleiding (deployment guide) om bevoegden (bvb. andere projectmedewerkers) toe te laten om en te ondersteunen bij het installeren en gebruiken van het gedocumenteerde onderdeel
●●●●
PROGRAMMA’S DOCUMENTEREN
17. kan de interne opbouw van een zelf geschreven stuk code (onderdeel of programma), onder meer via commentaren, schriftelijk documenteren om andere bevoegden (bvb. andere projectmedewerkers) toe te laten het gedocumenteerde onderdeel vlot te hergebruiken, onderhouden en corrigeren
●●●●
TESTEN
19. kan, aan de hand van bepaalde testingscenario’s, onderdelen zelfgeschreven code (units) testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
●●●●
TESTEN
20. kan, aan de hand van bepaalde testingscenario’s, onderdelen code (units) die door anderen zijn geschreven testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
●●●●
ANALYSE
PAGINA 10
TIJDSBESTEDING DOCUMENTEREN
22. kan, eventueel aan de hand van een tijdsregistratiesysteem, de bestede tijd per opdracht of project loggen om correcte facturatie toe te laten en om te gebruiken als basis voor latere estimaties
●●●●
OVERLEG PLEGEN MET PROJECTTEAM
23. kan binnen het projectteam mondeling en schriftelijk, onder andere in het kader van een iteratief ontwikkelproces, rapporteren over de voortgang (resultaten, moeilijkheden, vooruitzichten) van de eigen opdracht om bij te dragen tot een correcte projectopvolging en verdere planning
●●●●
OVERLEG PLEGEN MET PROJECTTEAM
24. kan, voornamelijk mondeling, binnen het projectteam overleg plegen over de aanpak van een opdracht (argumenten uitwisselen, feedback geven en krijgen, …) om in samenspraak de optimale oplossingstrategie te bepalen
●●●●
HANDLEIDING VOOR EINDGEBRUIKERS OPSTELLEN
25. kan handleidingen opstellen voor het zelf ontwikkelde programma om eindgebruikers toe te laten het geschreven programma efficiënt te gebruiken
●●●●
ADEQUAAT OMGAAN MET VERANDERINGEN
27. kan veranderingen (in team, in manier van werken, in projectdoelen, in klanten) een plaats geven om ongeacht de gewijzigde omstandigheden de gestelde kwaliteitsstandaarden te bereiken
●●●●
EVOLUTIES BINNEN TALEN EN OMGEVINGEN OPVOLGEN
29. kan actief evoluties binnen de gehanteerde talen en omgevingen (bvb. updates, nieuwe bibliotheken, … ) opvolgen om op elk moment een actueel beeld te hebben van de beschikbare oplossingsmogelijkheden voor een ontwikkeluitdaging
●●●●
ONTWIKKELERVARINGEN EN FEEDBACK OPNEMEN ALS LEERERVARINGEN
30. kan eerdere ontwikkelervaringen en feedback van partners (collega’s, andere projectmedewerkers, klanten, …) opnemen als leerervaringen om vergelijkbare problemen en uitdagingen in de toekomst efficiënter aan te pakken
●●●●
DISCREET OMGAN MET VERTROUWELIJKE GEGEVENS
31. kan bedrijfsinformatie (intern of van klanten) discreet behandelen en zonodig afschermen om te vermijden dat onbevoegden zicht krijgen op de gegevens
●●●●
Vier extra competenties in eerste twee maanden — Tabel 2 geeft een overzicht van de competenties die een beginnend programmeur moet verwerven tijdens de eerste twee maanden voltijds werken. Het gaat om vier van de in totaal 33 noodzakelijke competenties voor een programmeur. Eén competentie daarvan is zeer belangrijk (vier zwarte bolletjes), een tweede telt drie zwarte bolletjes is behoort dus eveneens tot de belangrijkste helft competenties. Samen
PAGINA 11
met de competenties uit de aanwervingsdrempel beheerst de beginnende beroepsbeoefenaar na twee maanden werkervaring dus 23 van de 33 competenties, of 69,7 procent van het totale pakket. Daartoe behoren intussen ook alle competenties die te maken hebben met het documenteren van programma’s. Daarnaast wordt er een bijkomende analyse-competentie verwacht en komen er de competenties rond versiebeheer en het schakelen tussen deelopdrachten bij. Tabel 2: Het leertraject van een beginnend programmeur tijdens de eerste en de tweede maand Categorie
Competentie
Belang
ANALYSE
8. kan, aan de hand van pseudocode en grafische schema’s (bvb. UML, flowcharts, …), niet-uitgeanalyseerde opdrachten detailleren om een onmiddellijk uitvoerbaar ontwerp te bekomen
●●●●
PROGRAMMA’S DOCUMENTEREN
18. kan, eventueel in het kader van een issuemanagementsysteem, problemen met stukken code of programma’s schriftelijk documenteren (oa. symptomen en oorzaken) om gelijkaardige problemen in de toekomst te kunnen voorkomen of snel te kunnen verhelpen
●●●●
VERSIES BEHEREN
21. kan, eventueel aan de hand van een versiebeheerssysteem, de verschillende versies van een programma of van een stuk code documenteren om sneller en efficiënter programma’s te kunnen onderhouden en corrigeren
●●●●
ADEQUAAT SCHAKELEN TUSSEN VERSCHILLENDE PROJECTEN/OPDRACHTEN DIE PARALLEL LOPEN
28. kan tussen verschillende deelopdrachten schakelen om parallelle opdrachten volgens de gestelde kwaliteitsstandaarden en tijdslimieten te volbrengen
Vijf bijkomende competenties na vier maanden — Tabel 3 geeft een overzicht van de competenties die een programmeur verwerft tijdens maand drie en vier voltijdse tewerkstelling. Het gaat over vijf competenties, waarvan vier uit de cluster analyse en een vijfde die betrekking heeft op het inschatten van de werklast. De plaats die ze innemen in het dit gemiddelde
PAGINA 12
●●●●
leertraject verbergt echter heel wat variatie in waar deze competenties zich situeren in het leertraject dat bedrijven individueel voorzien. Sommigen bedrijven situeren deze competenties bij aanwerving, anderen verwachten ze na een jaar of zelfs twee jaar. Tabel 3: Het leertraject van een beginnend programmeur tijdens de derde en de vierde maand Categorie ANALYSE
Competentie
Belang
5. kan de eigen vrijheidsmarge om functionaliteiten te realiseren in code, eventueel ten aanzien van een meegegeven ontwerp, inschatten om de meest efficiënte ontwikkelingsstrategie te bepalen (ontwerp schools volgen, ontwerp autonoom bijsturen, via overleg aansturen op bepaalde wijzigingen, …)
●●●●
ANALYSE
6. kan, via een verwijzing naar patronen en structuren, een ontwikkeluitdaging beschrijven en definiëren om voor niet-uitgeanalyseerde opdrachten gericht oplossingsstrategieën zoeken
●●●●
ANALYSE
11. kan, aan de hand van kennis van de gebruiks- en technische omgeving waarin de toepassing moet werken, vereisten die niet-geëxpliciteerd zijn, afleiden om de opdrachtbeschrijving te detailleren of om er rechtstreeks rekening mee te houden bij de uitwerking
●●●●
13. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus- en minpunten met betrekking tot ontwikkeltijd van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
●●●●
26. kan, rekening houdend met de eigen capaciteiten, de eigen werklast verbonden met een opdracht inschatten in termen van werkuren en doorlooptijd om bij te dragen aan een correcte projectplanning
●●●●
ANALYSE
WERKLAST INSCHATTEN
Nog vier competenties na zes maanden — Tabel 4 bevat de vier competenties die de beginnende programmeur in maanden vijf en zes moet verwerven. Opnieuw gaat achter de
PAGINA 13
plaats van deze competenties in het gemiddelde leertraject echter heel wat variatie schuil in de situering van deze competenties bij bedrijven. Tabel 4: Het leertraject van een beginnend programmeur tijdens de vijfde en de zesde maand Categorie
Competentie
Belang
12. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot performantie en stabiliteit van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
●●●●
14. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot onderhoudbaarheid van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht.
●●●●
INZICHT IN VEILIGHEIDSRISICO’S
32. kan de veiligheidsrisico’s verbonden aan een bepaalde ontwikkeling (zowel gedurende het ontwikkelproces, als met betrekking tot de afgewerkte applicatie) (verlies van gegevens, ongewenste publiciteit van gegevens, blokkeren van een systeem, …) bepalen om gepaste oplosstrategieën te kunnen bepalen
●●●●
RECHTEN EN PLICHTEN VERBONDEN MET HET GEBRUIK VAN SOFTWARE INTERPRETEREN
33. kan de juridische rechten en plichten verbonden met het gebruik van bestaande code en programma’s interpreteren om de wenselijkheid om bestaande code en programma’s te integreren, te bepalen
ANALYSE
ANALYSE
Laatste competentie in tweede semester — Tabel 5 bevat de resterende competentie die de beginnende beroepsbeoefenaar onder de knie krijgt in het tweede halfjaar voltijds werk. Ook
PAGINA 14
●●●●
over de plaats van deze competentie in het leertraject verschillen bedrijven echter nogal van mening. Tabel 5: Het leertraject van een beginnend programmeur tijdens het tweede semester tewerkstelling Categorie ANALYSE
Competentie 15. kan de plus- en minpunten van een oplossingsstrategie in verschillende domeinen (performantie, stabiliteit, ontwikkeltijd, onderhoudbaarheid, veiligheid, …) tegen elkaar afwegen om de optimale oplossingsstrategie voor een specifieke opdracht te bepalen
Onenigheid in situering in leertraject kan verklaard worden door belang context — De aangehaalde variatie tussen bedrijven in de situering van competenties die in dit gemiddeld leertraject na meer dan twee maanden gesitueerd worden, is niet toevallig. De meningsverschillen hebben immers vooral betrekking op competenties die verwijzen naar abstracte structuren en niet-nader gedefinieerde patronen, maw. de competenties waarvan de link met bekwaamheid grotendeels bepaald wordt door de context waarbinnen ze ingezet moeten worden. De interviewresultaten zijn consistent in de mate dat bedrijven de betreffende competenties bij hun programmeurs reeds verwachten van bij aanwerving als het gaat om een eenvoudige, beperkte en goed afgebakende context. Als de competentie echter beheerst moet worden binnen een complexe en gevarieerde context, verwacht men deze pas veel later in het leertraject. Het wijst erop dat de beginselen reeds van bij de aanwerving aanwezig moeten zijn, maar dat er heel wat ervaring vereist is om deze ook met succes in te zetten in complexe en gevarieerde contexten. Gemiddeld leertraject is consistent binnen een bepaalde context — Dat de geciteerde variaties gelinkt zijn aan de context die men als referentie aanhoudt voor de evaluatie van competenties en de verschillende beoordelingen wel degelijk consistent zijn, blijkt ook uit de volgorde waarin de competenties in het gemiddelde leertraject hun plaats krijgen. Niet toevallig is competentie
PAGINA 15
Belang
●●●●
15 die betrekking heeft op het afwegen van alle deeldomeinen die belangrijk zijn om een goed programma te schrijven, de laatste competentie in het leertraject. Er kan gesteld worden dat de gemiddelde leertraject een goed beeld heeft van hoe de verschillende competenties achtereenvolgens verwacht worden binnen een bepaalde afgebakende context.
PAGINA 16
2.3. Samenvatting: het twaalfmaandenprofiel Consensus over de verwachte competenties — Over bijna alle competenties zijn bedrijven het eens dat een volleerd programmeur deze moet beheersen. Geen enkele competentie werd door minder dan één derde van de bedrijven genoemd, slechts twee competenties worden door niet meer dan 2/3 van de respondenten geacht tot het profiel te behoren. De mate van overeenkomst over het beroepsprofiel toont aan dat de gehanteerde lijst van competenties representatief is zowel ten aanzien van het onderzochte beroep als ten aanzien van de geïnterviewde personen. Dit geeft deze studie een grote geldigheid.
Schematische voorstelling van het leertraject — Grafiek 1 stelt het leertraject van een programmeur voor. De X-as onderscheidt de verschillende leerperiodes, de Y-as geeft het aantal te beheersen competenties. De grafiek illustreert dat het zwaartepunt voor het leertraject in termen van aantal competenties bij de aanwerving ligt.
PAGINA 17
Aantal nog te verwerven competenties Aantal verworven competenties
45 40 35
Aantal competenties
Voor complexe en gevarieerde contexten kan het beheersen van sommige competenties jaren duren — Voor bepaalde competenties (vooral bepaalde analysevaardigheden) zijn er grote verschillen in het tijdstip waarop bedrijven ze verworven willen zien. De grote verschillen in inschatting kunnen toegeschreven worden aan de verschillende contexten die voor de bedrijven het referentiekader vormen (complexiteit van de toepassing, variatie in te analyseren toepassingen). Ze wijzen erop dat de programmeurs de competenties reeds dienen te beheersen binnen eenvoudige en goed afgebakende contexten, maar dat het verwerven van deze competenties ten aanzien van complexe en gevarieerde contexten soms jaren in beslag kan nemen. vertrouwd moeten zijn met de vaardigheden voor
Grafiek 1: Het leertraject visueel voorgesteld
30 25
14
10
5
1
0
32
33
20 15 10
19
23
28
5 0
Bi ja an w N er a vi tw ng ee m aa N nd a en vi er m aa N nd a en ze s m aa nd en N a éé n ja ar
Steile verwachtingen voor de beginner — Het leertraject biedt een overzicht van de competenties die verwacht worden van een beginnend programmeur. Hieruit blijkt vooral een hoge aanwervingsdrempel (bijna 60 procent van de competenties moet reeds beheerst worden bij aanwerving). Door de band genomen dienen ook de resterende competenties vrij snel verworven te worden (op één na alle competenties worden gesitueerd in het eerste semester voltijdse tewerkstelling).
3. Het instapcompetentieprofiel en opleiding Van instapcompetentieprofiel naar opleiding — Het instapcompetentieprofiel is een vertrekpunt voor het uitwerken van een opleidingsaanbod. Via de selectie van instapcompetenties uit het beroepsprofiel en het bepalen van de onderlinge waardeverhoudingen tussen die instapcompetenties, levert het informatie op die helpt bij het beantwoorden van een aantal cruciale vragen:
Is het zinvol een onderscheid te maken tussen een basis- en een vervolmakingsopleiding? Kiest men best voor een intensief totaalpakket?; Moet men de opleiding beperken tot een selectie van competenties?; … Welke competenties verdienen aandacht in een (eventuele) basisopleiding? Welke competenties dienen in een (eventuele) vervolmakingsopleiding aan bod te komen? Welke competenties verdienen tijdens een opleiding extra aandacht? Met welke trends moet de opleider rekening houden bij het uitstippelen van het aanbod?
PAGINA 18
Leerdoelstellingen In het kader van opleidingen laten de competenties zich lezen als leerdoelstellingen. Ze omschrijven wat iemand op het einde van een opleiding moet beheersen. Hoe een bepaalde competentie aangeleerd moet worden, is niet gespecifieerd. Het instapcompetentieprofiel is dus geen kant-en-klaar opleidingsprogramma, maar verduidelijkt wel de doelen en prioriteiten. Een opleidingsprogramma moet deze doelen en prioriteiten vervolgens vertalen in vorming en training.
3.1. Totaalopleiding gericht op eenvoudige en goed afgebakende realisaties Totaalopleiding binnen eenvoudige contexten — Het instapcompetentieprofiel levert sterke argumenten op om alle competenties uit het kwalificatieprofiel op te nemen als leerdoelstellingen van een opleiding voor werkzoekenden. Om kandidaat-programmeurs af te leveren die een reële kans maken op aanwerving en ook voor werkgevers een interessante aanwinst kunnen zijn, kan best geopteerd worden voor een opleiding die alle competenties aanleert, weliswaar binnen een eenvoudige context. Dit betekent dat de competenties nagestreefd worden ten aanzien van eenvoudige en goed afgebakende realisaties. Deze conclusie steunt op de volgende vaststellingen:
Er is nauwelijks verdeeldheid over de competenties die van toepassing op een programmeur. Alle bedrijven vragen zowat dezelfde competenties van hun programmeurs. Differentiëren of het laten vallen van bepaalde leerdoelstellingen omwille van niet gevraagd, blijkt niet op zijn plaats.
Bedrijven verwachten bijna 60 procent van de competenties voor een programmeur reeds bij aanwerving. Wie deze competentie niet op zak heeft, komt zelfs niet in aanmerking voor de job.
In de eerste twee maanden na aanwerving moeten nog vier extra vaardigheden onder de knie gekregen worden. Werkgevers die kandidaten aanwerven die enkel voldoen aan de aanwervingsdrempel vergen onmiddellijk na aanwerving bijscholing. Kandidaten die deze extra competenties reeds beheersen hebben een daardoor een stapje voor op de gemiddelde kandidaat. Een opleiding die ook deze competenties in het leertraject opneemt voorziet sowieso reeds in een opleiding die bijna 70 procent van de competenties bijbrengt.
De opvallende variatie in situering in het leertraject van de resterende competenties, met daaraan gelinkt dat sommigen deze competenties reeds bij aanwerving verwachten, wijst erop dat bedrijven willen dat kandidaat-programmeurs deze competenties van bij de
PAGINA 19
aanwerving reeds in beginsel beheersen. Met name binnen eenvoudige en goed afgebakende contexten, zouden ze deze vaardigheden moeten kunnen inzetten. Virtueel leer- en uitwisselingplatform als verlengstuk — In de loop van de interviews werd gesuggereerd om in het verlengde van een opleiding die de vaardigheden aanleert ten aanzien van eenvoudige en goed afgebakende realisaties, een virtueel leer- en uitwisselingsplatform te voorzien. Dat zou cursisten kunnen ondersteunen in hun vervolmaking als programmeur. Beter dan bij elke andere doelgroep sluit een virtueel platform immers goed aan bij het profiel van een programmeur. Bovendien laat het medium goed toe om het soort ondersteuning te bieden dat een zich ontwikkelende programmeur kan gebruiken (bvb. uitwisselen van code). Het biedt kansen om flexibel in te spelen om de verschillende specialisaties en contexten waarin programmeurs zich verder bekwamen.
PAGINA 20
3.2. Leerdoelstellingen voor de programmeur Alle competenties aanleren binnen eenvoudige context — Tabel 6 lijst de competenties op die een dergelijke totaalopleiding aanbiedt en rangschikt ze volgens hun belang op basis van tijdsintensiteit en moeilijkheid. Het gemiddelde leertraject zoals weergegeven in het vorige hoofdstuk kan extra houvast bieden om de volgorde te bepalen waarin de competenties stap voor stap aan de cursisten worden bijgebracht. Tabel 6: Leerdoelstellingen van een opleiding ‘programmeur’ Categorie CODE SCHRIJVEN
Competentie
Belang
1. kan, aan de hand van een programmeerontwikkelomgeving eigen aan de programmeeromgeving (bvb. Eclipse en Netbeans voor Java; Visual Studio voor .net), uitvoerbare code genereren om een volledig uitgeanalyseerd ontwerp (één op één relatie tussen code en ontwerp) te realiseren
●●●●
2. kan standaarden en bedrijfs- en projectgebonden afspraken, regels en conventies omtrent de manier wanneer waarop code eruit moet zien (bijv. naamgeving variabelen, …) toepassen om gestandaardiseerde en bedrijfs- of projectconforme code op te leveren
●●●●
ANALYSE
10. kan gekregen opdrachten die geformuleerd zijn in een natuurlijke taal begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
●●●●
ANALYSE
15. kan de plus- en minpunten van een oplossingsstrategie in verschillende domeinen (performantie, stabiliteit, ontwikkeltijd, onderhoudbaarheid, veiligheid, …) tegen elkaar afwegen om de optimale oplossingsstrategie voor een specifieke opdracht te bepalen
●●●●
PROGRAMMA’S DOCUMENTEREN
17. kan de interne opbouw van een zelf geschreven stuk code (onderdeel of programma), onder meer via commentaren, schriftelijk documenteren om andere bevoegden (bvb. andere projectmedewerkers) toe te laten het gedocumenteerde onderdeel vlot te hergebruiken, onderhouden en corrigeren
●●●●
TESTEN
19. kan, aan de hand van bepaalde testingscenario’s, onderdelen zelfgeschreven code (units) testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
●●●●
CODE SCHRIJVEN
PAGINA 21
OVERLEG PLEGEN MET PROJECTTEAM
23. kan binnen het projectteam mondeling en schriftelijk, onder andere in het kader van een iteratief ontwikkelproces, rapporteren over de voortgang (resultaten, moeilijkheden, vooruitzichten) van de eigen opdracht om bij te dragen tot een correcte projectopvolging en verdere planning
●●●●
WERKLAST INSCHATTEN
26. kan, rekening houdend met de eigen capaciteiten, de eigen werklast verbonden met een opdracht inschatten in termen van werkuren en doorlooptijd om bij te dragen aan een correcte projectplanning
●●●●
ADEQUAAT SCHAKELEN TUSSEN VERSCHILLENDE PROJECTEN/OPDRACHTEN DIE PARALLEL LOPEN CODE SCHRIJVEN
28. kan tussen verschillende deelopdrachten schakelen om parallelle opdrachten volgens de gestelde kwaliteitsstandaarden en tijdslimieten te volbrengen
●●●●
3. kan de bijhorende programmadocumentatie (over functionaliteit, installatie, opbouw, …) van een benoemd stuk code, bibliotheek (libraries, API’s) of programma begrijpen om de bestaande code te integreren, te hergebruiken of gericht aan te passen bij het oplossen van een specifieke ontwikkeluitdaging
●●●●
CODE SCHRIJVEN
4. kan, eventueel aan de hand van bijhorende documentatie, de structuren van een ontwikkelpatroon concreet invullen om een benoemd ontwikkelpatroon (design pattern) toe te passen op een specifieke ontwikkeluitdaging
●●●●
ANALYSE
5. kan de eigen vrijheidsmarge om functionaliteiten te realiseren in code, eventueel ten aanzien van een meegegeven ontwerp, inschatten om de meest efficiënte ontwikkelingsstrategie te bepalen (ontwerp schools volgen, ontwerp autonoom bijsturen, via overleg aansturen op bepaalde wijzigingen, …)
●●●●
7. kan, aan de hand van benoemde en gedefinieerde ontwikkeluitdagingen, oplossingsstrategieën zoeken (op het internet, via overleg met collega’s, in bestaande programma’s, op basis van ervaring en creativiteit) om niet-uitgeanalyseerde opdrachten te detailleren in een onmiddellijk uitvoerbaar ontwerp
●●●●
ANALYSE
8. kan, aan de hand van pseudocode en grafische schema’s (bvb. UML, flowcharts, …), niet-uitgeanalyseerde opdrachten detailleren om een onmiddellijk uitvoerbaar ontwerp te bekomen
●●●●
ANALYSE
11. kan, aan de hand van kennis van de gebruiks- en technische omgeving waarin de toepassing moet werken, vereisten die niet-geëxpliciteerd zijn, afleiden om de opdrachtbeschrijving te detailleren of om er rechtstreeks rekening mee te houden bij de uitwerking
●●●●
ANALYSE
PAGINA 22
ANALYSE
13. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot ontwikkeltijd van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
●●●●
14. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot onderhoudbaarheid van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht.
●●●●
ANALYSE
6. kan, via een verwijzing naar patronen en structuren, een ontwikkeluitdaging beschrijven en definiëren om voor niet-uitgeanalyseerde opdrachten gericht oplossingsstrategieën zoeken
●●●●
ANALYSE
9. kan gekregen opdrachten die geschetst zijn via een ontwerp aan de hand van pseudocode en grafische schema’s (UML, flowcharts, …) begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
●●●●
12. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot performantie en stabiliteit van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
●●●●
PROGRAMMA’S DOCUMENTEREN
16. kan het gebruik en de installatie van een zelf geschreven stuk code schriftelijk documenteren in een handleiding (deployment guide) om bevoegden (bvb. andere projectmedewerkers) toe te laten om en te ondersteunen bij het installeren en gebruiken van het gedocumenteerde onderdeel
●●●●
PROGRAMMA’S DOCUMENTEREN
18. kan, eventueel in het kader van een issuemanagementsysteem, problemen met stukken code of programma’s schriftelijk documenteren (oa. symptomen en oorzaken) om gelijkaardige problemen in de toekomst te kunnen voorkomen of snel te kunnen verhelpen
●●●●
ANALYSE
ANALYSE
PAGINA 23
TIJDSBESTEDING DOCUMENTEREN
22. kan, eventueel aan de hand van een tijdsregistratiesysteem, de bestede tijd per opdracht of project loggen om correcte facturatie toe te laten en om te gebruiken als basis voor latere estimaties
●●●●
OVERLEG PLEGEN MET PROJECTTEAM
24. kan, voornamelijk mondeling, binnen het projectteam overleg plegen over de aanpak van een opdracht (argumenten uitwisselen, feedback geven en krijgen, …) om in samenspraak de optimale oplossingstrategie te bepalen
●●●●
HANDLEIDING VOOR EINDGEBRUIKERS OPSTELLEN
25. kan handleidingen opstellen voor het zelf ontwikkelde programma om eindgebruikers toe te laten het geschreven programma efficiënt te gebruiken
●●●●
TESTEN
20. kan, aan de hand van bepaalde testingscenario’s, onderdelen code (units) die door anderen zijn geschreven testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
●●●●
VERSIES BEHEREN
21. kan, eventueel aan de hand van een versiebeheerssysteem, de verschillende versies van een programma of van een stuk code documenteren om sneller en efficiënter programma’s te kunnen onderhouden en corrigeren
●●●●
ADEQUAAT OMGAAN MET VERANDERINGEN
27. kan veranderingen (in team, in manier van werken, in projectdoelen, in klanten) een plaats geven om ongeacht de gewijzigde omstandigheden de gestelde kwaliteitsstandaarden te bereiken
●●●●
EVOLUTIES BINNEN TALEN EN OMGEVINGEN OPVOLGEN
29. kan actief evoluties binnen de gehanteerde talen en omgevingen (bvb. updates, nieuwe bibliotheken, … ) opvolgen om op elk moment een actueel beeld te hebben van de beschikbare oplossingsmogelijkheden voor een ontwikkeluitdaging
●●●●
ONTWIKKELERVARINGEN EN FEEDBACK OPNEMEN ALS LEERERVARINGEN
30. kan eerdere ontwikkelervaringen en feedback van partners (collega’s, andere projectmedewerkers, klanten, …) opnemen als leerervaringen om vergelijkbare problemen en uitdagingen in de toekomst efficiënter aan te pakken
●●●●
DISCREET OMGAN MET VERTROUWELIJKE GEGEVENS
31. kan bedrijfsinformatie (intern of van klanten) discreet behandelen en zonodig afschermen om te vermijden dat onbevoegden zicht krijgen op de gegevens
INZICHT IN VEILIGHEIDSRISICO’S
PAGINA 24
32. kan de veiligheidsrisico’s verbonden aan een bepaalde ontwikkeling (zowel gedurende het ontwikkelproces, als met betrekking tot de afgewerkte applicatie) (verlies van gegevens, ongewenste publiciteit van gegevens, blokkeren van een systeem, …) bepalen om gepaste oplosstrategieën te kunnen bepalen
●●●● ●●●●
RECHTEN EN PLICHTEN VERBONDEN MET HET GEBRUIK VAN SOFTWARE INTERPRETEREN
PAGINA 25
33. kan de juridische rechten en plichten verbonden met het gebruik van bestaande code en programma’s interpreteren om de wenselijkheid om bestaande code en programma’s te integreren, te bepalen
●●●●
3.3. Opleiding en beroepsevoluties Verwachte evoluties — De respondenten gaven bij hun inschatting van het leertraject aan welke evolutie het profiel volgens hen zal doormaken. Op die manier peilde het onderzoek naar trends binnen het competentieprofiel van een programmeur. De respondenten duidden met een pijl de competenties aan die volgens hen in de nabije toekomst in belang zullen afnemen dan wel toenemen. De nabije toekomst werd gedefinieerd als de komende vijf jaar. Afnemend belang: code schrijven — Alle twintig bedrijven voorspelden een dalend belang van in totaal dertien competenties. Van deze dertien werden er vier meer dan twee maal Tabel 7 zet ze op een rijtje. Hier en daar wordt blijkbaar verwacht dat code schrijven zal afnemen aan belang in het geheel van de competentieverwachtingen ten aanzien van een programmeur. Tabel 7: Competenties die volgens meer dan twee bedrijven in belang zullen afnemen
Categorie CODE SCHRIJVEN
CODE SCHRIJVEN
CODE SCHRIJVEN
CODE SCHRIJVEN
PAGINA 26
Competentie
Aantal pijlen
1. kan, aan de hand van een programmeerontwikkelomgeving eigen aan de programmeeromgeving (bvb. Eclipse en Netbeans voor Java; Visual Studio voor .net), uitvoerbare code genereren om een volledig uitgeanalyseerd ontwerp (één op één relatie tussen code en ontwerp) te realiseren
3
2. kan standaarden en bedrijfs- en projectgebonden afspraken, regels en conventies omtrent de manier wanneer waarop code eruit moet zien (bijv. naamgeving variabelen, …) toepassen om gestandaardiseerde en bedrijfs- of projectconforme code op te leveren
3
3. kan de bijhorende programmadocumentatie (over functionaliteit, installatie, opbouw, …) van een benoemd stuk code, bibliotheek (libraries, API’s) of programma begrijpen om de bestaande code te integreren, te hergebruiken of gericht aan te passen bij het oplossen van een specifieke ontwikkeluitdaging
3
4. kan, eventueel aan de hand van bijhorende documentatie, de structuren van een ontwikkelpatroon concreet invullen om een benoemd ontwikkelpatroon (design pattern) toe te passen op een specifieke ontwikkeluitdaging
3
Toenemend belang: analyse, opvolgen evoluties en communiceren — Alle twintig bevraagde bedrijven benoemden ook competenties die in belang zouden stijgen. In totaal werden maar liefst 26 van de 33 competenties in dat verband aangeduid. Ze kregen in totaal 108 pijlen. Tabel 8 heeft een overzicht van de competenties die het vaakst naar voren werden geschoven als competenties die de komende vijf jaar aan belang zouden winnen . Daaruit blijkt dat behalve het opvolgen van evoluties in talen en omgevingen en overleg plegen, vooral de competenties uit de cluster analyse veel kans maken om nog belangrijker te worden. Tabel 8: Competenties die volgens meer dan twee bedrijven in belang zullen toenemen
Categorie
Competentie
Aantal pijlen
EVOLUTIES BINNEN TALEN EN OMGEVINGEN OPVOLGEN
29. kan actief evoluties binnen de gehanteerde talen en omgevingen (bvb. updates, nieuwe bibliotheken, … ) opvolgen om op elk moment een actueel beeld te hebben van de beschikbare oplossingsmogelijkheden voor een ontwikkeluitdaging
10
ANALYSE
8. kan, aan de hand van pseudocode en grafische schema’s (bvb. UML, flowcharts, …), niet-uitgeanalyseerde opdrachten detailleren om een onmiddellijk uitvoerbaar ontwerp te bekomen
7
OVERLEG PLEGEN MET PROJECTTEAM
24. kan, voornamelijk mondeling, binnen het projectteam overleg plegen over de aanpak van een opdracht (argumenten uitwisselen, feedback geven en krijgen, …) om in samenspraak de optimale oplossingstrategie te bepalen
7
ANALYSE
10. kan gekregen opdrachten die geformuleerd zijn in een natuurlijke taal begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
6
12. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot performantie en stabiliteit van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
6
ANALYSE
PAGINA 27
OVERLEG PLEGEN MET PROJECTTEAM
23. kan binnen het projectteam mondeling en schriftelijk, onder andere in het kader van een iteratief ontwikkelproces, rapporteren over de voortgang (resultaten, moeilijkheden, vooruitzichten) van de eigen opdracht om bij te dragen tot een correcte projectopvolging en verdere planning
6
ANALYSE
9. kan gekregen opdrachten die geschetst zijn via een ontwerp aan de hand van pseudocode en grafische schema’s (UML, flowcharts, …) begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
5
11. kan, aan de hand van kennis van de gebruiks- en technische omgeving waarin de toepassing moet werken, vereisten die niet-geëxpliciteerd zijn, afleiden om de opdrachtbeschrijving te detailleren of om er rechtstreeks rekening mee te houden bij de uitwerking
5
13. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot ontwikkeltijd van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
5
19. kan, aan de hand van bepaalde testingscenario’s, onderdelen zelfgeschreven code (units) testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
5
ANALYSE
ANALYSE
TESTEN
ADEQUAAT SCHAKELEN TUSSEN VERSCHILLENDE PROJECTEN/OPDRACHTEN DIE PARALLEL LOPEN
28. kan tussen verschillende deelopdrachten schakelen om parallelle opdrachten volgens de gestelde kwaliteitsstandaarden en tijdslimieten te volbrengen
ANALYSE
6. kan, via een verwijzing naar patronen en structuren, een ontwikkeluitdaging beschrijven en definiëren om voor niet-uitgeanalyseerde opdrachten gericht oplossingsstrategieën zoeken
4
7. kan, aan de hand van benoemde en gedefinieerde ontwikkeluitdagingen, oplossingsstrategieën zoeken (op het internet, via overleg met collega’s, in bestaande programma’s, op basis van ervaring en creativiteit) om niet-uitgeanalyseerde opdrachten te detailleren in een onmiddellijk uitvoerbaar ontwerp
4
ANALYSE
PAGINA 28
5
ANALYSE
14. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot onderhoudbaarheid van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht.
4
20. kan, aan de hand van bepaalde testingscenario’s, onderdelen code (units) die door anderen zijn geschreven testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
4
21. kan, eventueel aan de hand van een versiebeheerssysteem, de verschillende versies van een programma of van een stuk code documenteren om sneller en efficiënter programma’s te kunnen onderhouden en corrigeren
4
ADEQUAAT OMGAAN MET VERANDERINGEN
27. kan veranderingen (in team, in manier van werken, in projectdoelen, in klanten) een plaats geven om ongeacht de gewijzigde omstandigheden de gestelde kwaliteitsstandaarden te bereiken
4
PROGRAMMA’S DOCUMENTEREN
17. kan de interne opbouw van een zelf geschreven stuk code (onderdeel of programma), onder meer via commentaren, schriftelijk documenteren om andere bevoegden (bvb. andere projectmedewerkers) toe te laten het gedocumenteerde onderdeel vlot te hergebruiken, onderhouden en corrigeren
3
TESTEN
VERSIES BEHEREN
PAGINA 29
3.4. Andere bijzonderheden Grote variatie, maar Java en .net met stip — In de interviews werd gepeild naar de gebruikte programmeertaal en de ontwikkelomgevingen waarin gewerkt werd. Daaruit blijkt in eerste instantie de grote variatie aan gehanteerde talen. Twintig bedrijven leverden veertien verschillende talen en omgevingen op. Java en .net blijken veruit de meest populaire ontwikkelomgevingen.
PAGINA 30
Gebruikte talen of ontwikkelomgevingen TAAL/OMGEVING Java .net C++ C# SQL VB.net ASP New Horizon C Oracle Windev Groovy Python SAP
AANTAL BEDRIJVEN 9 7 4 4 4 3 2 1 1 1 1 1 1 1
Bijlage 1: Lijst van competenties die werden voorgelegd aan de respondenten Categorie
Competentie
CODE SCHRIJVEN
1. kan, aan de hand van een programmeerontwikkelomgeving eigen aan de programmeeromgeving (bvb. Eclipse en Netbeans voor Java; Visual Studio voor .net), uitvoerbare code generen om een volledig uitgeanalyseerd ontwerp (één op één relatie tussen code en ontwerp) te realiseren
CODE SCHRIJVEN
2. kan standaarden en bedrijfs- en projectgebonden afspraken, regels en conventies omtrent de manier wanneer waarop code eruit moet zien (bijv. naamgeving variabelen, …) toepassen om gestandaardiseerde en bedrijfs- of projectconforme code op te leveren
CODE SCHRIJVEN
3. kan de bijhorende programmadocumentatie (over functionaliteit, installatie, opbouw, …) van een benoemd stuk code, bibliotheek (libraries, API’s) of programma begrijpen om de bestaande code te integreren, te hergebruiken of gericht aan te passen bij het oplossen van een specifieke ontwikkeluitdaging
CODE SCHRIJVEN
4. kan, eventueel aan de hand van bijhorende documentatie, de structuren van een ontwikkelpatroon concreet invullen om een benoemd ontwikkelpatroon (design pattern) toe te passen op een specifieke ontwikkeluitdaging
ANALYSE
5. kan de eigen vrijheidsmarge om functionaliteiten te realiseren in code, eventueel ten aanzien van een meegegeven ontwerp, inschatten om de meest efficiënte ontwikkelingsstrategie te bepalen (ontwerp schools volgen, ontwerp autonoom bijsturen, via overleg aansturen op bepaalde wijzigingen, …)
ANALYSE
6. kan, via een verwijzing naar patronen en structuren, een ontwikkeluitdaging beschrijven en definiëren om voor nietuitgeanalyseerde opdrachten gericht oplossingsstrategieën zoeken
ANALYSE
7. kan, aan de hand van benoemde en gedefinieerde ontwikkeluitdagingen, oplossingsstrategieën zoeken (op het internet, via overleg met collega’s, in bestaande programma’s, op basis van ervaring en creativiteit) om niet-uitgeanalyseerde opdrachten te detailleren in een onmiddellijk uitvoerbaar ontwerp
ANALYSE
8. kan, aan de hand van pseudocode en grafische schema’s (bvb. UML, flowcharts, …), niet-uitgeanalyseerde opdrachten detailleren om een onmiddellijk uitvoerbaar ontwerp te bekomen
ANALYSE
9. kan gekregen opdrachten die geschetst zijn via een ontwerp aan de hand van pseudocode en grafische schema’s (UML, flowcharts, …) begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
ANALYSE
10. kan gekregen opdrachten die geformuleerd zijn in een natuurlijke taal begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
PAGINA 31
ANALYSE
11. kan, aan de hand van kennis van de gebruiks- en technische omgeving waarin de toepassing moet werken, vereisten die niet-geëxpliciteerd zijn, afleiden om de opdrachtbeschrijving te detailleren of om er rechtstreeks rekening mee te houden bij de uitwerking
ANALYSE
12. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot performantie en stabiliteit van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
ANALYSE
13. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot ontwikkeltijd van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
ANALYSE
14. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot onderhoudbaarheid van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht.
ANALYSE
15. kan de plus- en minpunten van een oplossingsstrategie in verschillende domeinen (performantie, stabiliteit, ontwikkeltijd, onderhoudbaarheid, veiligheid, …) tegen elkaar afwegen om de optimale oplossingsstrategie voor een specifieke opdracht te bepalen
PROGRAMMA’S DOCUMENTEREN
16. kan het gebruik en de installatie van een zelf geschreven stuk code schriftelijk documenteren in een handleiding (deployment guide) om bevoegden (bvb. andere projectmedewerkers) toe te laten om en te ondersteunen bij het installeren en gebruiken van het gedocumenteerde onderdeel
PROGRAMMA’S DOCUMENTEREN
17. kan de interne opbouw van een zelf geschreven stuk code (onderdeel of programma), onder meer via commentaren, schriftelijk documenteren om andere bevoegden (bvb. andere projectmedewerkers) toe te laten het gedocumenteerde onderdeel vlot te hergebruiken, onderhouden en corrigeren
PROGRAMMA’S DOCUMENTEREN
18. kan, eventueel in het kader van een issuemanagementsysteem, problemen met stukken code of programma’s schriftelijk documenteren (oa. symptomen en oorzaken) om gelijkaardige problemen in de toekomst te kunnen voorkomen of snel te kunnen verhelpen
TESTEN
19. kan, aan de hand van bepaalde testingscenario’s, onderdelen zelfgeschreven code (units) testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
PAGINA 32
TESTEN
20. kan, aan de hand van bepaalde testingscenario’s, onderdelen code (units) die door anderen zijn geschreven testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
VERSIES BEHEREN
21. kan, eventueel aan de hand van een versiebeheerssysteem, de verschillende versies van een programma of van een stuk code documenteren om sneller en efficiënter programma’s te kunnen onderhouden en corrigeren
TIJDSBESTEDING DOCUMENTEREN
22. kan, eventueel aan de hand van een tijdsregistratiesysteem, de bestede tijd per opdracht of project loggen om correcte facturatie toe te laten en om te gebruiken als basis voor latere estimaties
OVERLEG PLEGEN MET PROJECTTEAM
23. kan binnen het projectteam mondeling en schriftelijk, onder andere in het kader van een iteratief ontwikkelproces, rapporteren over de voortgang (resultaten, moeilijkheden, vooruitzichten) van de eigen opdracht om bij te dragen tot een correcte projectopvolging en verdere planning
OVERLEG PLEGEN MET PROJECTTEAM
24. kan, voornamelijk mondeling, binnen het projectteam overleg plegen over de aanpak van een opdracht (argumenten uitwisselen, feedback geven en krijgen, …) om in samenspraak de optimale oplossingstrategie te bepalen
HANDLEIDING VOOR EINDGEBRUIKERS OPSTELLEN
25. kan handleidingen opstellen voor het zelf ontwikkelde programma om eindgebruikers toe te laten het geschreven programma efficiënt te gebruiken
WERKLAST INSCHATTEN
26. kan, rekening houdend met de eigen capaciteiten, de eigen werklast verbonden met een opdracht inschatten in termen van werkuren en doorlooptijd om bij te dragen aan een correcte projectplanning
ADEQUAAT OMGAAN MET VERANDERINGEN
27. kan veranderingen (in team, in manier van werken, in projectdoelen, in klanten) een plaats geven om ongeacht de gewijzigde omstandigheden de gestelde kwaliteitsstandaarden te bereiken
ADEQUAAT SCHAKELEN TUSSEN VERSCHILLENDE PROJECTEN/OPDRACHTEN DIE PARALLEL LOPEN
28. kan tussen verschillende deelopdrachten schakelen om parallelle opdrachten volgens de gestelde kwaliteitsstandaarden en tijdslimieten te volbrengen
EVOLUTIES BINNEN TALEN EN OMGEVINGEN OPVOLGEN
29. kan actief evoluties binnen de gehanteerde talen en omgevingen (bvb. updates, nieuwe bibliotheken, … ) opvolgen om op elk moment een actueel beeld te hebben van de beschikbare oplossingsmogelijkheden voor een ontwikkeluitdaging
ONTWIKKELERVARINGEN EN FEEDBACK OPNEMEN ALS LEERERVARINGEN
30. kan eerdere ontwikkelervaringen en feedback van partners (collega’s, andere projectmedewerkers, klanten, …) opnemen als leerervaringen om vergelijkbare problemen en uitdagingen in de toekomst efficiënter aan te pakken
PAGINA 33
DISCREET OMGAN MET VERTROUWELIJKE GEGEVENS
31. kan bedrijfsinformatie (intern of van klanten) discreet behandelen en zonodig afschermen om te vermijden dat onbevoegden zicht krijgen op de gegevens
INZICHT IN VEILIGHEIDSRISICO’S
32. kan de veiligheidsrisico’s verbonden aan een bepaalde ontwikkeling (zowel gedurende het ontwikkelproces, als met betrekking tot de afgewerkte applicatie) (verlies van gegevens, ongewenste publiciteit van gegevens, blokkeren van een systeem, …) bepalen om gepaste oplosstrategieën te kunnen bepalen
RECHTEN EN PLICHTEN VERBONDEN MET HET GEBRUIK VAN SOFTWARE INTERPRETEREN
33. kan de juridische rechten en plichten verbonden met het gebruik van bestaande code en programma’s interpreteren om de wenselijkheid om bestaande code en programma’s te integreren, te bepalen
PAGINA 34
Bijlage 2: Tijdsintensiteit en moeilijkheidsgraad van de competenties voor programmeur (op basis van het twaalfmaandenprofiel). Volledige resultaten Elke respondent werd verzocht om twintig tijdmuntjes en twintig moeilijkheidsmuntjes over de competenties te verdelen. De gemiddelde scores voor tijdsintensiteit en moeilijkheidsgraad verwijzen naar het gemiddelde aantal ‘muntjes’ dat een competentie kreeg toegewezen door de bedrijven. Hoe hoger de scores, hoe tijdrovender en moeilijker de competentie. Onderstaande tabel geeft een overzicht.
Tijdsintensiteit en moeilijkheidsgraad. Volledige resultaten. Categorie CODE SCHRIJVEN
CODE SCHRIJVEN
CODE SCHRIJVEN
Competentie 1. kan, aan de hand van een programmeerontwikkelomgeving eigen aan de programmeeromgeving (bvb. Eclipse en Netbeans voor Java; Visual Studio voor .net), uitvoerbare code genereren om een volledig uitgeanalyseerd ontwerp (één op één relatie tussen code en ontwerp) te realiseren 2. kan standaarden en bedrijfs- en projectgebonden afspraken, regels en conventies omtrent de manier wanneer waarop code eruit moet zien (bijv. naamgeving variabelen, …) toepassen om gestandaardiseerde en bedrijfs- of projectconforme code op te leveren 3. kan de bijhorende programmadocumentatie (over functionaliteit, installatie, opbouw, …) van een benoemd stuk code, bibliotheek (libraries, API’s) of programma begrijpen om de bestaande code te integreren, te hergebruiken of gericht aan te passen bij het oplossen van een specifieke ontwikkeluitdaging
CODE SCHRIJVEN
4. kan, eventueel aan de hand van bijhorende documentatie, de structuren van een ontwikkelpatroon concreet invullen om een benoemd ontwikkelpatroon (design pattern) toe te passen op een specifieke ontwikkeluitdaging
ANALYSE
5. kan de eigen vrijheidsmarge om functionaliteiten te realiseren in code, eventueel ten aanzien van een meegegeven ontwerp, inschatten om de meest efficiënte ontwikkelingsstrategie te bepalen (ontwerp schools volgen, ontwerp autonoom bijsturen, via overleg aansturen op bepaalde wijzigingen, …)
PAGINA 35
Tijd
Moeilijkheid
3,8
0,2
1,3
0,6
1,2
0,2
0,7
0,8
0,5
1,0
ANALYSE
6. kan, via een verwijzing naar patronen en structuren, een ontwikkeluitdaging beschrijven en definiëren om voor niet-uitgeanalyseerde opdrachten gericht oplossingsstrategieën zoeken
ANALYSE
7. kan, aan de hand van benoemde en gedefinieerde ontwikkeluitdagingen, oplossingsstrategieën zoeken (op het internet, via overleg met collega’s, in bestaande programma’s, op basis van ervaring en creativiteit) om niet-uitgeanalyseerde opdrachten te detailleren in een onmiddellijk uitvoerbaar ontwerp
ANALYSE
8. kan, aan de hand van pseudocode en grafische schema’s (bvb. UML, flowcharts, …), niet-uitgeanalyseerde opdrachten detailleren om een onmiddellijk uitvoerbaar ontwerp te bekomen
ANALYSE
9. kan gekregen opdrachten die geschetst zijn via een ontwerp aan de hand van pseudocode en grafische schema’s (UML, flowcharts, …) begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
ANALYSE
10. kan gekregen opdrachten die geformuleerd zijn in een natuurlijke taal begrijpen om de zelf te nemen stappen in de opdrachtuitvoering (onmiddellijk omzetten in code, verfijnen, verduidelijking vragen,…) te bepalen
ANALYSE
11. kan, aan de hand van kennis van de gebruiks- en technische omgeving waarin de toepassing moet werken, vereisten die niet-geëxpliciteerd zijn, afleiden om de opdrachtbeschrijving te detailleren of om er rechtstreeks rekening mee te houden bij de uitwerking
ANALYSE
ANALYSE
PAGINA 36
12. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot performantie en stabiliteit van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht 13. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot ontwikkeltijd van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht
0,2
1,0
0,9
0,6
0,3
0,9
0,7
0,6
1,1
1,1
0,2
1,3
0,1
1,1
0,0
1,4
ANALYSE
14. kan, eventueel aan de hand van bijhorende documentatie , maar zonder de strategie als test toe te passen, de plus en minpunten met betrekking tot onderhoudbaarheid van een bepaalde oplossingsstrategie (gebruik van een bepaald ontwikkelpatroon, hergebruik van een bepaald programma/stuk code, gebruik van een bepaalde bibliotheek, (kortom van een bepaald ontwerp, …), benoemen om de wenselijkheid van de oplossingsstrategie te bepalen in functie van een bepaalde opdracht.
ANALYSE
15. kan de plus- en minpunten van een oplossingsstrategie in verschillende domeinen (performantie, stabiliteit, ontwikkeltijd, onderhoudbaarheid, veiligheid, …) tegen elkaar afwegen om de optimale oplossingsstrategie voor een specifieke opdracht te bepalen
PROGRAMMA’S DOCUMENTEREN
16. kan het gebruik en de installatie van een zelf geschreven stuk code schriftelijk documenteren in een handleiding (deployment guide) om bevoegden (bvb. andere projectmedewerkers) toe te laten om en te ondersteunen bij het installeren en gebruiken van het gedocumenteerde onderdeel
PROGRAMMA’S DOCUMENTEREN
17. kan de interne opbouw van een zelf geschreven stuk code (onderdeel of programma), onder meer via commentaren, schriftelijk documenteren om andere bevoegden (bvb. andere projectmedewerkers) toe te laten het gedocumenteerde onderdeel vlot te hergebruiken, onderhouden en corrigeren
PROGRAMMA’S DOCUMENTEREN
18. kan, eventueel in het kader van een issuemanagementsysteem, problemen met stukken code of programma’s schriftelijk documenteren (oa. symptomen en oorzaken) om gelijkaardige problemen in de toekomst te kunnen voorkomen of snel te kunnen verhelpen
TESTEN
19. kan, aan de hand van bepaalde testingscenario’s, onderdelen zelfgeschreven code (units) testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
TESTEN
20. kan, aan de hand van bepaalde testingscenario’s, onderdelen code (units) die door anderen zijn geschreven testen om eventuele fouten die de uitvoerbaarheid van de code in de weg staan aan te wijzen
VERSIES BEHEREN
21. kan, eventueel aan de hand van een versiebeheerssysteem, de verschillende versies van een programma of van een stuk code documenteren om sneller en efficiënter programma’s te kunnen onderhouden en corrigeren
TIJDSBESTEDING DOCUMENTEREN
22. kan, eventueel aan de hand van een tijdsregistratiesysteem, de bestede tijd per opdracht of project loggen om correcte facturatie toe te laten en om te gebruiken als basis voor latere estimaties
PAGINA 37
0,1
1,4
0,4
1,6
0,5
0,5
0,8
0,8
0,2
0,6
1,5
0,7
0,5
0,3
0,3
0,3
0,6
0,5
OVERLEG PLEGEN MET PROJECTTEAM
23. kan binnen het projectteam mondeling en schriftelijk, onder andere in het kader van een iteratief ontwikkelproces, rapporteren over de voortgang (resultaten, moeilijkheden, vooruitzichten) van de eigen opdracht om bij te dragen tot een correcte projectopvolging en verdere planning
OVERLEG PLEGEN MET PROJECTTEAM
24. kan, voornamelijk mondeling, binnen het projectteam overleg plegen over de aanpak van een opdracht (argumenten uitwisselen, feedback geven en krijgen, …) om in samenspraak de optimale oplossingstrategie te bepalen
HANDLEIDING VOOR EINDGEBRUIKERS OPSTELLEN
25. kan handleidingen opstellen voor het zelf ontwikkelde programma om eindgebruikers toe te laten het geschreven programma efficiënt te gebruiken
WERKLAST INSCHATTEN
26. kan, rekening houdend met de eigen capaciteiten, de eigen werklast verbonden met een opdracht inschatten in termen van werkuren en doorlooptijd om bij te dragen aan een correcte projectplanning
ADEQUAAT OMGAAN MET VERANDERINGEN
27. kan veranderingen (in team, in manier van werken, in projectdoelen, in klanten) een plaats geven om ongeacht de gewijzigde omstandigheden de gestelde kwaliteitsstandaarden te bereiken
ADEQUAAT SCHAKELEN TUSSEN VERSCHILLENDE PROJECTEN/OPDRACHTEN DIE PARALLEL LOPEN
28. kan tussen verschillende deelopdrachten schakelen om parallelle opdrachten volgens de gestelde kwaliteitsstandaarden en tijdslimieten te volbrengen
EVOLUTIES BINNEN TALEN EN OMGEVINGEN OPVOLGEN
29. kan actief evoluties binnen de gehanteerde talen en omgevingen (bvb. updates, nieuwe bibliotheken, … ) opvolgen om op elk moment een actueel beeld te hebben van de beschikbare oplossingsmogelijkheden voor een ontwikkeluitdaging
ONTWIKKELERVARINGEN EN FEEDBACK OPNEMEN ALS LEERERVARINGEN
30. kan eerdere ontwikkelervaringen en feedback van partners (collega’s, andere projectmedewerkers, klanten, …) opnemen als leerervaringen om vergelijkbare problemen en uitdagingen in de toekomst efficiënter aan te pakken
DISCREET OMGAN MET VERTROUWELIJKE GEGEVENS
31. kan bedrijfsinformatie (intern of van klanten) discreet behandelen en zonodig afschermen om te vermijden dat onbevoegden zicht krijgen op de gegevens
INZICHT IN VEILIGHEIDSRISICO’S
32. kan de veiligheidsrisico’s verbonden aan een bepaalde ontwikkeling (zowel gedurende het ontwikkelproces, als met betrekking tot de afgewerkte applicatie) (verlies van gegevens, ongewenste publiciteit van gegevens, blokkeren van een systeem, …) bepalen om gepaste oplosstrategieën te kunnen bepalen
PAGINA 38
1,1
0,7
0,9
0,4
0,4
0,7
0,5
1,7
0,4
0,4
0,7
0,9
0,3
0,4
0,5
0,2
0,5
0,3
0,1
0,5
RECHTEN EN PLICHTEN VERBONDEN MET HET GEBRUIK VAN SOFTWARE INTERPRETEREN
PAGINA 39
33. kan de juridische rechten en plichten verbonden met het gebruik van bestaande code en programma’s interpreteren om de wenselijkheid om bestaande code en programma’s te integreren, te bepalen
0,2
0,3
Bijlage 3: Bevraagde bedrijven Bedrijf
Plaats
Provincie
# werknemers
# programmeurs
BTR Services
Boom
Antwerpen
100
20
Cantillana Invest
Deurle
Oost-Vlaanderen
250
2
Centric-EU
Oostkamp
West-Vlaanderen
700
30
Crop Design
Zwijnaarde
Oost-Vlaanderen
135
8
Data Flow
Heverlee
Vlaams-Brabant
570
122
Deloitte
Diegem
Vlaams-Brabant
2700
10
Egemin
Zwijndrecht
Antwerpen
650
50
Energy ICT
Kortrijk
West-Vlaanderen
200
15
Harmony Consult
Hasselt
Limburg
25
6
Hudson
Gent
Oost-Vlaanderen
250
8
Kenso
Aarschot
Vlaams-Brabant
6
4
Kluwer
Mechelen
Antwerpen
750
100
KPD Services
Halen
Limburg
30
12
Logins
Mechelen
Antwerpen
30
10
Persgroep
Asse
Vlaams-Brabant
850
65
Result IT
Beernem
West-Vlaanderen
50
14
Roularta
Roeselare
West-Vlaanderen
2800
15
PAGINA 40
Thales Information Systems
Tubize
Waals-Brabant
Yamagata Europe
Sint-Denijs-Westrem
Oost-Vlaanderen
YS Informatica
Tongeren
Limburg
PAGINA 41
120
26
46
2 4
2