Thursday, August 14, 2008

Agile since...

Okay, I am pro- Agile and may be a little anti-waterfall. I work on the UI side - JSF, J2EE, AJAX, Web Component and so forth. We started the following the Agile methodology roughly 24 months ago. Where are we now?


When we started the process change and started implementing Agile, it was quite a challenge. Management was very skeptical -even a few developers were. A few managers were quite resistant to change. It was a quite an educating and convincing period for those of us who really bought and believed in the Agile process. It took a lot of commitment and a drive to convince a well -seasoned waterfall organization to try out a change. And luckily I got to be in a position of key observer. I got to see a lot of perspectives, debates, opinions, resistance. I was in the middle of a major process change. I experienced every little success, every frustration, every feeling of accomplishment, every disappointment, every setback, every feeling of increasing confidence in my coworkers. It was(is) wonderful to feel alive at work. It is wonderful to experience such things at work.


And it has been 24 months since it all started. The fire was ignited. There is no stopping now in our organization.


What do developers feel about this? Every day, we stand for 15 min as a team and talk about what we worked on yesterday, and what we are going to work on today. Everyday, I put out our quality charts before the 15 min meeting. A few of my team members come a minute or two before the 15 min meeting to see how much we have progressed. The smile or the frown on seeing the charts drives the day. We plan a course of action on the spot. The results are visible. It is a continuous process improvement. Some may not agree with the term. But it is what it is. It is continuous feedback and adapting and learning. Human mind learns through continuous learning and feedback. AI is also based on such theories. I believe this is what makes Agile lovable. The feedback is continuous and we can learn and adapt immediately. It is what we do best - learn and adapt. There are limitless "learn and adapt"opportunities in this process. No wonder my fellow crew members embraced agile pretty quickly. A majority of them do not like to go back to the waterfall process. (More about this later - see another upcoming blog).


Let us turn our attention to scrum masters and managers. Do they like it? Do they buy it? I am not a Scrum Master, nor a Project Manager. I certainly get the vibes from them that it is a change - a change that has to be adapted. Some of them love it just like the developers too. Others are okay with it - not entirely thrilled though.


The role of scrum masters is different from project managers. Still both the roles require a skill in management and an acute sense of judgement. Project managers estimate and draw up schedules, identify tasks and assign it to individuals. They pull the project team together and resolve any issues. They are on top of the status on each and every task. They are also responsible for the communication/coordination of various pieces of a project. Lastly they have to make sure that the project is on time and on(or under) budget. Scrum Masters oversee a "self-organized" team. Their primary role is to make sure the team functions to their highest capacity. The team is ready to go because the Scrum masters prioritize work, remove impediments, and sometimes even handle distractions. In my org, most project managers are trained to be Scrum masters. They bring a project management perspective to the agile scrum process.This is the norm rather than the exception even outside my org. Is this beneficial? The answer to the question is the classic one. It depends. One role is not better than the other, nor it is the same. Developers are developers whether in agile development process or traditional software development process, whereas there is a role change for a person who oversees or manages the development process.


One main talent whether it is a Project Manager or a Scrum Master is to get a sense of where the project is heading and how the project is currently doing. This is what differentiates between a great one and a good one. A few of them are attuned to the success of the project from the start till the end, constantly adapting. A few of them get attuned just in time, while a few others very late in the game. Is it the responsibility of the Scrum Master to oversee the entire project, identify impediments, roadblocks , dependencies, resources, constraints and line them in order for the team to function effectively? Or is this the role of Senior Managers? Let us go with the classic answer . It depends. I believe it is a shared responsibility, though having no experience in this arena would make my argument ineffective. As a self-organized team would raise impediments if it is not resolvable, so should a scrum master raise concerns appropriately whether it is related to the current sprint or related to the whole project. And yes, a scrum master agrees with me. I may not be off-base after all.

Back to the question - Where are we now? We have started implementing Agile 24 months ago. Is it much better? Is it cheaper/faster? I go into one of the unofficially required, yet not mandatory All-Hands meetings to find out. Three years ago, when I was sitting in one of my senior boss's All hands meetings, I could relate to the frustration experienced about producing quality software. He wanted his organization to produce quality software. None of the numbers that our department produced at that time was promising. Cost of producing bug-free software was not cheap. It was not easy on the developers either; it was a lot of pressure. We tried everything from six sigma to the Agile process over a period of three years. The results from the six sigma process was promising, encouraging and motivating. And agile results...(I would like to keep the suspense going!). We had a few initial numbers released that were related to Agile projects. However, something in the meeting held me by surprise. It was not the agile results that they presented. It was the enthusiasm of the presenters on the agile process, not the results ( which by the way made this blog possible). They wanted to see that the crew loved the agile process, and listen to the crew feedback about this process. They were excited to share the view and feedback of the other crewmembers regarding this. They were actually excited to see that we loved the process. It is not to say that the numbers don't matter. It matters, but it is not the only thing that matters. When crewmembers are given the opportunity to be their best, the numbers actually show.


When I walked out of the meeting, I gained a new perspective on the number one agile manifesto - "Individuals and interactions over processes and tool". It truly is something.

Wednesday, March 14, 2007

Agile agile agile all the way

Agile works. It is just common sense software development process.

Consider all the advantages

- - Focus on priorities (not on the whole application). And that is a big step ahead for the developers since they swarm on one thing to get it done before they turn their attention to something else. The clients get to choose what needs to be implemented first.
-- Team work - Extreme Programming (Pair Programming) - An effective way to learn and teach new stuff, ideas and what not. It is great to see what two minds can uncover that a single mind cannot. It is also an effective quality assurance tool.
-- Earned Value – Developing what is needed and important. This enables elimination of not so useful aspects earlier in the development process. Also, Clients get to see the working product in stages and much earlier.
- Continuous Improvement - retrospective of what worked, what did not and what could be improved - This provides every team member a chance to experiment, try out different things. Since the cycle time is relatively small, the success and failure of experiments can quickly be re-adjusted because of the nature of the agile process
- Very flexible and adaptable. We don’t have to wait until the end of the project to readjust.
- Progress Report - Measures progress daily and brings issues or impediments to management attention much earlier in the process.
There is so much more to list about Agile. Agile is one of the best process out there currently that is more aligned with the "Business Value" than any other software development process.

There are still some limitations of the agile process - Agile projects in most organizations are influenced by Non-Agile elements. When external factors come into play, it skews the agility of the process to a certain extent. If an Agile project has a dependency on a project that is Non-Agile, then its priorities get re-arranged to accommodate the non-agile element. Project dates are preset into a definite number of sprints to do a pre-determined scope of work. Though these limitations are worked around, it definitely does impact the Agility of the process. Being Agile and working on overcoming these limitations is what this process is all about. Agile is not a solution to all the IT development process shortcomings. But it definitely bridges the gap between IT and business value more than any other process.

Overall, Agile is a big step towards more efficient development, still has a long way from being "mature”. Or will it be? Agile is learn-and-adapt process anyways.