Software werd in de afgelopen decennia steeds belangrijker binnen de overheid, en bij vrijwel alle overheidsinstanties is software de kurk waarop de bureaucratie drijft. Verbazingwekkend lijken de meeste mensen bij de overheid, net als bij veel bedrijven overigens, een slecht idee van software te hebben. Overheden denken dat software iets is wat je ´bouwt´, net als kantoorgebouw, een metrolijn. Dit is een misvatting. Software, in essentie, bouw je niet, software schrijf je. Als een softwareprogramma geschreven is, kan het eindeloos verspreid worden, geïnstalleerd worden of hergebruikt worden.
Behoorlijk, als niet vrijwel alle, it-projecten van de overheden falen jammerlijk of zijn veel duurder dan verwacht. Recente voorbeelden zijn b.v. het aangiftesysteem van de overheid of de ov-chipcard. De overheid wilde software binnen een bepaalde vaste periode ‘gebouwd’ hebben, koos de goedkoopste leverancier en probeerde zoveel mogelijk de kosten gedurende het proces te laag te houden. Resultaat is keer op keer dat de overheid vele miljoenen betaald voor software, die nauwelijks zo ingewikkeld is als software die bedrijven als Google of Microsoft, of open-sourceprogrammeurs op een vrijdag-namiddag maken.
Hoe moet het maken van software dan wel gezien worden? Voor een deel is software schrijven creatief, voor een ander deel wetenschappelijk-analytisch (scientific zouden Engelsen zeggen, helaas weet ik geen goede vertaling daarvoor). Als je het maken van software al zou willen vergelijken met bouwen van huizen, dan is dat alleen het maken van het ontwerp.
Wat een junior-programmer doet is vergelijkbaar met wat in de bouw ontwerpers van leiding en electriciteitssystemen in huizen doet. Wat een senior-programmer of architect doet, is vergelijkbaar met wat een (daadwerkelijke) architect doet of projectontwikkelaar.
Als je de metafoor van bouwen zou moeten vergelijken: De gemeente Utrecht had het idee een gigantische woontoren te bouwen: de Belle van Zuyden.

