Published by Fabian on 26 Nov 2009

Management logic?

on one of my projects we introduced scrum… ok lets be honest, we are doing “scrum … but”. But we are now able to deliver much more than before, and the effort = money spend on each feature has decreased. However we track that we talk more than before. We do standups every day, and once a week a planning session (either backlog with the PO or sprint with the SM) and we are doing retrospectives.
But somehow the higher level management is unhappy. They tell us we spend to much time on “communication”. They are very much happy with our productivity though.
Might be that they have not realized that the increased communication time is related to the increased productivity?

Published by Fabian on 25 Nov 2009

devoxx is over

If you were following me on twitter, you might have noticed that i was in Antwerp Belgium, for the devoxx conference. Which is one of the best Java conferences in Europe and very affordable. As usual, it is pretty interesting that you can find out that famous gurus are normal people that you can talk to. Well they are geeks, so am I, that is why we can come along.

I learned a lot (as always), but interestingly it was mainly on three topics
* New Features of JDK 7, EE 6 and Spring 3
* New programming models like the famous map&reduce, big tables etc
* New JVM based languages: Clojure and Scala

I also attended the live recording for the javaposse.com episode, which was tremendously fun, especially because Atlassian sponsored a round of beer.
I met Kirk, who still reminds our good hours playing Guitar Hero at the meet the experts – performance, and had the pleasure to also meet Holly, who was unfortunately the only female speaker, and could introduce her also to our meet the experts concept.
I would like to have her there, because she really knows the internals of all the IBM JVMs.

I also had a length talk with Howard about Tapestry and various other stuff. because we all like open source and sharing ideas to make the world better, I talked with him about porting the web debug toolbar from symfony to Tapestry.
I think that will be an interesting experiment, also refreshing my Tapestry skills.

Great conference, lot to learn, very inspiring. Now back to daily work :-/

Published by Fabian on 10 Nov 2009

IT industry has changed

Bitkom, the major IT industry organization, said that the industry has changed.

Eating pizza together for lunch, having flex time and the big boss as friend. Those are only clichés. Those shops where people almost live in the company have disappeared.

When asking our my boss Mirko about this, while he was for lunch with a few colleagues and me at our local pizza supplier:

Pfft… they don’t have a clue

I think Mirko was right. So I could without regret spend the evening playing Chess and Guitar Hero in the office :-)

Published by Fabian on 01 Nov 2009

Why do people code like that? And how do you review it?

if (!""==paramString.trim() && paramString.trim().length() > 0 && paramString != null)

I do like to coach colleagues and totally stangers in writing good code. I believe there is also a lot I can learn.
My colleague Thomas tweeted:

unless(!disable_message_hiding) {...}

quad negation. !@#$@# (via @mhevery)

I think I could have done this myself some time ago. You have to learn to avoid negations so this doesn’t pile up like that. I can understand that somebody might have coded that.
But coming back to the line at the beginning of this post:

if (!""==paramString.trim() && paramString.trim().length() > 0 && paramString != null)

How can somebody write this code? Obviously not test driven, because test would have showed that this code is actually mostly nonfunctional.
Ok, when beginning with Java it can happen to you that you check String equality with == and not with String.equals(). Interestingly this does work quite often (but people don’t know why).
trim() shows already some more advanced understanding, because why else would you understand that you want to remove spaces from the string first.
But after having understood that we need to trim() before comparing to empty string, why the additional length check?
And why the hell the not null check? I suspect there was once a stacktrace in the log and this was supposed to fix this. Obviously in reality this method almost never gets null.

So: How could this code have been created? I think the author had no understanding of what he was doing there.

if (paramString.length() > 0)

is code Newbies would write. Its not bad. it is actually covering most of the normal cases. It is almost not worse than the previous example but much easier to read.

Such “empty String” checking is almost in every code. This is why commons-lang provided us with something neat:

if (! StringUtils.isEmpty(paramString))

How do you handle talking about bad code in code reviews? Pair programming?
I found it hard. So i decided to go the way Douglas Crockford goes when he talks about JSlint:

Warning!
JSLint will hurt your feelings.

I say: “that code makes no sense”, “that code is stupid”, “that can be done way shorter”, “code repetition – thats evil”.
It is like the standard measure for code reviews:

WTFs per Minute

WTFs per Minute

I usually try to avoid to call the author stupid. But I try also to be very clear on the code. Usually it helps showing how this can be done much better.
Can somebody recommend a paper or book on the topic?

Oh, in case I did review your code and say something nasty: I apologize. I want to make the code better. I want us all to produce better code. Better code saves us weekends!

Published by Fabian on 24 Oct 2009

symfony Bug Hunt Day coming

On november 14th there will be a symfony bug hunt day, organized by the benelux PHP user group.
I will be attending, and Fabien will also be there. The event was initiated by symfony community manager Stefan, so he is in as well.
Stefan also announced the event on the symfony blog.

The main goal of the day is to make symfony 1.3 ready for release. But I am happily accepting patches for symfony 1.2 as well. symfony 1.2.10 will be released at the end of November, and it will be the last release in the 1.2.x series. So also the last release I will be managing for now.

So if you are around Antwerp you are welcome.

Or perhaps 4 days later? Ill be at the devoxx Java conference as well :-) [no need to start php vs java flame wars]

Published by Fabian on 18 Oct 2009

Developers do not need SCRUM

During my daily job we are talking a lot about SCRUM. We need to talk a lot about it because we need to convince customers that SCRUM is a good idea. But I think we should never talk to developers about SCRUM. The reason for this is that SCRUM is a project management framework. It is made for people managing projects. And it is a great tool for that. But let us face it: developers do not care about project management. It does confuse them. They are developers not managers. SCRUM can be explained easily to them:

Listen lads & guys, you are tasked to work as a team on the companies product. We are doing it differently this time, instead of working on the boring DB all day, we are rotating tasks so everybody gets some joy. And because we just want to do the best for the product, management comes tomorrow to us and tells us what high prio tasks to work on. Deadline for those tasks is in three weeks, but I am sure we can make it. I also do not want some boring project status meetings. Just meet every morning at 9 and in 15 minutes let us say what we work on so we can help each other in case there is need. Ready? Lets do it! In case you need anything just come to me.

See? No word of SCRUM or any of its buzz-words. Developers are happy and they do not have to bother with management. Thats management stuff. Instead they can experiment with eXtreme Programming practices, because they are fun for developers.
And from managers point of view this is also ok. They have everything they need, and in case they need any technical expertise they will consult someone of the team as they did before.

What do you think, is the hype with SCRUM perhaps too much for devs?

« Prev - Next »