1. Inleiding

Het is de opdracht om een HR-portaal te ontwikkelen, het hoofddoel van het portaal is werkplaatsbezetting op te slaan, op basis opgeslagen gegevens wordt het declaratieformulier automatisch ingevuld. Daarnaast komen de mogelijkheden om verlofaanvragen te doen en handmatig de declaraties door te geven. Een van de inhoudelijke uitdagingen is kennis op doen van front-end technologie, het framework dat wij gaan gebruiken om het portaal te realiseren is Vue. Het is een framework dat is ontwikkeld door middel van JavaScript, van beide heb ik geen kennis bij aanvang van het project. Het is nodig om onderzoek te doen naar front-end technologie om mijn kennis uit te breiden.

Voor het project heb ik twee leerdoelen, de eerste is dat ik de stappen ga visualiseren die mogelijk nodig zijn om een bepaalde functionaliteit te realiseren voordat ik begin met coderen. Zo heb ik een beter beeld van de nodige stappen zodat ik overzicht kan houden over het geheel. Mijn andere leerdoel is dat ik ervoor wil zorgen dat er zo min mogelijk misverstanden zijn bij op te leveren producten, als er misverstanden zijn doordat verschillende personen aan een taak gaan werken kan het voorkomen dat er onduidelijkheden zijn die niet worden besproken. Hierdoor gaat er tijd verloren als het blijkt dat er onderling misverstand is en de implementaties van elkaar afwijken. In het kort samengevat ga ik werken aan mijn vaardigheden om nieuwe onderwerpen te leren en groepscommunicatie vaardigheden.


2. Beoordeling deelproducten

2.1. Deelproduct: Toevoegen van werkplekken (Tussentijdse verslag)

2.1.1. Criteria

Criteria waarop er wordt beoordeeld zijn: User Interface (UI) en code kwaliteit. Als richtlijn worden de volgende criteria voor de UI aangehouden (Telvak, 2019)

  • Typography: Text moet duidelijk zichtbaar zijn ten opzien van de achtergrond en andere elementen. Er mogen niet meer dan twee fonts zijn, en er moet een duidelijk verschil zijn tussen de koppen en de hoofdtext.

  • Style conformity: De pagina's moeten voldoen aan dezelfde huisstijl. Er wordt maximaal 1 stijl aangehouden.

  • The functionality use: Zorg dat alle knoppen die zichtbaar zijn functionaliteit bevatten, en alle elementen voldoende groot zijn.

  • Check the spelling

Voor codekwaliteit worden de volgende criteria aangehouden: 

  • Dont Repeat Yourself (Karanth, 2016) Dit betekent dat het de bedoeling is om geen dubbele code te schrijven. Door dit principe aan te houden wordt de leesbaarheid, testbaarheid en herbruikbaarheid van de code verhoogt.
  • Clean Code (Summary of “Clean Code” by Robert C. Martin, z.d.) Dit is een boek geschreven door Robert C. Martin die meerdere software design principes heeft bedacht (Wikipedia contributors, 2022) door de principes aan te houden die zijn omschreven in zijn boek zou iedereen uit het team de code moeten begrijpen (Summary of “Clean Code” by Robert C. Martin, z.d.) "Code is clean if it can be understood easily – by everyone on the team. Clean code can be read and enhanced by a developer other than its original author. With understandability comes readability, changeability, extensibility and maintainability."

2.1.2. Oordeel

2.1.2.1. User Interface

De UI voldoet aan de grotendeels criteria Typograpy want, de text is duidelijk leesbaar t.o.v. de achtergrond, verder is het zichtbaar wat de hoofdzaak is van de pagina. Er zijn meer dan twee fonts gebruikt, om de kwaliteit te verbeteren moet ik de styling van de pagina aanpassen zodat er niet meer dan twee fonts worden gebruikt. De criteria Style Conformity voldoet grotendeels want, de wireframes en de uiteindelijke implementatie verschillen van elkaar. Om de User Experience (UX) te verbeteren heb ik het mogelijk gemaakt om de capaciteit te verhogen of te verlagen door middel van een druk op de knop, dit dekt de criteria The functionality use af. Anders had de gebruiker zelf de waarde moeten invullen. De inputvelden en opmaak komen wel overeen. Een ander verbeterpunt is de lege ruimte, hiervoor moet ik de opmaak aanpassen zodat er geen lege vlakken meer zijn. En als laatst is de spelling correct en voldoet de laatste criteria ook.

2.1.2.2.  Code kwaliteit

Het principe DRY waarborg ik door de v-for functionaliteit van Vue toe te passen. Hierdoor wordt er voor iedere werkplek de soort automatisch weergegeven. Als ik deze functionaliteit niet zou gebruiken zou ik handmatig een lijst moeten schrijven van alle werkplaats soorten.

De code voldoet aan de volgende clean code principes: "Be consistent, If you do something a certain way, do all similar things in the same way", "use searchable names", "Functions do one thing", "Don't comment out code. Just remove".

2.1.3.  Eindoordeel Tussentijds

Als ik het product een cijfer zou geven op dit moment dan, geef ik een 6.3 op basis van de onderstaande tabel. De UI voldoet grotendeels aan de criteria die hiervoor gelden. De code kwaliteit is beoordeeld op basis van de principes die van toepassing zijn op de code, en voldoet de code aan een aantal principes uit het boek clean code. Na het verbeteren van de opmerkingen, is het mogelijk om van het cijfer een voldoende een goed te maken.

Criteria Cijfer Toelichting

Typography

6 Text is duidelijk zichtbaar en er zijn 2 fonts toegepast, door een font te gebruiken zou ik deze criteria een 8 geven.
Style conformity 4 Er is geen huisstijl toegepast op de invoervelden, stijl komt niet overeen met de wireframe.
The functionality use: 7 Duidelijk zichtbaar wat de knop is en bevat functionaliteit, elementen zijn voldoende groot.

Check the spelling

8 Er zijn geen spellingsfouten


2.1.4.  Eindoordeel

Hieronder de verbeterde versie van de popup om werkplekken toe te voegen.

werkplek toevoegen

Het cijfer dat ik nu geef is een 8, zoals in de onderstaande tabel is te zien heb ik de feedback aangepast van het eindoordeel tussentijds §2.1.3. Het onderdeel voldoet dus aan de criteria die gelden voor een UI.

Criteria Cijfer Toelichting

Typography

