Agile w biznesie 2012 – podsumowanieAgile in business 2012 – a review

On Dec, 6-7 I attended the second edition of a new agile conference that took place in Warsaw, Poland. This conference, in contrary to every other I have seen so far, is (in theory) not targeted at software developers. It is called “Agile in business”…

Dostępne po

angielsku

On Dec, 6-7 I attended the second edition of a new agile conference that took place in Warsaw, Poland. This conference, in contrary to every other I have seen so far, is (in theory) not targeted at software developers. It is called “Agile in business” and aims at helping people working in various business departments to understand and benefit from the agile movement. This short post presents my review of the event.

Venue & organization

The conference took place in the Businessman Institute, a conference centre located on the outskirts of Warsaw. The place itself was ok. There is just one problem about it – it’s far… and I mean far. It took me almost an hour to get there. I think quite a few people had some issues with getting taxis to get out from there. And, as some folks stayed in hotels close to the venue and some others – closer to the city centre, it was quite hard to arrange any kind of an evening party. On the other hand, the second day of the conference started with some snowing which allowed me to have some drifting fun on the parking lot ;). Regarding the organization – I missed three things: a large screen with twitter stream around the venue, a conference party for networking and some kind of speakers dinner to get to know each other better. Besides that – all went smoothly.

The talks Frankly, I missed hell lot of talks during this event. Due to traffic and other morning stuff I didnt make it for opening talks on both days. Others I missed on purpose - there was quite a lot going on in the hall.</h1> <h2>Day one Day one started with</h2> <p><strong>John Styffe</strong> introducing the Stoos network, a pretty new initiative in the lean agile world that is aiming at agility at organizational level. This definitely is something I am interested in, but on the other hand I have no regrets about missing the talk as the general opinion was that John didn’t present anything revolutionary. <img class="alignleft" style="margin-right: 15px;margin-bottom: 15px;margin-top: 7px" title="Lightbulb" src="http://farm3.staticflickr.com/2215/2400098202_959e2ea6a2_m.jpg" alt="" width="283" height="211" />I arrived just as <strong>Jurgen Apello</strong> started his key note. Again - I didn’t hear anything revolutionary, but this time only because I have had an opportunity to see Jurgen before. He is a great speaker and I highly recommend googling his talks and spending one or two hours watching, for those who haven’t done it already. Jurgen mentioned quite a lot of interesting stuff, just to name a few: Beyond Budgeting, Design Thinking, Lean Startup (I really believe that people working for established enterprises that want to start a new product line should start with reading this book). An idea that the most powerful force preventing agile adoption is management resistance will be eye-opening for some (I hope). Later, Jurgen presented an idea of innovation that is particularly appealing to me - innovation is not inventing new things, it is (very often) inventing new ways of using old things. I extremely liked the idea of “management is too important to be left to managers”, again something very close to the way we try to run TouK. I could write about this talk on and on, but the conference continued and... The Oracle talks started... <strong>Tomasz Warchała</strong> started talking on some Ora product... Guys sitting next to me are witnesses - I really did my best not to comment and to actually listen. It must have been some kind of a black hole that sucked all my energy :). I left and I spent almost two hours (missing next session and almost missing lunch :D) around, having interesting discussions and talking to people... Thanks to Oracle guys, I was not alone... After lunch two separate tracks had started. I focused on track one with a primary topic of customer-vendor contracts - I was to be speaking at the end of the day here, so I wanted to know which ideas I will be referring to and which fallacies I will be refuting. The track started with <strong>Piotr Wąsikowski</strong> sharing his thoughts on agile contracts. Retrospecting on his talk I really struggled to find an idea I couldn’t agree with and I think that’s mainly because I struggled to understand what Piotr’s main message was. I think Piotr tried to convince us that when signing large contract it is necessary (for a customer) to introduce some kind of success fee that must be related to business goals of the project. And I think that if you can (as a customer) get this kind of contract - good for you. But as a software vendor I think that, first - it will not allow for or prevent project agility (success fee has nothing to do with agility) and second - this really reminded me of the first bidding for the second line of tube in Warsaw - at first the business goal defined was to make it operational before the start of Eurocup (June 2012). None of the bidders considered it realistic so all of them added around 1 bln PLN extra in their offers for penalties (and 1 bln PLN equaled more or less 15-20% of the whole contract price). This bidding eventually got cancelled. <img class="alignright" style="margin-left: 15px;margin-bottom: 15px;margin-top: 7px" title="Quarrel" src="http://farm4.staticflickr.com/3306/3610880025_fe860e9f5e_m.jpg" alt="" width="150" height="121" />Anyway, quite a few people in the audience started a heated discussion with Piotr, so the organizers had to interrupt to let <strong>Radosław Nożykowski</strong> start his part of the show. Radosław is an attorney and he presented his take on contracts. And again, I find it hard to come up with a particular point that I disagree with. The thing I remembered was that Radosław was suggesting to use frame contracts instead of project contracts to allow a series of small subproject orders. This is a good advice, we use frame contracts all the time, but I really believe this is neither a solution for problems the audience was expecting to be addressed, nor in any way related to agile or waterfall projects at all. After that, guys from a competing (with TouK) company came on stage. <strong>Krzysztof Gradek</strong> and <strong>Mariusz Wieteska</strong> gave four or five case studies of Pentacomp’s software projects in different industries. They covered one or two ideas from my own talk, what saved me some time. I believe that their main message was “It is possible!” and I liked it. Their cases showed the key benefits of doing agile projects - short delivery cycles with focus on working software over documentation and customer collaboration over contract negotiation. There was one thing those three presentations had in common. Lots of text on slides. And I really believe this is a basic mistake many (or almost all) presenters do, even some experienced ones. My own first rule of presenting (stolen from Martin Fowler) - don’t do a slide with more than five words on it. Five. And if you really, really need bullets (in any form) then please please please - animate them so that they don’t appear all at once. Eventually, the time has come for me to stand on stage. Thanks to a friend from TouK my talk was recorded - after editing and syncing with slides it will be available somewhere online. And I will write a separate blogpost on the ideas I tried to cover in my talk as well as some more discussion with ideas presented by other speakers that I cannot agree with. The day finished with a smalltalk at the venue restaurant, an additional chance for networking used extensively. The only real issue about day one was lack of a/c during second part of the day... this, along with heated dispute made staying there until the end a little burdening.</p> <h2>Day two Day two started with some snow... When I got to the venue someone caught me in the hall, discussion quickly involved more people and I didn’t notice when time came to get to the restaurant for lunch.</h2> <p><img class="alignleft" style="margin-right: 15px;margin-bottom: 15px;margin-top: 7px" title="RIP" src="http://farm5.staticflickr.com/4112/5154087532_b746ee8458_n.jpg" alt="" width="100" height="151" />After that I went to see <strong>Andy Brandt</strong>. I had wanted to get introduced to Andy for some time and I was not disappointed. Andy is an experienced speaker and, in terms of the art of presenting, his presentation was well prepared. I agree with most of his points, but the one I cannot agree fully (even though I understand Andy’s point of view) was his main one. I agree that from a personal perspective of many people letting corporations die would benefit their personal life a lot. But in the same time I, as a software vendor, need these corporations as my customers and I want to help them the best I can (to become better organizations). Andy’s presentation reminded me of what our mutual friend Wiktor was saying during our journey to Agile Eastern Europe in Kiev few months back: “if you cannot change your company, change your company”. Good memories from this trip... Right after Andy <strong>Sebastian Christow</strong> from the Ministry of Economy talked about practices you could call agile used on a daily (or weekly) basis in an environment as far from agility as you could get. Nice talk showing that “you can” even if the organization doesn’t let you. <img class="alignright" style="margin-left: 15px;margin-bottom: 15px;margin-top: 7px" title="Friends" src="http://farm9.staticflickr.com/8163/7323643076_21c0394060_n.jpg" alt="" width="320" height="213" />Almost at the end the Allegro team came in. <strong>Michał Rączka</strong> and <strong>Jakub Szczepanik</strong> talked about introducing Scrum in their organization, and those guys rocked. Really a good presentation, with visible amount of practice put into it. Michał, as a PMO manager, focused more on project management aspects of Scrum adoption and Jakub gave a few stories on the team level. Three points I did remember: first one was a story of a project sponsored by a member of the board who after not showing up for two sprint planning/reviews due to lack of time was faced by Michał with a choice of either closing a project (as clearly some other project was more important) or sticking to the rules. A brave decision of a PMO manager but it is courage that is one of the founding values of Scrum, isn it? And the board member finally truly commited. Another point was a general report of Allegro’s Scrum adoption based on valuing entrepreneurship. Any decision made by Product Owner should be rooted in entrepreneurship and they actually managed to get out of project scoring, artificial metrics, etc hell. Last but not least, I noticed that those guys are talking all the time about customer satisfaction, user satisfaction and market satisfaction. Those are the things that drive project decisions, be it starting a project, closing a project or defining goals. Not a moment they talked about shareholders, stock value, reports, etc. And, even though I strongly believe that shareholder satisfaction is important, I believe it is an effect, not a driver for running a company. Finally the conference was getting to its end. It finished with a panel discussion swiftly moderated by Bartosz Górczyński. He started by asking a profound (hence the name of the conference) question: “how about having a discussion on agility in business”. It was an interesting hour, even though some people started leaving trying to catch trains, planes, etc. The general summary was that the speakers represented widely understood e-business. How to use agile and lean in more traditional industries like energy, finance or insurance is not obvious. I have my own opinion on that, but I will leave it for another post.

