Ik vind het knap hoe rustig en constructief je blijft! Heel respectvol. In mijn hoofd noemde ik het al direct 'prutswerk' toen ik het zag, en ik word erg geïrriteerd als ik bedenk dat deze code bij de overheid gebruikt wordt
@@l2z-g1g bedankt voor je feedback. Als je er goed bij stilstaat dan gaat een code review over het helpen van een collega, het bedrijf waar je iets voor wil betekenen en een leermoment ook voor jezelf en dan te bedenken dat een ander helpen een mooie iets is! Als je vanuit dat perspectief gaat werken dan zou je toch niet zo gauw boos worden op degene die je wilt helpen maar juist zachtaardig begeleiden. Maar vroeger werd ik vaak wel geïrriteerd omdat ik het inderdaad anders zag! Ik zag het vroeger als extra werk dat ik alsnog moest fixen omdat degene die het schreef niet capabel is! Maar dat is simpelweg niet zo! Zeker bij jonge collega's die graag iets goed willen doen en zo zelfverzekerd dat ze niet om hulp vragen tot het moment dat ze het werk opleveren en achteraf geconfronteerd worden met het onverwachte kommentar. Emoties kunnen dan oplopen. I.p.v. boos worden gebruik ik het moment juist om een sterke band te bouwen met mijn collegas door simpelweg opties te bespreken met voor en nadelen in een soort mini kennisdeling. Dat werkt erg goed om steeds meer naar elkaar toe te groeien i.p.v. uit elkaar.
@@sayfjawad522 Sorry hoor, maar als je dit ziet gaan toch direct je nekharen overeind staan? Degene die deze class geschreven heeft heeft gewoonweg geen enkel idee waar ze mee bezig zijn, en horen hun baan te verliezen. Dit gaat niet om het volgen van een soort van onterechte stricte dogma. Dit is heel slecht gemaakt. Punt. Dat mag men ook best weten. Als je emoties dan hoog oplopen, moet je het in het vervolg maar beter oplossen. Zie dat maar als een leermoment voor jezelf, dan.
Mooie uitleg, werk zelf met C# en werk met een legacy code base waarbij ik dit ook vaak tegenkom. 1 groot bestand die veel doet en die zelfde code dan ook nog eens over meerdere plekken hergebruikt middels het wel bekende Copy Pasta :D Het enigste wat ik nu wel jammer vind, is dat je geen PR hebt ingediend
super nice deze video. ik studeer nu zelf computing science aan de uni en moest vorige periode ook code specifyen en tests schrijven voor een ander groepje en later daarover code review doen. super interessant om te zien hoe dat er in het echt uit ziet. ook lekker duidelijke video 👍👍
Uit de verhalen van mijn vrienden in de IT verwacht ik dat dit juist geen stagiair was maar senior developers die op deze plek zijn gekomen door hun lange CV met ervaring, maar die niet geschoold zijn in het schrijven van testen en conventies als SOLID. Ook aan de profielen in de github te zien lijken er geen commits gedaan te zijn door jonge stagiairs.
Dat Nederlands en Engels door elkaar doet mij denken dat een stagiaire of 'leek' hieraan gewerkt heeft maar alles heeft laten schrijven door ChatGPT, die neigt nogal eens Nederlands en Engels door elkaar te halen in zijn responses haha. Anyways, goede video Sayf!
Nederlands en engels door elkaar is iets waar ik het ook zonder chatgpt soms lastig mee heb. Bij ons is de voertaal inprincipe engels (sluit beter aan bij technische concepten/documentatie) maar zijn sommige domeinspecifieke concepten beter of alleen maar uit te drukken in het nederlands. Ik vraag me af of dit iets is waar anderen ook tegenaan lopen, en hoe je bepaald of iets in het nederlands of engels uitgedrukt moet worden?
@sayfjawad522 Maar dit had eigenlijk nooit in de master mogen belanden, deze beginnende / niet ervaren developer heeft ondersteuning nodig om beter te worden, daar zijn mensen zoals jij heel hard voor nodig.
Dit soort code is dus precies waarom er ZZPers zijn. Experts op het gebied van code schrijven en tegengaan dat dit soort code uberhaupt ooit in productie beland, helemaal bij de overheid.
Overheid is niet zo bijzonder als dat je denkt. Had een sollicitatie gesprek bij een overheidsinstantie. Wat mij gelijk opviel was dat er legacy technologiën werden gebruikt, outdated besturingssystemen en dit soort fratsen.
Nog een ding wat mij opviel en weet dan niet of het heel gebruikelijk is in Java, maar ik kom van C#, en dat is de return type. Ik zag dat de return type "Object" is en daar kan je ook niet heel veel mee, en het is ook weer eens bug gevoelig. Het is ook moeilijk af te leiden welke soort waarde er dan precies teruggegeven wordt. Misschien had dit wel een preciezere type gemogen zijn, desnoods een class die je dan zelf maakt, of beter nog een soort "Result" class.
@@ducemano Dat klinkt dan alsof de basis architectuur al fout zit, en ik zou als ik de mogelijkheid had die in het begin al aanpassen. Maar je hebt gelijk, als we binnen de grenzen van een vastgestelde methode met signature blijven, dan is dit wellicht het maximale wat we eraan kunnen verbeteren.
@@ducemano Expliciet casten is niet nodig als je een concrete type specificeert, waarin #transformMessage een non-generieke Object specificeert als return-type. Alles (non primitives) is een Object in Java, dus als de developer "A transformMessage(..)" had gespecificeerd in zijn calculateAgeLimits class, dan zou hij A a = calculateAgeLimits#transformMessage gewoon kunnen doen, mits calculateAgeLimits concreet is.
Nou ja ik had een keer een gesprek als software engineer bij de belastingdienst. Werd destijds afgewezen omdat ik te weinig ervaring had. Met mijn 10 jaar als software engineer die diverse projecten heeft mogen werken zowel binnen als buiten Nederland :D Maar vervolgens zie je wel dit soort code bij de overheid Hahahaha
@@johnnydenver-m8r als je het leuk vindt om dan toch een keer te laten zien hoe het beter kan dan nodig ik je uit om mee te doen en met openbare broncode een review te doen... Goed voor de maatschappij lijkt mij. Je kunt via LinkedIn met me connecten en je bent van harte welkom
Wat een prettige manier voor een code review! Bedankt. Vind je in sommige situaties SOLID overkill? Ik vind dit voorbeeld een perfecte situatie waarin je ziet dat zelfs de kleinste programmas gaan buggen als je niet gestructureerd werkt. Soms lijkt iets zo simpel, lijkt het niet veel testen nodig te hebben en dan is het toch verleidelijk om een (achteraf gezien) monster te schrijven. Hoe denk jij daar over?
Mijn aanpak is altijd maatwerk. Een kleine project met een korte leven vergt wellicht iets minder aandacht dan een grote project met een lange leven. Maar ik geloof niet dat het meer werk is om SOLID te werken als je er al mee bekend bent en het kost altijd minder werk achteraf. Weder vraag, waarom vind je SOLID een 'monster'? Welke aspecten hieraan zijn monsterachtig en leveren meer werk?
Eens! Ow pardon, ik bedoelde met monster juist als je niet SOLID werkt en gewoon maar begint met alles achter elkaar plakken, zoals de originele code van deze video. Ik denk dat je code SOLID schrijven niet persee meer tijd kost, alleen moet je meer tijd besteden aan het plannen van wat je gaat schrijven.
Ik denk zelf dat het erg aan de context ligt. Over het algemeen vind ik bepaalde functie's logisch in een single-responsibility context, maar echt niet alles. Stel je voor dat we alles met interface segregation gaan toepassen: in sommige contexten wordt de code dan veels te complex en onbeheersbaar. Mijn mening is: f*ck dogma's, be free en gebruik ze als guidelines, maar niet als keiharde regel. Similar met SOLID, DDD, CQRS en wat voor principle je ook kan bedenken.
Ik ben niet tegen testen, maar wie controleert eigenlijk degene die de tests schrijft? Je kunt een test zo schrijven dat deze een goed resultaat oplevert en toch verkeerd kan zijn.
@@sayfjawad522 is mutatietesten de moeite waard? Ik weet dat InfoSupport o.a. het veel doet, maar ben benieuwd tot hoeverre het de testkwaliteit verbetert in de praktijk
Kijk eens naar Stryker, dit is een mutation testing framework en dat werkt echt heel gaaf! Hij veranderd delen van de code waardoor bepaalde testen zouden moeten falen. Faalt geen van je testen na deze "mutatie(s)"? Dan weet je dat je werk aan de winkel hebt
Dit is eigenlijk wel heel erg. De UWV is nu in het nieuws met verkeerde berekeningen, maar dit kan de volgende zijn. Hopelijk word deze software niet meer in productie gebruikt.
@@MarcelDevG ik heb daar geen zicht op natuurlijk, maar expertise in de overheid ontbreekt aan alle kanten en daarom hebben ze ook hulp nodig. Vind ik uiteraard 😅
@@rcsmitZelfs de zittende minister weet een heleboel niet over die wet. Bijvoorbeeld "krijgen ZZPers met terugwerkende kracht wel geld van de staat die teveel is betaald aan premies waarvan ze geen aanspraak konden op de lusten die gebaat zouden zijn bij de lasten? Als iemand ziek werd bijvoorbeeld maar geen vergoeding kreeg omdat hij/zij in een schijnzekerheid constructie was?"
There are many weirdo's on the internet and ignoring the content I created to help out other developers and instead trying to fish address information (regardless of where it is) tells me that you are such a weirdo.. Pleas do something useful with your life!
Dit gebeurt er dus als je stagiaires vers van het MBO code laat schrijven voor je lokale gemeente. Het is simpelweg beneden peil puur omdat ze zo onervaren zijn. Overigens niet te verwijten aan de hoogstwaarschijnlijke junior-programmeerders.
Geen enkel verwijt uiteraard. Code hoort gereviewed te worden en daarom doe ik ook mijn steentje bijdragen. Het is niet om te shamen maar om aan te geven dat we nog werk aan de winkel hebben.
Ik doe het wat hobbymatig en viel bijna van men stoel, wat een amateuristisch stukje code. Als dat een normaal niveau van een junior is dan kan ik ook meteen als junior beginnen.
Ik vind het knap hoe rustig en constructief je blijft! Heel respectvol. In mijn hoofd noemde ik het al direct 'prutswerk' toen ik het zag, en ik word erg geïrriteerd als ik bedenk dat deze code bij de overheid gebruikt wordt
@@l2z-g1g bedankt voor je feedback. Als je er goed bij stilstaat dan gaat een code review over het helpen van een collega, het bedrijf waar je iets voor wil betekenen en een leermoment ook voor jezelf en dan te bedenken dat een ander helpen een mooie iets is! Als je vanuit dat perspectief gaat werken dan zou je toch niet zo gauw boos worden op degene die je wilt helpen maar juist zachtaardig begeleiden.
Maar vroeger werd ik vaak wel geïrriteerd omdat ik het inderdaad anders zag! Ik zag het vroeger als extra werk dat ik alsnog moest fixen omdat degene die het schreef niet capabel is! Maar dat is simpelweg niet zo! Zeker bij jonge collega's die graag iets goed willen doen en zo zelfverzekerd dat ze niet om hulp vragen tot het moment dat ze het werk opleveren en achteraf geconfronteerd worden met het onverwachte kommentar. Emoties kunnen dan oplopen.
I.p.v. boos worden gebruik ik het moment juist om een sterke band te bouwen met mijn collegas door simpelweg opties te bespreken met voor en nadelen in een soort mini kennisdeling. Dat werkt erg goed om steeds meer naar elkaar toe te groeien i.p.v. uit elkaar.
@@sayfjawad522 Sorry hoor, maar als je dit ziet gaan toch direct je nekharen overeind staan? Degene die deze class geschreven heeft heeft gewoonweg geen enkel idee waar ze mee bezig zijn, en horen hun baan te verliezen. Dit gaat niet om het volgen van een soort van onterechte stricte dogma. Dit is heel slecht gemaakt. Punt. Dat mag men ook best weten. Als je emoties dan hoog oplopen, moet je het in het vervolg maar beter oplossen. Zie dat maar als een leermoment voor jezelf, dan.
Dit betekent niet dat elke code bij de overheid er zo uit ziet.
Mooie uitleg, werk zelf met C# en werk met een legacy code base waarbij ik dit ook vaak tegenkom.
1 groot bestand die veel doet en die zelfde code dan ook nog eens over meerdere plekken hergebruikt middels het wel bekende Copy Pasta :D
Het enigste wat ik nu wel jammer vind, is dat je geen PR hebt ingediend
super nice deze video. ik studeer nu zelf computing science aan de uni en moest vorige periode ook code specifyen en tests schrijven voor een ander groepje en later daarover code review doen. super interessant om te zien hoe dat er in het echt uit ziet. ook lekker duidelijke video 👍👍
Bedankt voor de positieve feedback!
Dit had niet door de code review mogen komen!
@@pudicio ik denk niet dat er review is geweest!
Zeer interessant om dit soort content ook een keer in een nederlandse context te zien!
Goeie content! Bij mij op werk gebruiken wij de term ‘bananencode’, erg toepasselijk ;)
Super video, thanks yt algorithme
Uit de verhalen van mijn vrienden in de IT verwacht ik dat dit juist geen stagiair was maar senior developers die op deze plek zijn gekomen door hun lange CV met ervaring, maar die niet geschoold zijn in het schrijven van testen en conventies als SOLID. Ook aan de profielen in de github te zien lijken er geen commits gedaan te zijn door jonge stagiairs.
Oh ja vergeten te vermelden, maar geweldige video natuurlijk
Echt een top video kan je dit vaker doen
Zolang de DBA wet mij de ruimte geeft om op de bank te zitten ga ik dit blijven doen 😂
Dat Nederlands en Engels door elkaar doet mij denken dat een stagiaire of 'leek' hieraan gewerkt heeft maar alles heeft laten schrijven door ChatGPT, die neigt nogal eens Nederlands en Engels door elkaar te halen in zijn responses haha. Anyways, goede video Sayf!
Ik denk dat ChatGPT het wel beter had gedaan hahah
Ik snap wat je zegt, maar chatgpt kan betere code schrijven
@@HighVoltageNL dat kan ChatGPT zeker, dat weet ik ook, maar het ligt er maar net aan wat jouw prompt is..
Nederlands en engels door elkaar is iets waar ik het ook zonder chatgpt soms lastig mee heb. Bij ons is de voertaal inprincipe engels (sluit beter aan bij technische concepten/documentatie) maar zijn sommige domeinspecifieke concepten beter of alleen maar uit te drukken in het nederlands. Ik vraag me af of dit iets is waar anderen ook tegenaan lopen, en hoe je bepaald of iets in het nederlands of engels uitgedrukt moet worden?
Deze gitrepo is al jaren oud though
Dit moet wel een stagiaire zijn geweest haha!
@@joeypothoff7721 ja of een developer die voor het eerst java schrijft inderdaad
@sayfjawad522 Maar dit had eigenlijk nooit in de master mogen belanden, deze beginnende / niet ervaren developer heeft ondersteuning nodig om beter te worden, daar zijn mensen zoals jij heel hard voor nodig.
mwoah zelfs ik als momenteel stagaire zijnde vind de orginele oplossing vrij dom haha
Dit soort code is dus precies waarom er ZZPers zijn.
Experts op het gebied van code schrijven en tegengaan dat dit soort code uberhaupt ooit in productie beland, helemaal bij de overheid.
Overheid is niet zo bijzonder als dat je denkt. Had een sollicitatie gesprek bij een overheidsinstantie. Wat mij gelijk opviel was dat er legacy technologiën werden gebruikt, outdated besturingssystemen en dit soort fratsen.
Nog een ding wat mij opviel en weet dan niet of het heel gebruikelijk is in Java, maar ik kom van C#, en dat is de return type.
Ik zag dat de return type "Object" is en daar kan je ook niet heel veel mee, en het is ook weer eens bug gevoelig.
Het is ook moeilijk af te leiden welke soort waarde er dan precies teruggegeven wordt.
Misschien had dit wel een preciezere type gemogen zijn, desnoods een class die je dan zelf maakt, of beter nog een soort "Result" class.
Geen haat, coderegel 18 is een overschrijving van een overorven methode, dus als die signature anders moet dient de abstract classe te veranderen.
Ps je kunt natuurlijk een specifieker object retourneren dan Object. Maar je moet hem idd expliciet casten, dat kan onnodig moeilijk zijn.
@@ducemano Dat klinkt dan alsof de basis architectuur al fout zit, en ik zou als ik de mogelijkheid had die in het begin al aanpassen.
Maar je hebt gelijk, als we binnen de grenzen van een vastgestelde methode met signature blijven, dan is dit wellicht het maximale wat we eraan kunnen verbeteren.
@@ducemano Expliciet casten is niet nodig als je een concrete type specificeert, waarin #transformMessage een non-generieke Object specificeert als return-type. Alles (non primitives) is een Object in Java, dus als de developer "A transformMessage(..)" had gespecificeerd in zijn calculateAgeLimits class, dan zou hij A a = calculateAgeLimits#transformMessage gewoon kunnen doen, mits calculateAgeLimits concreet is.
Nou ja ik had een keer een gesprek als software engineer bij de belastingdienst. Werd destijds afgewezen omdat ik te weinig ervaring had. Met mijn 10 jaar als software engineer die diverse projecten heeft mogen werken zowel binnen als buiten Nederland :D Maar vervolgens zie je wel dit soort code bij de overheid Hahahaha
@@johnnydenver-m8r als je het leuk vindt om dan toch een keer te laten zien hoe het beter kan dan nodig ik je uit om mee te doen en met openbare broncode een review te doen... Goed voor de maatschappij lijkt mij. Je kunt via LinkedIn met me connecten en je bent van harte welkom
Wat goed dat je dit doet. Ik ga me eens goed inlezen.
Leuke video! Heb je inmiddels contact gehad met de gemeente of de originele auteur?
@@ultralooter ik heb ze getagged maar ze hebben niet echt gereageerd. Andere instanties overigens wel zoals TNO, Rijkswaterstaat
Wat een prettige manier voor een code review! Bedankt.
Vind je in sommige situaties SOLID overkill? Ik vind dit voorbeeld een perfecte situatie waarin je ziet dat zelfs de kleinste programmas gaan buggen als je niet gestructureerd werkt.
Soms lijkt iets zo simpel, lijkt het niet veel testen nodig te hebben en dan is het toch verleidelijk om een (achteraf gezien) monster te schrijven. Hoe denk jij daar over?
Mijn aanpak is altijd maatwerk. Een kleine project met een korte leven vergt wellicht iets minder aandacht dan een grote project met een lange leven. Maar ik geloof niet dat het meer werk is om SOLID te werken als je er al mee bekend bent en het kost altijd minder werk achteraf.
Weder vraag, waarom vind je SOLID een 'monster'? Welke aspecten hieraan zijn monsterachtig en leveren meer werk?
Eens!
Ow pardon, ik bedoelde met monster juist als je niet SOLID werkt en gewoon maar begint met alles achter elkaar plakken, zoals de originele code van deze video.
Ik denk dat je code SOLID schrijven niet persee meer tijd kost, alleen moet je meer tijd besteden aan het plannen van wat je gaat schrijven.
Ik denk zelf dat het erg aan de context ligt. Over het algemeen vind ik bepaalde functie's logisch in een single-responsibility context, maar echt niet alles. Stel je voor dat we alles met interface segregation gaan toepassen: in sommige contexten wordt de code dan veels te complex en onbeheersbaar.
Mijn mening is: f*ck dogma's, be free en gebruik ze als guidelines, maar niet als keiharde regel. Similar met SOLID, DDD, CQRS en wat voor principle je ook kan bedenken.
@@brandon6490 eens, er valt ook iets te zeggen over de localiteit van functionaliteit om het makkelijker te kunnen debuggen o.a.
february is 28 dagen de einige mand , daarom als 29 is an mand february zet die warde naar 28 , wats niet klopt hier?
dus niemand gaat geboren on february 29ste 😳
Ik ben niet tegen testen, maar wie controleert eigenlijk degene die de tests schrijft? Je kunt een test zo schrijven dat deze een goed resultaat oplevert en toch verkeerd kan zijn.
@@DavidNijman ik controleer ze en gebruik ook PiTest omnog extra geautomatiseerd te dubbelcheckken
@@sayfjawad522 is mutatietesten de moeite waard? Ik weet dat InfoSupport o.a. het veel doet, maar ben benieuwd tot hoeverre het de testkwaliteit verbetert in de praktijk
Kijk eens naar Stryker, dit is een mutation testing framework en dat werkt echt heel gaaf! Hij veranderd delen van de code waardoor bepaalde testen zouden moeten falen. Faalt geen van je testen na deze "mutatie(s)"? Dan weet je dat je werk aan de winkel hebt
Fr homie. @12:04 maffe datum 30 dec
30 December was juist een goede datum maar ik heb het niet goed uitgelegd! Bedankt voor de feedback.
C programmeur schrijft zijn eerste Java code
Dit is eigenlijk wel heel erg. De UWV is nu in het nieuws met verkeerde berekeningen, maar dit kan de volgende zijn.
Hopelijk word deze software niet meer in productie gebruikt.
@@MarcelDevG ik heb daar geen zicht op natuurlijk, maar expertise in de overheid ontbreekt aan alle kanten en daarom hebben ze ook hulp nodig. Vind ik uiteraard 😅
Opdrachten drogen op, ik ben net als zzp iter begonnen😢😢
@@skywater9607 Oei, heb je hulp nodig? Connect even via LinkedIn en stuur me een berichtje
Waarom zijn deze repo's openbaar lol
WOO denk.ik.
Ik snap er weinig van, maar heb maar even een issue geopend :)
De video is juist heel duidelijk right?
@@ShamaticWow ik zit totaal niet in de materie. Maar ik denk dat voor hen die dat wel zijn het allemaal heel duidelijk is.
@@rcsmitZelfs de zittende minister weet een heleboel niet over die wet. Bijvoorbeeld "krijgen ZZPers met terugwerkende kracht wel geld van de staat die teveel is betaald aan premies waarvan ze geen aanspraak konden op de lusten die gebaat zouden zijn bij de lasten? Als iemand ziek werd bijvoorbeeld maar geen vergoeding kreeg omdat hij/zij in een schijnzekerheid constructie was?"
ben jij toevallig from teran in iran?
There are many weirdo's on the internet and ignoring the content I created to help out other developers and instead trying to fish address information (regardless of where it is) tells me that you are such a weirdo.. Pleas do something useful with your life!
Dit gebeurt er dus als je stagiaires vers van het MBO code laat schrijven voor je lokale gemeente. Het is simpelweg beneden peil puur omdat ze zo onervaren zijn. Overigens niet te verwijten aan de hoogstwaarschijnlijke junior-programmeerders.
Geen enkel verwijt uiteraard. Code hoort gereviewed te worden en daarom doe ik ook mijn steentje bijdragen. Het is niet om te shamen maar om aan te geven dat we nog werk aan de winkel hebben.
Ik doe het wat hobbymatig en viel bijna van men stoel, wat een amateuristisch stukje code. Als dat een normaal niveau van een junior is dan kan ik ook meteen als junior beginnen.