Sadek Drobi’s Blog

March 16, 2008

A new "Agile" pattern by Martin Fowler?

Filed under: Martin Fowler — Sadache @ 10:55 am

I had a chance personally to witness the application of a brand new agile pattern  at a conference I was attending. Well actually that took place in a panel that Martin was leading. The panel’s set was very interesting, panel members suggest a topic and then other members of the panel together with audience discuss and comment on that subject.

One of the things that was almost obvious to realize, is that there were not a lot of comments coming from audience. I guess that is almost normal as people are usually shy to start to talk. That is due to several reasons, like language constrains (not everyone is a native English speaker in an international conference), cameras (not everyone is born a star) and lot of other reasons.

There were a guy sitting not far from me. He was trying to wave his hand to Fowler so that he gets his chance to comment about a subject. Then you see Martin Fowler coming towards him to give him the mic, then suddenly stops and turns his back to him to search for someone else ( and there weren’t any!). He completely ignored him. I thought that might be just the fact that he didn’t actually see him. But then the same thing happens with another theme when the same guy tried to tell his opinion.

Hold on, this can’t be true. There should be something going wrong. Such a thing can’t happen twice! Am I imagining things?

Well it turned out that Fowler actually chooses what people to block, and completely ignore. I surprisingly found this out when Fowler heads by the end of the panel, and tells the guy "I am sorry, but I did this in purpose. I’ve noticed in other presentations that your questions are unclear, and I will continue doing this until I see a change"

My question is: How will you get the 1000 other people to talk if you got such strategy? Can I call this pattern "Fowler’s Shut up I can’t understand you agile pattern"? or "Martin Fowler: Shut up you seem to talk unclearly agile pattern"? Does it worth to hurt people in the first time? wasn’t it Martin himself that emphasized on communication ? So according to this pattern, can I shut up my developers when they talk unclearly? or my users (in this case the guy fits in a role of user of this suggested panel) that don’t know how to express precisely in formulas their needs? Should I actually fire a developer for his funny accent? or because his vision doesn’t fit with mine me the leader?

I am still very surprised by this irresponsible unrespectable behavior coming from a person I thought I trusted. That felt for me unprofessional, and  quite disappointing from a leader. I assure you that I am not making this up, there were other people that witnessed that! So does your position and your role allow you to exclude the existence of other people? To harm them and break them in this ugly way? well I don’t guess so!

I mean I wont go through the suggestion that person might be not fluent in English, or cannot express himself well or even got some kind of disablement. Isn’t all agile is about communication? discussion? acquiring and understanding? Does the fact that you are a hero give you the right to punish people this way? Are we at school here? Isn’t that exactly what dictators are about? Selective freedom of express?  

What I really think is anti-agile is this kind of guessing. Fowler tried to guess what the guy’s comment is about it, and it excluded it right away, twice? Don’t we say that in agile we should not try to guess?

I met and had long talks with a lot of programing pioneers. Erik Mejier, James Coplien, Bob Martin, Eric Evans, Kevlin Henney, Microsoft Architects, Java language designers. And I can not express enough how simple I find them to be. And discussion with them turns always to be very rich, for everyone. The thing is I don’t understand really what this arrogance that other "stars" have is for!

Dear Martin Fowler, I am largely disappointed by your unexpected behavior. And I hope you will admit that you were wrong, because I guess trust is a responsibility, and you don’t need to abuse the trust. You do not have the right to hurt people. And you do not have the right to exclude someone that maybe invested all what he got to get to participate to this agile environment. Please do not spoil it.

Things to know though:

I talked to the guy and I asked him curiously what were his comments about:

On Object Oriented Design: He wanted to point out the one of his favorite design books: Domain Driven Design, doesn’t talk about a particular paradigm; but rather choosing the best paradigm that fits in the problem. That a user model should map to the programming model and that is the only way to anticipate change. To map these two we need modeling tools that fit for that particular problem at hand. So one should then go search in the different paradigm modeling concepts, to find what fits best. And that domain analyses is explained very good in a paper and a book of James Coplien about Multi-Paradigm design, a paper that was written surprisingly in year 2000!

I do not personally see how can this be unclear!

One of the "unclear" comments that this guy had through earlier presentation was about that we should also try to teach business people how to be agile and to stop underestimating software and accept partial releases. And the other is that Usability is a huge concern, and it is not in the Agile manifesto, neither DDD is!

I do not find this unclear either, even he is in slight disagreement with today’s Agile "leaders". It seems to me logical because "Interface is the program" and it is not Agile ;)

August 7, 2007

DSLs bringing the end of single language development?

My second contribution in InfoQ. An interesting news post about DSLs, and language oriented programming.

http://www.infoq.com/news/2007/08/multi-lingual-programming

March 14, 2007

Refx :: Martin Fowler on MODIFIABILITY (QCon)

  • In agile development process, the Design task is still important, we just changed the way we do it to evolutionary design rather than un upfront one. Yet, In some cases we cant defer design decision till the end, and we do need to do them in an upfront style. 

Do the simplest thing that works ( Kent Beck )

  • Kent Beck commented on this that “The simplest thing is not the most stupid !”
  • Software SHOULD have a model, and cant be only tachtical all the time.
  • In a Lean Software Development we dont make decisions before we really have to, but we have to do them once! or otherwise we will be taken as not able to make decisions.
  • Try different choices on different teams, building different implementations, find that last minute where you can decide.
  • The key to modifiability is encapsulation and abstraction.
  • The key question is : Do i have to make the decision yet?
  • The Domain Model is made! The task is to reflect it well in the software.
  • Isolate Domain models from technical ones
  • Preparing a ground for Modifiability
  • Making a decision of when to make a decision
  • Discuss well with business people to reflect the model
  • Html is undoable because there is not a ig investement in doing it
  • Breaking encapsulation for a decision makes it a bad decision
  • redability of code
  • Unit testing to guarantee encapsulation
  • Software evolves anyway, maintainability IS an issue!
  • Encapsulation is about keeping secrets.
  • Pair progamming for teaching design, that will raise team’s productivity as a whole
  • Lessons can be learnt better through modifiability than through upfront teaching
  • Struggle for reversable architecture

February 25, 2007

Obsev :: Implementing Domain Friendly, Predicates-like Specifications with C# 3.0 Expression trees

According to Fowler and Evans, Specification ” is to separate the statement of how to match a candidate, from the candidate object that it is matched against. As well as its usefulness in selection, it is also valuable for validation and for building to order “  .

We might need to secify the state of an object for one of these three purposes.

  • To validate an object to see if it fullfills some need or ready for some purpose (Validation)
  • To select an object from a collection (Selection)
  • To specify the creation of a new object to fit some need (Building to order)  *Quote from DDD / Eric Evans*

(more…)

January 7, 2007

OBSEV:: Fluent Interface and c# 3.0 Extension Methods : The flexibility of dynamic typing with the powerfull AutoCompletion

Filed under: Architecture, C#, Martin Fowler — Sadache @ 11:12 pm

Fluent Interface  is a pattern discovered by Eric Evans and Martin Fowler.

one problem of this pattern is  ”a mismatch between what a fluent interface needs and our usual guidelines for API design. What works well for a regular API doesn’t work for a fluent one and vice versa .” (Fowler)

So using FluentInterface we start adding setters that have a return value, others that they should not belong to the class in the API terms, but they do in Dsl terms.

Martin suggested an Expression Builder, which is a class that contains these bizar methods, But that means more classes, moreover, returning an interface of that Expression Builder that only contains allowed methods will add even more files and interfaces!

then He stated “dynamic languages work better for DSLs since they tend to have (more…)

Powered by WordPress