Zal AI Ontwikkelaars Vervangen? Onderzoek Naar De Toekomst Van Coderen

Gepubliceerd: door Matt Stamp
Zal AI Ontwikkelaars Vervangen? Onderzoek Naar De Toekomst Van Coderen thumbnail

Kunnen toekomstige AI’s echt volledige apps schrijven en programmeursbanen overnemen? Laten we realistisch begrijpen wat AI wel en niet kan doen vanaf 2024.

Je hebt waarschijnlijk mensen horen praten over ChatGPT en andere nieuwe AI-chatbots. Ze voeren gesprekken over verschillende onderwerpen verbazingwekkend goed. En ja, ze kunnen ook veel programmeerproblemen oplossen.

Maar is AI een existentiële bedreiging voor de carrières van ontwikkelaars? Of wordt het slechts een ander hulpmiddel om de capaciteiten van programmeurs te vergroten?

In deze gids onderzoeken we de realiteit van AI’s huidige vaardigheden in softwareontwikkeling, waar de technologie nog tekortschiet, en hoe je jouw vaardigheden kunt toekomstbestendig maken in dit snel veranderende landschap.

ChatGPT En LLMs: AI-Technologie Begrijpen

LLM met trainingsgegevens aan de linkerkant die informatie tonen die in een trechter gaat en van data naar chat aan de rechterkant die gebruikersinvoer naar patroonanalyse naar gegenereerde respons toont

Chatbots zoals ChatGPT zijn geen “denkende” programma’s. Ze begrijpen taal of codering niet. Ze voorspellen intelligent klinkende reacties door patronen te vinden in enorme hoeveelheden online tekstgegevens.

Programmeurs noemen ze “grote taalmodellen” (LLMs), een chique woord voor een tekstvoorspeller op steroïden.

Om “groot” in perspectief te plaatsen, ChatGPT is getraind op een 570GB tot 45TB dataset van tekstfragmenten die internetfora, boeken en online schrijven bestrijken, en veel informatie is direct van Reddit gehaald.

Deze enorme hoeveelheid tekstgegevens stelt ChatGPT in staat om passages te genereren, vragen te beantwoorden en zelfs code te schrijven op basis van tekstprompts. De kennis komt volledig uit deze reeds bestaande teksten, niet door werkelijk begrip van de wereld.

Dus, hoewel ChatGPT bekwaam lijkt in converseren, heeft zijn intelligentie beperkingen.

  • Het kan context behouden voor slechts een paar duizend woorden.
  • Het heeft geen echte wereldervaring.
  • Het kan niet redeneren of intuïtieve sprongen maken.
  • Het heeft moeite om complexe code te begrijpen.

Toch blijft deze technologie zich snel ontwikkelen. Dus, hoe presteren ChatGPT en andere LLM’s vandaag de dag bij programmeertaken?

Kan ChatGPT Functionele Code Schrijven?

ChatGPT kan werkende code in JavaScript, Python, SQL, Bash, en andere talen produceren als je het op de juiste manier vraagt. Het is een beginnende programmeur, maar je kunt het blijven aansturen om fouten te herstellen en werkende code te krijgen.

Voor eenvoudige programmeerproblemen biedt ChatGPT indrukwekkende veelzijdigheid en stelt je in staat tijd te besparen bij het maken van basiscode die je anders handmatig zou doen. In deze gevallen besparen LLM’s zeker tijd voor programmeurs.

Maar de code is vaak inefficiënt of negeert randgevallen omdat het niet de volledige context van het probleem heeft. In feite waarschuwt ChatGPT soms zelfs dat zijn voorbeeldcode een grondige beoordeling vereist voordat het toegepast wordt.

Dus, we weten zeker dat LLMs er nog niet zijn. Maar we kunnen ons alleen maar voorstellen hoe goed ze zullen zijn omdat geavanceerde LLMs pas één jaar oud zijn (ChatGPT is gelanceerd op 30 november 2022).

“Als AI zich in dit tempo blijft ontwikkelen, zal over 30 jaar het merendeel van de mensheid in de problemen komen wat betreft banen, niet alleen programmeurs,” zei een Reddit-gebruiker in de subreddit /r/learnprogramming/.

Ontwikkelingstaken Die AI Aankan