In the meantime Besides presentations there have been quite a lot of talking around the venue. And honestly, that was the better part of this conference. As a general advice to anyone participating in a similar event, having participated in quite a few conferences this year, I really recommend using this time well to meet new people, listen, share ideas, listen, get linked in and listen. I slightly regret that the organizers didn’t think about any kind of a party in the evening, but even without that I have more new people in my address book that I would like to get back to than I will ever have time to get back to.

Recap Line up wise, it wasn’t the best conference I have attended this year, but it wasn’t the worst either. The talk of Allegro guys, Michał and Jakub, filled me up with a lot of positive energy, they easily won my personal best talk award, with Jurgen and Andy following close by. All three represented a strong, european level. In terms of networking it was probably my best event this year. Met loads of people, got loads of ideas. I have two blogposts to write, at least a dozen of followup calls to make. Finally, I think this is a kind of conference the community really needs. There’s lot of agile events around that mostly focus either on the level of a team or the technical issues of creating software. This one is an attempt to address a different group of people, in my personal opinion, a group of people that could have more impact on the industry than the development community so far. And this is something I am really looking forward to…

Photos used:
Audi S5 - http://i.ytimg.com/vi/3MiBj6ETZq4/0.jpg
Strange Filament - http://www.flickr.com/photos/jdn/2400098202/
Washington State Cage Fighting Championships - http://www.flickr.com/photos/kellbailey/3610880025/
Rest in Peace - http://www.flickr.com/photos/mooglet/5154087532/
With a little help from your friend ... - http://www.flickr.com/photos/jinterwas/7323643076/

