Agile Eastern Europe - The 3rd Season is Over

A few days ago I've returned from AgileEE 2011 which as always welcomed me with a great atmosphere and left me with a new energy. I don't want to repeat all that was said during the conference, especially that most of the slides has already been posted at conference website and I think most of the talks were taped.

What I would like to do though is to give you some of my personal takeaways from the talks I've attended (yes it was a multi-track conference and it's always so hard to make a choice :-(). So here they are...

Alistair Cockburn keynote was a great reminder that all the techniques and processes should be adaptive as even with the same people and the same tasks things can go differently. Applying different strategies in different contexts is something I personally believe in. I also liked the "reflective improvement" technique (keep these, try these, problems).

What I liked in Gojko Adzic talk was his message that we tend to accept ridiculous requirements that are "packaged" nicely as well as we should not rush into solving the first problem Client gives us. Well maybe it's pretty obvious, but still - never too much reminding about those things.

Then I've attended lighting talks by Artem Serdyuk about hiring or rather kicking people out (really nice one), Dmytro Mindra about software craftsmanship (very personal and energizing), Dima Malenko about taking actions, Alex Lutsaevsky about some techniques helping to facilitate retrospectives and by J.B.Reinsberger about economics of software design. I basically loved both lighting talk blocks during AgileEE, but the single talk that I personally find best was the one by Alex giving really nice hints about retrospectives (I just love practical stuff).

Piotr Żołnierek showed the way they took at the company to improve the collaboration between development and operations team. This is also the kind of talks I like as it's based on real experience, mistakes made and lessons learned from those mistakes. There should be more talks like this on every agile conference.

Henrik Berglund put some light on the responsibility model by Christopher Avery and Bill McCarley. What I find the most important in his talk was that the model itself can be applied only to ourselves, thus  we need to work on ourselves to actually take more responsibility. I only missed some final conclusion related to the topic of his talks which was "Is Scrum Incompatible with Your Brain?".

Nathaniel Cadwell left me with three keywords (passion, perfectionism to be avoided and purpose) and also with some hunger for more lessons we can actually learn from the history or Art.

Elisabeth Hendrickson reminded me that actual needs, intentions and implementation do not overlap perfectly that is why we need to verify that as often as possible. I liked the "speculation buildup" name in this context. Another valuable thought was that the spirit of the story is as important as the letter, but is often being forgotten.

I really waited to hear Jurgen Appelo telling the story behind influencing ALE network to self organize around ALE2011 conference in Berlin (which I could not attend this year). Apart from the, as usual, interesting models behind the complex social systems that Jurgen likes to talk about, he just left me inspired that morning.

Danko Kovatch was talking about the intrinsic motivation (about which I already heard quite a few times), but still he left me with two important thoughts. The first one was that we are born motivated and should rather focus on how to stop demotivating people. The second one was that most managers are usually all willing to support their teams path to the mastery, but they just tend to forget to allocate some time for it ;-)

Lasse Koskela made me think about the different patterns of version control usage. What I liked the most was the fact that he put it in the context of agile principles expressed in the Manifesto.

Felix Russel did a good job reminding about the "definition of ready" and the time each product owner should spend on preparing stories before the team can actually swarm around them. It was one of the lighting talks during the second day, that I attended. 

Rest of the time I spent listening to some stories at a small guerrilla open space session about "Beginner's Mind" set by Vasco Duarte by one of the flip-charts in the hallway. Vasco shared with me also some helpful ideas about the ALE network and how can it work with the local agile community that I will perhaps find some time and energy to reactivate in Wroclaw (who knows...).

Last but not least J.B.Rainsberger brought our attention to the idea that it not about what Agile is, but where and why it started. This made a perfect closing with a big XP (Extreme Programming) on the screen. At the end it can't work without strong development practices.

The 3rd season of AgileEE ends for me. Many thanks to Alexey, Nataliya and other people who made that happen!

Filed under  //  agile   agileee   conferences  
Posted

AgileByExample 2011 a Look Behind the Scene

Last week we've spent a few days in Warsaw, Poland at AgileByExample 2011 conference.

Agile_by_example_logo

But this time we were not just attending the event. Agilers became one of the co-organizers and with our friends from SoftwareMill (the main organizer) we were involved in the whole process of making this conference happen.