Hoewel ChatGPT geen senior ontwikkelaar kan vervangen, biedt het duidelijke voordelen om programmeurs efficiënter te maken. Laten we eens kijken hoe ChatGPT jou als programmeur kan versterken en de regelmatige, meer arbeidsintensieve processen kan wegnemen.

Automatiseren van Repetitieve Taken

Voor ervaren ontwikkelaars behoort het schrijven van CRUD-apps, eenvoudige scripts en backend-sjablooncode tot de meest vervelende aspecten van de baan.

Met AI kun je dit vervelende werk elimineren door automatische codegeneratie. In plaats van steeds opnieuw handmatig basisregistratiesystemen voor gebruikers te coderen, kan een AI-model direct functionerende prototypes produceren die zijn aangepast aan het databaseschema van elk project.

De bruikbaarheid van AI voor repetitieve codering zal alleen maar toenemen naarmate hogere abstractieniveaus via frameworks zoals React en Django gemeengoed worden.

Ontvang inhoud rechtstreeks in uw inbox

Meld u nu aan om alle laatste updates rechtstreeks in uw inbox te ontvangen.

Verwerking van Natuurlijke Taal

Productmanagers stellen vaak specificaties op in alledaags proza zoals “Gebruikers moeten hun opgeslagen betaalinformatie kunnen bijwerken.” Het programmeren van zulke losjes gedefinieerde gedragingen laat ruimte voor misverstanden met de verwachtingen van belanghebbenden.

Met krachtige LLM’s zoals ChatGPT 4 kan AI helpen bij het interpreteren van vrije vorm klantverzoeken om grondige technische vereisten op te stellen.

Met behulp van klantdocumenten en gesprekken kunnen LLM’s helpen met het vertalen van verzoeken naar uitvoerbare semantiek voor programmeurs. LLM’s kunnen helpen om onduidelijkheden naar voren te brengen om van tevoren aan te pakken in plaats van midden in het project terwijl je jouw prompts optimaliseert.

Detecteren Van Bugs

AI-modellen die getraind zijn op grote hoeveelheden opensourcecode kunnen ook uitblinken in het beoordelen van software op defecten. Onderzoekers bij Microsoft hebben gespecialiseerde neurale netwerken ontwikkeld om bugs te ontdekken, waarbij ze in sommige tests een hogere nauwkeurigheid behaalden dan menselijke programmeurs.

screenshot voorbeeld van een system runtime serialization exception foutmelding in het geval dat een AI tool is aangesloten, een tekstvak aan de rechterkant beschrijft waarom de fout optreedt

Bron

Als programmeur kun je deze AI-collega gebruiken om snel commits te analyseren op foutieve logica, deprecatiefouten van verouderde afhankelijkheden en zelfs beveiligingsfouten. In plaats van handmatig duizenden regels door te nemen, krijg je geannoteerde suggesties over wat er moet worden gerepareerd.

Problemen Voorspellen

Buiten het reactief vinden van bugs, kan voldoende geavanceerde AI problemen voorspellen voordat ze ontstaan op basis van de code die je schrijft. Het kan dit doen door de code continu te controleren en te identificeren of deze op enig moment tijdens de uitvoering kan falen.

Of, voor bibliotheken en frameworks met veel downstream-afhankelijkheden, kunnen AI-assistenten aanstaande veranderingen die compatibiliteit breken opmerken voordat ze worden uitgebracht. Dit helpt je om overgangen vlotter te laten verlopen en verstoringen proactief te minimaliseren zonder extra gebruik van middelen.

Betere Project- En Tijdlijnschatting

Wat betreft het gebruik van middelen, mensen onderschatten chronisch hoe lang softwareprojecten zullen duren. We zijn ofwel te optimistisch of vergeten de risico’s. Dit zorgt ervoor dat projecten uiteindelijk over het budget en de tijdlijn heen gaan.

AI-tools beginnen te helpen door te kijken naar gegevens van eerdere projecten om te zien hoe lang vergelijkbare projecten duurden. Bijvoorbeeld, CloudBees haalt context uit je gehele toolchains en maakt het begrijpelijk voor je. Het kan vervolgens de informatie gebruiken om de levertijden van software te schatten.

Natuurlijk kan AI niet alles voorspellen wat er mis kan gaan, maar gezien de hoeveelheid gegevens die het analyseert voordat het tijdschema’s schat, kan het een geweldig startpunt zijn. Na verloop van tijd, als de tools meer gegevens krijgen, zouden de schattingen moeten verbeteren.