Een archtictbureau heeft een ontwerp gemaakt, een projectontwikkelaar heeft een schatting van de kosten gemaakt. Na een grondige test van het bouwontwerp en -plan, en een gebruikerstest, bleek het gebouw totaal niet werkbaar. Verder ontwerp is gestopt: intekenen van de verwarming is vermoedelijk niet gedaan. 
Belle van Zuylen is niet daadwerkelijk gebouwd, ofwel het is nooit in productie gekomen.
Softwareontwikkeling is dus vergelijkbaar met ontwerpen van machines, gebouwen, en systemen in het algemeen, niet het bouwen zelf. Dat verzin ik niet ter plekke, dit wordt ook onderbouwd door meerdere mensen die er verstand van hebben. Collega’s hebben recentelijk nog een mooi artikel hierover geschreven:
Creativiteit in Software Ontwikkeling en Snel succesvolle projecten uitvoeren.
Goed boek om mee te beginnen:
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Methodology.
Tagged with agile.
A while ago a reviewed a few online storage solutions. I especially liked Zumodrive, second to Dropbox. Now I found a nice article that reviews Zumodrive and compares it to Sugarsync and Dropbox: A Review of ZumoDrive Service
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Reviews.
Tagged with cloud.
I am subscribed to several technology related newsletters, including those of InfoQ. Very often these newsletters feature very interesting content. Unfortunately, a increasingly large portion of those newsletters now includes broadcasts of presentations. With the emerge of Youtube, broadband and Al Gore’s movie An Inconvenient Truth, the trend is that information on the Internet should be in movies or sound.
That’s quite unfortunate for me. I often prefer to read something, rather then listening and watching something, at least to get information. Also, all too often I’m reading those newsletters in the occasion I can’t bother other people with sound. Well, could use a headphone – but I don’t have any
.
I wonder if other people have that problem too?
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Various.
Ik heb een verslag geschreven over JFall 2009 voor Whitehorses, het bedrijf waarvoor ik werk.
Hier is de officiele introductie
Op 11 november 2009 werd JFall 2009, een van de twee congressen die jaarlijks door de NLJug worden georganiseerd, gehouden. Naast de inhoudelijke sessies, is een van de mooiste aspecten van JFall (en JSpring) het ontmoeten van andere Java programmeurs. In dit Whitebook vind je een verslag van dit congres en van een aantal sessies, o.a. over Java SE 7 en de nieuwe Google ontwikkelingen. Lees het volledige artikel »
en hier is de whitebook: JFall 2009, een verslag
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Reviews.
Tagged with concurrency, java, jfall.
Via the newsletter of Whitehorses, the company I work for, an article written by me is published: Gebruik de multi-core omgeving met Java 7 . As the title suggest, the article is in Dutch. The article explains some of the new features of Java 7 for creating software that runs in parallel on multiple cores.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Technology.
Tagged with concurrency, java, jee.
Yesterday I’ve submitted a paper to NLJUG, the Dutch Java User Group for the JFall 2009 conference. Together with colleagues we worked on a proposal for a very nice presentation on the Google Guice. Like many programmers we were quite skeptical on yet-another Dependency Injection/IC framework. We all know Spring, and dependency injection is now also part of the J2EE 1.5 / EJB3 standard. What makes Guice worth looking at?
In our talk we’ll explain (of course) what Google Guice is, and how Guice compares to Spring and EJB3. Hope to see you on JFall!
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Various.
Tagged with java, jee, spring.
On both my laptop and my desktop computer I have Zumodrive running, a form of Internet storage I wrote about before. When I store something on my desktop while my laptop is connected to the same network-lan (via WIFI) I always wondered if Zumodrive would be smart enough to directly transfer files from the desktop to the laptop. That way my files would be available a lot faster then when they would be uploaded first.
I still have not bothered to ask Zumodrive, but I just got a newsletter mail from their competitor Dropbox, claiming the following:
we’re also finishing up a new version of the Dropbox desktop software that features numerous performance improvements and our new “LAN sync” feature. LAN sync knows when Dropboxes are on the same network and will automatically exchange files directly between computers instead of downloading them from our servers – this makes sharing large files in an office environment much faster than was previously possible.
So all in all Dropbox now has that feature. Either Zumodrive follows fast, or they already do that. Seems kind of obvious feature, LAN-sync, so maybe they already do that.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Technology.
Tagged with cloud.
Lately I tried to run JBoss on my Linux-installation (KUBuntu 9). I got lots of java.lang.OutOfMemoryError: PermGen space errors while starting JBoss 5. First I thought that had something to do with Linux. I google’d the error, and from what I read, permgen errors are caused by bugs in either JBoss or the JavaVM. So increasing memory won’t help, besides, JBoss ran fine on my Windows installation.
Then I remembered JBoss had a separate package for Java JDK 1.5 and JDK 1.6. I used the JBoss- version for JDK 1.5, but I have JDK 1.6 installed on my Linux installation. After I switched to the JBoss 5.0 version for JDK 1.5, JBoss ran smoothly!
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Technology.
Tagged with java, jboss.
Do you call yourself architect, while you’re developing software or telling other people how to program? At least in the Netherlands, calling yourself Architect is illegal when you’re not a officially registered architect:
Tip: ‘professor’ is not protected title. Call yourself professor while creating technical designs and choosing frameworks and you’re fine.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Various.
Tagged with design patterns.
Recently I read the book Clean Code
by Robert C. Martin. I was very pleasently surprised by the book. The book was well written, for me it was a page-turner. The book starts with explaining why you (or the people you manage) should write clean code: writing good, well-written, consise - in short clean – code, is essential to agile software development. Writing clean code makes certain both yourself and any future developers can easily extend and maintain your software.


Every chapter goes on specific part of programming, amongst others: using meaning full names, how to write good, consise and easy-to-understand functions, writing good comments, writing good unit tests, and having a good class design. A lot of content I already knew or was at least aware of, either intuitively through experience or from other sources. However, that didn’t made reading it any less usuful, the book does very well on explaining why and offering good arguments, just to convince other people. The book also questions a lot of common practices, I did not think of before.
I’ll pick some chapters to explain more in detail the content. First chapter goes into importance of good naming. Amongst others, variable should have meaning full names, and one letter variables like j or h should be used only for simple loop iteration. Class names should correspond to domain words like Customer, WikiPage or AddressParser. Postfixes like Info (AccountInfo) or prefixes like I (ICustomer) just clutter up and don’t add anything. Same goes for prefixed variable names like m_dsc or int_ordernum. Function names should be verbs like addAccount or deletePage.
Another chapter goes on a often mis-understood or underestimated subject: writing good comments. One point the auther made is to limit the amount of generated comments. IDE-generated comments containing lots of @param, @return tags, etc., just clutter up your code while not adding information: if you use clear names, you don’t need to explain each parameter. Worse, they increase the change that of introducing ‘lies’: comments that do not corrrespond with the code the’re commenting.
Allthough the title of the book suggests it’s about programming in general, the book is slightly targeted to Java-programming. All code-samples are Java code, and some times the book refers to Java standards (like the Bean standard). C# developers could benefit from the book as well, as well as developers in similar languages, allthough some code samples could be harder to understand. Programmers in languages like Haskell, XSLT, Lisp would benifit less of the book.
I could go on, but I’d just recommend you to read the book if you’re a programmer yourself or have to manage programmers directly!
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
Posted in Reviews.
Tagged with book, coder.