Hoe developers tijd schrijven
Als softwareontwikkelaar ben je in de regel gewend om met een systeem te werken waarin je kunt bijhouden welke functionaliteit nog gebouwd moet worden en welke issues er eventueel zijn. Deze systemen worden ook ‘work-item trackers’ of ‘ application lifecycle management’ (ALM) systemen genoemd. Bekende systemen zijn Team Foundation Server (van Microsoft) en Jira (van Atlassian). Als je gewend bent om elk aspect van een project in detail te registreren, voelt het moeten verantwoorden van tijd in een ander administratief systeem al snel als dubbel werk.
In dit artikel geven we aan hoe je een koppeling tussen Team Foundation Server (TFS) en Milestones (online software voor projectmanagement, urenregistratie en facturatie) zou kunnen realiseren en je jouw ontwikkelaars een hoop tijd en frustratie kunt besparen. Hoewel dit artikel verder specifiek op TFS ingaat, zijn dezelfde aandachtspunten en conclusies in het algemeen ook toe te passen op andere systemen, zoals het eerdergenoemde Jira, maar ook GitHub Issues, BaseCamp of Redmine.
Aandachtpunten
Bij het inventariseren van een dergelijke koppeling kom je er al snel achter dat er geen eenvoudige één-op-één oplossing is. De systemen zijn met een heel ander doel gebouwd en verschillen op een aantal belangrijke punten flink van elkaar.
De mate van detail
De eerste hobbel die je moet nemen is het bepalen van de mate van detail die je wenst te behouden bij het schrijven van uren. Afhankelijk van de gebruikte templates kent TFS een aantal begrippen binnen een project, zoals ‘release’, ‘iteratie’, ‘backlog item’ en ‘sprint item’. Zo kan het zijn dat elke release overeenkomt met een project in Milestones en dat de backlogitems met de taken overeenkomen. Maar het kan net zo goed zijn dat een project in TFS gelijkloopt met het project in Milestones en dat elke iteratie een taak is.
Het projectnummer van Milestones
Het projectnummer van Milestones zal op het beoogde projectniveau moeten worden vastgelegd, of er moet voor gezorgd worden dat de omschrijving van het project exact hetzelfde is. Bij het automatisch boeken van uren moet de koppeling immers weten op welk project er tijd verantwoord moet worden. Hetzelfde geldt voor het taakniveau.
Een manier om dit vast te leggen is om de projecten eerst in Milestones aan te maken en deze vervolgens automatisch (met de juiste verwijzingen) in TFS te laten genereren. Daarna kunnen er aangepaste velden voor de verwijzingen worden aangemaakt.
Het koppelen van medewerkers
Ook het stambestand ‘medewerkers’ zal gekoppeld moeten worden. Het is vaak het eenvoudigst om dit op basis van de (Windows) gebruikersnaam of het e-mailadres te koppelen.
Verwijzing naar artikel meegeven
Wanneer geen gebruik van taken wordt gemaakt, moet er een verwijzing naar een artikel worden meegegeven. Dit kan door alle boekingen vanuit development op een vast artikel te boeken. Als er variatie aangebracht moet worden, kan dit door een aangepast veld op een TFS work-item aan te maken.
TFS kent geen velden om tijd te registreren
Het volgende probleem waar je tegenaan loopt is dat TFS standaard géén velden kent om de bestede tijd in te registreren. Elke bug, taak of issue kent een status en de historie van deze statussen wordt bijgehouden, maar dit zegt nog niets over de tijd die er daadwerkelijk aan is besteed. Deze informatie zal hoe dan ook moeten worden ingegeven door degene die het work-item in behandeling heeft. Zo kan er een veld worden toegevoegd dat verplicht wordt zodra de taak wordt afgehandeld. Op deze manier kan de taak in Milestones geboekt worden.
Diverse oplossingen mogelijk
Voor meer geavanceerde scenario’s zijn er diverse oplossingen die het registreren van tijd op work-items mogelijk maken. Als de oplossing een eigen API heeft, wordt het koppelen van de geschreven tijd met Milestones mogelijk. Ook bieden dergelijke oplossingen de mogelijkheid om direct de in TFS geschreven uren via diverse invalshoeken in te zien.
Wanneer moet de informatie worden geboekt?
Tot slot moet overwogen worden wanneer de informatie in Milestones moet worden geboekt. Eén mogelijkheid is om gebruik te maken van Service Hooks. Hierdoor kun je bijvoorbeeld een bericht krijgen zodra een work-item wordt afgehandeld. Dat is dan meteen het moment waarop je de bestede tijd op dat item in Milestones kunt boeken. Een andere methode is om regelmatig (bijvoorbeeld elke nacht) de actuele stand van zaken op te halen.
Conclusie
Het koppelen van je development omgeving aan een tijdschrijfsysteem als Milestones kan zeker voordelen bieden. Bereid je wel voor op een koppeling die complexer is dan je op het eerste gezicht misschien zou verwachten. Door het open karakter van de meeste systemen en met behulp van de API van Milestones is het echter goed mogelijk om een oplossing te maken die aansluit bij de werkwijze in de organisatie en die de medewerkers in staat stelt om snel uren te schrijven in hun favoriete omgeving. Heb je hulp nodig bij het koppelen van jouw work-item software aan Milestones? Stuur dan een mail naar m.velthuijsen@qics.nl