Het technisch ontwerp

28 07 2008

In het kader van Agile development wordt er gediscussieerd over de noodzaak van technische documentatie (het TO). En imho: dat is goed: want niets zo verschillend in kwaliteit, bruikbaarheid en gewicht als een technisch ontwerp, dus een beetje discussie er over kan mijns inziens geen kwaad.
Nou denk ik dat veel mensen die hebben gewerkt met TO’s van 8 kg of meer het wel met de Agile gedachte eens zullen zijn: daar heb je niet zo veel aan. Je kunt onmogelijk alles onthouden, en het is voor de makers van een dereglijk TO zo’n klus om alles te beschrijven dat voor sommige zaken toch nog wel eens een shortcut wordt genomen.
Nou zie als developer veel soorten TO’s, en het grappige is dat het bij elk bedrijf weer anders is. Bij het vorige project moest alles van te voren worden opgeschreven: de WSDL, de indexen, de triggers, het verwachte aantal records per tabel etc., en op het huidige project worden alleen de code wijzigingen achteraf gedocumenteerd. Wat echter niet vaak in een TO naar voren komt zijn design- en code keuzes: waarom zijn bepaalde beslissingen genomen, waarom zijn bepaalde stukken code op een bepaalde manier geschreven en wat betekenen bepaalde tabellen en velden in de database.

Nu, vers op een nieuw project, zit ik weer naar een stuk query te kijken waar een hele stapel joins wordt gebruikt, maar geen enkele documentatie beschikbaar is. Waarbij ik me dus afvraag: waarom moet de verbandcode gelijk zijn aan 8120995, de actie gelijk zijn aan 2 en de vId <> -1 om deze set van personen op te halen?
En wat is het verschil tussen de pId, de vId, de Mid, en de nId? De ‘antwoorden’ die ik wel hier op papier heb staan is dat de vorige developer vijf files heeft aangepast, compleet met de melding dat hij voor een class property een getter en een setter heeft geschreven, en een private field. En dat geeft me nou net weer geen enkele informatie waar ik wat aan heb.

Wat me een aardig uitgangspunt lijkt voor een TO is: documenteer je conclusies en waar nodig je keuzes en het denkproces: Wat is de verbandcode, en wat betekenen de codes, zijn die intern gekoppeld aan een enum? Gebruik gerust meer dan 3 karakters voor je veldnamen, en leg uit wat ze betekenen. Besteed geen tijd aan het documenteren van het veld ‘achternaam’ bij je class Persoon, en ook bij ‘huisnummertoevoeging’ kan ik me wel wat voorstellen. Leg wel uit waarom je bepaalde data cacht, en als je denkt: ik codeer hier een veldje bij dat het onderscheid maakt tussen A en B, typ dat er dan wel even bij.

Moraal van het verhaal: houd je niet vast aan een alles of niets strategie bij het schrijven van een TO, maar schrijf op wat je brainwaves waren om een ander de kans te gunnen je gedachten te volgen, en schrijf niet op dat het verwachte verloop van het aantal records in de tabel ‘geslacht’ in de aankomende 5 jaar waarschijnlijk nul zal zijn.





CSS sandbox

23 07 2008

Deze pagina kwam ik ineens weer tegen toen ik lekker aan het CSS’en was (alhoewel, voor mij heeft CSS toch vaak wel een hoog oh, zit dat zo gehalte).
Hij heeft als naam de ‘CSS sandbox’. Hij is vooral als je je hierin herkent:

“Hoe zit het nou ook alweer met die property, moet ik nou overflow:auto of overflow:scroll gebruiken, en hoe werkt de background-repeat nou ook alweer? Even aanpassen, Save, reload pagina en ja, of nee, zo is het wel / niet goed….”.

Dan toont de CSS sandbox pagina namelijk een stuk tekst in een DIV waar je al deze propertys met een muisklik kunt aanpassen en direct kunt zien hoe het resultaat is.

Hiernaast zie je een deel van de propertys die je kunt aanpassen. De geselecteerde opties zijn rood, en klik je op een andere waarde dan wordt deze direct toegepast.





IE6 / IE7 / FF CSS hacks no longer needed

22 07 2008

I was developing a page, and it turned out to be quite a simple one. So i thought: “What the heck, i’m gonna style it with a stylesheet as much as possible”. Oh my, what a trouble i i turned myself into.
Just started, i remembered a book i once read (CSS: The Definitive Guide) and what my overall conclusion then was: don’t get started: you’ll wind up crazy supporting all browsers with all those hacks.

But as time goes by, you forget, and new possibilities arise. So yes, these days there are differences between browsers in interpreting CSS, but providing different styles for the mainstream browsers (which are IE6, IE7 and Firefox right now), is as easy as this:

<head>

<link href=”affinno.css” rel=”stylesheet” type=”text/css” media=”screen” />

 <!–[if IE 6]> <link href=”affinnoie6.css” rel=”stylesheet” type=”text/css” media=”screen” /> <![endif]–> 

 <!–[if IE 7]> <link href=”affinnoie7.css” rel=”stylesheet” type=”text/css” media=”screen” /> <![endif]–>

</head>

(funny to notice that in my case, the ‘normal’ stylesheet is for FireFox)

And the good part is: you only have to supply the styles you want to override in the IE stylesheets.
An example: you have a <H2> tag with a font-size of ‘medium’, which shows up good in FireFox but not so good in IE. Just put the IE variant of the <H2> tag in the IE stylesheet, and you’re done. It picks up every other style from the main stylesheet, and overrides the <H2> style with the special IE one.





ASP.Net magazine

18 07 2008