This time I'm not going to review the conference itself. You will find some of the afterthoughts written by attendees here:
Organizing the event gave us a lot of new experience and a way more detailed view into the whole conference lifecycle.

We've been working on AgileByExample starting from May 2011 and during that time we could get some more insight into:
  • talking to the speakers
  • talking to the sponsors
  • arranging venue, hotel, etc.
  • coordinating call for papers, registration process, marketing, printing, logistics and more
  • building a conference schedule (including lots of hard decisions whom to choose and whom to reject)
  • closing and retrospecting the event (as it does not end when the last attendee leaves the venue)

We've done some experiments with the conference format which was built around thematic blocks containing 2-3 talks closed with a single Q&A session where we were inviting all of the speakers.

This gave our attendees a chance to get answer to a question from more speakers, which  often provided them with different perspectives to the same problem.

We're personally quite happy with the set of talks and speakers we've manage to attract which was confirmed in the feedback forms collected at the end of the conference (more at the AgileByExample feedback summary).

Becoming the organizer of the conference gave us lots of ideas for improving Conference Radar. Stay tuned! First of them are coming soon.

Filed under  //  agile   agilebyexample   conferences   confradar  
Posted

Rewriting Conference Radar from JBoss Seam into Grails - Part I

When you hear "rewriting" in the software world, your first thought is "those guys are going to shoot themselves in the foot". In most cases you are right but still we've decided to rewrite the entire application from JBoss Seam to Grails. Were we nuts? Well I believe not and would like to describe here the rationale behind that decision. You will learn why it's part I at the end of this post :-)

First things first or... The context.

Conference Radar has been created initially using the following stack:
  • JBoss Seam 2.2.0 GA
  • JSF 1.2 (Sun RI)
  • RichFaces 3.3
We've chosen Seam because we've been developing our other applications using Seam since it was 1.0 version and wanted to deliver the first version of the site fast without focusing on learning any new technology. The only difference to the previous projects was that we've decided to write as much code as possible in Groovy.

Why Groovy? Because we were giving it a try for unit testing Java applications for some time already. We like the language and the fact that it's way more expressive than Java while still staying very close to Java itself. It resulted in shorter and more readable Seam components.

So why rewrite?

You simply do not rewrite an existing system because it stops you for a long time. You will most likely introduce the same bugs once again. There will be no ROI or you will even loose money without winning anything in return. This is all true when you just want to rewrite the same code just because you don't like the way it looks after some months of writing. Yes, all developers suffer from that disease :-)

Rewriting is the worst idea ever... unless it's not. We faced a different problem. We've decided to escape a dead framework.

When you just struggle with the same problems again and again and at the same time the technology you're using starts to die, you need to take action. Our was to move to Grails. At the same time we needed a real life proof of concept with new framework and Conference Radar seemed a perfect material for that.
  • It was still small enough to rewrite within 1 month period (after all it took us almost 3 months).
  • It had big enough set of technical issues to solve (security, ajax, caching).
  • We had a stress test suite in JMeter that we could use to compare both applications performance.
Dying framework? What's wrong with Seam?

JBoss guys will probably disagree with it, but let's face it - when we were using Seam 2.2.0.GA version from July 30th, 2009 and the 2.2.1.Final came out at the end of January 2011 (bringing almost nothing interesting) and at the same time Seam 3.0 was still in beta, then for me the framework died.

Our choice was to migrate to Seam 3.0 which basically tries to mirror the same functionality which 2.2.x branch offered 2 years before or to escape it for good. Anyway would you migrate after reading about migration hell?

Oh yes did I mention that RichFaces 3.3 died too? Yes... ReachFaces team focused on v4.0, but there was no path for Seam 2.2.x branch to migrate either. Problems like this do not help you create a production ready software.

