OpenUP

Thursday, April 3rd, 2008

Proponents of RUP, the golden methodology of 1998, is trying revamp it as OpenUP.

My first reaction is positive - browsing the Work Products I cannot find any required UML diagram. But after a while I get the feeling that they have fixed the implementation without getting the big picture.

It is still has four phases, delivering a feature complete project after the transition phase. No lean, incremental deliveries to production, but how could they? It explicitly defers deployment and operation leaving it to other parts of the organization.

But this is my favorite one:

OpenUP is minimal, complete, and extensible. It’s the minimum amount of process for a small team.

No, it is not minimal and it is not complete. It is less lipstick on the pig.

links for 2008-02-06

Wednesday, February 6th, 2008

Agile Sweden 2008

Sunday, December 30th, 2007

After reading Aslaks post on his upcoming conferences it is obvious to me that Stockholm is sorely lacking in the conference space.

Aslak mentions RubyFools in Copenhagen and Oslo, and Smidig 2008 in Oslo. RubyFools seems to be great, and I know that Smidig was awesome in 2007.

The only conference I can think of in Stockholm is JFokus, which I hear is very good but Java only. Looking to the whole of Sweden we have Øredev which I always has found too unfocused, and Expo-C which I cannot tell if they exist anymore.

I guess I have no right complaining if I am not prepared to do anything about it. So, after Smidig 2007 in Oslo, we have had talks within the Agile Sweden network about running a similar conference in Stockholm this spring. And while this is no announcement by any means, I am putting pressure on myself to actually contribute to make it happen by speaking openly about it.

Look out for Agile Sweden 2008 this spring.

Smidig2007

Thursday, November 29th, 2007

I came back last night after two great days of conferencing at Smidig2007 in Oslo, Norway. The mornings where all lightning talks and the afternoons where reserved for open space discussions. I gave a lighnting talk on the experiences we have had at WeMind trying to implement a lean enterprise, and I initiated two open space sessions, one on the GUI artists role in an agile process and the other on what makes different languages have so different communities and cultures. I will expand on those in later posts.

During the two days I had the pleasure of hooking up with Niclas Nilsson, Aslak Hellesøy and a bunch og other great people. It was very stimulating discussions and I am really motivated into doing a few new things with our own testing/speccing.

It was all in norwegian, so all you non-scandinavian speakers out there are really missing out on something - finally a reason to take that class in swedish or norwegian you always thought about.

Photos and a few deeper comments are due later, but for now: a big thanks to my norwegian friends for a great time.

links for 2007-10-18

Thursday, October 18th, 2007

links for 2007-10-10

Wednesday, October 10th, 2007

links for 2007-09-04

Tuesday, September 4th, 2007

links for 2007-08-19

Sunday, August 19th, 2007

Steve Jobs and Agile

Friday, June 22nd, 2007

I was listening to the podcast of the interview with Steve Jobs and Bill Gates, and this one thing struck me. When asked to predict the future, Bill Gates provided some insightful guesses, while Steve Jobs simply answered “I don’t know”. Twice. Steve’s explanation was that five years ago he would not have predicted what we have today, so therefore he does not trust himself to say what the next five years will look like.

I have previously spotted Apple to be early agilists, and Steve’s position here enforces my claim.

One important aspect of grasping agile in my mind is to accept the fact that you cannot predict the unpredictable. Instead of making detailed plans to support the illusion that you know what is going to happen, you say “I don’t know”, but then let that knowledge, that you actually do not know be the base for how you approach your work.

I have many times been faced with the quest of predicting the future, “how long will it take?”. As I have become more experienced I have learned to say “I don’t know”, of course at the same time offering an alternative iterative approach that will eventually provide knowledge for better estimation. Sometimes that is not a popular answer, and the question is forwarded to someone who will answer it. Of course, they do not know, but the illusion of control is very powerful, so their answer is better received.

I guess that many CEO are pressed to predict the future, by employees, share holders etc. And many times they probably provide an answer that they themselves do not believe in. It appears to me that Steve Jobs does not fall into that category.

Why the Term ‘Architect’ Doesn’t Cut It Anymore

Monday, April 30th, 2007

Some time ago, there was a lengthy debate on the Agile Sweden mailing list regarding the term “Architect”, and what it means. My position is that the term has become synonymous with the paper or PowerPoint architect, and I therefore try to stay clear of it. Other people haad other opinions.

Neal Ford has changed his title, and describes why in a brilliant way:

Neal Ford: From Architect to Wrangler: […] “The title of ‘Architect’ for software developers has gotten so diluted that its meaningless anymore. In fact, its almost pejorative because so many ‘paper’ architects give it a bad name. I’ve gotten ‘Oh, dude, I’m so sorry’ looks from people when I tell them I’m an architect, assuming that I’ve had a head injury or something and can’t do real development work anymore.
[…] It’s a shame that, because we have no real industry-wide certifications, the nominally most advanced title has been co-opted by so many people divorced from reality. I’ve had to defend decisions made for SOA initiatives in front of ‘Architectural Review Boards’ by people who last wrote code in COBOL. Can they really make good decisions about modern technology if they never touch it?

