[Disc.] Documenteren van code in software*

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Ik zit met de gedachte, is documenteren van code nodig?

Dit is gewoon een soort vraag om een goede discussie mee uit te lokken, hoe kijken jullie tegen het documenteren van software aan, vinden jullie het nodig, handig? Hoe pakken jullie het aan?

Ikzelf begin altijd met het documenteren van code in UML/Flowcharts voordat ik aan mijn project begin. Dit omdat ik mijn code wil bedenken voor ik het opschrijf. Ook wil ik op dezelfde denkhoogte komen als mijn werkgever(s).
Meestal pas ik ze wel aan tijdens het programmeren. Tijdens het programmeren gebruik ik ook zowel interne (in de code zelf) documentatie als externe (in een "word/writer-file" of op een wiki).

Hoe kijken jullie ertegenaan?

P.S.: ik hoop dat ik hierover een topic mag openen..

[ Voor 16% gewijzigd door Amanush op 27-11-2013 21:29 ]

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

Anoniem: 144479

Niets mis met UML, flowcharts, state diagrams maar de code IS je documentatie. Elegante code documenteert zichzelf.

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Onderbouw je mening, Cagalli.

Wellicht documenteert elegante code zichzelf, maar ik denk dat het belangrijk is dat je je eigen code snapt voordat je het schrijft, dat kan via UML/Flowcharts.
Ook is het zeer handig om als tool te gebruiken om op diezelfde denkhoogte te komen als je collega's en/of werkgever(s).

Ik ben het deels met je eens :)

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
Overzichtelijke code met duidelijke variabel namen is al een begin.
Voor elke methode uitleg + parameters en return uitleggen is nog beter.


UML en flowcharts zijn een goede leidraad. Uiteindelijk komt het project meestal totaal anders eruit te zien. Maar het is een basis waar je op kan bouwen.

[ Voor 36% gewijzigd door Xepos op 27-11-2013 21:33 ]


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Xepos schreef op woensdag 27 november 2013 @ 21:32:
Overzichtelijke code met duidelijke variabel namen is al een begin.
Voor elke methode uitleg + parameters en return uitleggen is nog beter.
Doe je de uitleg in de code zelf, of daarbuiten?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
Amanush schreef op woensdag 27 november 2013 @ 21:33:
[...]

Doe je de uitleg in de code zelf, of daarbuiten?
Boven elke code(methode) blok code en uiteindelijk dat exporteren zodat je direct een tekstbestand hebt met uitleg van alle aanwezige methodes. Direct een controle of je wel alles hebt geïmplementeerd of niet dubbel werk hebt gedaan over verschillende klassen.

Acties:
  • 0 Henk 'm!

Anoniem: 144479

Amanush schreef op woensdag 27 november 2013 @ 21:32:
Onderbouw je mening, Cagalli.

Wellicht documenteert elegante code zichzelf, maar ik denk dat het belangrijk is dat je je eigen code snapt voordat je het schrijft, dat kan via UML/Flowcharts.
Ook is het zeer handig om als tool te gebruiken om op diezelfde denkhoogte te komen als je collega's en/of werkgever(s).

Ik ben het deels met je eens :)
Het is veel belangrijker dat andere mensen jouw code begrijpen. Goede code is code dat eenvoudig door andere te lezen (te begrijpen) is.

Ik bedoel overigens de code zelf. Niet code commenting. Comments zijn code smell (mijn mening). Ten eerste kloppen comments vaak niet en ten tweede ook nog eens vaak incompleet.

[ Voor 13% gewijzigd door Anoniem: 144479 op 27-11-2013 21:38 ]


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:36:
[...]


Het is veel belangrijker dat andere mensen jouw code begrijpen. Goede code is code dat eenvoudig door andere te lezen (te begrijpen) is.
Daar ben ik het volledig mee eens. ik denk dat goede code wel handig is, inderdaad.

Ook denk ik dat je het meer begrijpelijk kan maken door het goed te documenteren.
Xepos schreef op woensdag 27 november 2013 @ 21:35:
[...]


Boven elke code(methode) blok code en uiteindelijk dat exporteren zodat je direct een tekstbestand hebt met uitleg van alle aanwezige methodes. Direct een controle of je wel alles hebt geïmplementeerd of niet dubbel werk hebt gedaan over verschillende klassen.
Dat klinkt als een goed methode om te documenteren, inderdaad. Maak je ook "class diagrams"?

[ Voor 35% gewijzigd door Amanush op 27-11-2013 21:38 ]

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
Amanush schreef op woensdag 27 november 2013 @ 21:37:
[...]


Daar ben ik het volledig mee eens. ik denk dat goede code wel handig is, inderdaad.

Ook denk ik dat je het meer begrijpelijk kan maken door het goed te documenteren.
Nou ja meestal wanneer mensen verder gaan met je code zien ze alleen maar je code en de commentaar daarin. Binnen veel bedrijven raken ze documentatie kwijt.

[...]

Dat klinkt als een goed methode om te documenteren, inderdaad. Maak je ook "class diagrams"?
[/quote]

Ligt aan de methode die het ontwikkelteam gebruikt. En ook aan de grootte ervan. Bij groepen van 2-4 man dan is het meestal nog goed mogelijk om het zonder te doen (al is het niet aan te raden). Bij groter dan is het zeker een vereiste!

Wat ik belangrijk vind is dat het URS goed word opgesteld in overleg met de klant (99% van je project word gedefinieerd uit dit document). En van daaruit de koppeling naar de functionele en technische specificaties.

[ Voor 38% gewijzigd door Xepos op 27-11-2013 21:43 ]


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 16-06 23:39

Douweegbertje

Wat kinderachtig.. godverdomme

Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:29:
Niets mis met UML, flowcharts, state diagrams maar de code IS je documentatie. Elegante code documenteert zichzelf.
Nou dan hoop ik dat ik nooit in jouw werk hoef te werken. Je code is je code en absoluut NIET je documentatie. Met een duidelijke code kan je verwachte dat iemand het ongeveer snapt, maar je wilt vaak ook nog eens het doel weten, wat er gebeurt, waar het vandaan komt en waar het naar toe gaat. Jouw verhaal is misschien leuk en van toepassing op een klein projectje met een paar bestandjes en een paar classes.. maar wat nou als je tegen de 100 files gaat aanlopen? Wat nou als je bepaalde koppelingen gaat krijgen met API's en andere dingen van 3e partijen?

Documentatie is zo verdomd belangrijk en helaas kom ik steeds oude meuk tegen die weer eens niet gedocumenteerd is.

In feite zou je elk stukje in je code goed moeten defineren, als is het alleen maar voor je IDE. Daarbuiten wil je het liefst nog een stuk papier hebben waar dingen al dan niet globaal in staan.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 12:32

Onbekend

...

Het "documenteren" van code doe ik gewoon in de vorm van commentaar in de code zelf.
Voor mensen die met de software werken (klanten en helpdesk) is er een help of flowchart beschikbaar waarmee ze zich kunnen helpen. Voor hun heeft het documenteren van specifieke code geen zin.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Xepos schreef op woensdag 27 november 2013 @ 21:39:
[...]


Nou ja meestal wanneer mensen verder gaan met je code zien ze alleen maar je code en de commentaar daarin. Binnen veel bedrijven raken ze documentatie kwijt.
Ik heb niet veel ervaring met grote bedrijven. Hoe bedoel je, raken ze de documentatie kwijt?
Wordt het als ware "in een hoekje geschoven en nooit meer naar gekeken"?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 11:25

Knutselsmurf

LED's make things better

Je documentatie moet niet beschrijven WAT de code doet, want dat is in het algemeen aan de code zelf te zien. Je code moet beschrijven WAAROM de code zo werkt. Welke beslissingen zijn er genomen? Wat was het eisenpakket van de klant? Verder is het nuttig om de hoofdlijnen te beschrijven. Die zijn vaak niet uit de grote hoeveelheid bronbestanden te halen.

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 16-06 23:39

Douweegbertje

Wat kinderachtig.. godverdomme

Knutselsmurf schreef op woensdag 27 november 2013 @ 21:41:
Je documentatie moet niet beschrijven WAT de code doet, want dat is in het algemeen aan de code zelf te zien. Je code moet beschrijven WAAROM de code zo werkt. Welke beslissingen zijn er genomen? Wat was het eisenpakket van de klant? Verder is het nuttig om de hoofdlijnen te beschrijven. Die zijn vaak niet uit de grote hoeveelheid bronbestanden te halen.
Dit, jij legt het goed uit. Kwam maar niet op zo'n zin haha :+
Amanush schreef op woensdag 27 november 2013 @ 21:40:
[...]

Ik heb niet veel ervaring met grote bedrijven. Hoe bedoel je, raken ze de documentatie kwijt?
Wordt het als ware "in een hoekje geschoven en nooit meer naar gekeken"?
Ja/Nee