Ik hoef niemand te vertellen dat je op internet tegenwoordig heel wat info kunt vinden over ASP.Net development. Vragen over architectuur, of over hoe je het beste images kunt renderen of stukjes over nieuwe technologie zijn snel beantwoord.
Vaak vind ik het wel moeilijk om te bepalen of de info wel accuraat is; of je er op kunt vertrouwen en of het echt een best practice is.

Nu is er een magazine met precies dat soort informatie over ASP.Net, en het heet ASP.NET PRO.
Het kost in de USA bijna niets ($35 voor 12 nummers) maar in europa is het helaas wat duurder, waarschijnlijk doen de verzendkosten je de das om: $80.
Maar er is goed nieuws: elke maand wordt het hele exemplaar online neergezet als PDF: gratis.
Je kunt de laatste drie nummers van ASP.NET PRO hier vinden.





Begonnen met Silverlight 2

17 07 2008

Vorige week begonnen met Silverlight 2. Wel weer leuk, een nieuw programmeermodel. En ook wel veelbelovend, C# aan de client kant.
En dat laatste is wel iets dat ik vaak moest bedenken: oh nee, ik zit aan de client. Je bent na zoveel jaar client server ASPX programmeren toch wel gewend geraakt aan het model dat je rendert op de server en op de client geen kennis / state meer hebt. Dat was destijds na de jaren Windows Forms development best een omschakeling, en nu moest ik toch echt even terug omschakelen.
Anyway, gelokt door aan de ene kant dus het C# in de client programmeren en aan de andere kant de mooie grafische dingen ben ik toch aan de gang gegaan.
Ben wel blij dat ik er nu (pas) in stap, in veel artikelen zie ik wel vaak de vergelijking tussen de huidige versie en  eerdere versies: toen was er nog niet zo heel veel mogelijk, en sommige zaken zijn ook wel drastisch veranderd. Die overgang hoef ik dan niet te maken.
Een aanrader alvast: in de gettings started van Silverlight vind je alles om van scratch af aan te starten; en in Scott Guthrie’s blog staat een echte getting started om je eerste en tweede Silverlight app te maken.

Mijn eerste indrukken:
Expression Blend wordt neergezet als een tool voor designers; ik denk dat veel developers er ook mee aan de slag moeten. Ik vond hem niet zo Intuïtief werken. De hele look and feel en beleving is heel anders dan de overige developer tools, dus voor mij als developer was ‘ie wat onwennig; leek wel of ik met een of andere open source tool aan het werken was die weer net iets anders hadden bedacht voor de user experience…. zal wel wennen tzt denk ik.
En de niet grafische kant: geweldig! Erg biek om gewoon een eventhandler in C# te hebben die in de browser wordt afgehandeld.
Nu weer aan de slag op een nieuw project: hopelijk binnenkort weer even tijd om er mee te spelen.





Wanneer is het af?

15 07 2008

Elke developer krijgt de vraag als je hebt aangegeven dat je weet wat er gebouwd gaat worden (of als je nog geen flauw idee hebt, als iemand je in 1 minuut een systeem heeft uitgelegd dat minimaal 5 manjaar kost om te bouwen, maar dat terzijde): wanneer is het af?

Ik ben een boek aan het lezen en daar is hun advies om als antwoord te geven: “I’ll get back to you”. (‘t is namelijk een Engels boek :-) ). Dit omdat in hun ogen, en daar ben ik het wel mee eens, je een meer accuratere schatting krijgt als je er even over kunt nadenken.

Anyway, het punt dat ik interessant vond is het volgende. Als je denkt met iets een half jaar bezig te zijn, dan maakt het niet alleen uit hoe je het brengt, maar ook welke eenheid je gebruikt. Is een beetje uit de wiskunde; hoe kleiner je de eenheid kiest, hoe nauwkeuriger je aangeeft te zijn.
Gebruik je in dit voorbeeld bijvoorbeeld ‘een half jaar’, dan zal een goed verstaander al rekening houden met een maand of 8. Zeg je ‘6 maanden’, dan klinkt het al als tussen de 5 en 7 maanden. Zeg je echter ‘180 dagen’, dan klinkt het al alsof je verwacht er niet veel langer over te doen dan een dag of 180 à 190.

De auteurs van het Agile developer boek geven daarom aan in welke eenheid je moet schatten, afhankelijk van de tijd die je er voor nodig denkt te hebben. De laatste regel bevat een mooie tip: verwacht niet dat je meer dan een half jaar vooruit een accurate schatting kunt maken. Dat komt ook voor in Scrum: je kunt een sprint (van 30 dagen) accuraat plannen, de sprints van daarna al globaal, maar hoe verder vooruit, hoe minder accuraat het wordt.

Maar vooruit, dan eindelijk de tabel waar het allemaal om ging….

Als je denkt aan… Plan in
1 – 15 dagen dagen
3 – 8 weken weken
8 - 30 weken maanden
meer dan 30 weken Geef geen planning af




RSS feed

14 07 2008
Tsja, deze blogengine van WordPress is best ok, maar ik heb alleen nog niet gevonden hoe ik de RSS feed van deze blog zichtbaar kan maken.
Dus dan maar zelf toevoegen aan deze pagina.
Voor alle duidelijkheid: klik op het RSS icoon voor de …. RSS




Welkom / Welcome

14 07 2008

Welkom op de blog van Affinno i.c. Michel van Duijse. Hierin komen posts over software development in het algemeen en Microsoft technologie in het bijzonder.

Welcome at the blog of Affinno / Michel van Duijse. This blog will hold posts on software development in general and particularly Microsoft technology.