8 Text is duidelijk zichtbaar en er zijn niet meer dan 2 fonts.
Style conformity 8 Bulma framework toegepast waardoor er de huisstijl wordt aangehouden.
The functionality use: 8 Duidelijk zichtbaar wat de knop is en bevat functionaliteit, elementen zijn voldoende groot.

Check the spelling

8 Er zijn geen spellingsfouten


2.2. Onderzoeksverslag database

Het onderzoek is van voldoende kwaliteit, er zijn op basis van bronnen de kenmerken van drie soorten database systemen onderzocht. Op basis van de bevindingen is er een besluit gevormd. Om een hoger cijfer te geven voor dit deelproduct ga ik de volgende keer meer bronnen raadplegen en de gevonden resultaten afwegen in een tabel, om zo tot een keuze te komen. Omdat er nu een afweging is gemaakt op basis van de bronnen en eigen verwachtingen.

Criteria Cijfer Toelichting
Er is een hoofdvraag 7 Hoofdvraag sluit aan op de uitleg uit de inleiding.
Deelvragen sluiten aan op de hoofdvraag 7 Deelvragen bieden de mogelijkheid om onderbouwing te geven op de hoofdvraag.
Criteria en aanpak zijn opgesteld 6 De manier waarop een keuze wordt gemaakt is onderbouwt en de aanpak is duidelijk geformuleerd.
Deelvragen dienen ter onderbouwing op het antwoord op de hoofdvraag 6 In de conclusie worden de punten benoemd in bij de deelvragen meegenomen in het besluit.
Conclusie sluit aan op de hoofdvraag 6 De hoofdvraag is beantwoord, en het is duidelijk welk systeem aansluit op de te maken implementatie.
Eindcijfer 6,6

2.3. Software design document

Voor het SDD zijn er in het plan van aanpak criteria opgesteld. Deze criteria staan in de onderstaande tabel en komen uit het plan van aanpak. Per criteria geef ik een cijfer, de losse cijfers vormen gezamenlijk het eindcijfer.

Criteria Cijfer Toelichting
Architecturaal overzicht 6 Overzicht geeft de architectuur weer, voor een hoger raad ik aan om de logo's te gebruiken van de te software e.d. omschrijvingen van de drie systemen mogen uitgebreider.
Deployment diagram 8 Het deployment diagram voldoet aan de volgende omschrijving (V.A.P.B.A.A, 2021)Er is terug te zien welke devices, servers en verbindingsprotocollen er nodig zijn. Het diagram komt overeen met de omgevingen waar het zich in afspeelt.
Sub-systemen 6 Er is een omschrijving bij ieder subsysteem aanwezig, voor de database is iedere kolom toegelicht.
Database ontwerp 5,5 Alle data die in het domein thuis horen staan in de database. In het ISE-semester is er aangeleerd om verwoordingen op te stellen en deze met de opdrachtgever te bespreken. Dit is niet gedaan en zijn er op eigen inzicht tabellen aangemaakt. Hierdoor bevatten tabellen meer data dan nodig. Zo staat er in de werknemerstabel welke rechten de werknemer heeft. De rechten horen los van elkaar in aparte tabellen te staan. Wat resulteert dat de database in de tweede normaalvorm staat
Ontwerpbeslissingen 7,5 Beslissingen zijn opgebouwd op basis van een probleem, daarop is er voor iedere beslissing een oplossing gegeven met onderbouwing. Enkele beslissingen bevatten alternatieve oplossingen.
Commentaar verwerken 8 Al het commentaar verwerkt na de tussentijdse feedback.
Eindcijfer deelproduct 6,8


2.4. Unit tests

Voor de unit tests zijn er in het plan van aanpak criteria opgesteld. Deze criteria staan in de onderstaande tabel. Per criteria geef ik een cijfer, de losse cijfers vormen gezamenlijk het eindcijfer. De criteria en de toelichting is op basis van de door mij geschreven test voor het front end.

Criteria Cijfer Toelichting
Alle gemaakte test slagen voor 100% 8 Alle tests slagen. Geen verdere toelichting.
De test coverage is hoger dan 80% van de code waar het nodig is om te testen 6 De onderdelen die worden getest hebben een dekking van 80% en hoger. Er zijn componenten die ik heb gemaakt die geen tests hebben omdat het simpele functionaliteit bevat. Omdat er dus onderdelen zijn die niet worden getest geef ik voor deze criteria een 6.
Alle tests zijn zinnig en hebben toegevoegde waarde 6 Ik heb de tests voor de http requests uitgeschreven. Er zijn tests die alleen kijken http requests worden geaccepteerd.
Test Driven Development toegepast 4 Tests driven development niet toegepast. Ben pas begonnen met testen nadat ik Vue ben gaan beheersen.
Arrange-Act-Assert pattern (Hawkins, 2022) 6 Er wordt een soortgelijk patroon toegepast waar een mock wordt voorbereid en daarna wordt vergeleken of de uitkomsten overeenkomen.
Evaluate a single concept per test (Hawkins, 2022) 7 Per test wordt een onderdeel per functie getest
Er is maximaal 1 assertion per test (Summary of “Clean Code” by Robert C. Martin, z.d.) 8 Iedere test bevat maximaal een assertion.
Eindcijfer deelproduct 6,2


2.5. Testrapport

Deze beoordeling is op basis van het front end testrapport.

Criteria Cijfer Toelichting
Tests hebben een logische naam 7 De naamgeving spreekt voor zicht. Het is dus gelijk duidelijk wat de test gaat doen.
Er is een verdeling van de te testen onderdelen 8 De testen met resultaten zijn opgedeeld op basis van functionaliteit. Er is een duidelijk overzicht van het geheel.
100% slagingspercentage 8 Alle tests slagen.
Alle tests zijn aanwezig 6 Bij het beoordelen zag ik dat er enkele tests zijn vergeten. Op het moment van schrijven is er geen tijd meer om deze toe te voegen.
Eindcijfer deelproduct 6,2

3. Oordeel eindproduct

Onderdeel Cijfer
Code 8
Onderzoek 6,6
SDD 6,8
Unit tests

6,2

Testrapport 6,6