(Via Planet TW.)

Valtech Days in Dallas

Thursday, September 28th, 2006

I’ll be traveling to Dallas, Texas this weekend to speak about agile documentation at Valtech Days.

I am looking forward to attending other sessions, the rest of the conference is looking really interesting. If you are in the area and want attend the conference, I believe there are still a few seats available.

Cedric Still Doesn’t Get Agile

Friday, June 9th, 2006

Update: Martin Fowler pointed to . It seems Cedric did not give us the full picture. I have edited my post accordingly

After attending a less than stellar presentation on TDD, Cedric Beust confuses TDD with “Agile” and goes on to tell the world that agile is not good. Let’s have a look, shall we?

First of all, tests are not specs.  Not even close.  Somebody in the audience was quick to give a counter-example to this absurd claim by using a numeric example (’how do you specify an exponentiation function with a test?’)

I would not use unit tests for specs. Automatic acceptance tests on the other hand is really nice if you have a customer/product owner that will work with you. Now Cedric has previously stated that he does not really care for the labelling of tests (“However, when I write a test, I don’t really care if it’s a unit test or a functional test”) so that of course makes it harder for him.

And hey, testing an exponentiation function? How about providing test data with given parameters and answers? It would be a prime candidate for a FIT-test by the way.

Relying on tests as a design specification is lazy and unprofessional because you are only testing a very small portion of the solution space of your application (and of course, your tests can have bugs). 

Why would you only test “a very small portion of the solution space of your application”?

Tests also fall extremely short of having the expressiveness needed to articulate the subtle shades that a real specification need to cover to be effective.

This is my main gripe with Cedrics rant. He seems to be completely oblivious to the great emphasis on customer interaction that agile methods make, which promotes a two way dialogue.

A specification written in a document is a one way communication. Even in high school psychology I learned how much more information was conveyed in a spoken dialogue than in writing.

This claim is part of a broader and more disturbing general Agilist attitude that is usually articulated like ‘Your code is your spec’, along with some of its ridiculous corollaries such as ‘Documentation gets out of date, code never does’.

What is so ridiculous with the last statement? I have never been involved in a large scale project where the documentation did not get out date.

As for the code being your spec: when you have code and documentation, and the latter does not correctly describe the former, it is out of date, which will you trust? And what do you read to know what the real world looks like? Map, meet terrain.

I am currently getting acquainted with a brand new project that is not even very big, and while I understand Java fairly well, there is no doubt in my mind that for ten minutes I spend trying to understand how a certain part of the application works, a five-line comment would have given me this knowledge in ten seconds.

Sure, if it is up to date, which you will have to read the code to find out. My general rule: if you feel the need, comment on why the code does what it does if it is not obvious. If you feel the need to comment on what the code does, the code is not clear enough. Refactor until done.

Very often, Agilists simply forget that their job is to produce software that satisfies customers, not software that meets some golden software engineering scale.

Again, this is simply ridiculous - all agile methods try to get customers as close as possible to produce just what they want. Anyone even remotely knowledgeable with agile methods knows that.

Frankly, it takes all of ten minutes to explain Test-Driven Development to a developer who’s never heard of it:  ‘Write a test that fails and doesn’t compile.  Make it compile.  Then make it pass.  Repeat’.

I actually find it quite hard to get developers to grasp TDD; people find testing something that does not exist confusing. This is of course the basis for behavior driven development, but let’s just be happy for Cedric now.

Some might find it picky, but leaving out ‘refactor’ in the TDD loop tells me that you somehow has not grasped the concept completely. But then Cedric might throw in a comment instead :).

‘What should we test now?’ ‘How about:  if we pop an empty stack, we get an exception’ ‘Mmh, no, let’s not do that’

This is quite easy to test, so I do not see why he could not add it. Read Jeffs answer

Stack s = new Stack();
try {
  s.pop();
  fail("Should not get here");
}
catch (Exception e){
  //Ignore
}

But I am dead sure Cedric knows this , too bad the presenter did not.

To be honest, I am becoming quite suspicious of Agile practices for that reason:  all the presentations I have attended and books that I have read are always using toy implementations as examples.  Stack, List, Money, Bowling…  enough already!

Ignoring the fact that Cedric again confuses TDD and agile, he does have a point. Too many TDD presentations uses examples that are way too simplistic. They should point out the need of a modular architecture, and the fact that using TDD actually helps you get a clean, high cohesion - low coupling architecture.

And please, avoid smug and useless answers such as: ‘A lot of the classes I have to test are hard to isolate, do you have any advice regarding mocks?’ ‘Well, if you had started with TDD in the first place, you wouldn’t be having this problem today’.

