Friday, March 12, 2010

2010 Orlando Scrum Gathering- A Retrospective

Just returned from the Scrum Gathering in Orlando. Two years in a row at the same place. I think we are liking the place for the gathering at this time of the year. As I am writing this retrospective, many things are coming to mind. But, I will start off by saying that what a difference a year can make. I wrote a retrospective after 2009 gathering. If you are interested to see how things have changed in the last one year, I would encourage you to read that post too.

With all the things that have been going on in the Scrum community and in the Agile community at large, I must admit that I went there with a bit of skepticism this time around. To my surprise, I sensed a lot of "calming energy" in the community with many new and familiar faces. Tom Mellor summarized it well for everybody at the closing,
                                  " I feel satisfied."
 What were new at this Gathering? There were 6 different "deep dive" sessions on the first day. Each session focused a specific topic (i.e., Kanban, Coaching, Software Craftsmanship, Collaboration etc.)  very relevant to the community. I went to the "Innovation Games" session hosted by the creator Luke Hohmann. I am planning to buy his book. If you haven't heard about it, I recommend that you check it out. From what I gather, participants found all the sessions very useful. The only dissatisfaction I have that I could not attend more than one session since each was day long and all were on the same day. Hopefully next year we would schedule them on different days.

Also this year we had "Scrum Clinic at the Dialog Room" for the first time. Thanks to Gerry Kirk for organizing this. The idea behind Scrum Clinic was that people would singup as a "doctor" or a "patient."  Patients would seek advice from doctors on a pressing issue with their Scrum implementation. It was a hit. All the slots were filled. I played the role of a doctor and helped (hopefully) two patients. I thought people might not show up because either they would forget about it or not be able to come out of sessions (wherever they happened to be at the time). To my surprise, both doctors and patients were serious. I would love to see this extended to all days in the next gathering.

Social media was leveraged more this time than in the past. You can see what happened at the gathering from the event's posterous (you can see me playing volleyball in one of the video clips) site.

What's new with Scrum Alliance? Tom and Tobias have shown a great leadership in putting together a great event. Hats off to them and the staff and other volunteers. It seems the alliance is evolving into more transparent organization. The board has decided to include two members from the extended community to server on the board through election. This is a great step in the right direction. There are more regional gatherings in the works. First ever China Gathering is coming up in April. There were a lot of talk about trainer certification. Tobias is working on redesigning the process. Certification in general and specifically trainer certification is a thorny topic. There was an open space session on this very topic.