De uiteindelijke code van alle onderdelen samen geef ik een 7 op het moment van schrijven, omdat alle code functioneel is. Er ontbreken op sommige vlakken ontwerpprincipes, zoals het toepassen van interfaces. Zo hebben de mappers geen interface waardoor ze niet voldoen aan het open closed principe. Er zijn nog refactor mogelijkheden voor de frontend code. Doordat ik front end development ben gaan leren, had ik niet alle kennis om de code de eerste keer perfect op te bouwen. Hierdoor zijn enkele componenten groter dan nodig en is het nog nodig om deze componenten op te delen in kleinere componenten, i.v.m. tijd tekort neem ik dit mee als leerpunt voor een volgende front end opdracht.

Voor het eindoordeel is het nodig om het product te beoordelen op basis van de specificaties in het SRS. Hiervoor heb ik de onderstaande criteria opgesteld.

Criteria Cijfer Toelichting
Alle use cases zijn geïmplementeerd 8 Alle use cases geïmplementeerd.
Implementatie wijkt niet af van de use case flows 7 Stap 5 uit use case 2 komt niet overeen met de implementatie omdat er geen succes melding wordt gegeven. Verder werkt het systeem volgens de omschrijvingen uit de use cases.
Alle pagina's komen overeen met de wireframes 8 De pagina's komen overeen met de wireframes, op iedere pagina is het bulma framework toegepast.
Systeem voldoet aan de other functional requirements 8 Het systeem voert iedere dag om dezelfde tijd een update uit, om api kosten te besparen is er logica om ervoor te zorgen dat, de afstand van thuisadressen naar werkadressen worden opgeslagen.
Systeem voldoet aan de non functional requirements 7

voor NFR7 ligt de verantwoordelijkheid om de gebruiker te verwijderen na het beëindigen van het dienstverband. Het product voldoet niet aan NFR 11 omdat er niet na iedere actie een succes bericht wordt verstuurd naar de gebruiker. NFR12 kan pas blijken als er een probleem is ondervonden, hierdoor is het niet mogelijk om deze eis mee te nemen in de eindbeoordeling. Er voldoet een eis niet, de andere eisen zijn met succes geïmplementeerd.

Op basis van de bovenstaande criteria kom ik uit op een 7,6. het gemiddelde cijfer uit mijn eindoordeel komt uit op een 7,3 Het doel van de opdrachtgever is bereikt want, het is niet meer nodig om drie spreadsheets bij te houden. Het systeem maakt het nu mogelijk om werkplekken te reserveren, declaraties aan te maken en in te zien. Hetzelfde geldt voor verlofaanvragen. Op basis van het werkplekoverzicht worden automatisch de declaratieformulieren bijgewerkt.


4. Evaluatie gehanteerde projectmethode

De projectmethode zoals omschreven in het plan van aanpak

". . . Aan de hand van Scrum wordt iedere sprint een iets groter product opgeleverd, . . . Dit betekend dat het HR Portaal wat JDI Smart Web applications voor ogen heeft incrementeel tot stand zal komen. Alhoewel er vanaf het begin van het project door het team gekeken wordt naar de globale requirements, wordt bij elke individuele sprint echt vastgelegd welke use cases er na de desbetreffende sprint af moeten zijn. . . . Voordat het ontwikkelteam begint met de incrementele sprints, zal in de eerste week nog een globaal overzicht van het project worden gevormd aan de hand van overlegmomenten en doormiddel van dit Plan van Aanpak. Om dit project goed via Scrum te kunnen uitvoeren, zijn een aantal vaste momenten van belang. Ten eerste zal het ontwikkelteam dagelijks tussen 9:00 en 9:15 een daily standup houden. . . . kan er ook nog gekozen worden om een mid-daily standup te houden. Dit is hetzelfde als de daily standup, maar dan om te checken of iedereen die ochtend goed aan de slag is geweest en om een planning te maken voor de rest van de dag. Of er ook ruimte en belang is voor een mid-daily standup zal tijdens de eerste sprint duidelijk worden. Naast de daily standups zullen er tussen de sprints ook sprint planning en sprint retrospective ceremonies plaatsvinden. . . . Denk hierbij bijvoorbeeld aan het selecteren van de use cases die in de volgende sprint worden opgepakt. Ten slotte wordt er na iedere sprint ook een sprint review gehouden, . . . "

Zoals omschreven houden we iedere morgen een daily standup, en is er in de eerste week een beeld gevormd van het op te leveren product. Na het overleg hebben we een vragenlijst doorlopen met de opdrachtgever om er zeker van te zijn dat er geen onduidelijkheden zijn. In de eerste week zijn we erachter gekomen dat het houden van een mid-daily standup niet nodig is op het moment, als iemand ergens mee klaar is geeft die persoon het aan en vertelt diegene aan welke taak de persoon gaat werken. Op het moment van schrijven is er een retrospective gehouden, tijdens de retrospective heb ik feedback ontvangen en ben op basis hiervan een leerdoel gaan formuleren §7.1. Een verbeterpunt voor het werken met de projectmethode is het aanhouden van de uit te werken use cases tijdens de nieuwe sprints. Het is namelijk voorgekomen dat er twee use cases zijn vastgesteld in de eerste sprint. Het doel van scrum is ook om dan alleen de use cases te werken die zijn vastgesteld. Tijdens de eerste sprint is het namelijk voorgekomen dat er aan taken zijn gewerkt die niet op de planning staan. Daardoor was er een databaseschema opgesteld voor het hele domein en niet voor de onderdelen uit de use case, hetzelfde geldt voor het domeinmodel en de schermontwerpen. Wat hiervan het gevolg kan zijn is dat er wijzigingen komen in de implementatie en daardoor kan er tijd verloren gaan door overbodig werk. Om dit te voorkomen is er tijdens de tweede retrospective afgesproken dat er in de rest van de sprints aan de gekozen use cases gaan werken. Met als doel overbodig werk te besparen en doelgericht te werk kunnen gaan.

Bij de daily stand up ceremonies hebben we vaak zittend uitgevoerd. Ik heb het idee dat er dan minder aandacht is tijdens de stand up, en dat de stand ups langer duren. De keren dat we de stand ups daadwerkelijk staand hebben uitgevoerd had ik het idee dat iedereen aandachtiger luistert. In vervolgprojecten ga ik erop staan dat we de stand ups staand gaan uitvoeren met als onderbouwing dat, er meer aandacht is voor elkaar en er minder afleiding is door laptops en dergelijke.


4.1. STARR werken met Pull requests