Meestal is dat in een organisatie waar al sowieso geen documentatie is, of in elk geval weinig. Vervolgens is er dan tijdsdruk waardoor ook nog eens halve documentatie is die nooit wordt afgemaakt. Als je deze factoren al hebt, dan zal er vast ook niet een goed systeem zijn om alles te beheren. Een word document is leuk, maar als dit weer een naam heeft van documentatie_van_xproject_v2_nu_echt_final gaat zulke meuk wel eens verloren of wordt het niet gebruikt/gevonden :+
Wij zijn nu in elk geval bezig met redmine; http://www.redmine.org/

[ Voor 44% gewijzigd door Douweegbertje op 27-11-2013 21:45 ]


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 12:30
Doxygen is enorm behulpzaam. Met een IDE die dat snapt programmeert dat ook nog veel comfortabeler.
Je hoeft niet alles netjes van doxygen te voorzien, maar het helpt enorm!

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Knutselsmurf schreef op woensdag 27 november 2013 @ 21:41:
Je documentatie moet niet beschrijven WAT de code doet, want dat is in het algemeen aan de code zelf te zien. Je code moet beschrijven WAAROM de code zo werkt. Welke beslissingen zijn er genomen? Wat was het eisenpakket van de klant? Verder is het nuttig om de hoofdlijnen te beschrijven. Die zijn vaak niet uit de grote hoeveelheid bronbestanden te halen.
Ik denk dat dit een zeer goed omschreven punt is waar we allen inderdaad op moeten letten. Wat de code doet kan je meestal uit de code itself halen, maar waarom en waarom bepaalde keuzes dus niet.
Ik denk altijd: het is belangrijk de toekomstige vragen van de toekomste ontwikkelaars die in de toekomst aan je code gaan werken al te beantwoorden.
Een vraag is nooit "wat doet het", maar eerder "waarom doet het" of "hoe doet het".

Een soort "Golden Circle" in softwaretaal!
jeroen3 schreef op woensdag 27 november 2013 @ 21:43:
Doxygen is enorm behulpzaam. Met een IDE die dat snapt programmeert dat ook nog veel comfortabeler.
Je hoeft niet alles netjes van doxygen te voorzien, maar het helpt enorm!
Ik heb nog nooit van Doxygen gehoord. Wat is het, wat doet het?

[ Voor 15% gewijzigd door Amanush op 27-11-2013 21:44 ]

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
Amanush schreef op woensdag 27 november 2013 @ 21:44:
[...]

Ik denk dat dit een zeer goed omschreven punt is waar we allen inderdaad op moeten letten. Wat de code doet kan je meestal uit de code itself halen, maar waarom en waarom bepaalde keuzes dus niet.
Ik denk altijd: het is belangrijk de toekomstige vragen van de toekomste ontwikkelaars die in de toekomst aan je code gaan werken al te beantwoorden.
Een vraag is nooit "wat doet het", maar eerder "waarom doet het" of "hoe doet het".

Een soort "Golden Circle" in softwaretaal!


[...]

Ik heb nog nooit van Doxygen gehoord. Wat is het, wat doet het?
Die laatste twee vragen beantwoord je in het technische en functionele specificaties.
URS = Wat?
FS = Waarom?
TS = Hoe?

In het begin had ik het hier nog ontzettend moeilijk mee, maar zodra je dit onthoud dan weet je waarvoor de documenten staan en het belang ook hierbij.

Over het kwijtraken van documenten: veel bedrijven kopen software en ontwikkelen het zelf. Daarbij krijgen ze vaak de documentatie niet mee. Die andere bedrijven kunnen failliet raken of andere situaties voorkomen waardoor je de documentatie niet kan krijgen.

[ Voor 20% gewijzigd door Xepos op 27-11-2013 21:50 ]


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Xepos schreef op woensdag 27 november 2013 @ 21:47:
[...]


Die laatste twee vragen beantwoord je in het technische en functionele specificaties.
URS = Wat?
FS = Waarom?
TS = Hoe?
Waar staat URS voor?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

Anoniem: 144479

Xepos schreef op woensdag 27 november 2013 @ 21:47:
[...]


Die laatste twee vragen beantwoord je in het technische en functionele specificaties.
URS = Wat?
FS = Waarom?
TS = Hoe?
Die zijn toch nooit up-to-date. Dat zijn vaak statische documenten. De code zelf is echter altijd current.

Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
User requirements specifications. De (regels van zowel overheid als bepaalde regels van het bedrijf), eisen en wensen van de klant.

Acties:
  • 0 Henk 'm!

Anoniem: 144479

douweegbertje schreef op woensdag 27 november 2013 @ 21:42:
[...]


Dit, jij legt het goed uit. Kwam maar niet op zo'n zin haha :+


[...]


Ja/Nee

Meestal is dat in een organisatie waar al sowieso geen documentatie is, of in elk geval weinig. Vervolgens is er dan tijdsdruk waardoor ook nog eens halve documentatie is die nooit wordt afgemaakt. Als je deze factoren al hebt, dan zal er vast ook niet een goed systeem zijn om alles te beheren. Een word document is leuk, maar als dit weer een naam heeft van documentatie_van_xproject_v2_nu_echt_final gaat zulke meuk wel eens verloren of wordt het niet gebruikt/gevonden :+
Wij zijn nu in elk geval bezig met redmine; http://www.redmine.org/
Redmine is gewoon een bugtracker. Geen idee waarom je daar documenten in wilt bewaren?

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:51:
[...]


Die zijn toch nooit up-to-date. Dat zijn vaak statische documenten. De code zelf is echter altijd current.
Wat is de beste manier om dynamisch te documenteren? Zijn daar oplossingen voor?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:56
Goh, ik op het werk hebben we een werkwijze eerst een high level design maken met daar in waarom je een bepaalde klasse nodig hebt wat erin gaat komen, wat er uitgaat gaan; veronderstellingen, ....

Dan een meer technical design welke tabellen en velden heb je nodig. Daarna een gedetailleerde uitwerking met de stappen wat er gebeurd.

Je wilt aan de klant of business zijde kunnen verklaren waarom iets X tijd kost. Met een uitgebreid high level waar de klant inspraak op heeft kun je vaak veel kopzorgen besparen in de volgende fases. Code schrijven zelf is niet moeilijk.

De code zelf consistent houden vind ik zelf ook belangrijk. Wat hier iemand zei dat code leesbaar moet zijn is niet altijd haalbaar voor gewenste optimalisaties waardoor de code minder leesbaar is. Uiteraard hangt dat weer af van hoe uitgebreid het programma is en hoeveel gegevens er verwerkt moeten worden.

UML schema, class diagrams vind ik opzich wel goed maar enkel op highlevel niveau en vooral als je met een wat groter team werkt. Ik ben ook een voorstander van prototype functions: Ergo naar buiten af public functies op voorhand goed over nadenken en zo min mogelijk hier van afwijken. Zodat mensen die in andere delen van het programma werken kunnen verwachten wat ze kunnen krijgen als output in class X met als input Y.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

Anoniem: 144479

Xepos schreef op woensdag 27 november 2013 @ 21:51:
[...]


User requirements specifications. De (regels van zowel overheid als bepaalde regels van het bedrijf), eisen en wensen van de klant.
Niets mis een kort documentje die dit soort dingen beschrijft maar je bedoelt toch niet een compleet document van min 50 pagina's? Klinkt nogal waterval methode achtig... we weten allemaal dat programmeren een creatief proces is dat zich zelden goed laat voorspellen.

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Icekiller2k6 schreef op woensdag 27 november 2013 @ 21:53:
Goh, ik op het werk hebben we een werkwijze eerst een high level design maken met daar in waarom je een bepaalde klasse nodig hebt wat erin gaat komen, wat er uitgaat gaan; veronderstellingen, ....

Dan een meer technical design welke tabellen en velden heb je nodig. Daarna een gedetailleerde uitwerking met de stappen wat er gebeurd.

Je wilt aan de klant of business zijde kunnen verklaren waarom iets X tijd kost. Met een uitgebreid high level waar de klant inspraak op heeft kun je vaak veel kopzorgen besparen in de volgende fases. Code schrijven zelf is niet moeilijk.

De code zelf consistent houden vind ik zelf ook belangrijk. Wat hier iemand zei dat code leesbaar moet zijn is niet altijd haalbaar voor gewenste optimalisaties waardoor de code minder leesbaar is. Uiteraard hangt dat weer af van hoe uitgebreid het programma is en hoeveel gegevens er verwerkt moeten worden.

UML schema, class diagrams vind ik opzich wel goed maar enkel op highlevel niveau en vooral als je met een wat groter team werkt. Ik ben ook een voorstander van prototype functions: Ergo naar buiten af public functies op voorhand goed over nadenken en zo min mogelijk hier van afwijken. Zodat mensen die in andere delen van het programma werken kunnen verwachten wat ze kunnen krijgen als output in class X met als input Y.
Ik denk dat dit een goede manier van documenteren is. Gebruik je de diagrammen ook in latere stadia?

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 16-06 23:39

Douweegbertje

Wat kinderachtig.. godverdomme

Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:51:
[...]