Je Code Optimaliseren

Het is geweldig om een tweede paar ogen voor je code te hebben. Het kan je helpen problemen met de code-logica te identificeren, betere en eenvoudigere manieren te vinden om dezelfde output te krijgen en zelfs te optimaliseren voor snelheid.

Terwijl programmeurs voortdurend moeite doen om systemen te verfijnen voor snelheid en efficiëntie, wordt het aanpassen van code via trial and error eentonig.

LLMs kunnen optimalisatiesuggesties bieden om je te helpen snel code te optimaliseren en te herstructureren.

screenshot van ChatGPT-verzoek "om de 'exit_adjustment'-functie te optimaliseren en te herschrijven en de output in python als een manier om code te optimaliseren

In plaats van blind raden, zal AI gemakkelijk laaghangend fruit aanwijzen om te richten voor maximale winst. Het kan adviseren om monolieten op te splitsen in microservices, indexen toe te voegen voor kostbare queries, of frameworks te upgraden voor moderne beste praktijken.

De Beperkingen Van AI-Tools In Ontwikkeling

Moeten ontwikkelaars zich bedreigd voelen door de bruikbaarheid van AI bij het automatiseren van routinematige codering en aanvullende ontwikkelingstaken?

De huidige technologie is zelfs voor matig complexe programmeerklussen ontoereikend gebleken. Zodoende lijken kernaspecten van de workflow van ontwikkelaars voorlopig nog door mensen aangestuurd te blijven.

Slechte Kwaliteit Code

Code die volledig door ChatGPT of vergelijkbare modellen is geproduceerd, heeft vaak last van subtiele fouten. Hoewel bruikbaar, houdt de code geen rekening met de verscheidenheid aan randgevallen die je kent, en zonder logisch redeneren, is het volledig afhankelijk van wat je het vraagt te doen.

Hier is een experiment uitgevoerd door een GitHub-gebruiker. Je kunt zien dat ChatGPT uitstekend werk levert bij het uitleggen en ontleden van een probleem:

screenshot clip van ChatGPT-antwoord dat elke regel code afbreekt (voor n-1, geen knip nodig, dus het antwoord is ) enz

Maar gaat dan verder om alleen gedeeltelijk correcte code te geven waar het de logica overslaat om het antwoord op 0 te zetten als n 1 is.

Om ervoor te zorgen dat alle randgevallen zijn afgehandeld, moesten we deze if-conditie toevoegen, zoals je kunt zien in de onderstaande screenshot.

deels correcte code vs correcte code met codefragmentvakken die benadrukken hoe ChatGTP de eerste regel code heeft gecorrigeerd door een juiste uitspraak te doen

Dus, de code gecreëerd met ChatGPT resulteert over het algemeen in onstabiele apps die in productie vastlopen door onafgehandelde uitzonderingen.

Totdat AI flink gevorderd is, zal gegenereerde code te gebrekkig blijven voor de meeste praktijktoepassingen zonder intensief toezicht en bewerking.

Potentiële Beveiligingsrisico’s

Naast stabiliteitsproblemen introduceert code geschreven door taalmodellen alarmerende beveiligingsrisico’s. Omdat AI niet altijd randgevallen kan overwegen, kan je code vatbaar worden voor exploiteerbare bugs en beveiligingsrisico’s.

Bijvoorbeeld, als je een webapplicatie ontwikkelt en je gebruikersinvoer niet goed schoonmaakt, kunnen hackers deze misbruiken om toegang te krijgen tot jouw database via SQL-injecties en XSS-aanvallen.

Kan Nieuwe Problemen Niet Oplossen

Om menselijke programmeurs te vervangen in plaats van hen te assisteren, moet AI nieuwe problemen aanpakken. De huidige modellen associëren alleen prompts met oplossingen die tijdens de training zijn tegengekomen. In een onafhankelijke studie ontdekten onderzoekers dat ChatGPT in 52% van de programmeervragen faalde door gedeeltelijke of incorrecte code te leveren.

Echter, gebruikers kozen nog steeds 39,34% van de tijd voor het antwoord van ChatGPT vanwege de algehele volledigheid.