Uitkomst eerste retrospective dat het de bedoeling is om gehele functionaliteit aan te leveren in een pull request, hieruit begreep ik dus dat het de bedoeling was om de gehele functionaliteit op te leveren van een use case. Wat ik vanaf toen heb gedaan is het werk committen naar de bijhorende branche en na het afronden van een use case er een pull request van maken. Hierdoor had ik dus maar één pull request. Tijdens de tweede retrospective kreeg ik de vraag hoe het komt dat ik maar een pull request heb, en heb toen het bovenstaande toegelicht. De situatie die hierdoor is onstaan is dat groepsgenoten wachten op functionaliteit die al af is, maar niet in de develop branche staat. Daardoor moesten andere groepsgenoten mijn werk over zetten van mijn branche naar hun branches. Nadat er is verhelderd waar het probleem ligt ben ik gaan werken met pull requests in plaats van commits naar de branche. Het is dus zo dat als er een bepaald onderdeel klaar is dat, ik een pull request maak in plaats van alleen een losse commit. Na dit twee weken te hebben geprobeerd, heb ik de feedback gekregen dat mijn code nu toegankelijker is voor de groepsgenoten en dat het beoordelen van de onderdelen nu makkelijker gaat, omdat er nu losse delen worden toegevoegd in plaats van hele uitwerkingen. Wat ik hiervan heb geleerd is dat branches per feature nodig zijn, en niet complete use cases hoeven te bevatten. Daarnaast merk ik dat er minder code conflicten zijn bij het opleveren van kleine functionaliteit ten opzien van complete use cases. Voor de rest van mijn loopbaan weet ik nu het belang van pull request maken.

4.2. STARR Opstellen gespreksagenda kennismaking

Voor het eerste gesprek met de opdrachtgever was het nodig om te verdiepen in de opdracht, hieruit volgen een aantal vragen. Om de opdrachtgever te laten weten waar hij aan toe is heb ik voorgesteld een gespreksagenda te maken met daarin de onderwerpen die aan bod komen, met de tijd de we hebben per onderdeel om het gesprek optimaal te benutten. Door tijden erbij te zetten kunnen we ervoor waken dat er niet te lang over een onderwerp wordt gesproken. Door de vragen en de agenda aan te leveren weet de opdrachtgever waar hij aan toe is, en wat er wordt verwacht. Het resultaat is dat, de opdrachtgever bij aanvang van het gesprek aangeeft dat wij de eerste groep zijn die een gespreksagenda toe stuurt. Hij gaf aan dat hij hier zeer content mee is. Wat ik hieruit meeneem is, dat ik bij volgende kennismakingsgesprekken met een opdrachtgever een gespreksagenda ga opstellen, omdat dit als professioneel wordt ervaren en zo weten beide partijen wat er besproken wordt. Wat ik volgende keer anders zou doen is bij de vragenlijst enkele vragen toevoegen die andere vragen tegenspreken. Als er dan in het gesprek blijkt dat de juiste en onjuiste vraag beide goed zijn, dan weet ik dat het nodig is om door te vragen omdat er dan toch onduidelijkheden zijn.

5. Beschrijving rollen

Voor het project heb ik de rol kwaliteitsmanager op me genomen. Zoals omschreven in het plan van aanpak "Eindverantwoordelijke voor de kwaliteit van het project. Belangrijke rol bij de code reviews.". In de functie-omschrijving van een kwaliteitsmanager (Functieomschrijving voor Kwaliteitsmanager | Indeed, z.d.) staat dat de kwaliteitsmanager de bedrijfsprocessen gaat monitoren die invloed hebben op de kwaliteit van een product. Hierbij hoort het uitvoeren van kwaliteitsanalyses en het voorzien van kwaliteitsverbeteringen aan de implementatie. Ik wil er tijdens dit project achter komen hoe de rol kwaliteitsmanager invloed heeft op de uiteindelijke implementatie. Om dit doel te behalen heb ik het leerdoel in §6.2 opgesteld. De situatiebeschrijving uit §7.2.2.1. beschrijft hoe ik aan mijn leerdoel heb gewerkt en tevens komt hier mijn rol als kwaliteitsmanager naar voor. Het opstellen van deze documentatie heeft een positief effect op de verdere werkzaamheden. Wat verbeterd kan worden is dat de API-documentatie niet mee is genomen tijdens het reviewen. Met als gevolg dat er van enkele endpoints geen documentatie beschikbaar is. Wat ik de volgende keer anders ga doen is ervoor zorgen dat de documentatie onderdeel wordt van de taak. Door het als verplicht onderdeel op te nemen is het nodig dat er een review komt. Door ervoor te zorgen dat er een review komt vinden de groepsleden mogelijke fouten en/of gebreken in de documentatie.

Tijdens dit project heb ik geleerd dat, een kwaliteitsmanager stevig in zijn schoenen moet staan. Want het is nodig om aan te geven dat onderdelen niet voldoen aan de eisen, daarnaast is het ook nodig om daarop te anticiperen en daardoor een ander teleur moet stellen omdat er werk aangepast moet worden of extra werkzaamheden toewijzen om aan de eisen te voldoen. Ik merk dat een kwaliteitsmanager de conflicthanteringsstijlen (Vogelzang, 2022) doordrukken, samenwerken en compromis sluiten toe moet passen. Doordrukken omdat het nodig is om met deze rol op te komen voor de kwaliteit en daarom andere erop aan spreken, ook als er andere groepsgenoten het er niet mee eens zijn. De stijl compromis sluiten en samenwerken hangen sterk samen met doordrukken omdat het beter werkt om als team tot een oplossing te komen, in plaats van een oplossing door te drukken. Uit de volgende bron (9 tips voor succesvol samenwerken binnen een team, 2020)  blijkt dat het nodig is om met elkaar in overleg te gaan over de kwaliteit en elkaar daarop aanspreken, want als dit niet wordt gedaan lever je zelden het best mogelijke resultaat.

Deze rol is voor mij weggelegd, maar niet op het lijf geschreven. Ik heb een groot belang bij kwaliteit van producten, hierdoor houd ik me graag bezig met procesverbetering. Wat ik minder vind aan de rol is dat het nodig is om volhardend te zijn in discussies met name de stijl doordrukken toepassen. Soms vermijd ik een discussie ten goede van de groepsband, hier ga ik een leerdoel van maken voor de volgende keer als ik kwaliteitsmanager wordt.


6. Competenties

6.1. OOSE-P04 Software Design Description