It is certainly not a helpful answer, but it is true nonetheless.

Fundamentally, I am disturbed by the Agilists’ dishonesty when it comes to presenting their arguments.  They offer you all these nice ideas such as Test-Driven Development and Pair Programming but they never — ever — disclose the risks and the downsides.  To them, Agility is a silver bullet that is applicable in all cases with no compromises.

Just to give one example, “Practices of an Agile Programmer” clearly states that agile is not for everyone.

The truth is that these practices come at a price, and for a lot of organizations, the price gets high very quickly.  Agile development will never go far if its proponents keep ignoring these organizations and make condescending comments to its members.

Here Cedric is spot on. Yay!

I like Test-Driven Development.  I really do, and I’m fortunate enough to work on a project that lets me use TDD most of the time.  But the truth is:  at times, I don’t do TDD because implementing a feature quickly is more important than a fuzzy feeling.  And I’m also aware that TestNG is an open source project with less than five developers, all of them on the bleeding edge and aware of the latest advances in software engineering. And this is my main beef with Agilists:  I strongly suspect that most of them are spending their time on open source projects with like-minded fellows, but none of them have any experience what companies whose survival depends on shipping software have to go through to organize huge code bases growing thousands of lines of code every day under the combined push of hundreds of a developers, all with their personal background, education and bias.

My main beef with people opposing agility is that they basically say that too many of the developers out there are morons who cannot perform unless closely supervised and given clear instructions, and that there is no hope that that will ever change. It is a weird combination of pessimism and elitism

Now Cedric has a history of not liking agile methods, and that is fine with me. Whatever makes him happy. But his retoric in this case is like watching somebody who does not know karate perform a round house kick - lots of power and effort but misses the target completely.

Really good books

Thursday, December 1st, 2005

While at Lecando, I was quite proud of the library of computer books we assembled oveer the years.

These days as a consultant for Valtech, my employer does indeed have a library, but as I am almost never at the office it is not really accessible.

I have therefore started to buy the books that I find necessary for my daily digital life out of my own pocket so that I can have access to them whenever I want. These are the ones I have got so far:

While looking at the list I couldn’t help but noticing that I really like the Pragmatic books. I am equally surprised that I have so far not felt the urgent need for any of the O’Reilly titles

Agile GUI Development

Sunday, November 6th, 2005

These days when almost every body is doing the agile thing, there is still one part of the software development process that is missing out - the design of the GUI.

Too often some snazzy web design studio is brought in, thumb rings and all, to produce mockups in Photoshop. These are then given to the programmers to implement to the last pixel.

I am sorry, but this is the waterfall process straight up. And it does not help that you implement it page by page or even component by component - that is just dividing the predefined work into smaller bits.

If you want to be truly agile, bring the usability people into the development process. Have them work iteratively as well in accordance to the stories being implemented, making paper prototypes the first round and refining in the coming iterations.

Now I can hear all the usability people go “But we need to see the whole picture”. That argument is what everybody has had when resisting the agile change. Remember, project leaders could not do agile development - how could they steer the project if they would not know where the project was going?

I have full faith in the usability community that they also can make the switch.

Why Scrum is not enough

Sunday, October 16th, 2005

These days when I talk to people who claim to have adopted agile development, they say they use Scrum. While standup meetings and iterative development with regular demos are good, it is simply not enough. Chris Brown posted the strip below which sums it up pretty good:

Pair2

(Via Planet TW.)

My New Job At Valtech

Friday, July 29th, 2005

I am really excited about my new position as a consultant at Valtech. After selling software products for five years, I am ready to go back into consulting.

Valtech Stockholm is very strong Java shop and really into agile methodologies. This was the cause of my intitial interest with them. The thing that finally got me though was the interview process which really impressed me. I certainly was not sure that I would get through it myself, and I figured that if everybody working there had passed it, they must be a really exceptional group of people. That impression has intially been confirmed by spending a day and evening with them at a conference.

As my wife also got a really cool new job, this fall is looking very bright indeed.

Stockholm Syndrome and blameability

Friday, August 29th, 2003

Sometimes I get the feeling that a lot of people in programming suffer from some sort of developers Stockholm Syndrome. I mean, everybody whines about clueless management, we’re not allowed to do this and that, yadda-yadda whine-whine.

But then when presented with a option like Agile methodologies and XP which actually provides the power to decide about the things that should matter them as techies (because that is what XP is all about, you have the right to produce quality code given clear guidance under your own estimates and you go home by five etc), what happens? More whining.

It’s so comfy to blame clueless management for giving to little time, selecting a inferior platform and prioritize features over quality code. Many developers are simply not used to accepting full responsibility for their work. They’ve grown accustomed to the safetynet of blameability and need somebody else to take the responsibility if something should fail.

Kent Beck mentions courage as a essential factor for success. It is very true.