This was basically a driving force for a rewrite decision. But apart from the above Seam/JSF1.2/RichFaces set has many different problems, just to mention:
  • JSF view state (with it's famous ViewExpiredException).
  • JSF has a way to complicated lifecycle for most web-based needs.
  • Seam uses session too heavily which kills your resources.
  • JSF 1.2 does not play well with AJAX, RichFaces' A4J does not help you much with that.
  • RichFaces 3.x locks you with Prototype which cannot be changed to jQuery.
  • It's even hard to upgrade Prototype in RichFaces.
  • Seam has too many concepts for different part of the system (resources, documents, e-mails) and usually additional modules (like RSS feeds or PDF generation) cover only the small subset of the underlying library and you need to write it yourself anyway.
Why Grails then?

This is pretty obvious choice when you consider that:
  • You have a team of experienced Java developers.
  • You've already started migrating towards Groovy language.
  • Grails uses a loot of libraries under the hood that your team already knows (Hiberante, Spring, Quarz, etc.)
Is Grails the best web framework in the world? Well, I don't know. I would need to try more of them. But if you decide to switch technology and at the same time you cannot let yourself to disappear for a long period of time, then you need to choose a compromise between some radical shift and a smaller revolution. Grails simply looked like a good choice in our context.

So what did we actually get in return?

For us Grails provides:
  • Clear framework concept following Convention over Configuration design.
  • Great testabilty. Mocking support in unit tests is great. It's very easy to run integration tests when needed, but what's even more important it's way easier to cover more code with unit tests (testing controllers, tags, services and domain model). The tools we love (Spock, Groovy) are the first class citizens here.
  • Freedom in view. Easy to use jQuery, easy to build advanced AJAX solutions. After all GSP can be plain HTML5 + JS powered some helpful g:tags
  • More advanced URL rewriting than in Seam
  • No extra concepts (like Resources). It's all done in Controllers.
  • Working easily with JSON and XML. It's way easier to create and REST API with simple controllers. Testing JAX-RS services in Seam is a nightmare.
  • Less XML, more DSL driven configuration which is both intuitive and elegant.
  • Easy separation of development, stage, test, production environments (and their configurations).
  • Upgrading Grails and its dependency management is straightforward.
  • Better scalabilty. This may sound surprising, but yes, Grails version turned out to be faster in our tests (of course after some tuning) and consumed a way less session and application context resources.
Not all was so easy and painless.

You have probably noticed that I mentioned the rewrite took us actually about 3 months (instead of expected 1 month). That's because not all went so smoothly as we expected.

When you're rewriting the application using a different stack you need to try to do it a new way. This means that some parts need to be rewritten differently to follow a new stack's concepts. With Conference Radar we needed to:
  • Learn framework conventions
  • Switch from Seam's component oriented architecture into Controller-Service tandems and more MVC oriented architecture. It's still possible to build more Seam-like components thanks to g:include but it's another story.
  • Choose a solution for security (which is available in Seam out of the box)
  • Choose a solution for caching (which is available in Seam through s:cache tag)
  • Choose a solution for working with Lucene and full-text searching (which in Seam is very well solved through Hibernate Search integration)
  • Find a solution for handling many small issues that Seam deals with through its s:tags
  • Find out how to achieve the RichFaces rerender behavior allowing you to upgrade multiple page fragments as a result of a single AJAX request.
  • Find out how to tune the application to achieve the same performance.
  • Choose from a huge set of plugins which have very different quality. 
Grails is very open to new plugins which is both good and bad, because you will find many plugins solving the same problem (none of them even reaching its 1.0 version) and the only way to choose between them is to actually look at their code.

Spring SecuritySpringcache and Searchable plugins the their job very well as recommended solutions for security, caching and full-text searching in Grails. Spring Cache brings some new concepts to learn for a Seam's s:cache user, but in the end they provide a much better solution for caching.

Seam's biggest advantage lays in its s:tags. They seem to be just small shortcuts, but in fact they solve many common problems of a web developer and make a perfect pair with Facelets. Some of them don't have any match in g:tags and you need to do it yourself or use different concepts (like Commands in Grails when you have s:validateEquality in Seam).

This leads me the answer why I used "Part I" in the title of this post. It's because during that rewrite we've learned some lessons which I will try to describe in the next post (apart from the above rationale for such a crazy move as rewriting the system from scratch). I'd also love to learn better solutions to those problems from your comments, so stay tuned...

Filed under  //  confradar   grails   technology  
Posted

Why Should You Be Looking at Conference in Central and Eastern Europe?

I've counted lately how many conferences I've visited in the last 5 years and it turned out to be more than fifteen. Ok, I know there are conference geeks out there that will tell me that it's not so impressive (just 3 conferences / year), but I think it's a decent number to have opinion about them already.

First of all they were all either programming or agile related. All of them were held in Poland except the two editions of an agile conference in Kiev/Ukraine. They were also conferencea which I've been visiting from their 1st edition which allowed me to watch them evolve. I've paid all the tickets myself. We (Agilers) also sponsored a few of them along the way. 

From the very beginning one thing was very important and interesting to watch. How is it possible to organize the conference with great speakers coming from all over the Europe or USA and at the same time to offer tickets 10x cheaper than at the conferences in the Western Europe?

Yes. I've put the question in the title and here's the answer... You should be looking at the conferences in the Central and Eastern Europe because they are made by great people, provide high quality content and a great fun. All of that for a really fair price that you will hardly find in Western Europe.

Just to name a few of them:
  • GeeCON  (http://www.geecon.org) - a 2-day Java conference which I could attend for 100 EUR and already visited 3 editions
  • Agile Eastern Europe in Kiev (http://www.agileee.org) with pricing around 200 EUR for 2 great days in the capital of Ukraine (I've been to 2 editions and coming back to the 3rd one this September)
  • Agile Central Europe in Krakow (http://www.agilece.com) - also 100 EUR for a 2 day event (I've been to 2 editions)
Finally Confitura (formerly Javarsovia, http://confitura.pl) which deserves totally separate mention here because it's totally free to attend. While being a single day 3-4 tracks conference it attracted around 600 attendees last year and over 800 of them this year.

I know about many others events in our region, like Agile Prague (http://agileprague.com) or WebExpo (http://webexpo.cz) which also do not exceed the price of 200 EUR / ticket. There are so many conferences in Europe these days that we all need to choose wisely which ones to visit (it's really bad we can't visit them all). So next time when you will be planning your calendar, take a look at Central and Eastern Europe. Maybe you can kill two birds with one stone, have a great time at a high quality conference ans spend the rest of your money on a great trip to a place you didn't even plan to visit before.

And if you calendar is still free for September 2011 you can start from visiting Warsaw and a promising 1st edition of AgileByExample conference (http://www.agilebyexample.com)!

Filed under  //  acecon   agilebyexample   agileee   conferences   opinion  
Posted

ACE 2011 - Some Takeaways and Afterthoughts

So here we are... ACE 2011 - so far the only serious agile event in Poland has ended. This was a second edition and to sum it up in once sentence it's getting better each year. What I liked in the most presentations is that almost each of them left me with at least one thought worth thinking about for a while. So here they are... my afterthoughts...

Corey Haines was asking us to question the "context" as an excuse not to follow a particular agile practice. We need to have a good reason or a good replacement for any of them. He mentioned also the false assumptions of Scrum which are that people will self-organize and be responsible. Nothing happens on its own. Very good points to remember.

Petra Skapa reminded me that probably none large agile transformation has ended yet (at least I've never heard of any), so nobody has a good solution for that yet. But what is more important is that the first outcome of such transformation should be a change into a learning organization. Learning has been mentions a few more times during ACE.

Piotr Żołnierek showed an example of a learning organization, his own company, which took a holistic approach to seek for a balance between development and operations departments. Are they there yet? Probably not, but at least they have interesting experiments already behind them and they are heading in the right direction. Being pragmatic in applying lean principles in different areas of their company would be the most important message of this talk.

Mateusz Srebrny reminded the power of visual management techniques and gave some reasons to actually use it. Out of them I liked the most the one about relation between visual management and micromanagement, which decreases when all the manager can do is to micromanage perfectly visible state of his project on the wall, while the team members simply do their job ;-)

Paweł Brodziński showed the reasons why Kanban may help identify (I'm sorry I should say help "emerge") problems that need to be solved and then solve it one by one. The concepts maybe were not so new to me, but he did it in a very original way by actually running his 30 min presentation as a mini Kanban system. I'm sure a huge part of the audience has been infected by the Kanban ideas :-) making Pawel very efficient Kanban evangelist (even if he says he is never evangelizing anything).

Thomas Sundberg reminded me some sources of technical debt like false assumptions (which I probably tend to fall in the most of the time). But anyway I find his lighting talk at the end of the day a way more inspiring! So were is your passion?

Marcin Floryan brought agile to the rescue :-) but I was to wait until his very last slides to make my day. Traveling through the land of complexity to the flower of values - this summarizes Marcin's talk (at least for me). You ought to watch the video when it's out. I've seen Marcin talking at the conference for the first time, but I'm sure he did this before as it was a really good talk. Anyway the most important thing to remember from the last two slides is that even if we make a revolutionary move to improve something in our process we may find ourselves in the temporarily worse position. This new position however may give us a better start to achieving much better results.

Nick Oostvogels showed a great example of a Kanban introduction in the organization. In fact it was a governmental institution. But it was not the point for me. What I found the best in this presentation was the way Nick presented the process of finding the right solution through the series of retrospectives. Each subsequent move to shape the process was based on some outcome from the previous retrospective. It was driven by the very logical reasoning instead of some wishful plan. So the approach was what I will remember not the actual case.

Elad Amit showed something similar to Nick's presentation, but he was talking about finding best fitting practices based on, again, system thinking and deeper analysis. And again this is the approach I like the most. You should see Elad's diagrams for root cause analysis.

Paweł Lipiński showed three agile metaphors taken from his home/family life. I will remember the Montessori Kindergarten one the most. But again it's not about the metaphors but the idea that we're actually not inventing anything dramatically new here. Lots of agile and lean concepts hast been functioning for years in other areas of our life. We just need to be more careful and open minded to notice them.

I already seen Andrea Provaglio's talk before, but this is that kind of presentation that you should watch at least once a year :-) There is a lot of buzz around self-organization, while there is so little about what actually may block that process. Fortunately Andrea keeps reminding us those reasons, but what is more important also gives some solutions and directions to follow. So beware division, always make sure to be in the right position and let the energy flow.

Monika Konieczny as always was convincing us about the power of games in solving team's communication problems. This is the ares that I have not so much experience with, but it definitely is interesting. Gamification will be the word of this talk for me as the most interesting concept.

Paweł Wrzeszcz talked about being a remote worker. This was interesting talk especially on the agile event where all people rather tend to talk about collocation. I liked the message coming out from Pawel's talk. Working remotely may have advantages, you just need to know how to do it and there are some tricks to do it right.

Maria Diaconu and Alex Bolboaca talked about delivering every 2 days and while I already heard stories about such processes, they left me with a question to think about... The community of users being part of such a delivery process and this is one of the goals for me - to build one for our products. I also attended open space session by Maria about sustainable pace of learning which also is something to always have in mind.

Barry O'Reilly stated something opposite to Corey - it's all about the context. However what I liked the most (as well as lot of people from the audience I think) was once sentence: "Don't waste your failures". We do fail all the time. The point is not to waste the knowledge coming out of if. I should turn more my failures into deliberate experiments from now on.

Marc Löffler used a watermelon (ok it was a regular melon at ACE, but I read his blog post about it before) as a quite good metaphor for reporting and transparency. Definitely one to remember.

Finally Jurgen Appelo left me thinking about 7 duties of a professional. Probably I need to work on directing and connecting myself :-) Ok maybe a bit on empowering myself too.

So that's it. I have lots to think about before ACE 2012. I left Krakow mentally exhausted and inspired, which is probably a sign of a good event! Thank you Paul for making it happen!

Filed under  //  acecon   agile   conferences   lean  
Posted

Finding Conferences Should Be Simple

Confradar_search

Conference Radar is about finding conferences easily, so let's take a look at searching and filtering options.

Filtering
First of all we have multiple ways to filter the conferences, like:
  • by tag (using the tag cloud)
  • by country (countries next to all search results as well as conference profile pages are linked)
  • by region (want to find all conferences in Europe - no problem)
Here are some examples:

Software conferences:

Conference in United Kingdom:

Software conferences in United Kingdom:

All conferences in Europe:

Software conferences in Europe:

Full Text Search
Filtering described above is only one of the possibilities. There is also a full text search. We're doing some smart indexing though.
  • you can user AND, OR operators (uppercase is important)
  • you can use * wildcard
  • conference dates are indexed in the format of YYYY-MM-DD
So how to use it? Here are some examples:

Lean or UX conferences:

Conferences in May 2011:

Conferences in May 2011 taking place in Denmark:

Have any suggestions? Post them at http://confradar.uservoice.com

Filed under  //  confradar   howto   search  
Posted

Conference Radar Alerting About New Events

Alert_settings

The next step is finished! Conference Radar is ready to start sending first e-mail alerts about events that may interest you. All you need to do is to defined the set of tags that you would like to observe.

Of course our plans are bigger than that and we will be adding more filters soon. You may expect:
  • countries selection
  • alerts about existing events that will start soon (so that you won't miss any early bird registration)
You can now also easily find other conferences taking place in the selected country (country links are clickable now). If you were looking for a password reset function, now it's there on the logon screen.

Speaker profile pages will now contain also the conferences that the speaker is only attending. If you want to meet with your favorite speaker, then you will know where and maybe there will be an opportunity to talk in the open space area.

As always we encourage you to post the ideas that would make Conference Radar better for you at http://confradar.uservoice.com 

Filed under  //  alerts   confradar   news  
Posted

See Where You Can Meet Your Favorite Conference Speaker

Personal_info_at_conference_ra

Here we go again... With another small step we bring speaker profiles to Conference Radar.

You can now click on the speaker avatar and land on his public profile page. There you will be able to find all conferences where your favorite speaker will be having his talks this year.

Speakers can fill some additional info about themselves in the My Account section. For the start it will be:
  • a short bio
  • personal website or blog address
  • twitter account so that others can follow
Of course it's only the beginning... Expect lot more in the near future. But for now, speakers... show up and tell us where we can hear what you've got to say!

Filed under  //  confradar   news   speakers  
Posted

Conference Radar's Hot Event Periods Calendar

Hot_periods_calendar

So we've launched in January and we're now in v0.3. Now you will land on your personal page with conference suggestions and more after you log in.

With v0.3 we've introduced one new cool feature - "Hot Periods" calendar. It shows the full year view with all periods where conferences at ConfRadar take place.

How can it be used? First of all organizers will find it a place where they can quickly check what is happening at the same time when they plan their own events.
On the other hand everybody can check what is going on when. Plan you own calendars and book your time not to miss any interesting events.

This is just the beginning (well that's why we call it v0.3), but we have big plans which we will make reality in an iterative way. So what can you expect in the near future?
  • Speaker profile pages (see where you can hear the talks of your favorite book authors, bloggers, gurus)
  • Attendants profile pages (see where your friends are going this year)
  • Notifications and alerts (so that ConfRadar can do all the job for you and let you know what's happening at the right moment)
  • Some cool tools for conference organizers and speakers (stay tuned for more details...)
But in the meantime, go and find yourself some great conferences to attend or to speak at and let others know (RSVP, retweet it, share it on Facebook).
We won't make it happen without your help.

If you have any suggestions for us, don't wait and drop them at http://confradar.uservoice.com

Filed under  //  confradar   news  
Posted

How Does Geolocation in ConfRadar Work?

Confradar_geolocation_sneakpre

We're about to release the first working version of ConfRadar pretty soon and the first thing your browser will ask you after you enter the new confradar.com will be if you want to share your location data with us.
Scared? Well you shouldn't be as we try to use it to provide you with better search results and conferences that are actually happening near you. 

But after we used it for the first time and saw its quite good accuracy we were sca.... I mean we were impressed :-) and started to wonder how it actually works. So here it is... Know what you're dealing with.

W3C organization provides a specification for geolocation API (see the links below). Each browser can implement it so that the website developers can use it to easily get the latitude and longitude of the client.
Each browser (well guess which one does not provide it yet ;-)) will ask you for the permission to find and share your location when the site requests such information.

Chrome and Firefox use Google's Geolocation Service to find it. Safari uses Skyhook. As for the Google's Service the browser will send:
  • your IP address
  • nearest wireless access point MAC address or nearest cell tower ID (if you're using a mobile phone)
  • random identifier which Google will store for 2 weeks (probably for caching purposes)
And based on that, and on the information gathered by the Google's cars that make photos for Google Maps and also scan wireless access points, Google's Service will triangulate your location.
In some areas it will more while in others less accurate.

If your browser does not provide the location data based on the W3C specification, then ConfRadar will fall back to a third party service and will estimate your location based solely on your IP.
But don't worry, we're actually interested only in the city and country. That's enough for us find best conferences for you.

For more information about the technology behind it you can read also:
http://googlecode.blogspot.com/2009/04/google-location-services-now-in-mozilla.html

Filed under  //  confradar   geolocation   technology  
Posted