Mijn bijdrage aan het SDD is het schrijven van het onderdeel subsystemen, hier ben ik gaan toelichten hoe de Vue onderdelen zijn opgebouwd in de code. Zo is het duidelijk hoe de Vue router werkt en hoe de componenten worden opgebouwd. Daarnaast ben ik de ontwerpbeslissingen gaan vastleggen om inzicht te geven in de gemaakte keuzes. Zo is het nu duidelijk hoe de JavaScript functies zijn opgedeeld per functie om overzicht te behouden over alle functionaliteit.

6.2. OOSE-P05 Implementeren en distribueren van een systeem

Om de traceerbaarheid mogelijk te maken zijn er user strories opgesteld op basis van de usecases, op basis van de user stories zijn er taken opgesteld. Het is de afspraak dat in in Jira branches worden aangemaakt per taak. Zo is het nu te zien welke branche bij welke taak hoort. Het is voorgekomen dat ik via Github desktop of Bitbucket branches heb aangemaakt, het gevolg hiervan is dat er bij die taken niet terug te vinden in Jira. Ik ben hier op aangesproken door een groepslid. Hierna was het mij duidelijk wat hier mis mee is, en ben vanaf dat moment taken gaan aanmaken in Jira. Zoals te zien is in de onderstaande afbeeling, is het niet duidelijk welke branches horen bij een taak. Na het toepassen van de feedback worden branches aangemaakt zoals de onderste rij is te zienee. Ik heb hiervan geleerd hoe ik software traceerbaar maak. In vervolg project ga ik taken aanmaken vanuit Jira om ervoor te zorgen dat het overzichtelijk blijft welke taak bij welke branche hoort. Zoals te lezen in §7.2.2.1 heb ik ervoor gezorgd dat er API-documentatie wordt opgesteld, door dit voor te stellen is er traceerbaarheid mogelijk gemaakt voor de communicatie tussen front- en backend.


6.3. OOSE-P07 Bewaken van kwaliteit

Tijdens dit project heb ik de rol als kwaliteitsmanager, zoals te lezen in §7.2.2.1 is mij opgevallen dat de communicatie tussen front- en backend niet soepel verliep. Om daar iets aan te doen heb ik het initiatief genomen om API-documentatie op te stellen. De groepsleden zijn akkoord gegaan met het voorstel en zijn het gaan toepassen sinds dien. Omdat ik dit project een van het front end developers ben, heb ik de meeste pull requests met betrekking tot het front end beoordeeld. Om ervoor te zorgen we de kwaliteit en functionaliteit waarborgen heb ik unit tests geschreven voor het front end, dit zijn werkzaamheden die ik samen met Tobias heb uitgevoerd. Een ander document waar ik veel aandacht aan heb besteed is het SRS, hier heb ik 41 comments geplaatst en deze verwerkt met de groepsgenoten.

7. Leerdoelen

7.1. Leerdoel: Visualiseren

Uit de eerste retrospective blijkt dat ik bij onduidelijkheid de neiging heb om eerst hulp te zoeken bij andere groepsleden. Hier is mij aangeraden om eerst het probleem en de nodige stappen te visualiseren voordat ik ga beginnen aan een implementatie. Het leerdoel staat in verband met een aantal gedragscompetenties (Overzicht van de traditionele gedragscompetenties, z.d.)

  • Probleemanalyse - door te visualiseren breng je een probleem in kaart door het te analyseren.

Door te kijken naar een visualisatie, krijg je meer inzicht waar kansen liggen voor verbetering (Processen visualiseren in Process Advisor - Power Automate, 2022). Bij het visualiseren word je gedwongen om keuzes te maken tussen hoofd- en bijzaken, hierdoor wordt de boodschap compact. Kun je het niet simpel visualiseren? Dan betekend het dat het onderwerp nog onduidelijk is. Bij het bespreken van een visualisatie spreekt een beeld meer dan een woord, het zorgt ervoor dat hetgeen dat wordt besproken duidelijk is voor andere. (morresMarketing, 2018)

7.1.1. Actie 1: visualiseren

Voordat ik ga beginnen aan een taak, ga ik als eerst op papier een schets maken van het te maken onderdeel hiervoor neem ik maximaal een kwartier. Als ik merk dat bij het maken van de schets onduidelijkheden zijn en ik dus merk dat ik moet gaan werken aan nieuwe functionaliteit dan, ga ik de onduidelijkheden uittekenen op een apart vel en erbij schrijven wat ik denk dat nodig om het uit te werken, hiervoor neem ik maximaal een kwartier. Daarna kan ik gaan op zoek gaan naar een voorbeeld of toelichting uit de API-documentatie.

7.1.1.1. verbeteren na feedback

Tijdens de eerste retrospective is mij verteld dat het opvalt dat, ik bij het leren van het Vue de te maken onderdelen als een groot geheel zie, en hierdoor neig het overzicht te verliezen. Om hieraan te werken kies ik ervoor om hier een van de leerdoelen van te maken. Het is mijn taak om het mogelijk te maken om een werkplek toe te voegen aan een bedrijfslocatie. Hiervoor ben ik een stappenplan gaan uittekenen d.m.v. Miro, het is nog niet duidelijk voor mij hoe data wordt doorgegeven aan onderliggende componenten, hiervoor ga ik voorbeelden opzoeken en de implementatie daarop uitwerken. Door een stappenplan te maken heb ik meer overzicht wat er moet gebeuren, om dit te testen heb ik overleg gehad met een groepsgenoot en hij gaf aan dat het duidelijk is wat er moet gebeuren. Zodoende ben ik stapsgewijs de implementatie gaan uitwerken. Door op deze manier te werken hou ik overzicht van de te maken onderdelen en kan ik op een logische manier de code opbouwen. Anders komt het voor dat ik bij het leren van nieuwe stof van alles ga proberen, logischerwijs loop ik dan vast en dan raak ik dus sneller het overzicht kwijt. Dus ik merk dat op deze manier werken mij zeker helpt om nieuwe onderwerpen te leren en toe te passen. Het kost tevens wel meer tijd om een heel stappenplan te maken van alle onderdelen. Met als conclusie dat ik geen stappenplannen ga maken voor onderdelen waar ik voldoende kennis over heb, omdat het meer tijd kost en tijd is kostbaar.

7.1.2. Actie 2:  Uitzoeken voor hulpverzoek