Redmine is gewoon een bugtracker. Geen idee waarom je daar documenten in wilt bewaren?
ja, "gewoon" een bugtracker...
Multiple projects support
Flexible role based access control
Flexible issue tracking system
Gantt chart and calendar
News, documents & files management
Feeds & email notifications
Per project wiki
Per project forums
Time tracking
Custom fields for issues, time-entries, projects and users
SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs)
Issue creation via email
Multiple LDAP authentication support
User self-registration support
Multilanguage support
Multiple databases support
Maar goed..

Acties:
  • 0 Henk 'm!

Anoniem: 144479

Icekiller2k6 schreef op woensdag 27 november 2013 @ 21:53:
Goh, ik op het werk hebben we een werkwijze eerst een high level design maken met daar in waarom je een bepaalde klasse nodig hebt wat erin gaat komen, wat er uitgaat gaan; veronderstellingen, ....

Dan een meer technical design welke tabellen en velden heb je nodig. Daarna een gedetailleerde uitwerking met de stappen wat er gebeurd.
Dan kun je toch niet van te voren allemaal weten. Nogal onzinnig om dit allemaal te documenteren. Je weet echt dat je in week 20, class X of Y gaat implementeren?

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Ik denk dat dat vrij realistisch is.

Je denkt je code meestal tijdens gesprekken met klanten en collega's al uit. Dan kan je ook ongeveer bedenken welke classes je nodig gaat hebben.

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

Anoniem: 144479

douweegbertje schreef op woensdag 27 november 2013 @ 21:55:
[...]


ja, "gewoon" een bugtracker...


[...]


Maar goed..
Klopt. Vergeten dat Redmine ook een wiki heeft.

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:56
Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:53:
[...]
....programmeren een creatief proces is dat zich zelden goed laat voorspellen.
En daar door krijg je discussies over kost, delivery time,...


Wat dus te vaak gebeurd in mijn opinie is de klant gewoon blij houden in het begin dat alles gaat en the sky is the limit. Terwijl ik net vind dat je tegen een klant moet zeggen van kijk jij wilt dit daarvoor hebben we dit budget nodig met zoveel tijd. Ook in begin fase de klant al 'bijbrengen' dat van gedacht veranderen nefaste gevolgen kan hebben. Je moet een klant begeleiden in zijn keuzes. Doordacht en beredeneerd.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 16-06 23:39

Douweegbertje

Wat kinderachtig.. godverdomme

Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:56:
[...]


Dan kun je toch niet van te voren allemaal weten. Nogal onzinnig om dit allemaal te documenteren. Je weet echt dat je in week 20, class X of Y gaat implementeren?
Als je dat niet weet, heb je je documentatie verkeerd gedaan. Juist als je alles goed volgt, weet je wat je allemaal nodig hebt EN weet je dus zeker dat je alles hebt. Indien je in week 20 er achter komt dat je nog 'functie X' moet hebben, dan heb je dus niet goed je documentatie / cases / etc gemaakt.

Het is alleen een keuze, en het verschilt ENORM waarin je werkt (welke taal) en hoe groot een project is. Indien je bijv. een project hebt wat heel veel tijd gaat kosten -en- waar meerdere mensen aan gaan werken, wil je dom weg niet vanuit scratch gaan typen en 'ik zie wel wat ik nodig heb'.

Daarom heb je juist documentatie om juist voordat je begint bepaalde 'uitdagingen' te elimineren, zodat je niet in week 20 bedenkt: 'kut, ik mis dit, en nu moet dit helemaal anders en oh.. dan verander ik dit wel even zodat ik alsnog mijn data krijg etc '...

Acties:
  • 0 Henk 'm!

Anoniem: 144479

Amanush schreef op woensdag 27 november 2013 @ 21:57:
Ik denk dat dat vrij realistisch is.

Je denkt je code meestal tijdens gesprekken met klanten en collega's al uit. Dan kan je ook ongeveer bedenken welke classes je nodig gaat hebben.
Jazeker maar hoever ga je hier in? Je kunt onmogelijk overal rekening mee houden. Om dit allemaal in een FO te bschrijven is daarom nogal nutteloos. Je komt er pas echt achter wanneer je al druk bezig bent met de implementatie.

Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Ik wil icekiller2k6 even aanvullen. Ik denk dat het belangrijk is dat je de vrager begeleidt in zijn keuzes. Het is een kwestie van vraag en aanbod. Veranderdt de vraag, veranderdt het aanbod.
Dit kan dus ook met documentatie.

Cagalli's argument speelt ook een rol, je kan niet de volle 100% van vooraf aan zien komen. Wellicht +- 60% of zelfs meer, maar de volle 100% gaat niet lukken.

[ Voor 26% gewijzigd door Amanush op 27-11-2013 22:03 ]

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:56
@Amanush,
Class diagrams etc worden meestal na een eerste beta bijgewerkt als we zien dat er bepaalde node naar boven zijn gekomen. Dit kan altijd gebeuren. Punt is je wilt dit niet in basis functionaliteit, enhancements is in mijn opinie anders.

Bv ik wil een knopje daar hebben dat ik ergens kan zien hoeveel het totale winst zou zijn als ik de klant 3% korting zou geven is iets anders dan. Als ik op dit knopje druk wil ik dat elke bestelling in de toekomst 3% korting krijgt.

Het eerste is een visueel hulpmiddel het. Het tweede is een effectief extra functionaliteit in mijn ogen.

En inderdaad documentatie schrijf je daarom op 2 niveau's highlevel voor business en gedetailleerd (voor jezelf of een programmer) met tabellen, velden en misschien zelfs wat pseudo code.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

Anoniem: 144479

douweegbertje schreef op woensdag 27 november 2013 @ 22:01:
[...]


Als je dat niet weet, heb je je documentatie verkeerd gedaan. Juist als je alles goed volgt, weet je wat je allemaal nodig hebt EN weet je dus zeker dat je alles hebt. Indien je in week 20 er achter komt dat je nog 'functie X' moet hebben, dan heb je dus niet goed je documentatie / cases / etc gemaakt.

Het is alleen een keuze, en het verschilt ENORM waarin je werkt (welke taal) en hoe groot een project is. Indien je bijv. een project hebt wat heel veel tijd gaat kosten -en- waar meerdere mensen aan gaan werken, wil je dom weg niet vanuit scratch gaan typen en 'ik zie wel wat ik nodig heb'.

Daarom heb je juist documentatie om juist voordat je begint bepaalde 'uitdagingen' te elimineren, zodat je niet in week 20 bedenkt: 'kut, ik mis dit, en nu moet dit helemaal anders en oh.. dan verander ik dit wel even zodat ik alsnog mijn data krijg etc '...
Software ontwikkeling is een creatief proces. Je weet zelden van te voren waar je allemaal tegen aan gaat lopen. Je kan mij niet wijs maken dat je alle talen of api's uit je hoofd kent of wel? Je kan SO niet meer vergelijken met het bouwen van een huis. User requirements veranderen altijd of veranderen spontaan tijdens de implementatie.

EDIT:

Omdat je niet weet waar je allemaal tegen aan gaat lopen is een strakke planning ook vaak niet mogelijk. Plannen is vaak gewoon liegen.

[ Voor 5% gewijzigd door Anoniem: 144479 op 27-11-2013 22:11 ]


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 09:30

Amanush

Saai persoon.

Topicstarter
Anoniem: 144479 schreef op woensdag 27 november 2013 @ 22:08:
[...]


Software ontwikkeling is een creatief proces. Je weet zelden van te voren waar je allemaal tegen aan gaat lopen. Je kan mij niet wijs maken dat je alle talen of api's uit je hoofd kent of wel? Je kan SO niet meer vergelijken met het bouwen van een huis. User requirements veranderen altijd of veranderen spontaan tijdens de implementatie.
Ik weet wellicht wel de structuur van de meeste talen uit mijn hoofd. Een bepaalde structuur wordt namelijk gebruikt in meerdere talen.

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:56
@Cagalli,

Ummmm ... de code solution is een creatief process... Het project niet.

Als de klant vraagt we willen een applicatie waar we kassa verkopen mee kunnen doen moet je niet opeens afkomen met een programma dat ook brood kan snijden of het licht aan en uit kan doen.

Een programma wordt gemaakt aan de hand van een nood. Een nood kan veranderen natuurlijk. Het punt is dat creatief process wat jij zegt de noden van de klant onderzoeken is. Dit moet eerlijk gezegd in eerste fase van het project gebeuren. Niet midden in.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • Xepos
  • Registratie: September 2009
  • Laatst online: 12:13
@Cagalli het klopt ik werk voornamelijk in projecten met het waterval model maar ik draai ook wel eens scrum projecten. Maar bij beide heb je toch nog altijd het URS weliswaar in een andere vorm.

Het URS is overigens geen dynamisch document.
Eenmaal getekend door opdrachtgever en opdrachtnemer dan ga ik daar niks meer aan veranderen (daarom is het zeer belangrijk om dit goed te bespreken met de klant, wilt de klant het toch perse veranderen, dan gaan we daarvoor een procedure opstarten zodat planning en budget ook mee gaan veranderen). De TS die kunnen wel veranderen maar je hebt zeker ergens een begin nodig.

