De coderingsomgeving verandert tegenwoordig heel snel. Vooral door de ontwikkeling van AI-technologie verandert de manier waarop wij code schrijven op een fundamentele manier. AI-modellen zoals ChatGPT en Copilot maken binnen enkele seconden nette code, waardoor we in een compleet andere wereld leven dan die waarin mensen van begin tot eind zelf code schreven.

Deze verandering roept belangrijke vragen op voor ontwikkelaars:

"Is het nog steeds nodig dat ontwikkelaars diepgaand begrip hebben van de interne werking van de code, in een tijd waarin AI het voor hen schrijft?"

Ik wil zonder aarzeling antwoorden: "Ja".


Waarom moet je het diepgaand begrijpen? - Verantwoordelijkheid van de engineer en samenwerking met AI

1. Risicobeheer en verantwoordelijkheid

Het kan verleidelijk zijn om code die door AI is gegenereerd eenvoudig te kopiëren en te plakken om een project snel te voltooien, maar dit brengt op de lange termijn aanzienlijke risico's met zich mee.

  • Onbekende fouten: De code die door AI wordt voorgesteld, kan er op het eerste gezicht goed uitzien, maar kan in specifieke situaties onverwachte bugs veroorzaken.

  • Schaalbaarheidsproblemen: Naarmate het project groter wordt, kan code die zonder intern begrip wordt gebruikt, problematisch zijn.

Uiteindelijk is het aan de ontwikkelaar om deze problemen op te lossen. Je moet begrijpen hoe de tools en code die je gebruikt functioneren, en in staat zijn om snel te diagnosticeren en op te lossen wanneer er fouten optreden.

2. Groeien als een echte engineer

Ook in het tijdperk van AI is het, nee, juist omdat we met AI werken, noodzakelijk om de code diepgaand te begrijpen.

  • Efficiënte communicatie: Wanneer je AI vragen stelt, moet je precies kunnen uitleggen wat het probleem is om betere antwoorden te krijgen.

  • Proactief ontwerp: Het vermogen om te beslissen hoe je frameworks of libraries combineert en welke structuur je maakt, ligt nog steeds bij de mens.

  • Verbeteren van technische inzichten: Door de interne werking te begrijpen, kunnen structurele en creatieve ideeën ontstaan, zoals “dit framework werkt zo, dus deze functie kan zo worden uitgebreid”.

Bijvoorbeeld in een webframework zoals Django is dit begrip cruciaal. De verschillende functies die binnen Django worden aangeboden, met name de Class-Based Views (CBV), bieden aanzienlijke voordelen en uitbreidbaarheid, maar als je de interne structuur niet goed begrijpt, kun je in de problemen komen wanneer het project groeit.

Samenwerking tussen AI en ontwikkelaar


Redenen om van FBV naar CBV over te stappen

De eenvoud van FBV (Function-Based View)

De meesten van degenen die met Django beginnen, starten met FBV (Function-Based View).

  • Intuïtief: De structuur die een request ontvangt en een response retourneert is gemakkelijk te doorgronden.

  • Snel prototypen: Je kunt met korte code eenvoudig een interface opzetten, waardoor de initiële ontwikkelsnelheid hoog is.

Maar naarmate het project groter wordt en er meer URL's en views te beheren zijn, wordt het moeilijker om alleen met FBV de code te beheren, en beginnen er op verschillende plaatsen herhalende logica te verschijnen. Dit brengt aanzienlijke problemen met zich mee op het gebied van onderhoud en schaalbaarheid.

Herbruikbaarheid en schaalbaarheid van CBV (Class-Based View)

CBV past de filosofie van objectgeoriënteerd programmeren (OOP) toe op de Django view logica.

  • Herbruikbaarheid: Het is eenvoudig om view logica te scheiden in methoden en een overervingsstructuur te creëren of uit te breiden.

  • Duidelijke structuur: Afhankelijk van het verzoek (GET, POST, enz.) worden automatisch verschillende methoden aangeroepen, waardoor de code logisch is verdeeld.

  • Ondersteuning bij onderhoud: Gemeenschappelijke functies kunnen in de bovenliggende klasse worden geplaatst en alleen de noodzakelijke delen kunnen per view worden overschreven.

Stel je voor dat je verschillende lijstpagina's in dezelfde stijl moet maken. Bij FBV schrijf je steeds dezelfde (of vergelijkbare) code opnieuw, maar bij CBV kun je heel eenvoudig aanpassen door een basisklasse zoals ListView te gebruiken en alleen het model of de sjabloonnaam te wijzigen. Dat is de ware kracht van CBV.

FBV vs CBV Flowchart