Als ik merk dat ik na het visualiseren vastloop dan ga ik op het internet zoeken naar een voorbeeld of in de API-documentatie. Als ik na een uur nog steeds vastloop dan ga ik hulp vragen aan een andere groepsgenoot. Als wij er samen niet uitkomen na maximaal 2 uur dan, sturen we een mail naar JDI met een uitgebreide uitleg van het probleem waar we tegenaan lopen en er niet uitkomen na 2 uur onderzoeken. Met de vraag of een van de developers een mogelijke oplossing kan voorstellen.

7.1.2.1. STARR vragenkanaal discord

Een groepslid gaf een dat er veel vragen worden gesteld aan hem, met als reden dat hij meer dan een paar jaar ervaring heeft over front end technologie. Daarom is het gemakkelijk om hem te vragen om mee te kijken als ik of iemand anders vastloopt. Het is aan de taak om ervoor te zorgen dat er een andere manier komt van vragen stellen zodat de vraag beantwoord wordt, maar op een tijd dat het uitkomt. Om hiervoor te zorgen wordt er gebrainstormd met als resultaat dat we een vragenkanaal aanmaken in Discord. De afspraak is dat als iemand langer dan 10 minuten vastloopt een bericht stuurt in het kanaal. Met als bedoeling dat er binnen een uur hulp wordt aangeboden. Dit zou ervoor zorgen dat iedereen hulp krijgt, en andere groepsleden de tijd krijgen om eerst hun werk af te maken zodat ze niet uit hun concentratie worden gehaald. Een week na de retrospective ben ik gaan overleggen met het groepslid over het verloop van de nieuwe aanpak. Ik heb namelijk een aantal vragen gesteld in het kanaal, hierbij gaf hij aan dat dit fijner werkt omdat hij dan beter in zijn concentratie kan blijven. Met als resultaat zowel ik als het andere groepslid tevreden zijn over de nieuwe aanpak van vragen stellen. Ik ga deze manier van werken ook voorstellen in vervolgprojecten zodat iedereen de ruimte krijgt om af te maken waar ze mee bezig zijn.


7.2. Leerdoel: Voorkomen miscommunicatie.

Uit ervaring weet ik dat bij het werken in groepsverband miscommunicatie kan ontstaan tijdens het overleg, en daardoor personen de taak afwijkend van elkaar gaan implementeren. Om dit voorkomen ga ik twee actiepunten opstellen waar ik aan ga werken om miscommunicatie te voorkomen. Het leerdoel staat in verband met de volgende gedragscompetenties (Overzicht van de traditionele gedragscompetenties, z.d.)

  • Durf - Het is nodig om een discussie aan te durven gaan als het nodig is en niet een discussie vermijden.

Miscommunicatie ontstaat wanneer de ontvanger de boodschap anders interpreteert dan de zender bedoeld, zowel verbale als non-verbale communicatie speler hierbij een rol (Wikipedia-bijdragers, 2021) Een andere manier waardoor miscommunicatie ontstaan is, dat er wordt ingevuld voor een ander. Hierdoor maak je een aanname wat de andere persoon bedoelt, door door te vragen en samen te vatten kan dit worden voorkomen (Kiefmann, 2019)

7.2.1.  Actie 1:

De vaardigheid Luisteren, Samenvatten, Doorvragen (LSD) toepassen als ik het idee heb dat er enigszins onduidelijkheid heerst in het gesprek. Dit kan ik merken aan de non-verbale communicatie, denk hierbij aan een groepslid die fronst nadat er is wordt gevraagd of diegene het snapt. Ik ga bij het doorvragen twee vragen stellen die op elkaar lijken waarvan een waar is en de andere onwaar. Als beide vragen met waar beantwoord worden dan weet ik dat er nog miscommunicatie is. Door samen te vatten zorg ik ervoor dat ik bevestiging krijg of het klopt wat ik denk begrepen te hebben. Als er nog onduidelijkheid heerst, haal ik er een ander groepslid bij om te kijken of hij het kan begrijpen, om zo op die manier de miscommunicatie te kunnen verhelpen.

7.2.1.1. STARR conflicthantering front-end werkplek toevoegen

Ik heb de taak op me genomen om het mogelijk te maken om werkplekken toe te voegen. Tijdens het uitwerken merkte ik op dat er naast een naam voor de werkplek, er ook een soort nodig is om de werkplek aan te koppelen. Op basis van de toelichting van de opdrachtgever leek het me overbodig om een soort toe te kennen, omdat de opdrachtgever aangeeft dat hun een algemene werkplek hebben en een focuswerkplek. Dus mij lijkt het dubbelop om een ruimte zo te noemen en dan ook nog aan te geven dat het een van de soorten hetzelfde is. Dit heb ik aangegeven aan de personen die bezig zijn met de backend van dit onderdeel, hieruit kreeg ik de reactie dat het handig is om te hebben. Hier was ik het niet geheel mee eens, maar heb het voor lief genomen. Om de situatie terug te koppelen maak ik gebruik van een conflicthanteringsmodel (Vogelzang, 2022) Wat ik heb gedaan is de stijl vermijden en toegeven toepassen. Door de stijl vermijden en toegeven toe te passen is er tijd gewonnen, en een mogelijke discussie vermeden. Ik was er bang voor dat er bij de stijl doordrukken een discussie zou ontstaan doordat, de andere groepsgenoten aangaven over dit onderwerp meermaals te hebben besproken. Als ik terug kijk op deze situatie besluit ik dat, de volgende keer als er een zelfde soort situatie is een middenweg voor te stellen en dus de stijl compromis sluiten toepassen. Met als compromis het besluit bij de opdrachtgever neer te leggen. Op die manier kan er ook geen onderlinge discussie ontstaan over wat de opdrachtgever mogelijk wilt. Daardoor hoeft er ook geen conflict vermeden te worden en krijgt de opdrachtgever de implementatie zoals gewenst.

(Vogelzang, 2022)

7.2.2. Actie 2:

Als tweede actie ga ik voorstellen om ontwerpdocumenten op te stellen als er meerdere groepsleden aan een deelproduct werken. Dit ga ik doen aan het begin van een sprint als de taken worden vastgesteld of als ik met een ander persoon ga samenwerken. De documenten gaan dienen als schakel om ervoor te zorgen dat er geen aannames gemaakt worden, en daarnaast behouden we op deze manier overzicht. Ik ga voorstellen om een kwartier in overleg te gaan over de implementaties, en daarna een kwartier gezamenlijk documentatie opstellen om alle implentatie-afspraken vast te leggen.