Overigens je zegt dat software ontwikkeling niet lijkt op een huis bouwen?
Ik vind het precies helemaal lijken!
Beide moet je van te voren documenteren (ook bij SCRUM is het wel handig om dit doen zeker bij grotere teams). Je kan voor alles een schatting maken van hoelang alles duurt. Voor duur en moeilijkheid kun je SCRUM poker gebruiken. Bij waterval model is het moeilijker schatten omdat je dan een tijdsduur voor het hele project geeft in plaats van elk onderdeel.

Acties:
  • 0 Henk 'm!

  • Rafe
  • Registratie: Mei 2002
  • Laatst online: 27-05 16:36
Qua user requirements vond ik Behaviour Driven Development zelf wel een eye-opener toen ik het voor het eerst tegenkwam.

UML en flowcharts gebruik ik vooral om iets te begrijpen voordat ik he ga bouwen, maar ze zijn geen eindproduct en verdwijnen daarna ook weer in de prullenbak. Als ik later een klassendiagram weer nodig heb laat ik het wel genereren door een tool, zonde van de tijd om het zelf bij te houden.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17-06 19:54

Dido

heforshe

Icekiller2k6 schreef op woensdag 27 november 2013 @ 22:11:
Een programma wordt gemaakt aan de hand van een nood. Een nood kan veranderen natuurlijk. Het punt is dat creatief process wat jij zegt de noden van de klant onderzoeken is. Dit moet eerlijk gezegd in eerste fase van het project gebeuren. Niet midden in.
Sure. En dan ben je 6 maanden verder en lever je op wat de klant 6 maanden geleden nodig dacht te hebben. Blijkt ie er niets meer aan te hebben.

M'n bek valt open van wat ik als verheelrlijking van waterval zie hier.
Alle requirements van te voren bekend? Ik dacht (hoopte) dat er toch ondertussen geen IT-er meer was die in die leugen geloofde...

I denk dat er voor sommigen hier een wereld opengaat als ze zich eens in agile zouden verdiepen. Welcome change!
En dat betekent dus dat je er van te voren vanuit gaat dat de requirements veranderen gaande het project.

Je gaat dan ook vanzelf afstappen van het absurde idee dat van t evoren opgestelde documenten ooit als (technische) documentatie kunnen dienen, trouwens. Om dan maar een beetje ontopic te komen.

Wat je van tevoren maakt valt onder ontwerp. Documentatie hoort te documenteren wat er daadwerkelijk gebouwd is, niet wat ooit iemand bedacht heeft als idee.
Dus zelfs als uit je documentatie blijkt dat bepaalde requirements niet of verkeerd zijn geimplementeerd hoort dat in je documentatie. Sterker nog, het bewijst het nut van goede documentatie.

Waar een design document (of dat nou URS, FO of TO is) als leidraad voor je code kan helpen, is het je code die de documentatie op moet leveren. Ontwerpdocumenten en systeemdocumentatie zijn niet hetzelfde. Ik weet uit ervaring dat ontwerpen niet alleen achterhaald maar zelfs afschuwelijk frustrerend zijn als ze als technische systeemdocumentatie gebruikt moeten worden.

Mijn standaard antwoord op de vraag om documentatie is dan ook altijd dat de documentatie pas komt als mijn implementatie gedaan is. Dat is namelijk het eerste moment waarop ik die implementatie kan documenteren in plaats van ontwerpen.

Simpel voorbeeldje, dat ik een GUID opsla als string hoeft in geen enkel design document te staan en heeft geen enkele functionele impact. Technisch zorgt het wel voor vraagtekens, en is het dus nuttig om te documenteren dat ik dat doe vanwege compatibiliteit met de gekozen mobiele database die geen GUID datatype kent.

Dat is technische documentatie (die belangrijk is ook, om te voorkomen dat een ijverige DBA in SQL Server 2012 mijn nchar(16) in GUIDs verandert!) die je nevernooit in een ontwerp terug hoort te zien komen (veel te laag niveau!).
Hell, in dat ontwerp hoeft niet eens vermeld te zijn dat er technische sleutels gebruikt worden.

Een dergelijk onderscheid zie ik helaas vaak niet gemaakt worden. Iedereen wil technische documentatie, maar er is nooit tijd (lees: budget) voor. Dus zoeken we drie jaar later in een URS op wat we denken dat de code zou moeten doen, of, more likely, we kijken in de code of we de business rules kunnen achterhalen.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:56
@Dido

Ik denk dat het vooral komt door het soort projecten... ik werk in SAP omgeving.. en dan nog eens finance.. Kun je je voorstellen hoe vast dit kwa requirements is zowel legal als wat business end wilt.

Ik geef toe dat als het vaak kleinere projecten zijn dat dit kan veranderen.

Voor dit soort projecten vind ik waterval + agiledev een oplossing (ja ik weet wat agiledev is :)).
Standaard systeem leveren dus zonder extra's deze laten validaten bij de klant en 'doel' aanpassen naar gelang de eisen van de klant, echter mijn mening blijft dat in het begin stadium je toch moet weten wat de klant ongeveer wilt. Als je daardoor een maand langer moet 'praten' dan is het zo. Mijn voorbeeld van een applicatie dat opeens ook het licht aan en uit moet kunnen doen terwijl origineel programma in de verste verte daar niets mee te maken had vind ik een passend voorbeeld.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17-06 20:59
Mijn voorbeeld van een applicatie dat opeens ook het licht aan en uit moet kunnen doen terwijl origineel programma in de verste verte daar niets mee te maken had vind ik vreemd.
Dat is ook een overdreven voorstelling van zaken. De dingen die veranderen liggen vaak in een grijs gebied waar zowel de klant als de ontwikkelaar niet *precies* weet wat er allemaal nodig is en hoe het exact gemaakt gaat worden.

De voorstelling die jij maakt is een uitzondering volgens mij en sluit iig totaal niet aan bij mijn ervaringen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 08:46

bomberboy

BOEM!

Dido schreef op woensdag 27 november 2013 @ 23:17:
Sure. En dan ben je 6 maanden verder en lever je op wat de klant 6 maanden geleden nodig dacht te hebben. Blijkt ie er niets meer aan te hebben.
Net een reden te meer om goed te documenteren wat hij wel dacht nodig te hebben zodat het (zo snel mogelijk) duidelijk is dat er iets verandert en het budget en de planning mee kunnen aangepast worden.
M'n bek valt open van wat ik als verheelrlijking van waterval zie hier.
Alle requirements van te voren bekend? Ik dacht (hoopte) dat er toch ondertussen geen IT-er meer was die in die leugen geloofde...

I denk dat er voor sommigen hier een wereld opengaat als ze zich eens in agile zouden verdiepen. Welcome change!
En dat betekent dus dat je er van te voren vanuit gaat dat de requirements veranderen gaande het project.
Agile is leuk, maar net zo goed een probleem. Enkele mogelijke issues:
  • de klant zelf is helemaal niet agile. Voor een klant betekent zelf mee agile zijn typisch een interne meerkost. Er wordt immers veel vaker feedback gevraagd, soms testing door echte gebruikers enz. Daar wordt dan geen tijd en budget voor voorzien waardoor het in praktijk toch een waterval is (extern, intern hoeft dat niet)
  • de klant denkt dat agile zijn betekent dat hij op ieder moment alles kan vragen zonder enige impact op planning en budget want we zijn toch allemaal agile wat toch betekent dat we op ieder moment alles kunnen aanpassen en toch iedere deadline die 6 maand geleden gesteld is kunnen halen. Een klant ziet agile als een mogelijkheid om extra's te vragen midden in het project, zonder extra kosten of budget. Features of onderdelen laten vallen om de deadline te halen (wat ook onder agile valt) kan dan typisch niet.
  • De overhead tijdens een project is veel hoger en het uiteindelijke project is minder voorspelbaar. Iedere keer er een wijziging gebeurt moet dit goed bijgehouden worden om wijzigingen in planning en budget te verantwoorden. Bij een klassiek waterval project zit alle overhead in het begin en is het daarna ieder zijn eigen ding doen. En dan uiteraard de overhead op het einde: klant die zegt dat het niet doet wat hij wil vs implementator die zegt dat het alles doet wat afgesproken was. Meestal hebben beiden dan ook gelijk en is niemand tevreden. Agile is vaak hetzelfde maar ipv enkel op het einde ontevreden te zijn zijn we dat al ergens middenin het project.
Beide systemen hebben hun voordelen, maar ook nadelen en ik ben zeker geen fervente aanhanger van het waterval model maar het managen van een software project is een vaak onderschatte oefening.
Heel veel hangt af van het type klant waar je mee werkt. Overheids-instanties, grote bedrijven enz. kunnen heel vaak niet agile meewerken. Komt voor een deel ook door hun financieringsmodel. Alles (inclusief eindresultaat) moet op voorhand gekend zijn en van een budget kan niet afgeweken worden.

