On 2008-05-02

  • Java 6 on the Mac. What's new? #
  • trying to migrate a project from svn to git #

GUI of command line interface?

Voor een migratie is een tool geschreven om mainframe data in de vorm van tekst bestanden te converteren naar xml. Het is een winapp met een GUI, waarmee je de juiste import bestanden kan selecteren voor conversie. Het migratie proces bestaat uit meerdere stappen en voor elke stap is er dan weer een knop op het scherm. Een jaar na dato zijn de oorspronkelijke makers van dit tool weg van het project en moet een ander team nog een keer een migratie uitvoeren. In welke volgorde de stappen uitgevoerd moeten worden en welke type bestanden bij welke stap horen vergt behoorlijk wat achtergrond kennis die niet meteen paraat is bij het nieuwe team. Het gevolg is dat het team teveel tijd kwijt is aan uitzoekwerk.

Hoe had dit beter opgelost kunnen worden? Betere documentatie, goede overdracht? Waarom geen script gebruiken i.p.v. een GUI. Een script, en met name een build script, heeft vele voordelen t.o.v. een GUI:

  • makkelijker aan te passen dan code dat eerst gecompileerd moet worden: je hoeft dan geen invoerschermen te maken voor user input, argumenten kun je in het script zelf steeds wijzigen. Gecombineered met versie beheer, heb je dan ook nog een historie van wat er allemaal geconverteerd is.
  • het is te automatiseren en zorgt voor een Repeatable Process
  • je kunt makkelijk dependencies tussen taken definieren als je rake of ant gebruikt
  • beschrijvingen zijn makkelijker te maken: aanroep met parameters in een readme file, op de wiki, of als commentaar in het script

Het voordeel van een GUI is dat het intuitief is, alleen ging dat in dit geval niet op vanwege de relatief complexe achtergrond die je nog moet hebben. Je weet nu dat je een knopje in moet drukken, maar welk bestand je dan moet selecteren is niet meteen duidelijk.

De redenen waarom een GUI is gemaakt zijn waarschijnlijk:

  • Windows gebruikers zijn niet comfortabel met de command line
  • Scripting talen zijn niet aanwezig op Windows of hebben een negatieve associatie

Er is in elk geval een hemelsbreed verschil tussen Unix ontwikkelaars en Windows ontwikkelaars op dit gebied. Nou hoef je niet zo fanatiek te zijn als de Unix wereld, maar het is belangrijk te weten dat het ook anders kan.