7.2.2.1. STARR Opstellen van API-documentatie

Tijdens het coderen van de verlof aanvragen kwam ik erachter dat de gegevens die de backend nodig heeft anders zijn dan de gegevens uit de wireframes. Hierdoor is het nodig om een van de implementaties  aan te passen. Na overleg is besloten om de backend aan te passen zodat het overeenkomt met de gegevens uit de wireframes. Om te voorkomen dat er zulke misverstanden zich voordoen ben ik een voorbeeld API-documentatie gaan uitwerken. Zodat er vooraf afspraken worden vastgelegd over de nodige data om misverstanden te voorkomen en dus tijd te besparen. Na het toelichten van de documentatie waren de groepsgenoten het ermee eens om het op deze manier aan te pakken. Dit werkt omdat er nu API-documentatie beschikbaar is en er misverstanden zijn voorkomen. Ik ga bij volgende projecten waarin een API nodig is ook deze documentatie opstellen met ook de reden dat er zo overzicht blijft en er geen misverstanden ontstaan.

8. Conclusie

8.1. Tussentijdse verslag

Op het moment ben ik tevreden met het resultaat dat tot nu toe is opgeleverd. Zo hebben we de eerste sprint op een paar kleine taken na de sprint geheel afgerond, hiervan hebben we geleerd dat taken ruimer geschat mogen worden. En passen dit nu toe op de tweede sprint. Op het moment van schrijven zitten we nog in de tweede sprint en ziet het ernaar uit dat we de sprint gaan halen. Ik heb een aantal inhoudelijke uitdagingen getackeld, zo ben ik gaan leren hoe JavaScript werkt en wat de mogelijkheden ervan zijn. Op het moment ben ik nog lang geen expert op dit gebied maar, ik heb wel grote stappen gezet met het leren en toepassen van nieuwe onderwerpen. Tevens valt dit goed samen met het leerdoel visualiseren en helpt het leerdoel met het tackelen van de inhoudelijke uitdaging. 

8.2. Eindverslag

Ik ben zeer tevreden met het resultaat dat we opleveren aan de opdrachtgever. In hoofdstuk 3 heb ik toelichting gegeven op het eindproduct en hieruit blijkt dat het doel van het hele project is behaald, het is voor de opdrachtgever niet meer nodig om meerdere spreadsheets bij te houden. Tijdens de retrospectives hebben we ons als groep kunnen ontwikkelen en ik ook als persoon door de feedbackrondes. Hierdoor ben ik op het leerdoel gekomen om te gaan visualiseren, door dit te gaan doen had ik minder moeite om nieuwe onderdelen op te pakken met het front end framework. Van de feedbackrondes heb ik ook geleerd hoe ik een balans kan vinden tussen vragen stellen aan andere personen en het zelf uitzoeken. Ook heeft het nut gehad om een vragenkanaal op te stellen.

De rol als kwaliteitsmanager heeft me persoonlijke inzichten gegeven door terug te reflecteren met het conflicthanteringsmodel. Zo weet ik nu meer over mijn kwaliteiten en waar mogelijkheden liggen om door te ontwikkelen als persoon, een van de gedragscompetenties waar ik me verder in wil gaan ontwikkelen is durf. Ik heb geleerd dat het niet goed is om discussies te mijden ten behoeve van de kwaliteit.

Zoals omschreven in de inleiding is het leren van front end een van mijn doelen in het project mede uit persoonlijke interesse, het doel is behaald omdat ik nu basis kennis heb over het programmeren in JavaScript en pagina's kan maken met het Vue framework.

Een leerdoel waar ik aan heb kunnen werken in het voorkomen van miscommunicatie, zo heb ik geleerd wat het belang is van ontwerpbeslissingen vast te leggen en wat het effect is als het niet wordt gedaan. Daarnaast heb ik ook geleerd dat het niet altijd nodig is om een discussie te mijden als er miscommunicatie heerst over de implementatie, en als dat wel voorkomt het de makkelijkste oplossing is om de keuze bij de opdrachtgever neer te leggen.

Mijn bijdrage was tijdens het project voornamelijk front end developer, en in het begin heb ik mijn bijdrage geleverd bij het opstellen van alle documenten. Een van de competenties waar ik me in wil verbeteren is het testen van software, ik wil mezelf gaan aanleren om test driven te gaan ontwikkelen.

Verder heb ik deze periode als plezierig ervaren, er heerste een fijne sfeer in de groep. We gingen iedere pauze naar de Coop wandelen, in deze tijd kon iedereen even zijn gedachtes verzetten en kon iedereen weer geconcentreerd verder. De meeste dagen hebben we aan het eind van de dag de laatste 15 minuten een afsluitend spel gedaan om met gezamenlijk af te schakelen.

9. Literatuurlijst

9 tips voor succesvol samenwerken binnen een team. (2020, 6 augustus). AG5. Geraadpleegd op 9 juni 2022, van https://www.ag5.com/nl/samenwerken-binnen-een-team-tips/

Functieomschrijving voor Kwaliteitsmanager | Indeed. (z.d.). indeed. Geraadpleegd op 7 juni 2022, van https://nl.indeed.com/personeel/functiebeschrijving/kwaliteitsmanager

Hawkins, T. (2022, 7 januari). Clean Code With Unit Tests - Better Programming. Medium. Geraadpleegd op 8 juni 2022, van https://betterprogramming.pub/clean-code-with-unit-tests-5f28020828a5

Karanth, D. (2016, 13 april). Is Your Code DRY or WET? Dzone.Com. Geraadpleegd op 11 mei 2022, van https://dzone.com/articles/is-your-code-dry-or-wet

Kiefmann, G. (2019, 26 februari). Voorkom miscommunicatie. Coaching Aanzet. Geraadpleegd op 11 mei 2022, van https://www.coachingaanzet.nl/voorkom-miscommunicatie/

morresMarketing. (2018, 7 mei). Waarom visualiseren? IRISZ. Geraadpleegd op 11 mei 2022, van https://www.irisz-onderwijsadvies.nl/waarom-visualiseren/

Overzicht van de traditionele gedragscompetenties. (z.d.). van osch. Geraadpleegd op 11 mei 2022, van http://www.van-osch.com/lipoweb/opr0.htm

