Per Lundholm

Continue reading: Requirements Specification is Waste

Requirements Specification is Waste

Eclipse trashed some code for me today and I had to recreate the workspace. On such days, I can get a bit edgy and maybe I was, when commenting Richard Kronfält’s blog on Scrum and traditional QA.

Sorry about that, Richard, but you are a viking so I guess I can get away with a glass of mjöd if I ever bump into you.

But my point is still, requirements specification is waste. It follows from that the issue tracking is as well. Well, not always.

Continue reading
Continue reading: Mock the Clock

Mock the Clock

Your unit test should have no dependencies on anything external, you know that already. So you try not to read any files or connect to a database server.  But what about time? Recently we had some unit tests that failed during nightly build due to daylight saving. Suddenly the distance between two days was 23 hours.

But it doesn’t stop at unit tests. System tests, too, may depend on time.

You should have a strategy for how your system perceive time. Read on.

Continue reading
Continue reading: Understanding a System

Understanding a System

I teach a course on System Architecture. It is a three-day course attended by experienced developers who want to go further in some respect.

What strikes me most is that the majority has never read any architecture document. Since writing such documents is one of the main topics of the course, I have a long road for them as they haven’t read any.

So, when you are faced with a system that you are about to change, how do you go about to understand it?

Continue reading
Continue reading: A Lean Simulation in JavaFX

A Lean Simulation in JavaFX

My collagues are talking a lot about Lean these days. I thought it would be interesting to simulate one of their examples using JavaFX.

Here is a picture:

Lean Machine Simulator

Continue reading
Continue reading: Don’t let Java ruin your JavaFX

Don’t let Java ruin your JavaFX

Me and Oscar is currently working on a small project, just to learn JavaFX.

We stumbled on some nasty crashes which we at first did not understand.

ArrayIndexOutOfBoundsException? Is there a bug in JavaFX?

It turned out to be a callback from Java. Let us see how we got there.

picuture if the application

Continue reading
Continue reading: Essensen och kruxet med testdriven utveckling

Essensen och kruxet med testdriven utveckling

När du förstått poängen med testdriven utveckling kommer givetvis krånglet. Så hur tar man sig vidare?

Vi börjar med poängen så att vi är överens om vad vi menar.

Testdriven utveckling (TDD) säger att man först skriver ett test som fallerar (viktigt), sedan implementerar man så att det inte längre fallerer.

I det läget tar man sig en funderare om man tycker att designen och kodstrukturen är enklast möjliga. Om inte så fixar man till den, utan att ändra vad koden gör, refactor på engelska. Eftersom de tester man har, går igenom så är det tryggt att ändra implementationen.

Vi fortsätter sedan med ett nytt varv, test – implementation – refactor.

Enkelt så långt, men vad är poängen?

Continue reading
Continue reading: Qualities Attributed to the Architecture

Qualities Attributed to the Architecture

Functional requirements describe how a system delivers value. However, the quality attributes of those functions will make or break it. For example, if your functional requirment is about something that takes you from one city to another, I have a car to sell. Really cheap, for that matter.

Every system has an architecture. It may be elegant or it may be ugly. It may be described or it may be unknown. But it is.

Architecture is what determines the qualities that the system delivers. Is it fast? Is it secure? Can it be extended? Does it scale?

The qualities you strive for should determine the design of the architecture – not the other way around.

Continue reading
Continue reading: Perspective of Retrospective

Perspective of Retrospective

Scrum received some criticism today in Computer Sweden. The article featured an interview of Ken Schwaber and our guy Henrik Kniberg. Tobias Fors from Citerus was giving the comment that Scrum lacked support for retrospective. I am not sure if he was quoted correctly.

I am in the belief that Scrum has three roles, three artefacts and three meetings. Of the latter, there is one you should never skip.

Continue reading
Continue reading: Email eats your day

Email eats your day

Email has reached into the everyday life of almost every profession. While I have been using it since the 80’s, its usage has accelerated enough to make it an issue even to us who are used to it since long.

There is research that shows that we use a lot of time reading email. It may be waste.

Here is a suggested personal policy for handling you email.

Continue reading
Continue reading: Usability will cost you money, ignore or score

Usability will cost you money, ignore or score

Anna Forss writes under the subject "What do you test" some interesting and classical observations on how users cope with systems that has bad usability.

I will elaborate some on the comment I made at her blog.

As a product owner, you should be highly aware that usability will cost you money, regardless if you ignore it or not.

Continue reading
Continue reading: Wicket + Mockito = Love

Wicket + Mockito = Love

I’ve survived my first Rocket Day. RD are our seminars at Crisp where we talk for half a day on a subject of choice. Mine was Test Driven Development with Wicket and Mockito.

I chosed to do a live coding performance as I liked to do a very down-to-earth, practical seminar.

The slides are currently in swedish but I will translat them to english. Later. ūüėČ

However, most of you read swedish so I have published them here.

Continue reading
Continue reading: Manage versions of your database schema!

Manage versions of your database schema!

In software development where the system persists data in a relational database, it is important to keep track of changes to the versions of the schema.

The importance comes from that you always have several database instances to keep track of. There is the production database, the database for system tests, the database for acceptance test, the database for performance test, the database for development team and the database each developer has.

All these will be at different versions and aligned with different versions of the code.

Continue reading