Eén van de redenen waarom software projecten vaak mis lopen is omdat de complexiteit verborgen blijft voor de meeste stakeholders. Wanneer je een brug bouwt en de ruwbou staat er en men komt tot de conclusie dat die eigenlijk een meter hoger moest zijn, dan snapt iedereen dat die moet afgebroken worden en je eigenlijk opnieuw begint. Wanneer de reling groen is en achteraf rood mooier zou zijn, dan snapt ook iedereen dat dit "maar" schilderen is.
Wanneer iemand een aanpassing vraagt aan software is de impact van die aanpassing echter zelden duidelijk voor de persoon die die aanpassing vraagt. Agile betekent dan ook gewoon dat je halfweg de bouw van de brug met een vrachtwagen probeert of je er effectief onder kan. Indien ja, gaat alles gewoon volgens plan. Indien nee, dan weet je het gewoon al halfweg dat het fout gegaan is en hoef je niet te wachten tot het einde van het project om tot die conclusie te komen. Je kan dus uiteraard sneller inspelen op dat probleem, maar dit betekent niet dat het niet duurder zal zijn. Het zal in het beste geval minder veel duurder zijn dan in het waterval model. En dat beseft niet iedereen.
Je gaat dan ook vanzelf afstappen van het absurde idee dat van t evoren opgestelde documenten ooit als (technische) documentatie kunnen dienen, trouwens. Om dan maar een beetje ontopic te komen.

Wat je van tevoren maakt valt onder ontwerp. Documentatie hoort te documenteren wat er daadwerkelijk gebouwd is, niet wat ooit iemand bedacht heeft als idee.
Dus zelfs als uit je documentatie blijkt dat bepaalde requirements niet of verkeerd zijn geimplementeerd hoort dat in je documentatie. Sterker nog, het bewijst het nut van goede documentatie.
Hier ben ik het helemaal mee eens.
Waar een design document (of dat nou URS, FO of TO is) als leidraad voor je code kan helpen, is het je code die de documentatie op moet leveren. Ontwerpdocumenten en systeemdocumentatie zijn niet hetzelfde. Ik weet uit ervaring dat ontwerpen niet alleen achterhaald maar zelfs afschuwelijk frustrerend zijn als ze als technische systeemdocumentatie gebruikt moeten worden.

Mijn standaard antwoord op de vraag om documentatie is dan ook altijd dat de documentatie pas komt als mijn implementatie gedaan is. Dat is namelijk het eerste moment waarop ik die implementatie kan documenteren in plaats van ontwerpen.

Simpel voorbeeldje, dat ik een GUID opsla als string hoeft in geen enkel design document te staan en heeft geen enkele functionele impact. Technisch zorgt het wel voor vraagtekens, en is het dus nuttig om te documenteren dat ik dat doe vanwege compatibiliteit met de gekozen mobiele database die geen GUID datatype kent.

Dat is technische documentatie (die belangrijk is ook, om te voorkomen dat een ijverige DBA in SQL Server 2012 mijn nchar(16) in GUIDs verandert!) die je nevernooit in een ontwerp terug hoort te zien komen (veel te laag niveau!).
Hell, in dat ontwerp hoeft niet eens vermeld te zijn dat er technische sleutels gebruikt worden.

Een dergelijk onderscheid zie ik helaas vaak niet gemaakt worden. Iedereen wil technische documentatie, maar er is nooit tijd (lees: budget) voor. Dus zoeken we drie jaar later in een URS op wat we denken dat de code zou moeten doen, of, more likely, we kijken in de code of we de business rules kunnen achterhalen.
Wat uit bovenstaande stukje en ook de hele discussie tot nu toe blijkt is dat er heel veel soorten documentatie zijn. En de TS heeft niet heel duidelijk aangegeven over wat soort documentatie deze discussie zou moeten gaan. Wat wordt er trouwens bedoelt met code in dit topic: echt de programmeercode, software componenten, volledige toepassingen?

Wat ik al zien voorbijkomen heb (zelf verzonnen termen, niet exhaustief en niet op elk project allemaal van toepassing)
  1. low level code documentatie: wat doet code (wat mij betreft onnodig, code zelf moet idd leesbaar zijn, tenzij er om een of andere reden iets speciaal gedaan wordt)
  2. code documentation: korte tekstuele uitleg van een specifiek algoritme bv
  3. method documentation: wat doet een specifieke methode?
  4. high level code documentation: bv omschrijving van wat de taken/functies zijn van een klasse of package
  5. API documentatie: indien het een API aanbiedt aan externe software: hoe werkt dit, wat doet het allemaal
  6. architectuur documentatie: wat is de opzet van de software, welke componenten, waarom bepaalde keuzes
  7. installatie & configuratie documentatie: wat is er nodig om iets geïnstalleerd te krijgen
  8. beheer documentatie: welke onderhoudstaken zijn er nodig, wat als er iets niet functioneert, moet een bepaald deel dan herstart, is er een volgorde waarin dat moet gebeuren
  9. gebruikers-handleiding: voor de eindgebruiker
1-5: zijn zeer technisch en voor en door de developers
5-6: voor development en door de architect geschreven
7-8: voor de application managers, worden vaak gecombineerd, echter niet altijd (bv specialist installer die SAP komt installeren en configureren, algemene beheerstaken worden door een lokale admin uitgevoerd)
9: voor eindgebruikers
(ja 5 wordt bewust 2 maal opgenomen)

In praktijk is er echter altijd te weinig tijd voor de documentatie, bijna op elk van de omschreven niveaus. (maar dit is al een veel te lange post ondertussen)

  • Ealanrian
  • Registratie: Februari 2009
  • Laatst online: 12:51
Met betrekking tot de agile discussie: er zijn nog steeds projecten die een hele duidelijke set requirements hebben en een enorm lange door loop tijd, 1 jaar en meer, waar de klant prima kan zeggen dit wil ik hebben en los het voor mij op. Of het is interne product ontwikkeling waarbij ook een set requirements zal zijn. Hierbij is het wel vaak zo dat de producten gehele systemen zijn en niet alleen software.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17-06 19:54

Dido

heforshe

[quote]bomberboy schreef op donderdag 28 november 2013 @ 01:19:
Agile is leuk, maar net zo goed een probleem. Enkele mogelijke issues:
[list]
• de klant zelf is helemaal niet agile. Voor een klant betekent zelf mee agile zijn typisch een interne meerkost. Er wordt immers veel vaker feedback gevraagd, soms testing door echte gebruikers enz. Daar wordt dan geen tijd en budget voor voorzien waardoor het in praktijk toch een waterval is (extern, intern hoeft dat niet)
Tuurlijk, als de klant niet wil of kan houdt het op. Maar dat geldt natuurlijk net zo hard als de klant niet in staat is van tevoren duidelijke en volledige specs te leveren (en ja, dat heb ik te vaak meegemaakt. Dat er intern bij de klant eerst 3(!!!) jaar(!!!) wordt vergarderd over en project, waarna er een stapel ontwerpen op tafel ligt die ofwel niet te bouwen is, danwel een draak van een systeem beschrijft waarvan je van tevoren weet dat niemand er blij van wordt als je het bouwt. En dan is er natuurlijk geen tijd of budget meer om die requirements te bediscussieren, want dar is net 3 jaar tijd ingestoken. Alleen jammer dat de meest technisch onderlegde deelnemer aan die discussies tenauwernood Windows op kan starten).
[quote]• de klant denkt dat agile zijn betekent dat hij op ieder moment alles kan vragen zonder enige impact op planning en budget want we zijn toch allemaal agile wat toch betekent dat we op ieder moment alles kunnen aanpassen en toch iedere deadline die 6 maand geleden gesteld is kunnen halen. Een klant ziet agile als een mogelijkheid om extra's te vragen midden in het project, zonder extra kosten of budget. Features of onderdelen laten vallen om de deadline te halen (wat ook onder agile valt) kan dan typisch niet.
Dan heeft iemand de klant verkeerd voorgelicht over agile :) Belangrijk onderdeel van agile is nou net ingebouwd verwachtingsmanagement. Als de klant verkeedre verwachtingen heetf, heb je dus steken laten vallen op dat punt :)
• De overhead tijdens een project is veel hoger en het uiteindelijke project is minder voorspelbaar. Iedere keer er een wijziging gebeurt moet dit goed bijgehouden worden om wijzigingen in planning en budget te verantwoorden. Bij een klassiek waterval project zit alle overhead in het begin en is het daarna ieder zijn eigen ding doen. En dan uiteraard de overhead op het einde: klant die zegt dat het niet doet wat hij wil vs implementator die zegt dat het alles doet wat afgesproken was. Meestal hebben beiden dan ook gelijk en is niemand tevreden. Agile is vaak hetzelfde maar ipv enkel op het einde ontevreden te zijn zijn we dat al ergens middenin het project.
[/list]
Ook dat is verwachtingsmanagement. En het grote voordeel van ontevredenheid middenin het project is dat je daarmee ook het slechte nieuws (budgetoverschrijdingen, scope-creep welke kant dan ook op, etc, aan ziet komen voordat het te laat is.
Beide systemen hebben hun voordelen, maar ook nadelen en ik ben zeker geen fervente aanhanger van het waterval model maar het managen van een software project is een vaak onderschatte oefening.
Heel veel hangt af van het type klant waar je mee werkt. Overheids-instanties, grote bedrijven enz. kunnen heel vaak niet agile meewerken. Komt voor een deel ook door hun financieringsmodel. Alles (inclusief eindresultaat) moet op voorhand gekend zijn en van een budget kan niet afgeweken worden.

Eén van de redenen waarom software projecten vaak mis lopen is omdat de complexiteit verborgen blijft voor de meeste stakeholders. Wanneer je een brug bouwt en de ruwbou staat er en men komt tot de conclusie dat die eigenlijk een meter hoger moest zijn, dan snapt iedereen dat die moet afgebroken worden en je eigenlijk opnieuw begint. Wanneer de reling groen is en achteraf rood mooier zou zijn, dan snapt ook iedereen dat dit "maar" schilderen is.
Wanneer iemand een aanpassing vraagt aan software is de impact van die aanpassing echter zelden duidelijk voor de persoon die die aanpassing vraagt. Agile betekent dan ook gewoon dat je halfweg de bouw van de brug met een vrachtwagen probeert of je er effectief onder kan. Indien ja, gaat alles gewoon volgens plan. Indien nee, dan weet je het gewoon al halfweg dat het fout gegaan is en hoef je niet te wachten tot het einde van het project om tot die conclusie te komen. Je kan dus uiteraard sneller inspelen op dat probleem, maar dit betekent niet dat het niet duurder zal zijn. Het zal in het beste geval minder veel duurder zijn dan in het waterval model. En dat beseft niet iedereen.
Helemaal mee eens, en welk model je ook kiest, het staat of valt met goed projectmanagement en zeker met adequaat verwachtingsmanagement.
Ik weet alleen wel dat ik als ontwikkelaar veel liever agile werk omdat ik werkelijk nog nooit een project ben tegengekomen waarin het opgeleverde en geaccepteerde product al van tevoren volledig en correct beschreven was :)