Processen visualiseren in Process Advisor - Power Automate. (2022, 11 maart). Microsoft Docs. Geraadpleegd op 11 mei 2022, van https://docs.microsoft.com/nl-nl/power-automate/process-advisor-visualize

Summary of “Clean code” by Robert C. Martin. (z.d.). Gist. Geraadpleegd op 11 mei 2022, van https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29

Telvak, R. (2019, 3 mei). A Lite Checklist for UI (User Interface) Testing. Lvivity. Geraadpleegd op 11 mei 2022, van https://lvivity.com/checklist-for-ui-testing

V.A.P.B.A.A. (2021, 27 september). The Easy Guide to UML Deployment Diagrams. Creately Blog. Geraadpleegd op 8 juni 2022, van https://creately.com/blog/diagrams/deployment-diagram-tutorial/

Vogelzang, F. (2022, 22 april). De 5 conflictstijlen van Thomas-Kilmann: hoe ga jij met conflicten om? ICM opleidingen & trainingen. Geraadpleegd op 5 juni 2022, van https://www.icm.nl/extra/5-conflictstijlen-thomas-kilmann-omgaan-conflicten/

Wikipedia contributors. (2022, 7 maart). Robert C. Martin. Wikipedia. Geraadpleegd op 5 juni 2022, van https://en.wikipedia.org/wiki/Robert_C._Martin

Wikipedia-bijdragers. (2021, 14 januari). Miscommunicatie. Wikipedia. Geraadpleegd op 11 mei 2022, van https://nl.wikipedia.org/wiki/Miscommunicatie


10. Factsheet


Nummer Competentie Link naar het product (JIRA taak) Beschrijving eigen bijdrage

1.

OOSE-P1 H4 van dit verslag Opstellen van een gespreksagenda om ervoor te zorgen dat de opdrachtgever weet wat wij van hem verwachten.

2.

OOSE-P1 H5 van dit verslag Reflectie op mijn rol als kwaliteitsmanager met hierin benoemd wat er goed ging en welke verbeterpunten er zijn.
3. OOSE-P1 Doelstelling Plan van aanpak Uitschrijven van de doelstelling in het plan van aanpak.
4. OOSE-P1 Plan van aanpak 14 comments ten behoeve van kwaliteitsverbetering.
5. OOSE-P1 Projectgrenzen Plan van aanpak Uitschrijven van de projectgrenzen in het plan van aanpak.
6. OOSE-P2 Use case model Opstellen van het use case model.
7. OOSE-P2 UC: invullen werkplekschema Uitwerken fully dressed versie van deze use case.
8. OOSE-P2 UC: aanvragen verlof Uitwerken fully dressed versie van deze use case.
9. OOSE-P2 Software Requirements Specification 41 comments ten behoeve van kwaliteitsverbetering.
10. OOSE-P3 Google Distance Matrix API Onderzoek meerdere comments ten behoeve van kwaliteitsverbetering.
11. OOSE-P3 Database onderzoek 12 comments ten behoeve van kwaliteitsverbetering.
12. OOSE-P3 Database onderzoek Onderzoek uitbreiden met hoofdvraag en deelvragen en aansluitende conclussie met correcte APA bronvermelding.
13. OOSE-P4 Software Design Description Ontwerpbeslissingen documenteren front end.
14. OOSE-P4 Software Design Description SOLID en GRASP toelichten sequence diagrammen
15. OOSE-P4 Software Design Description Design front end subsystem uitschrijven
16. OOSE-P5 user strories Helpen met het opstellen van user stories op basis van de use cases.
17. OOSE-P5 Bitbucket branches Branches aanmaken via bitbucket, zie h5 van dit verslag voor meer toelichting.
18. OOSE-P5 API-documentatie Opstellen van API-documentatie om traceerbaarheid tussen front- en backend te realiseren.
19. OOSE-P5 Uitwerken componenten en functionaliteit en tests van werkplek toevoegen, verwijderen, wijzigen.
20. OOSE-P5 CRUD verlof aanvragen en beoordelen Uitwerken componenten en functionaliteit en tests van verlof aanvragen en beoordelen.
21. OOSE-P6 Burndownchart Door uren te loggen op de taken hebben we de burndownchart actueel gehouden. Zo maakt deze tool het inzichtelijk of de sprint volgens de geplande tijd verloopt.
22. OOSE-P6 User stories aanmaken Opstellen van user stories op basis van de use cases.
23. OOSE-P6 Pull requests Zie starr formulier §4.1 van dit verslag en de grafieken van Bitbucket
24. OOSE-P7 §7.2.2.1 van dit verslag Ik heb ervoor gezorgd dat er API-documentatie wordt gemaakt. Om misverstanden te voorkomen en overzicht te houden over alle endpoints en de bijhorende data.
25. OOSE-P7 Testrapport tabellen frontend Opstellen van tabellen van alle unit tests, om inzicht te geven van alle test met uitkomsten.
26. OOSE-P7 Unit tests declaraties Uitschrijven van alle unit tests die nodig zijn voor de declaraties.
27. OOSE-P7 Unit tests gebruikers Uitschrijven van alle unit tests die nodig zijn voor de gebruikers.
28. OOSE-P7 Unit tests verlof Uitschrijven van alle unit tests die nodig zijn voor de verlofaanvragen.
29. OOSE-P8 §7.1.1.1. van dit verslag Toelichting hoe ik visualiseren heb toegepast om nieuwe stof beter tot me te kunnen nemen.
30. OOSE-P8 Vue router Ik heb me verdiept in Vue router, een groepslid heeft de router toegevoegd en ik wist niet hoe de router werkt. Nadat ik me heb verdiept hierin heb ik pagina's toegevoegd om navigeerbaarheid toe te voegen aan de website.
31. OOSE-P8 Front end unit tests met Jest Tijdens de course DEA heb ik geleerd hoe ik tests schrijf voor de backend. Voor het front end ben ik het Jest framework gaan leren. Hier heb ik geleerd hoe ik data fetches kan mocken.
32. OOSE-P8 Functionaliteit Vue Ik wist niet hoe ik data kon doorgeven tussen componenten. Hiervoor ben ik gaan zoeken in de documentatie met als resultaat dat het mogelijk is met $emit functionaliteit. Het eerste onderdeel waar ik mee ben gaan expirmenteren is het component dat het gekozen werkpleksoort doorgeeft aan het parent component.
  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous.