Coding Dojo on Legacy Code

At CITCON Amsterdam last WE, Willem van den Ende and I facilitate a Coding Dojo session on both Mockito and Legacy Code.

Willem and I thought that we had missed some of our goals (especially demonstrating Mockito), but still many people at the closing session mentioned that they enjoyed it :-)

Coding Dojo with Legacy CodeWe tried to prepare a bit before diving into the session. However, in practice, it became a bit chaotic, as many participants tried to make their opinion heard. This was very different than when I do that in trainings or even at Valtech. I guess this is because there were quite a few people (~20) and most of them were rather experienced and strong-headed (I guess they wouldn’t be at such a conference otherwise!).

Coding Dojo with Legacy CodeWe managed to have a quick retrospective at the end. Here are some of the things we learnt:

  • We need to prepare the session better; half of the session was spent fixing an existing bug in the original application, instead of adding features. Also, Willem wanted to take advantage of Mockito, which was quickly forgotten as people concentrated on fixing the bug.
  • At first, do Safe Refactorings (the ones that can be done automatically by Eclipse and such tools), though you still need to be careful of what you are doing
  • It is OK to add code, not OK not remove code from the legacy application
  • Add collaborators using setters to facilitate testing
  • However, be careful: getters and setters can quickly get out of hand
  • Singletons are bad, not just because they make code hard to test, but also because they create secret coupling
  • Apparently, many (bad) coders want to write singletons and static methods (which are both frown upon in the context of testing), simply because they do not want to type the ‘new’ keyword
  • We could try to rotate the copilot on a longer basis (for example, every 10 mins, instead of every 5 mins for the coder)
  • I (Eric) got concerned that the Coding Dojo format prevents participants from thinking; facilitating the session sometimes seemed to be like herding cats
  • it was clear that many people was interested in working on legacy code
  • in the end, a Coding Dojo with an appropriately complex application seemed like a good way to learn about handling legacy code
  • I need to experiment a bit more with Coding Dojo for Legacy Code, but I feel that the format is rather good. Next year, we’ll do better!

    Posted in citcon, facilitation, tdd | 2 Comments

    Is Scrum Evil?

    This was a fascinating discussion facilitated by Jeffrey at CITCON Amsterdam. Much talking with him followed, so I think I finally understand why he introduced this topic, and why so many people seemed to dislike Scrum.

    This was a typical discussion where antis are much more vocal that pros. When Jeffrey asked who thought Scrum was evil, maybe 12 raised their hands. Only 3 or 4 (including me) thought that Scrum was NOT evil. The majority stayed silent.

    Most of the session was spent listing arguments pro and anti Scrum. You could say it was lively ;-)

    Is Scrum Evil? session“Scrum is evil because…” (I am not saying that I agree with all of them…)

  • when it fails, all the people involved think that all of agile is no good (it poisons the well for agile)
  • it values process over people
  • it is pyramid scheme (Scrum Trainers are supposed to be certified)
  • it causes some pointless standups (not all are pointless, though)
  • it is iterative waterfall
  • of the term ‘ScrumMaster
  • some people limit their view of agile to Scrum (they do not look into agile engineering practices)
  • some people feel it will solve all problems
  • it is sometimes used as a dogma (‘this is not Scrum!’)
  • Is Scrum Evil? session“Scrum is good because…” (I am generally OK with them)

  • it provides structure for engineers and product owners
  • it makes agile acceptable to managers
  • of the concept of a ‘Product Owner’
  • it makes self-organizing teams respectable
  • it makes people reponsible for their commitment
  • it is easy to adopt
  • it makes more people talk
  • it puts emphasis on delivery
  • it exposes problems earlier
  • it popularized short iterations
  • it is a foot in the door for agile
  • The first conclusion of the session to me was that the people against Scrum were mostly complaining about the fact that some projects were failing with Scrum.
    Further, I feel that this reveals that they are in a post-agile mindset, which could be more prevalent in the US/UK (maybe the Netherlands, too?) than in France where Agile still faces an uphill battle.
    Another thing is that, when you look at it, the people were really complaining about its success. After all, many of these arguments (pyramid scheme, some people feeling it solves all problems) were the very reasons Scrum was successful.

    Closing sessionAs Jeffrey pointed out during the session, it meant that, as per described in Crossing The Chasm, we are simply moving from the ‘enthusiasts’ stage to the ‘early adopters’. Many more people are now using Scrum, and its message is bound to be altered somewhat.
    Jeffrey further pointed that, since it seems that 80% of projects fail now that many are using Scrum, just as there were 80% of projects that failed before, it simply means that 80% of the population is just not very competent. It has little to do with the methodology. This is also what Alistair Cockburn meant when he mentioned that “Process is a second-order effect”.

    So, my undertanding is that Jeffrey’s goal is to change people and to use tools such as psychology to do so.

    I am more nuanced, maybe because I am living in a country were Agile is still not being widely accepted. After all, this is all a short-term vs. long-term thing. Having a manager doing Command & Control was very short term. Agile (and Scrum) is medium term: you are providing a tool for people to get better in the medium term, if they are competent enough. Changing people is much longer-term thing. It might take years, generations, or may not ever happen.

    For me, Scrum still seems to be providing those medium-term benefits, at least for now, in my environment. When it won’t be the case anymore, I might bash it like everyone else does.

    Update (07/10/08): changed title from “Scrum is evil!” to “Is Scrum Evil?”

    Posted in citcon, scrum | 20 Comments

    Back from CITCON Europe Amsterdam 2008

    Central train stationI came back this morning from the conference, my third time after Brussels in 07 and London in 06. It was great as usual. If you haven’t been to an Open Space conference, know that you are seriously missing out on something.

    There are quite a few things to take away

    • there is a surprisingly large number of CI tools, especially commercial; we had a demo of 7; CruiseControl by Paul Julius, build-o-matic by Ivan Moore, Hudson by yours truly, JetBrains TeamCity by Pavel Sher & Yegor Yarko, Rational BuildForge by Lieuwe, Zutubi Pulse2 by Jason Sankey, ThoughtWorks Cruise by Chris Read. Many others were not represented. I don’t quite understand why the market is so fragmented.
    • CI tools get less interest than before; there were still a few sessions on CI (CI Tools Showdown, Future of CI…) but fewer than usual. Remember that CI is still the main reason why people come to this conference. Instead, more discussions about Agile in general, and on automated functional testing in particular
    • Chris Read from ThoughtWorks wants to push for Open CI, an effort to standardize the storage format of CI tools, so that they can get integrated more easily with other (non-CI) tools, such as Trac, Mingle, etc.

    Coding Dojo with Legacy Code

    Some advanced features that seemed interesting:

    • personal builds (Pulse & TeamCity)
    • pipelines (Cruise); I think someone mentioned working on such things in the past, though I cannot find traces of it right now.
    • build templates (Pulse); you define things such as a JDK configuration, SVN connection in a template, and you optionally override them in actual jobs that inherit from them. Some (French) people came to me after the conference to explicitely request this on Hudson! I think Hudson is big in France.
    • build steps parallelized (BuildForge, Cruise, others?); in a complex job, you can mark some consecutive steps (say, integration tests and acceptance tests) and get them to run in parallel instead
    • real time display of the number of tests passing/failing (TeamCity)
    • find out exactly who broke the build (build-o-matic)

    Interestingly, most commercial tools have a free version (limited to 1 or 2 machines) and charge by the number of slaves (I didn’t realized that slaves were such in demand). Costs are around 10,000USD / year for 10 slaves.

    For more on the conference, check out:

    Bar at the Marriott HotelThe next CITCON will be in Minneapolis/St Paul on April 17 & 18. Then, Brisbane in June. And CITCON Europe 09 is still TBD.

    Oh, and Steve Freeman coined “Scrum is the new RUP”. I need a t-shirt with that.

    Updates (06/10/08): it is Lieuwe, not Louis, who demoed BuildForge. Cleared up that Cruise is the only one doing pipelines and that it supports //ized steps.

    Posted in citcon, hudson | 10 Comments

    Upcoming Talk: Introduction To Scrum

    I will be at Agile Tour Grenoble Thursday next week. My talk will be an Introduction to Scrum. Come if you are interested in getting the basics about Scrum.

    In the meantime, Agile Tour Besançon is just starting today! Then, we’ll have Muhlouse, Geneva, Grenoble, Lille, Toulouse, and finally Valence.

    Check out the official Agile Tour website (in French).

    Posted in agile, conferences | Comments Off on Upcoming Talk: Introduction To Scrum

    Next Talk: TDD Training

    I am giving a 3-day TDD training session at Valtech Training premises, from Monday, October 6th. I’ll introduce a Coding Dojo, like we did in the TDD training last week.

    Posted in tdd, valtech | Comments Off on Next Talk: TDD Training

    Valtech Days: presentations in English

    I have spent quite some time translating the titles of the presentations at Valtech Days for Jeff McKenna. I thought it would be a good idea to give you the information too!

     

    The conference aims at gathering 300 participants around 4 main themes. Many participants will come for only one of the theme, and (hopefully) will learn about others there too.
    The first day is made of talks by presenters from Valtech, partners, and competitors. It ends with a low-key cocktail where everyone is invited.
    The second day is mostly an Open Space Technology event, plus a room for the Best Presentations from the 1st day and a room for some of the main partners (IBM, Serena, and Talend).
    The 4 themes are:
    • Agile
    • Build Process Automation
    • Architecture (Java, .NET, Web, SOA)
    • e-Business
    The presentations are either 45 min- or 15 min-long.

    45 mins presentations

    EN indicates that the talk is in English.
    • Lean Software Development and Agile practices, continuous improvement for processes and involvement of individuals
    • “Refactor” your project manager
    • Test-Driven Requirements with Test-Driven Development : example-based explanations
    • Will concurrrency programming remain a game for experts?
    • Are you ready for production?
    • (EN) The right ergonomy: let’s improve visual aspect, while still maintaining the relation to the business
    • OSS Enterprise Service Bus
    • Cloud Computing, only for Startups?
    • AJAX : myths and reality
    • SysML : a new modeling langage? why? for whom?
    • Overview of JBoss SEAM
    • Strengths and weaknesses of GWT
    • Automate the quality reporting of source code
    • “Web 3.0” : the discussions, the promises, the innovations
    • Develop your E-Commerce with IBM WebSphere Commerce
    • Share information and collaborate efficiently in a software delivery team
    • Visual Studio Team System : how it fares after 2 years
    • Managing software deployment: Successfully passing the software with an optimized deployment of applications
    • Integrate Adobe Flex in Java, .Net or PHP architectures
    • Increase your E-Commerce convertion rates
    • Coding Dojo TDD in Ruby
    • Resource-oriented Architecture and New Generation Portals
    • Code usability, the key to a long-term agile
    • Retrospectives, the key to continuous improvement
    There are also 4 45-min-‘guest’ talks on the second day, including one for Serena, for which we don’t have titles or abstracts yet.

    15 mins presentations

    • JBI : an open standard to implement and deploy ESBs
    • What have you tested today?
    • Design of evolving web services
    • (EN) LinQ : reusability at a microscopic level for a better expressiness with less code
    • The essential Hudson
    • SCA, the future for components?
    • How to ease agility adoption by an organization?
    • Presentation of Spring Source DM Server
    • Silverlight
    • (EN) Delivering consistent customer interaction experience through channels integration
    Posted in conferences, valtech | Comments Off on Valtech Days: presentations in English

    jQuery to be integrated in ASP.NET

    My collegue Cédric Rup tells me that jQuery, an open-source Javascript library, is to be included in a future version of ASP.NET and Visual Studio. A surprising move, as jQuery was still a minor player only a few months ago — also, Microsoft would not have been expected to be so open-source-friendly (jQuery is available under both MIT and GPL licenses; given MS’s well-known hostility to GPL, it is clear that the MIT license is what made it palatable to them ).

    Another colleague, Matthieu Guyonnet-Duluc, adds that this is probably due to the influence of Scott Guthrie, architect of ASP.NET and the one behind ASP.NET MVC and the push to publishing the source code of the framework.

    Posted in microsoft | Comments Off on jQuery to be integrated in ASP.NET

    Improvised Coding Dojo

    Coding Dojo at AgileOpen 2007In the past three days, I have taught Test-Driven Development to a group of Java developers in Brittany. I thought it was a good idea to arrange an inpromptu Coding Dojo. That contained a moderate risk, as all dojos I knew of were attented by volunteers.

    It turned out very well. Though one or two participants managed to check their emails at some point during the session, most were paying attention at all times.

    A couple of things to remember for future dojos:

     

    • In the past, I have usually attented dojos were either everyone was in front of a computer (either coding or co-piloting), or a single pair was coding in front of the others. After watching Dave Nicolette and Ryan Hoegg facilitate a dojo where all got to code in front of the public at Agile 2008, I thought this was a good way to get participants to do their best, plus let others to read code with a watchful eye.
    • A participant mentionned that the exercice helped him realize that names for test methods were very important. Yay!
    • For first-timers, always start with a very, very simple exercice. We did the dictionary kata (given a collection of words, find all words in a String that are not in the collection). We managed to complete it satisfactorily in 2x 30 minutes.
    • We did our best to run through the code Test First, writing the tests with as little prior thinking as possible. That said, one participant suggested that pairs should talk a little before doing so, in order to get the pair to bond better. Sounds like a good suggestion, though it would probably require more time than what we had available.

     

    All in all, I am happy with the outcome. We should include it in our course curriculum.

    Posted in tdd, valtech | 3 Comments

    My contributions to Hudson got approved for GlassFish Award Program

    My Fit plugin for Hudson and the translation into French got approved for the GAP program. This means I am going to receive money from Sun! I am going to be rich, rich, rich!

    Fancy signageErr… not quite. Once the 30% tax is taken away by the US government (I probably qualify to get it reduced, but sorting out the paperwork is just too cumbersome), plus some possible tax by the French government, plus conversion into the I’m-feeling-high-these-days euros, I should end up with barely enough for a meal for two in Paris.

    Oh well, who I am to complain? I would probably have done the work without any money anyway.

    Update (09/04/09): fixed dead URL for the translation

    Posted in hudson, java | 1 Comment

    Drinks with Google Developer Day’s Speakers

    It was fun going going this evening to La Cantine to meet some of the speakers for Google Developer Day Paris.

    I only heard about the conference last week, much too late to register (they are apparently expecting 600 people?!).  So that was a rare chance to talk to some of them.

    • talked briefly to Didier Girard who I had already met through ConcordiAgile; he will of course be talking about Web Portals at Valtech Days in October
    • met Googler Chris Chabot; he is working on Shindig, a web engine for social network mini-apps that implements OpenSocial. Though he has a point when saying that there are many more people on social networks that are committed OpenSocial (he mentioned 400 million people, I think) as opposed to proprietary ones such as Facebook (100 millions), I think success is not in the bag yet. There just seems to be a lot of incentive for some networks to provide “advanced, but not quite compatible features”. A repeat of the Unix fiasco is still likely
    • also met Google Patrick Chanezon; I pushed CITCON to him (and to Chris)
    • ex-Valtech Bruno Guedes  was there too! I hadn”t seen him in ages; working with Didier Girard now
    • and of course Antonio, who just seem to be everywhere; we seem to have found an agreement for a date for a BarCamp with Paris JUG

    Finally, despite what many seemed to think, drinks were not offered by Google, but by PilotSystems, Plone specialists. Thanks, guys!

    Posted in conferences, gwt | Comments Off on Drinks with Google Developer Day’s Speakers

    You know you’re a sticky notes geek when…

    Your wife leaves a trail of sticky notes before when she leaves town for a few days. You know, just so that you wouldn’t forget a couple of shores.

    Post-its notes at home

     

    Posted in personal | Comments Off on You know you’re a sticky notes geek when…

    I am a jealous man

    Traffic on my site http://ericlefevre.net/

    I’d like to have many visitors. But compared to some blogs I follow, I still have work to do. Here are some information, according to Google Analytics.

    • Compared to Claude Aubry, who writes in French about Scrum, I now reach 1,500 unique visitors per month, while he has twice that many.
    • Julian Simpson’s Build Doctor on Continuous Integration, seems to average 100 visitors per day (it’s difficult to tell on the graph), I think I’m around 50 per day. Missed again!

    My wife does not like it when I compare myself to others. Me, I feel it is stimulating. This makes me want to write more.

    Other trivia:

    • my most popular post ever is the one about Gienah; strangely, it is also the most popular one in the past 3 months, although it is 18 months old
    • next, with almost the same number of visitors, a post about a classic error message in Maven and one about download stats for CC and Hudson, which has been referred to by quite a few sites, including dzone.com
    • Firefox is by far the most popular browser, with more than two thirds of visitors
    • Almost 80% of people use Windows (I was hoping Linux and MacOS would do better, but they got less than 10% each)
    • the vast majority of people find my pages through Google; other sources are dzone, Blog Valtech, FeedBurner (possibly because of syndication), NetVibes (I guess some people have added my blog to their home page) and The Build Doctor.
    • the two most popular region of origins are the USA and France (half of the traffic in total). I am rather happy with that, as I do write in English to be heard outside France.

    Anyway, my biggest satisfaction is that traffic has been consistently rising from the beginning. It does take time, but who wouldn’t do that for fame, money and women! ;-)

    One thing I have done recently is add FeedBurner analysis. It does not show much for the moment; I’ll guess I’ll get data next year. The other thing I did is syndicate my blog under Planet Valtech and CITCON Blogs. That will probably make a difference in the medium term.

    Posted in misc | 3 Comments

    Everything is vague to a degree you do not realise till you have tried to make it precise

    I am currently reviewing the first draft of Gojko Adzic‘s book Agile Acceptance Testing (I am still at the beginning, but I like it so far). He has a citation from Bertrand Arthur Russell’s Philosophy of Logical Atomism that is just too good not to pass around:

    Everything is vague to a degree you do not realise till you have tried to make it precise

    With this, I leave you to meditate. ;-)

    Posted in books, tdr, test | 1 Comment

    DSLs: first, make them easy to read

    Yesterday, I went to a presentation of Groovy at Paris JUG by Guillaume Laforge. One of his points was that Groovy is well-suited for designing DSLs – Domain Specific Languages. I think he said something along the lines of “with just a few commas here and there, you can get business-facing people to write the business rules themselves”.

    Well, I disagree with that. While I am sure that some of these business guys are interested enough to spend time learning the little quirks of the resulting DSL, I expect most not to bother with it. It would be totally better if, instead of starting with a language and its constraints, you could start with what the business guys would want, and then design the language. Which is of course no small feat, and might be feasible only with a lexer/parser-type tool.

    However, I think that Groovy is well adapted to what Martin Fowler recommends: first, make the DSL easy to read. From his recent post:

    “You get most of the benefit of business facing DSLs by doing enough to allow business people to be able to read the rules. They can then review them for accuracy, talk about them with the developers and draft changes for developers to implement properly. Getting DSLs to be business readable is far less effort than business writable, but yields most of the benefits.”

    The commas and other details are OK when reading a DSL, even for non-programmer people. This seems to be like a very pragmatic, valid approach.

    In truth, this was visible in one of the examples he gave involving a health organization, fortunately documented on Guillaume’s blog:. Here is how it looked like (excerpt from this post):

    regimen.take drug: CQ, qty: 2, at: 0.h
    

    Easy to write for a developer. Easy to read for a business person.

    Posted in valtech | 2 Comments

    GWT, Flex, JavaFX, Silverlight or JQuery? The jury is still out

    Like everyone else, we are interested in new frameworks to design richer web interfaces, usually known as RIA – Rich Internet Applications.

    Most people will agree that there are three big contenders, but they all have limitations:

    Too many choices

    Too many choices, by Orin Optiglot

    • GWT, though my favorite as a long time Java developer, is still limited in the quality of interfaces it produces; it requires the use of third-party libraries, but there are not that many of them, and some have been tainted by changes in their licenses. Also, Google does not seem to put that much energy into it; in many ways, it still seems to be a one-man operation. However, my guess is that it is adequate to design classic interfaces, similar to the one designed in AWT/Swing/SWT.
    • Flex might the strongest contender to many, as they have all Adobe’s might behind them (unlike GWT). But it is clearly a descendant of Flash and as such might appeal most directly to web developers (as opposed to classic Java developers). However, they did make a lot of efforts to get closer to the Java crowd. My feeling on this one is that people like me might be good at working out the server part, but should still leave the UI part to web developers.
    • JavaFX might seem like an obvious choice for a Java developer, but it is still too young (1.0 to be released this fall) and does not have that much mindshare yet; it also requires a plugin to be installed. That said, at least one of my colleagues is very enthusiastic about it.

    This list wouldn’t in fact be complete if I didn’t also mention:

    • SilverLight, which is really the answer from Microsoft to Flex. I don’t have a strong opinion on it, apart from the fact that it also requires a plugin on the browser, which is a serious disadvantage (just like with JavaFX). Many people upgrade to Flex while upgrading their Flash plugin, which they have to do anyway, now that there are so many Flash animations. Silverlight has no such immediate upgrade path.

    All of those frameworks are good at avoiding the complexity of writing JavaScript code, either by writing it for you (GWT) or by using a specific engine on the browser (Flex, Java FX, SilverLight), which has the drawback of requiring the installation of a plugin (which might not even exist for some systems).

    A relative of mine who is working at a small software house however points me to

    • JQuery. The assumption here is that it is vain to work around JavaScript; it aims at making it easier to code JS. So you still have a good chance to stumble on the many difficulties of writing JS. On the other hand, you do get to have a much better control of the final code. At any rate, JQuery does seem to be getting some buzz these days, including from my colleagues.

    So, which framework should we/you choose? I think neither has a clear lead so far. So you might want to apply a set-based strategy, as recommended in Lean Software Development. Meaning that, when in doubt, implement all plausible strategies, and decide later which one to standardize on, once the dust settles. In fact, it is very possible that several of them will co-exist, or even integrate with each others.

    If you do want to limit the set of strategies, my personal choice would be those three:

    • GWT
    • Flex
    • JQuery
    Posted in gwt, java, valtech | 9 Comments