Alleen wanneer modellen redelijke oplossingen kunnen bedenken en verder kunnen denken dan de basisstappen, zoals mensen, kunnen ze zelfstandig ontwikkeling stimuleren. Tot die tijd blijft hun waarde beperkt tot het versnellen van bekende taken in plaats van baanbrekend te zijn.

AI Heeft Geen Begrip

Bestaande AI heeft geen goed begrip van code of abstract redeneervermogen – ze herkennen enkel patronen in de invoerprompts en leveren relevante “klinkende” outputs. Zonder contextueel begrip negeren de oplossingen vaak kritieke beperkingen of maken ze irrationele keuzes die geen enkele ingenieur zou maken.

Overweeg de analogie van een medische bot die getraind is om patiënten te diagnosticeren door symptomen te matchen met opgenomen ziektes. Het zou redelijk presteren bij het aanbevelen van gangbare behandelingen, maar zou rampzalig chemotherapie kunnen voorschrijven voor een moedervlek op het been, enkel omdat oppervlakkig vergelijkbare taal de twee linkte.

Engineering daarentegen, is afhankelijk van menselijke rationaliteit en oordeel om samenhangende ontwerpen te maken. Dus, totdat betere AI is bereikt, kunnen ontwikkelaars profiteren van AI om hun bestaande codeerwerkstromen te verbeteren.

De Toekomstige Rol Van AI In Programmeren

Hoewel AI momenteel grote beperkingen heeft, is het groeitempo in deze ruimte fenomenaal. AI ging binnen slechts één jaar van onbegrijpelijke schrijfsels naar foutloze Engelse proza die niet te onderscheiden is van door mensen geschreven tekst.

In de nabije toekomst zou AI een beginnende programmeur kunnen vervangen door eenvoudige codeertaken automatisch af te handelen. Volgens interne evaluaties van OpenAI overtreft GPT-4 zijn voorgaande versies significant op alle beoordelingen, inclusief codeergerelateerde taken.

een staafdiagram dat de evolutie van Chat GPT 1-3 (40-48%) vergeleken met GPT-4 (ongeveer 55%) toont

“Het zal een hulpmiddel in de toolkit van de ontwikkelaar zijn dat hun werk zowel sneller als makkelijker maakt, terwijl het tegelijkertijd een niveau van complexiteit en ondoorzichtigheid introduceert wat ongetwijfeld nieuwe problemen zal veroorzaken,” zegt Lawjarp2, een Reddit-gebruiker.

De aard van programmeren is al aan het evolueren, zoals we zien bij GitHub Copilot, Amazon’s CodeWhisperer, en vele anderen.

Coderen zal transformeren van handmatig typen naar synergetisch werken met generatieve AI-systemen — waarbij mensen context, visie, toezicht en probleemoplossing bieden.

Dit hybride model stelt AI in staat om het saaie codeerwerk af te handelen terwijl ontwikkelaars zich concentreren op hoogwaardige systeemarchitectuur, complexe probleemoplossing, creativiteit en het voorkomen van problemen.

Dus, hoewel taken verschuiven, worden softwareontwikkelaars niet volledig vervangen. Het beroep zal er echter over enkele jaren radicaal anders uitzien.

Hoe Je Carrière In Programmeren Toekomstbestendig Te Maken

In plaats van in paniek te raken over de overname door AI, zouden aspirant-ontwikkelaars en huidige ontwikkelaars taalmodellen moeten herkennen voor wat ze zijn: assistenten in plaats van vervangers. Hier zijn enkele tips om je vaardigheden relevant te houden:

Leer Prompt Engineering

Het maximaliseren van het nut van ChatGPT en GitHub Copilot hangt af van het effectief samenstellen van prompts. Helaas is prompt engineering momenteel meer een kunst dan een wetenschap.

Maar van ingenieurs verwachten dat ze alles handmatig coderen zoals vorige generaties deden, is niet meer logisch. Het is beter om nieuwe ontwikkelaars nieuwe tools te laten gebruiken.

Ervaren programmeurs zouden tijd moeten besteden aan het experimenteren met taalmodellen door verschillende invoer te gebruiken en intuïtie op te bouwen voor wat werkt. Onthoud dat elk LLM een unieke stijl heeft, en het is goed om ze te begrijpen, aangezien ze deel uitmaken van dagelijkse workflows.

Verbeter Je Probleemoplossende Vaardigheden

