Development

Software-ontwikkeling
De onzekere toekomst van software-ontwikkeling

De onzekere toekomst van software-ontwikkeling

Ontwikkelaars denken dat door SaaS, cloud computing en kunstmatige intelligentie er op termijn minder werk voor hen is.

12 januari 2018

Ontwikkelaars denken dat door SaaS, cloud computing en kunstmatige intelligentie er op termijn minder werk voor hen is.

Het is maar goed dat de wereld van software-ontwikkeling niet stilstaat. Verandering brengt nieuwe IT-toepassingen, zorgt voor tevreden medewerkers en klanten en houdt ons in de vaart der volkeren. Voor developers zelf is vooruitgang soms lastig.

Software-ontwikkelaars hebben het zwaar. Continu moeten zij zich aanpassen aan de grillen van technologie en de vele eisen vanuit de business. Niet voor niets zien sommigen de toekomst somber in. Volgens hen zorgen onder meer software-as-a-service (SaaS), cloud computing en kunstmatige intelligentie ervoor dat op termijn veel minder software development nodig is.

Onzekerheid

Nieuwe technologie bezorgt software developers en testers niet onterecht de nodige onzekerheid. Vooral software-as-a-service drukt ontegenzeggelijk een stempel op de toekomst van software-ontwikkeling. Dergelijke webdiensten halen hun kracht voor een groot deel uit standaardisatie en hergebruik.

SaaS laat dus weinig werk over voor de developers bij organisaties die van de diensten willen gebruikmaken. Nu al konden veel organisaties hun IT-afdeling inkrimpen door meer software als webdienst af te nemen.

Artificial Intelligence

Ook de inzet van kunstmatige intelligentie zal zijn weerslag hebben in de wijze waarop software wordt ontwikkeld en getest. Zo kan AI dienen als een gezamenlijke kennisbank voor multidisciplinaire ontwikkelteams. Je kunt de algoritmes ook gebruiken voor het automatiseren van softwaretests, waardoor veel meer en ingewikkeldere scenario’s worden doorberekend.

De soep wordt echter niet zo heet gegeten als hij wordt opgediend. Vooralsnog zetten organisaties algoritmes alleen op experimentele schaal in. Op korte termijn zal dit dus nog geen implicaties voor de baanvooruitzichten van testers hebben. Wat voor hen wel verandert, is de steeds nauwere samenwerking met ‘robots’, bijvoorbeeld bij het uitvoeren van regressietests. Dergelijke samenwerking wordt ook wel aangeduid met de term Cobotics.

Agility

Voorlopig blijft de meeste software-ontwikkeling nog bij het oude. Veel organisaties zweren bij een agile ontwikkelmethode. Daarbij levert het ontwikkelteam in nauw overleg met andere belanghebbenden om de week een werkend iteratief onderdeel van de te bouwen software. Door de korte doorlooptijden (sprints) is vroegtijdige bijsturing mogelijk op basis van feedback of aangepaste doelstellingen.

Toch levert agile softwareontwikkeling niet vanzelf een rendementsverbetering op. Het gebrek aan schaalbaarheid kan namelijk leiden tot versnippering van ontwikkelcapaciteit en belangen. De zelfsturing van Agile teams gaat ook niet altijd goed. De IT-manager moet de teams in staat stellen hun speelveld voldoende in te kaderen, zodat ontwikkelaars op hun sterke punten worden aangesproken en teams als geheel in de gewenste flow komen.

Pas echt uitdagend wordt het in ontwikkelprojecten met een groot aantal agile teams die sterk van elkaar afhankelijk zijn. Deze wederzijdse afhankelijkheid levert vaak belemmering en vertraging op. Je voorkomt dit door goede coördinatie en afstemming. Breng alle teams en belanghebbenden twee dagen bijeen om de planning van de komende acht tot twaalf weken te bespreken. Dit heet de Program Increment Planning (PI Planning).

Complexiteit

Niet iedereen is overtuigd dat agile software development, Scrum, DevOps en zelfsturing voldoende zijn om beheerst om te gaan met de toenemende complexiteit binnen het IT-domein. Deze is complex door versnippering van toepassingen, uiteenlopende programmeertalen, veeleisende gebruikers, minimale ontwikkeltijden, strenge eisen aan beveiliging en privacy, en het wegvallen van het IT-middenkader met relevante kennis.