Redenen waarom het goed is om CBV goed onder de knie te hebben

  1. De leesbaarheid en onderhoudbaarheid van de code verbetert aanzienlijk.

  2. Bij uitbreiding van de projectgrootte is het eenvoudig om gemeenschappelijke functies te moduleren en uit te breiden.

  3. Door gebruik te maken van de diverse CBV-klassen (ListView, DetailView, CreateView, UpdateView, DeleteView, enz.) die standaard door Django worden aangeboden, kun je CRUD snel opzetten.

  4. Ontwikkelaars kunnen proactiever samenwerken. Omdat AI's gegenereerde code ook nauwkeurig kan worden gecontroleerd wat betreft welke CBV moet worden overgenomen.


Doel van de CBV-verkenningsserie

In deze blogserie zullen we de verschillende CBV's van Django één voor één onderzoeken. We zullen specifiek behandelen in welke situaties elk CBV het meest effectief is en hoe ze kunnen worden geconfigureerd voor gebruik.

Van dit proces verwacht ik de volgende resultaten:

  • Begrip van de codewerking: Niet alleen het kopiëren en plakken van door AI gegenereerde code, maar ook de vaardigheden ontwikkelen om zelf uit te leggen “waarom dit zo moet worden geschreven”.

  • Begrip van de rol en gebruik van de CBV's: Door de kenmerken van de verschillende CBV's die Django biedt te begrijpen, kun je situaties herkennen zoals “in deze situatie is FormView het meest geschikt”.

  • Efficiënte en proactieve samenwerking met AI: Als je inzichten hebt over “welke delen moeten worden aangepast” in de code die AI voorstelt, kun je AI efficiënt aansteken om de productiviteit te maximaliseren.


Vooruitblik op toekomstige inhoud

  1. Begrijpen van de basis View-class van Django

    • View class structuur en hoe Django dit oproept in het aanvraag-antwoord proces.
  2. FormView om formulierverwerking eenvoudiger te maken

    • Hoe FormView te gebruiken voor het verwerken van gebruikersinvoer (formulieren).

    • Je kunt patronen leren voor formulier validatie, foutmeldingen en omleidingen bij succes.

  3. Hoe ListView en DetailView te gebruiken

    • We zullen het hebben over ListView en DetailView, die efficiënt kunnen worden gebruikt voor het samenstellen van lijst- en detailpagina's.

    • Met echte projectvoorbeelden delen we tips voor het omgaan met sjablooncontextdata.

  4. CRUD eenvoudig afhandelen met CreateView, UpdateView, DeleteView

    • We zullen de viewklassen onderzoeken die CRUD (Create, Read, Update, Delete) bijna automatisch afhandelen.

    • Dit zal nuttig zijn voor degenen die zich afvragen: “moet ik zelf modelformulieren schrijven of kan ik de functies van CBV gebruiken?”

  5. Efficiënte template rendering met TemplateView

    • Hoe TemplateView te gebruiken voor het snel renderen van eenvoudige pagina's.

    • Ik zal tips geven over hoe de structuur zou moeten worden ontworpen in situaties waarin HTML-sjablonen snel moeten worden gerenderd.


Om af te ronden: De reis voor de toekomst

In deze serie zullen we samen praten en zullen jullie de rijke wereld van de CBV's die Django biedt onderzoeken. Als je tot nu toe alleen FBV hebt gebruikt, zul je een nieuw perspectief krijgen met “oh, zo werkt CBV!” En als je al ervaring hebt met CBV, kunnen we samen nadenken over diepgaandere gebruiksmethoden en uitbreidingsstrategieën.

Wat ontwikkelaars in het AI-tijdperk moeten focussen, is niet beperkt tot het eenvoudig schrijven van code, maar het vermogen om te begrijpen hoe de code werkt en beter gestructureerd te ontwerpen. De CBV's van Django zijn een zeer geschikt onderwerp om dit te leren en in de praktijk te brengen.

In de volgende post beginnen we met de basis View class van Django en bekijken we de basisstructuur. Laten we samen stap voor stap leren en worden tot “echte engineers” die robuuste en uitbreidbare code schrijven.


Aanbevolen materialen

Vooruitblik op de 'CBV Verkenningsserie'

  • Deel 2: “De werking en levenscyclus van de basis View class van Django”

  • Deel 3: “FormView: Formulieren netjes verwerken”

  • Deel 4: “ListView & DetailView: Implementatie van gegevenslijsten en detailweergave”

  • ... (verder)

Dank je wel voor het lezen van dit artikel. Kijk uit naar de komende serie en als je vragen hebt of gedachten wilt delen, laat dan gerust een reactie achter!

“Zelfs in het tijdperk van door AI genereerde code, zullen onze engineeringsvaardigheden en inzichten stralen als nooit tevoren.”