Menselijke creativiteit en intuïtie blijven onmisbaar aangezien softwareontwikkeling zich bezighoudt met open problemen. Niet alleen het mechanisch vertalen van technische specificaties naar code.

Geen enkele hoeveelheid ruwe codeersnelheid kan een vervanging zijn voor het bedenken van inzichtelijke oplossingen of het creëren van eenvoudige architecturen in complexe omgevingen. Focus dus op de kennis, creativiteit en diepgaand begrip van je industrie terwijl je routinewerk overlaat aan AI-tegenhangers.

Leer Om Empathie Te Hebben Met Gebruikers

Onthoud dat code wordt geschreven om aan de wensen en behoeften van mensen te voldoen. Naarmate AI beter in staat is om lagere programmeertaken op zich te nemen, moeten ontwikkelaars zich extra inzetten op de sterke punten die machines missen, namelijk empathie.

Geef prioriteit aan rollen zoals productmanagers of UX-ontwerpers die het begrijpen van publiek en het bouwen voor mensen benadrukken. Breng het denken vanuit de gebruiker naar voren, zelfs tijdens de samenwerking met AI-programmeurs over implementatiedetails.

Machine Learning Bestuderen

Voor degenen die graag grenzen verleggen, biedt het verkennen van machine learning inzicht in de nieuwste AI-ontwikkelingen met brede toepassingen. Neurale netwerken vormen nu de basis van oplossingen van beeldverwerking tot voorspellende analyses.

Het begrijpen van hoe modellen functioneren, trainen en interacteren met softwaresystemen kan je ook helpen nieuwe mogelijkheden in je carrière te openen. Overweeg om computertechniek basisprincipes aan te vullen met datawetenschap en ML-cursussen.

Veelgestelde Vragen

Zal AI programmeurs binnen 5 jaar vervangen?

Nee. Over vijf jaar zal AI waarschijnlijk meer repetitieve programmeertaken afhandelen, maar niet volledig de menselijke beoordeling en toezicht voor het creëren van complexe softwaresystemen vervangen. Ontwikkelaars kunnen zien dat hun rollen verschuiven met AI-assistenten, maar zullen nog steeds oplossingen en beperkingen ontwerpen.

Zal AI ooit ontwikkelaars vervangen?

Een volledige vervanging lijkt onwaarschijnlijk, zelfs met geavanceerde toekomstige AI, gezien de steeds evoluerende eisen van software en de creativiteit die inherent is aan het oplossen van nieuwe problemen. Eenvoudig programmeren wordt uiteindelijk gemeengoed, maar niet hoogwaardig strategisch denken. Ontwikkelaars die leren om AI te benutten in plaats van ertegen te concurreren, blijven effectief in dienst.

Aan het einde van de dag, vrees niet de overname door machines. Verwelkom de AI-teamgenoten die de productiviteit zullen verhogen ver boven wat een engineer of algoritme alleen kan bereiken. Softwareontwikkeling gaat te snel voor welke enkele verandering dan ook om voor altijd te domineren. En vooral in de context van technologie, is aanpasbaarheid de meest cruciale vaardigheid.

Maak je dus niet druk of code op de lange termijn wordt geschreven door biologische of siliconen handen, maar ontwikkel veelzijdigheid ongeacht welke tools er verschijnen.

Wat is jouw mening over AI-coderingsassistenten?

De wind van verandering versnelt ongetwijfeld in software-engineering. Nu AI zich snel ontwikkelt, kan wat we ooit als het domein van menselijke cognitie beschouwden nu worden uitbesteed aan machines.

Zullen we toestaan dat angst voor de toekomst vooruitgang verlamt? Of zullen we actief onze rollen heroverwegen terwijl we profiteren van de exponentiële kracht van deze technologie?

De meest formidabele concurrenten zijn meestal degenen die de nieuwste technologie snel adopteren in plaats van verandering tegen te gaan. Maar de sleutel blijft het oordeelkundig balanceren van menselijke vindingrijkheid en machine-intelligentie als aanvullende krachten in plaats van tegenovergestelde kampen.

En dus, terwijl software de wereld blijft veroveren, doen programmeurs er goed aan om angst opzij te zetten ten gunste van het zelfverzekerd werken aan meer complexe en uitdagende projecten.

Ontvang inhoud rechtstreeks in uw inbox

Meld u nu aan om alle laatste updates rechtstreeks in uw inbox te ontvangen.