Wat in elk geval niet helpt, is oversimplificatie. Vooral de uiteindelijke besluitnemers in en rond het bestuur gaan vaak uit van een abstracte, versimpelde werkelijkheid. Een realiteit die is uitgewerkt in globale documenten. Maar in de IT geldt dat de echte uitdagingen zich meestal juist in de details voordoen. Beslissingen op basis van abstracte documenten leiden daardoor regelmatig tot onduidelijkheden later in het proces.

Beheersbaar

Hoe maak je complexe IT-omgevingen dan wel enigszins beheersbaar? Door eerst de complexiteit onder ogen te zien en vervolgens met onderstaande aandachtspunten aan de slag te gaan.

  1. Start met wat overzichtelijk, urgent en goedkoop is
  2. Behoed je voor groots en meeslepend: specificeer abstracties
  3. Bepaal een stip aan de horizon en werk met voortschrijdend inzicht
  4. Koester de legacy-omgeving als belangrijke kennisbron en als drager van de primaire processen in je organisatie
  5. Blijf het proces, de software en het gebruikersgedrag meten en maak een feedback-loop om verbeteringen in gang te zetten

C-code moet weg

Behalve de complexe IT-omgeving vormt de kwetsbaarheid van applicaties een grote uitdaging. Zo gaat het regelmatig fout met programma’s die zijn geschreven in de code C of draaien op een fundament gebaseerd op C. In principe is C een krachtige programmeertaal die heel dicht op de hardware zit. Het maakt optimaal gebruik van de beschikbare capaciteiten van het onderliggende systeem.

C heeft echter ook een belangrijk nadeel: software-ontwikkelaars moeten de handelingen die een systeem kwetsbaar maken voor hacks, zelf op juiste wijze programmeren. En dat gaat niet altijd goed. Ook door hergebruik van oude code blijven kwetsbaarheden terugkeren.

C-alternatief: Rust

Tijd voor afscheid dus, ware het niet dat in de afgelopen decennia enorm veel in C-code is ontwikkeld en het vaak te kostbaar is om programma’s te herschrijven. Een mogelijke oplossing is om ze te herontwikkelen in programmeertaal Rust. Deze geeft net als C veel controle over de systeemomgeving, maar de implementatie dwingt veilige omgang met het geheugen af. En Rust zou even goed presteren doordat het een minimale runtime-omgeving kent, net als C.

Ook de intrede van functioneel programmeren voorkomt onnodige kwetsbaarheden en fouten. In tegenstelling tot stapsgewijze softwareontwikkeling (“Doe eerst dit en dan dat”) definieert een functionele programmeertaal direct het resultaat. Er is geen sprake van enige afhankelijkheid of interactie tussen processen. Dit dwingt ontwikkelaars om heel expliciet te zijn over de interacties tussen de onderdelen van het programma dat zij bouwen.

Opleiding

Gelukkig zijn er diverse opleidingen die je de kneepjes van het programmeervak leren. Hoewel de meeste mensen het belang van de opleidingen inzien, is niet iedereen te spreken over de kwaliteit ervan.

Ook de wildgroei aan stoomcursussen software-ontwikkeling roept aardig wat wantrouwen op. Hoe kun je je zonder enige voorkennis in minder dan drie maanden klaarstomen tot professioneel developer? Veel critici beweren dat je gewoon kilometers moet maken voordat je voldoende ervaring hebt opgedaan? Anderen geloven dat deelnemers aan een bootcamp vaak beter beslagen ten ijs komen dan pas-afgestudeerden die vier jaar lang met hun neus in de boeken hebben gezeten.

Lees meer over Development OP AG Intelligence
1
Reacties
Lezer#3551 Karman 12 januari 2018 18:13

C kent geen run time omgeving.
Wat er is zijn standaard libraries met vele functies en een gedefinieerde interface via api's naar het operating system. Zitten daar problemen dan is het een terugkerend probleem voor elke programmeertaal.

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.