You May Also Like

Log4j and MDC in Grails

Log4j provides very useful feature: MDC - mapped diagnostic context. It can be used to store data in context of current thread. It may sound scary a bit but idea is simple.

My post is based on post http://burtbeckwith.com/blog/?p=521 from Burt Beckwith's excellent blog, it's definitely worth checking if you are interested in Grails.

Short background story...


Suppose we want to do logging our brand new shopping system and we want to have in each log customer's shopping basket number. And our system can be used at once by many users who can perform many transactions, actions like adding items and so on. How can we achieve that? Of course we can add basket number in every place where we do some logging but this task would be boring and error-prone. 

Instead of this we can use MDC to store variable with basket number in map. 

In fact MDC can be treated as map of custom values for current thread that can be used by logger. 


How to do that with Grails?


Using MDC with Grails is quite simple. All we need to do is to create our own custom filter which works for given urls and puts our data in MDC.

Filters in Grails are classes in directory grails-app/conf/* which names end with *Filters.groovy postfix. We can create this class manually or use Grails command: 
grails create-filters info.rnowak.App.Basket

In result class named BasketFilters will be created in grails-app/conf/info/rnowak/UberApp.

Initially filter class looks a little bit empty:
class BasketFilters {
def filters = {
all(controller:'*', action:'*') {
before = {

}
after = { Map model ->

}
afterView = { Exception e ->

}
}
}
}
All we need to do is fill empty closures, modify filter properties and put some data into MDC.

all is the general name of our filter, as class BasketFilters (plural!) can contain many various filters. You can name it whatever you want, for this post let assume it will be named basketFilter

Another thing is change of filter parameters. According to official documentation (link) we can customize our filter in many ways. You can specify controller to be filtered, its actions, filtered urls and so on. In our example you can stay with default option where filter is applied to every action of every controller. If you are interested in filtering only some urls, use uri parameter with expression describing desired urls to be filtered.

Three closures that are already defined in template have their function and they are started in these conditions:

  • before - as name says, it is executed before filtered action takes place
  • after - similarly, it is called after the action
  • afterView - called after rendering of the actions view
Ok, so now we know what are these mysterious methods and when they are called. But what can be done within them? In official Grails docs (link again) under section 7.6.3 there is a list of properties that are available to use in filter.

With that knowledge, we can proceed to implementing filter.

Putting something into MDC in filter


What we want to do is quite easy: we want to retrieve basket number from parameters and put it into MDC in our filter:
class BasketFilters {
def filters = {
basketFilter(controller:'*', action:'*') {
before = {
MDC.put("basketNumber", params.basketNumber ?: "")
}
after = { Map model ->
MDC.remove("basketNumber")
}
}
}
}

We retrieve basket number from Grails params map and then we put in map under specified key ("basketNumber" in this case), which will be later used in logger conversion pattern. It is important to remove custom value after processing of action to avoid leaks.

So we are putting something into MDC. But how make use of it in logs?


We can refer to custom data in MDC in conversion patter using syntax: %X{key}, where key is our key we used in filter to put data, like:
def conversionPattern = "%d{yyyy-MM-dd HH:mm:ss} %-5p %t [%c{1}] %X{basketNumber} - %m%n"


And that's it :) We've put custom data in log4j MDC and successfully used it in logs to display interesting values.