Ik ga je lijst van soorten documentatie niet quoten, maar dat is ie eigenlijk wel waard :)

Wat betekent mijn avatar?


  • Hydra
  • Registratie: September 2000
  • Laatst online: 16-06 11:19
Xepos schreef op woensdag 27 november 2013 @ 21:47:
Die laatste twee vragen beantwoord je in het technische en functionele specificaties.
Waarom je een bepaald iets in de code zo opgelost hebt staat over het algemeen niet in documentatie. Dat soort dingen staan over het algemeen in de code zelf in comments. Voor de rest moet code zelf zo duidelijk zijn dat commentaar niet nodig is.

Het is mij ook wat onduidelijk wat de TS precies bedoelt met "documentatie", dat is nogal breed. Eindgebruikers hebben natuurlijk documentatie nodig maar die wordt over het algemeen niet door de developer geschreven (als developer ben je daar als het goed is niet goed in ;)). Documentatie voor "andere developers" is vooral de code zelf. En dan heb je nog de functionele specificaties (wat moet het doen) en de daaruit volgende technische specs (hoe doet het dat) waarbij de laatste in heel veel gevallen praktisch overgeslagen wordt.

Documentatie is en blijft een lastig probleem. Je wil er niet te veel tijd aan verspillen maar je wil er ook niet te weinig tijd aan besteden. Komt bij dat men het over het algemeen niet leuk vindt. Zelf vind ik samen met een klant functionele specs + mockups opstellen leuk, technische specs schrijven vind ik kut; ga het liever meteen maken.

Class diagrams e.d. vind ik persoonlijk alleen nuttig als je die ook daadwerkelijk om kunt zetten naar code. Anders doe je gewoon het werk 2 keer.
Ealanrian schreef op donderdag 28 november 2013 @ 08:19:
Met betrekking tot de agile discussie: er zijn nog steeds projecten die een hele duidelijke set requirements hebben en een enorm lange door loop tijd, 1 jaar en meer, waar de klant prima kan zeggen dit wil ik hebben en los het voor mij op. Of het is interne product ontwikkeling waarbij ook een set requirements zal zijn. Hierbij is het wel vaak zo dat de producten gehele systemen zijn en niet alleen software.
Dat zijn nog steeds projecten waarbij de eindgebruiker tussentijds andere inzichten kan ontwikkelen. Het klassieke watervalmodel waarbij gewoon helemaal aan het eind iets opgeleverd wordt werkt hoe dan ook niet.

[ Voor 20% gewijzigd door Hydra op 28-11-2013 08:55 ]

https://niels.nu


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17-06 19:54

Dido

heforshe

Hydra schreef op donderdag 28 november 2013 @ 08:54:
Class diagrams e.d. vind ik persoonlijk alleen nuttig als je die ook daadwerkelijk om kunt zetten naar code. Anders doe je gewoon het werk 2 keer.
Dat soort dingen doe ik dan ook liever andersom, genereer ze vanuit de geschreven code :)

Dan heb je een overzichtelijke manier om je systeem te bekijken en het reflecteert ook nog de werkelijkheid in plaats van een versteend ontwerp :)

Wat betekent mijn avatar?


Anoniem: 296939

Enkele maanden geleden ben ik begonnen met werken op een gigantisch project (> 1000 personen die full-time aan dit project werken). Ik vervang iemand die voor enkele maanden op ouderschapsverlof is gegaan en daarna ziek is geworden en nu niet meer terug komt. Het probleem was dat er 0,0 documentatie voorhanden was waardoor ik een enorme achterstand heb opgelopen door allemaal te moeten uitzoeken hoe het project in elkaar zat.

Hierdoor heb ik ook wel een andere kijk tov documentatie. Vroeger vond ik het ook niet leuk om te schrijven, ik deed enkel hier en daar wat commentaar in mijn code, maar tegenwoordig documenteer ik echt alles in een Word document met linkjes naar andere files. Het gaat hier dan niet enkel om het documenteren van code maar vooral om waarom ik bepaalde beslissingen neem of waarom een bepaalde check gebeurt. Daarnaast probeer ik ook altijd het groter plaatje te schetsen zodat zelfs non-programmeurs weten over wat het hier gaat.

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 08:46

bomberboy

BOEM!

Dido schreef op donderdag 28 november 2013 @ 08:33:
Helemaal mee eens, en welk model je ook kiest, het staat of valt met goed projectmanagement en zeker met adequaat verwachtingsmanagement.
Ik weet alleen wel dat ik als ontwikkelaar veel liever agile werk omdat ik werkelijk nog nooit een project ben tegengekomen waarin het opgeleverde en geaccepteerde product al van tevoren volledig en correct beschreven was :)
Ik weet ook dat ik aan de projectmanagement kant typisch heel veel tijd moet steken in het educeren van de klant om inderdaad dat verwachtingsmanagement in orde te krijgen (learned it the hard way :X)
Dido schreef op donderdag 28 november 2013 @ 10:01:
[...]

Dat soort dingen doe ik dan ook liever andersom, genereer ze vanuit de geschreven code :)

Dan heb je een overzichtelijke manier om je systeem te bekijken en het reflecteert ook nog de werkelijkheid in plaats van een versteend ontwerp :)
Zeer correct. Al vind ik de waarde van UML klasse diagrammen zeer beperkt. Enige twee types die ik echt nuttig vind zijn use case diagrammen (zeer high level) en sequentie diagrammen. Die tonen tenminste de relevante interacties. Al zijn er (bij mijn weten) niet echt nuttige tools om die automatisch te genereren.

  • DeluxZ
  • Registratie: Augustus 2003
  • Laatst online: 14-06 23:00

DeluxZ

Livin' the good life

Anoniem: 144479 schreef op woensdag 27 november 2013 @ 21:29:
Niets mis met UML, flowcharts, state diagrams maar de code IS je documentatie. Elegante code documenteert zichzelf.
Lees Clean Code A Handbook of Agile Software Craftmanship eens _/-\o_