Scrum Alliance is collaborating with CMMI  community to understand and explore how the two frameworks can co-exists. Jeff Sutherland and Kent Johnson are working together on this. They shared a case study about how CMMI and Scrum were adopted at a company called Systematic (the world's first Agile CMMI level 5). According to them, Scrum as-is is considered a CMMI level 3 equivalent. The lack of a formal recognition of a manager and client roles as well as a compliance framework is preventing Scrum to become a CMMI Level 5 equivalent. While I agree we need to recognize the role of managers, to be honest, I did not like what I heard so far, specially the idea of "compliance." It remains to be seen what comes out of this collaboration.

What was hot? Of many things discussed at different sessions, it seems coaching the coaches (Lyssa Adkins),  coaching and managing self-organized teams (Joseph PelrineJurgen Appelo), and using different games to help Scrum teams to understand Scrum principles and perform different activities more effectively were the favorite topics at the Gathering. Both Lyssa and Jurgen have a book on the respective topics coming out soon.

What I wish were there at the Gathering? It seems we have learned to collaborate with the PMI community and the relationship is maturing. There was a dedicated track on Agile PMI. However, I have not seen much of a presence from XP, and Kanban community. The recent exchanges among these sub communities are anything but cordial. It is sad. It seems as an Agile community at large, we are acting in our self-interests. It goes against what we all stand for, that is collaboration and learning (mutual respects).

So, I will end this retrospective by challenging all of us to rise above our personal differences and foster a true collaboration in search for better results in what we do everyday. Is that too much to ask for?

Thursday, March 4, 2010

Ruby on Rails setup on Windows

Most of the in Rails community uses Mac and or Linux to develop Ruby in Rails applications. So, it is difficult to find resources or help on how to setup Ruby on Rails on Windows. Unfortunately we do develop on Windows since we also work on .Net application and cannot afford to have both environment.

Recently, I had to get a new laptop that came with Windows 7 (64-bit) and had to go through the pain of setting up a Ruby on Rails environment from scratch. The biggest challenge I faced was with the gems that require native extensions, for example, "rcov." And, the rest were to do with 32-bit versus 64-bit. If you are on the same boat, here is what you need to do,

1. Install Ruby. Get the Ruby installer from They have done a great job of putting together a great installer for the versions you would (1.8.6, 1.8.7 and 1.9) probably want to use. I would recommend installing it under C:\Ruby (the default) directory to avoid any configuration changes in the later steps of setup.

2. Update "PATH." Make sure that your "PATH" environment variable includes the Ruby\bin directory.

3. Setup to build native extension. Get the development kit from RubyInstaller site in order to be able to build native extensions for gems that require it. You need to get the 7-zip, if you do not have it already. Extract the files where you have installed Ruby.

4. Setup Gems. Now you can follow the usual steps of installing Rails gems as well as other gems. Gem should be able to build native extension without any problem. If you are on Vista or Windows 7, you have to run gem command from command shell opened as "run as admin" (by right clicking the program even if you are an Admin). I did not know this. It is Microsoft's attempt at becoming Unix (emulating "sudo" command).

5. MySQL setup. If you are using MySQL, you want to get the 32-bit version even though you machine is 64-bit. This is because the "mysql" gem that is available already comes pre-compiled with 32-bit version. You may still run into an error (i.e., MySQL::Error: query: not connected: SHOW TABLES) while accessing your database. This is most probably you have a newer version of MySQL than the "mysql" gem was originally compiled with (MySQL 5.1 does not work well with Rails 2.2 and later). You would need to get this libmySQL.dll. You need to get the older version and put it in Ruby\bin directory. 

That is all. You should be good to go. Let me know if you still run into issues following these steps.
Update: I ran into issues with the 1.8.7 version. Something to do with GC. Siwtched to 1.8.6, and it is working fine. March 12, 2010

Friday, February 19, 2010

Rails migration guideline

I recently tried to setup ScrumPad on my new laptop windows 7 (yes, I know not an ideal environment for Ruby on Rails. The peril of doing so is a topic for another blog) from scratch and stumbled on migration decay issue. We usually don't need to set up our projects from scratch. Every now and then we would. Whoever is doing the setup from scratch would go ahead fix any issues that might crop up in our migration scripts.

We are happily doing everything through migration just because we can- from managing incremental change in schema, to loading seed data, to migrating data due to schema changes. Over time we accumulated 498 scripts! And we have many non-backward compatible changes along the way.
This got me thinking whether we are following the best practices around migration. Here are a few things that we decided to follow going forward based on my findings:

1. Incremental changes. We will only use migration to manage incremental changes to schema.  Nothing more.

2. Loading seed data. We should not be using migration script to load seed data. Instead we will use ActiveRecord to load data. If we have a lot of seed data, we would use database ETL tool instead, which would be faster.

3. Irreversible schema changes. We should through ActiveRecord::IrreversibleMigration exception from the "down" method when changes are irreversible.  This is recommended by the Rails core team. We were not doing this. Even if we can revert back the schema changes, we won't be able to revert back the data changes that we do as a result of schema changes. So, why bother?

4. New database setup. We should use schema.rb to setup the database from scratch, instead of using migration scripts. We should store this in the repository and always keep it up-to-date.

5. Periodic baselining. When we reach a point of irreversible change, we should re-baseline migration script to start from that point going forward. That is we discard old migration scripts, and start with the schema.rb as the new baseline schema from that point forward.

6. Migration versioning. Although the use of sequential numbers may cause conflicting migrations (migration script with the same version), we still like this over the timestamp-based versioning introduced with Rails 2. We just synchronize among ourselves (communication!) to make sure we do not step on each other's toe. As a result, we can easily understand the logical ordering among the scripts (hence the assumed dependencies, if any).

What do you think of our approach to Rails migration? What guideline (if any) do you follow with your rails migration?

Thursday, February 18, 2010

Introduction to Ruby on Rails: A Beautiful Framework for Today’s Web

In last one month we presented two seminars on above topic. Fuad, Faruk and Arif presented the seminars. Hasan showed how to build an application quickly from the scratch. Here is his slides. The one we presented is embedded below. One can also download this and many other interesting materials from our website tech corner.


Introduction to RoR: A beautiful framework for today’s web  

Visit our photo albums to see how the seminars went.

Tuesday, February 2, 2010

Welcome 2010- agile way of nature and life

Good bye 2009 and welcome 2010.

What better way to start a promising and exciting year than getting in touch with the wild yet agile nature and appreciate it. To rejuvenate ourselves with energy and promises, and to learn the agile way of nature -- we escaped to the nature with our family for a few days from our busy life in the office this January.

Lawachara is a national reserve forest located in Sreemangal, which is also famous for the highest rainfall, orange orchard, export quality tea, indigenous people like Manipuri and Khasia, and the reserved natural  lake - Baikka in the vicinity.

We started our journey early in the morning.

The tea garden was fabulous.

The landscape was breath-taking …

Not quite was the navigation through it.

But there were hands to help

and little things that made us laugh.

The woods were dark and deep

and dangerous species lurking around,

but we had miles to go before we sleep

as we knew 2010 is a year to fly

on the wings of our weaved dream.

[We took loads of pics visit our Facebook Fanpage to see more.]