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.

Welke Visual Studio versie?

Toen ik een paar jaar geleden overstapte van ontwikkelen met Microsoft producten naar ontwikkelen op Java en Unix, vond ik het best wel lastig om keuzes te maken. Je had verschillende Unix/Linux smaken, een diversiteit aan open source tools en dan heb ik het nog niet over al de Java frameworks die er bestaan. Gelukkig is het gratis en is er een goed package management systeem, zodat software installeren een kwestie is van een apt-get,een port install of een verwijzing naar de maven repository.

Ik ben nu weer even terug op het Windows platform en dan blijk je ook hier intussen veel keuze te hebben. Je hebt verschillende smaken van Windows: 32 bit of 64 bit, XP of Vista en dan nog de varianten: Home Basic, Home Premium, Business en Ultimate. Er er zijn ook nog de server versies. Het is alleen niet gratis, dus moet je vooraf bepalen welke versie het meest geschikt voor je is. Of je neemt een msdn abonnement, zodat je met alle versie's kan experimenteren.

Dan komt de volgende stap: je ontwikkelomgeving, de IDE. Om een beetje .Net te programmeren heb je Visual Studio nodig. Er is een gratis Express Edition, een Standard Edition van een paar honderd euro en een Professional Editon van duizend euro. Wil ik met Teamsystem werken dan ben ik meteen vijfduizend euro kwijt en moet ik een keuze maken tussen: Architect Edition, Development Edition, Database Edition of Test Edition. Als ik geen keuze kan maken heb ik voor tienduizend euro alle versie's.

Even ter vergelijking: voor dat bedrag koop ik een 8 core Mac Pro met raid harddisk systeem en twee breedbeeld schermen waarop XCode, Subversion, Python, Java, Ruby, noem maar op reeds is geinstalleerd. Welk platform denk je dat startups kiezen?

Paul Graham:

...Nearly all the people we fund at Y Combinator use Apple laptops. It was the same in the audience at startup school. All the computer people use Macs or Linux now. Windows is for grandmas, like Macs used to be in the 90s...

Maar het gaat me niet zozeer om de prijs, maar om dat het zo lastig is de juiste keuzes te maken. Ik vraag me of deze wildgroei aan variaties door een vraag uit de markt komt of dat dit ergens in een ivoren toren van de marketing afdeling is bedacht. Met deze prijzen zijn het nooit de ontwikkelaars zelf die de keuze maken, dus misschien is dit ook gericht op de managers die over de budgetten gaan, zo van: ik heb een standaard developer, twee professionele developers, een architect, twee testers en een database specialist.

Martin Fowler:

... The reason we have so much bloatware in IT is because IT purchasing decisions are usually made on golf courses by people who have lost meaningful contact with the realities of software development...

Maar om Microsoft te helpen zal ik mijn wensen voor een IDE als een zelfstandig ontwikkelaar die zelf zijn software koopt neer te zetten:

  • een prijs van rond de 300 euro, maximaal 500 euro
  • integratie met een modern versiebeheer systeem
  • integratie met een test unit framework
  • een open plugin systeem voor uitbreidingen
  • de standaard syntax highlighting, code completion en debugging features
  • een refactoring engine

Ik hoef geen database integratie, uml diagrammen, integratie met ticket systeem of integratie met een application server. Dit kan ik allemaal buiten de IDE om doen. Waarschijnlijk komt de Standard Edition aangevuld met een Subversion en NUnit plugin het beste bij mijn ideaal.