[ Voor 14% gewijzigd door Creepy op 28-11-2013 14:34 ]

]|[ Apple Macbook Pro Retina 13" ]|[


  • ZpAz
  • Registratie: September 2005
  • Laatst online: 11:00
Hier maak ik van te voren eigenlijk nooit UML charts of iets in die trend. Ik heb het meerdere keren geprobeerd maar ik kom altijd op hetzelfde uit. Zo snel je bezig gaat loop je tegen dingen aan die je niet van te voren gezien hebt. Dingen die gerefactored kunnen worden zodat het beter werkt.

Uiteraard wordt er wel gekeken naar wat er allemaal nodig is. En de stappen die het systeem moet doorlopen kan best in een flowchart gemaakt worden. Maar een UML document die van te voren de klassen beschrijft, nee dat doe ik niet.

Elke keer als je een blok code hebt geschreven denk je van dit kan beter en dan refactor je dat. En vanaf dat moment klopt je UML ook niet meer. Dan blijf je dus constant je UML document aanpassen. Wil je een UML dan kan je die wel genereren uit de code, die klopt dan in ieder geval.

Dit vond ik wel een mooi linkje welke gerelateerd is, die kwam ik volgens mij hier ergens tegen: "You are not a software engineer"




Ik zeg niet dat je niet moet documenteren, maar van te voren een beetje klassen gaan tekenen enzo. Dat werkt mijns inziens niet.

[ Voor 29% gewijzigd door ZpAz op 28-11-2013 14:37 ]

Tweakers Time Machine Browser Extension | Chrome : Firefox


  • Caelorum
  • Registratie: April 2005
  • Laatst online: 11:08
DeluxZ schreef op donderdag 28 november 2013 @ 14:21:
[...] Lees Clean Code A Handbook of Agile Software Craftmanship eens _/-\o_
lmgtfy link :X

[ Voor 112% gewijzigd door Creepy op 28-11-2013 14:34 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17-06 23:04

Creepy

Tactical Espionage Splatterer

Welke lmgtfy link? O-)

Anyway, niemand, maar dan ook niemand is in staat om alleen maar zulke elegante code te schrijven dat er geen documentatie nodig is. En documentatie is meer dan het documenteren van de code alleen natuurlijk.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Oljoner
  • Registratie: Augustus 2013
  • Laatst online: 13-06 08:46
In mijn opleiding is het belang van goede documentatie, uml's, uitwerken van user requirements enz er bij mij werkelijk ingedramd geweest.
Nu sta ik ondertussen al enkele jaren in de praktijk en kan enkel concluderen dat dit onzin is.

Ik geloof heel sterk in agile en dan voornamelijk TDD (test driven development/design):
  • Mijn unit testen zijn de documentatie van m'n code / classes.
  • Mijn integration testen zijn de documentatie van m'n modules/delen van de software.
  • Mijn acceptance testen zijn de documentatie van gehele systeem & bevatten in feite de belangrijkste user requirements.
Deze testen zijn uitvoerbare code/documentatie! (junit / thucydides + selenium)
(ik moet wel toegeven dat de testen in m'n huidig project nog lang niet volledig 100% sluitend zijn)

Het project waar ik aan werk is 98% van de tijd in een working state.

Ik schrijf zo goed als geen comments of javadoc in m'n code, maar zorg ervoor dat m'n code leesbaar is (duidelijke methode namen enz).
Mijn testen schrijf ik zoveel mogelijk by intent, dus die zijn redelijk makkelijk te volgen.
Als ik m'n code aanpas ben ik bijna verplicht m'n test code ook aan te passen.

Het probleem met comments & javadoc is het onderhoud. Na een tijd leest niemand deze meer, terwijl de code van de methods wel onderhouden wordt. Gevolg: documentatie & implementatie komen niet meer overeen. De moeite die je steekt in het up to date houden van de docs kan je imo beter steken in het maken van duidelijke uitvoerbare testen.

Als een nieuwe developer wilt weten hoe iets werkt hoeft hij gewoon in de test code te kijken. Daar staat in code hoe de api's het best gebruikt worden.
Aan uml doe ik ook niet mee. De uml structuur van m'n implementatie kan ook nogal veranderen. Ik hoef immers geen bang te hebben voor verandering, m'n testen vertellen het me wel als het misloopt.

De documentatie die ik wel bijhoud bevat het volgende:
  • De server adressen & paswoorden van de application servers / sql servers / middleware die m'n applicatie gebruikt.
  • Lijst van features/bugfixes voor iedere release
  • De sql statements voor iedere verandering aan de structuuur van de db
Mijn hoop is dat ik in toekomstige projecten niet geconfronteerd ga worden met personen die wel tekst documentatie verwachten in de code (en je "een stamp onder je kont willen geven als je de javadoc niet onderhoud :( "). Als het ooit zover komt hoop ik ze wel te kunnen overtuigen van mijn visie |:( .

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-06 23:15
UML is een leuke leertool voor op school, en iets wat je kunt gebruiken om achteraf je code mee te documenteren, als daar behoefte voor is.

Maar vooraf UML diagrammen maken om deze te gebruiken in je documentatie is een exercitie in futiliteit. Mocht je het daarmee niet eens zijn, dan heb je domweg nog niet genoeg projecten gedaan.
Want zoals anderen ook al zeiden: Het wordt _nooit_ zoals je van te voren verzint. (triviale dingen uitgesloten).

Ik maak vrijwel uitsluitend alleen documentatie betreft de code achteraf. Waarbij er dan ook alleen in grove lijnen wordt beschreven hoe iets werkt, en er meer nadruk op het waarom word gelegd. Het hoe is namelijk tot in detail al in de code beschreven, het waarom is veel belangrijker om te beschrijven.

Ik ga bv in mijn documentatie echt niet elke klasse en methode beschrijven, of de samenhang tussen klasses. Als je dit wilt weten, dan open je een fatsoenlijke editor en druk je op een knop een een class diagram te genereren.

Als er uitzonderlijk complexe onderdelen in de code zitten wil ik deze nog wel eens apart toelichten, maar voor de rest zul je het moeten doen met XML comments :P

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-06 17:33

Janoz

Moderator Devschuur®

!litemod

Oljoner schreef op donderdag 28 november 2013 @ 15:15:

Ik schrijf zo goed als geen comments of javadoc in m'n code, maar zorg ervoor dat m'n code leesbaar is (duidelijke methode namen enz).
Het is anders toch best prettig om iig bovenin de class de auteur te hebben staan en een kort verhaaltje over wat nu eigenlijk de verantwoordelijkheid van die class is. Die verantwoordelijkheid zal niet dermate gaan veranderen waardoor dat commentaar ineens niet meer zou kloppen. En ook bij service methoden (dus lang niet alle, maar voornamelijk degenen die de functionaliteit ontsluiten aan andere delen/modules van je project) is het handig om iig te weten wat elke parameter is en wat de randvoorwaarden zijn, wat er wanneer terug gegeven wordt en welke exceptions er in welke gevallen gegooid kunnen worden.


Maar verder ben ik het met je eens. Ikzelf probeer vaak ook integratietesten op te nemen welke de hele keten doorlopen. Testen die als het ware het gladde geval uitvoeren door de hele applicatie. Vaak zijn deze rechtstreeks te relateren aan een usecase. Een nieuwe ontwikkelaar kan daaraan precies zien wat de applicatie eigenlijk doet en eventueel met de debugger erbij eens kijken hoe er nu daadwerkelijk door de applicatie heen gegaan wordt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Hydra
  • Registratie: September 2000
  • Laatst online: 16-06 11:19
Janoz schreef op donderdag 28 november 2013 @ 16:49:
[...]


Het is anders toch best prettig om iig bovenin de class de auteur te hebben staan en een kort verhaaltje over wat nu eigenlijk de verantwoordelijkheid van die class is. Die verantwoordelijkheid zal niet dermate gaan veranderen waardoor dat commentaar ineens niet meer zou kloppen.
Euh, wie is "de auteur" als er meerdere mensen aan gewerkt hebben? Daarnaast; je hebt een DVCS als het goed is, daar staat ook gewoon in wie er aan de code gewerkt heeft op een detailniveau dat je nooit in commentaar gaat vinden. Dergelijke informatie vind ik in commentaar danook compleet nutteloos.

Daarnaast is wat een class doet over het algemeen direct duidelijk door de naamgeving (classname) en locatie (package) van een class. Als je aan de naam van een class niet redelijk direct kunt zien wat het doet in het grotere geheel is de naamgeving gewoon slecht.

Ik ben sinds kort bij een nieuw bedrijf met voor mij volledig nieuwe producten begonnen (vorige bedrijf is falliet gegaan helaas) en ik heb geen regel technische documentatie gelezen: de code zelf zit gewoon goed in elkaar en er wordt consitent gebruik gemaakt van het model, de handlers en de views.

https://niels.nu


  • Oljoner
  • Registratie: Augustus 2013
  • Laatst online: 13-06 08:46
Janoz schreef op donderdag 28 november 2013 @ 16:49:

Het is anders toch best prettig om iig bovenin de class de auteur te hebben staan
Als geen sprake is van collective code ownership kan ik daar wel inkomen. Maar waarom zou je dit anders willen? Het kan goed zijn dat ik wat classes initieel aanmaak (dan ben ik de auteur?), maar een collega doet wat doorgedreven refactoring (waarin ik hem/zij aanmoedig, collective code ownership ftw). Wie is dan de auteur?
en een kort verhaaltje over wat nu eigenlijk de verantwoordelijkheid van die class is. Die verantwoordelijkheid zal niet dermate gaan veranderen waardoor dat commentaar ineens niet meer zou kloppen. En ook bij service methoden (dus lang niet alle, maar voornamelijk degenen die de functionaliteit ontsluiten aan andere delen/modules van je project) is het handig om iig te weten wat elke parameter is en wat de randvoorwaarden zijn, wat er wanneer terug gegeven wordt en welke exceptions er in welke gevallen gegooid kunnen worden.
Daar kan ik me inderdaad wel in vinden, maar zoals je zegt dan enkel voor publieke api's tussen modules / service methodes. Toch merk ik dat ik dit in veel gevallen overbodig vind, veel zaken zijn immers zo duidelijk dat de documentatie niet eens gelezen wordt.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-06 17:33

Janoz

Moderator Devschuur®

!litemod

Hydra schreef op donderdag 28 november 2013 @ 18:48:
[...]


Euh, wie is "de auteur" als er meerdere mensen aan gewerkt hebben? Daarnaast; je hebt een DVCS als het goed is, daar staat ook gewoon in wie er aan de code gewerkt heeft op een detailniveau dat je nooit in commentaar gaat vinden. Dergelijke informatie vind ik in commentaar danook compleet nutteloos.
De auteur is degene die het oorspronkelijk nodig achte om die class aan te maken. Daarnaast vind ik het prettig om alvast een inschatting te kunnen maken wat me te wachten staat. Er hebben tientallen mensen aan het project gewerkt en elk hadden ze zo hun nukken ed.

En als er daadwerkelijk compleet verbouwd was dan is het op het huidige project inderdaad gebruikelijk om ook je naam bij de auteurs te zetten.

Het is natuurlijk te vinden in VCS (wat in dit geval slechts CVS is :X :X), maar nu zie ik het in 1 oogopslag (en het wordt meegegenereerd naar het javadoc). Het is opgenomen in het standaard template van een neiwue class dus het gaat eigenlijk ook zonder omkijken.
Oljoner schreef op donderdag 28 november 2013 @ 19:02:
[...]

Als geen sprake is van collective code ownership kan ik daar wel inkomen. Maar waarom zou je dit anders willen? Het kan goed zijn dat ik wat classes initieel aanmaak (dan ben ik de auteur?), maar een collega doet wat doorgedreven refactoring (waarin ik hem/zij aanmoedig, collective code ownership ftw). Wie is dan de auteur?
Zie boven, beiden. Het is in mijn huidige project de afgesproken standaard en ik moet zeggen dat ik er af en toe wel mijn voordeel uit haal.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Hydra
  • Registratie: September 2000
  • Laatst online: 16-06 11:19
Janoz schreef op donderdag 28 november 2013 @ 20:31:
De auteur is degene die het oorspronkelijk nodig achte om die class aan te maken. Daarnaast vind ik het prettig om alvast een inschatting te kunnen maken wat me te wachten staat. Er hebben tientallen mensen aan het project gewerkt en elk hadden ze zo hun nukken ed.
Jullie doen niet aan codereviews begrijp ik?

Ik heb vandaag nog gewerkt aan en stuk waarbij de handlers / views door een collega al aangemaakt waren, maar waarvan ik alle logica geschreven heb. Wie is volgens jou dan de auteur? Documentatie heeft nogal eens de neiging achter te lopen (ik heb vaak genoeg dergelijke documentatieblokken bovenin een class gezien en heb nog NOOIT gezien dat deze up to date gehouden werden), en daarbij weet je nog steeds niet wie precies wat gemaakt heeft.
En als er daadwerkelijk compleet verbouwd was dan is het op het huidige project inderdaad gebruikelijk om ook je naam bij de auteurs te zetten.
Dan weet je nog niet wie welk stuk code geschreven heeft. Moet je dus een collega van je gaan vragen met je naar de code te kijken.
Het is natuurlijk te vinden in VCS (wat in dit geval slechts CVS is :X :X), maar nu zie ik het in 1 oogopslag (en het wordt meegegenereerd naar het javadoc). Het is opgenomen in het standaard template van een neiwue class dus het gaat eigenlijk ook zonder omkijken.
Dergelijke templates zorgen m.i. alleen maar voor code smell. Niemand kijkt er naderhand naar om. Goeie kans dat de persoon die ze aangemaakt heeft nieteens iets aan de interne werking gedaan heeft. Of dat iemand ooit de naam gewoon veranderd heeft; dan moet je alsnog in je source control kijken wat er mee gebeurd is.

Ik weet niet hoe geweldig slecht CVS precies is (ik weet wel dat het al een tijdje als 'dood' beschouwd wordt) maar medunkt dat je kunt zien wie welk stuk code gewijzigd heeft.

En niet als sneer bedoeld; maar je lijkt me te werken bij een bedrijf dat niet echt meegaat met z'n tijd. CVS wordt al een tijd niet meer onderhouden en stamt uit de jaren 90 ofzo. Tijd om over te stappen op een DVCS.

Dat je je voordeel eruit haalt is gewoon een kwestie van niet gewend zijn aan een goed systeem. Voor Git (persoonlijk) en Mercurial (werk) gebruikte ik SVN en daar was het al doodsimpel om te zien wie wat gedaan had. Git en Mercurial zitten gewoon in m'n IDE ingeplugged dus ik kan gewoon zien wie als laatste aan een bestand gewerkt heeft in m'n IDE. De hele history van een bestand kan ik gewoon zien in Hg Workbench, tot op wie wanneer welke functie gemaakt heeft aan toe. Daar kan geen stukje achterhaald commentaar tegenop.

[ Voor 10% gewijzigd door Hydra op 28-11-2013 21:04 ]

https://niels.nu


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-06 17:33

Janoz

Moderator Devschuur®

!litemod

Hydra schreef op donderdag 28 november 2013 @ 21:02:
[...]


Jullie doen niet aan codereviews begrijp ik?
Klopt, alhoewel er wel pairprogramming gedaan wordt bij lastige stukken.
Ik heb vandaag nog gewerkt aan en stuk waarbij de handlers / views door een collega al aangemaakt waren, maar waarvan ik alle logica geschreven heb. Wie is volgens jou dan de auteur? Documentatie heeft nogal eens de neiging achter te lopen (ik heb vaak genoeg dergelijke documentatieblokken bovenin een class gezien en heb nog NOOIT gezien dat deze up to date gehouden werden), en daarbij weet je nog steeds niet wie precies wat gemaakt heeft.


[...]


Dan weet je nog niet wie welk stuk code geschreven heeft. Moet je dus een collega van je gaan vragen met je naar de code te kijken.


[...]


Dergelijke templates zorgen m.i. alleen maar voor code smell. Niemand kijkt er naderhand naar om. Goeie kans dat de persoon die ze aangemaakt heeft nieteens iets aan de interne werking gedaan heeft. Of dat iemand ooit de naam gewoon veranderd heeft; dan moet je alsnog in je source control kijken wat er mee gebeurd is.

Ik weet niet hoe geweldig slecht CVS precies is (ik weet wel dat het al een tijdje als 'dood' beschouwd wordt) maar medunkt dat je kunt zien wie welk stuk code gewijzigd heeft.
Uiteindelijk kun je in CVS inderdaad wel zien wie welke aanpassing gedaan heeft, maar zodra de aanpassing over meer bestanden gaat houd het op.
En niet als sneer bedoeld; maar je lijkt me te werken bij een bedrijf dat niet echt meegaat met z'n tijd. CVS wordt al een tijd niet meer onderhouden en stamt uit de jaren 90 ofzo. Tijd om over te stappen op een DVCS.
Klopt. Praat me er niet van. DVCS gaat het niet worden. Wordt als 'te ingewikkeld gezien voor de gemiddelde ontwikkelaar hier' (en dat vind ik nog niet eens zo'n heel erg rare gedachte). Daarnaast is mijn huidige klus nieuwbouw aan een project dat al 8 jaar loopt. Gebouwd in de al lang end of life zijnde Java 5.
Dat je je voordeel eruit haalt is gewoon een kwestie van niet gewend zijn aan een goed systeem. Voor Git (persoonlijk) en Mercurial (werk) gebruikte ik SVN en daar was het al doodsimpel om te zien wie wat gedaan had. Git en Mercurial zitten gewoon in m'n IDE ingeplugged dus ik kan gewoon zien wie als laatste aan een bestand gewerkt heeft in m'n IDE. De hele history van een bestand kan ik gewoon zien in Hg Workbench, tot op wie wanneer welke functie gemaakt heeft aan toe. Daar kan geen stukje achterhaald commentaar tegenop.
Ik ben wel degelijk meer gewend hoor :). Maar bij sommige klanten moet je nu eenmaal roeien met de riemen die je hebt ;). Code convention hier is 'auteur in de javadoc' en persoonlijk vind ik het de moeite niet om daar ineens tegenin te gaan en heb er af en toe wel baat bij gehad bij het interpreteren van bepaalde oplossingen. Er wordt nu erg de nadruk op gelegd terwijl het eigenlijk een opsomming was van wat dingen die bovenin de class staan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Hydra
  • Registratie: September 2000
  • Laatst online: 16-06 11:19
Tijd voor een andere baan misschien? ;)

https://niels.nu

Pagina: 1