Pages

Saturday, May 24, 2008

Towards an evolutionary design by Venkat Subramaniam

Recently I attended Venkat's seminar on "Towards evolutionary design". Thanks to ASCI and Binary Essentials for sponsoring this event. The event was a huge success and a lot of people attended the event inspite of heavy rains.

Evolutionary Design

Image copyright

Venkat, is a proven software architect and an Agile expert. One can easily feel the passion when he speaks about the evolutionary design and architecture. Here is the summary of key points that I learnt from the seminar

1. Design can be of two types, strategic (high level design, modeling, etc) and tactical design (TDD, Refactoring, etc)

2. He recommended the audience to read the two good articles, "Who needs an architect" and "Is design dead ?" both by Martin Fowler. Another good book he recommended us to read was the Humane Interface by Jef Raskin

4. He explained Kent Beck's Triangulation concept very well. He mentioned that frameworks should be selected based on the need rather than emotions, and he wanted the development team to avoid "Resume Driven Development(RDD)" :-)

5. He encouraged the architect to apply the "Tracer bullet" concepts while architecting solutions. That is, create a prototype first and use this as the tracer to create a robust architecture.

There were many more take aways from this seminar and I would let his presentation speak about the rest.

Tuesday, May 20, 2008

The Agile Zone - Papers

I found this web site  The Agile Zone - Papers  with interesting papers, articles and presentations on (or related to) Agile Software Development.   The site lists the articles/white papers alphabetically. 

Monday, May 19, 2008

Summary of Slack

I have been reading slack and also making notes of key points from the book. I always wanted to share the summary of the book on this blog, and incidentally I found that somebody has already done this. Thought would the share the summary here without reinventing the wheel.

You can also read the following summary here written by the author

* In our constant quest to make our organizations more efficient (reduction of overhead, standardization of processes, overworking management and resources), we have actually made them less effective. The solution lies in (re)introducing `slack'. Slack is the lubricant required to effect change, it is the degree of freedom that enables reinvention and true effectiveness.
* Multitasking and overtime, thought to be ways of getting the most out of the teams, are actually having a negative impact on productivity. Multitasking, specifically for knowledge workers, causes at least a 15% penalty in productivity. It is much higher for tasks (such as troubleshooting or design for instance) that require complete immersion before the resource can actually make progress. Systematic overtime is also proven to be an ineffective way of improving project cycle-time. While it may provide short term gains, the demands it puts on resources quickly reduces their productivity and effectiveness. An alternative to systematic overtime are well calculated and well timed sprints (focused and value-added, yet handled as exceptions).
* Overworked managers also have a very negative impact on organizational effectiveness. It is indeed managers, and more specifically middle managers, that can the most effectively champion and effect change in organizations. The more overworked they are, the less time they have to reinvent the ways of working. Those same middle managers will be most effective in bringing about positive changes if they can collaborate with each other, which in turns requires that organizations stop fostering destructive internal competition.
* Prescriptive processes, pushed top-down, are a form of disempowerment. They are a result of fearful management that is allergic to failure. These processes succeed in dictate every aspect of how you should do you work but fail in providing guidance in doing the `hard parts'. They are often heavy and form an armor that reduces the mobility and agility of teams, hence resulting in less competitive organizations. The solution is to put the ownership of processes between the hands of those who do the work.
* An effective change manager is a person that can remonstrate, repeat, correct, encourage, cajole, motivate, and has great powers of persuasion. He/she is less of a boss and more of a negotiator. Great change managers have a lot of markers to call in. Markers come from favors done and confidence earned in the past. They have built a reservoir of trust and tap into it to entice their people to embrace change. Change managers have to come from within the organization, a stranger has no markers to call in, just a little `honeymoon capital'.
* The best time to introduce change is in a period of growth. Decline causes anxiety and makes people more resistant to change.

Friday, May 02, 2008

Human angle in Software development

No matter what methods(Agile, traditional, Evo, FDD, RUP, etc) that is applied for software development, the only thing that decides the fate of the project is people.

There are many traditional projects that have been delivered successfully, and Agile projects that have failed miserably. The success or failure of projects doesn't depend on the process or framework that is being used.
According to me, it all depends on the people who are planning ,executing and maintaining the project. When I say people, it need not be the poor software developers, it could be PMs, customers themselves, marketing/sales people, finance team, etc.

The project's fate gets decided right from the time the marketing/sales person starts selling the skills/services to the prospective customer. I have seen many instances where the marketing/sales team over commit with the customers for the sake of winning the project. Ultimately when the actual work reaches the architects/project managers/developers, there will be little room left to make any changes. In most of the projects, the timeline is fixed, the only thing that is allowed to be flexible would be resources(a few lucky ones).

Even after so much of campaign happening around software process improvement, the project stakeholders add/remove people to the projects based on simple arithmetic. They don't look at software developers as humans but instead like chairs/tables/"things" that can be replaced and used right from the time it is purchased.

Here is an example and explanation of the above paragraph:
Let us say it takes 400 person days worth of effort to implement a feature . Naturally the stakeholders will calculate and say that if 20 people work on this feature for the next 20 days this work could be completed.
There is no flaw in the above calculation. However, the stakeholders never even think of buffers due to attrition or addition. What I am trying to say is, let us say the above team of 20 people start working on the project and they have completed 10 days (i.e. 20 P * 10 D = 300 PD complete). Let us say, the 11th day a team member quits the project. Consider the best case scenario where they found a new replacement person the same day.

My question is,
Even after finding the replacement the same day, what are the chances of completing the project as scheduled within the remaining next 10 days ?

According to me, the delay would be more than 5 days. Reason being, when a new person is introduced into any project, it not only takes some effort to psychologically adjust to new team but also takes effort in understanding the work. Unfortunately, in most of the cases I have seen the stakeholders don't consider the human angle and still push people to complete the work as planned because the new replacement was found the same day !!. This push in turn leads to reduced thinking due to time line pressure and ultimately reducing the quality of the work.

In Slack, Tom Demarco puts this process of replacement as "personnel turnover". As per research, the effort and the cost associated with personnel turnover could be as big as 25% of overall project effort. The cost may not be visible directly but it gets incurred due to delivery delay, training new personnel and defects fixing.

Until human angle is not given at most importance in any project, the project will go through turmoil no matter what method they follow !!

Saturday, April 26, 2008

State of Indiana Makes Using Waterfall SDLC’s a Criminal Offense

Recently I came across this article which claims state of Indiana passing a bill against use of Waterfall SDLC.

Read the first para of the article here ....

Waterfall software development lifecycles have terrorized technology projects in this state for too long,” Governor Mitch Daniels said at a simple signing ceremony held at a meeting of the Central Indiana chapter of the Project Management Institute (PMI). “This bill will end the tyranny of big upfront planning, big upfront design, and litigation style change management.”
The bill, which goes into effect immediately, will make it a criminal offense to use software development lifecycles
that divide software projects into serially executed phases
distinguished by a particular type of work activity. Violators will be
stripped of their project management certifications and could face up to six weeks in jail for their first offense.

Read the complete article here.

The article has been written with such a perfection that people would take some time to realize that this is a joke :-)

Saturday, April 12, 2008

Agile/Scrum podcasts

Check out the podcasts on
Above sessions feature Agile experts like Rachel Davies, Roman Pichler and PushtoTest CEO Frank Cohen

Sunday, April 06, 2008

Agile Myths

Many newbies to Agile bring tons of myths and misconceptions. They would have picked this baggage either by attending a seminar, reading a book or blog. It is not that the sources are wrong, but these enthusiasts would have misunderstood/misinterpreted the concepts.

Some of the common myths I keep hearing around Agile are :

1. Agile means two people working together on a computer.

Agile is a set of values and principles. Two people working together on a computer is one of the practices from Extreme Programming (A.K.A XP). Many people get confused between the Agile and the implementers of Agile (XP, Scrum, etc).


2. Developers working on Agile projects don't do any documentation

Agile Manfiesto never said don't do documentation. In fact, Agilists say that do documentation only as required that adds value to the customer and don't do it for the sake of satisfying some process.

Sometimes it becomes necessary to maintain extensive documentation, and if so, irrespective of whether it is Agile or not, it needs to be done.

For ex: projects involving avionics or military related projects need extensive documentation, this is keeping the sensitive of the domain in mind. In such cases, one has to maintain documentation because it adds value to the customer.


3. Agile methods cannot be applied for distributed development projects

There are many projects that have been carried out in distributed development applying Scrum and XP. The projects are pretty successful. Key thing to be successful while implementing Agile methods is being innovative with practices. Creativity and Innovation are the key ingredients to succeed in an Agile environment.


4. Agile methods expect the team members to be matured
Another big myth. There is no measurement to classify matured from immatured people. Its all perception and context dependent. Agile manifesto never talks about maturity of people, however Agile suggests hiring good people and trusting them to do the job.

Personally I worked with junior/senior members in various projects. Some team members were very good in communication while lacking in many facets of soft skills. However I found that many Agile practices(like scrum meeting, modeling days, retrospective,etc) helped the developers to improve their soft skills. This improvement is just a byproduct of practicing Agile methods.


5. Agile is not suitable for product development
Agile is being successfully practiced both in services and product development environment. In fact, I feel this is more appropriate for a product development environment. This is because, Agile concepts makes the product development more flexible and more open for changes to sustain in the competitive market.

6. Agile is not suitable for fixed bid projects
Many Agile companies specifically with my experiences in Indian context have been practicing Agile methods with fixed bid projects. If customer is willing to collaborate with the development team and, the development team is transparent with their deliverables then, all these types of contracts/negotiations would take back seat.

I have seen Agile software companies signing fixed bid contracts with the customers. Since the software services vendors are transparent in what they do, any new change request given by the customer is suitably discussed on the table and a solution emerges. The new change request is accommodated either by extending the release date/expansion of budget OR by dropping low priority features.


Here are some more resources on Agile Myths


5 Agile myths

Monday, March 31, 2008

Building an Agile team

Recently I got an opportunity to build yet another Agile team and wanted to share some of my experiences around it. Here is some initial context before I begin sharing:
  • This team has around 5 people , with 2 junior members(<3>
  • My company has a strong CMM background and at the same time, provides free hand to tweak the methodology or experiment with new techniques.
  • The customer is not worried about whether it is CMM/Agile.
  • It is a distributed team spread at many places in India.
  • The client sits in US
  • Project is research oriented than a development project

When I started recruiting team members and started the project work, I didn't tell the team members anything about Agile or any jargon from Agile methods. I started with the simple technique of having daily meetings (AKA stand up meeting in Agile methods). Here is what we do during daily meeting, every day at the same time we have a call in the morning and a call in the evening. Team members who are in different locations dial in during the meeting. Each person would share their plan for the day before taking the coffee break. All this information collected during the call gets updated on to the Wiki pages.

In the evenings, we discuss what we have achieved since morning and reason for not achieving something. We don't use this information to crucify somebody, but we have built this tradition to help the person in need. People are eager to share the issues and ask for help immediately.

I know that, this type of stand up meeting is a bit different from the traditional ones followed in Scrum or XP, answering 3 questions. I have realized that, many a times the Scrum meeting becomes monotonous and people answer those 3 questions for the sake of answering. In fact, in one of my friend's company, the client has been adamant about having a daily Scrum meeting by answering the 3 questions "at any cost". Many a times, the team members used to cook up answers for the Scrum meeting as they didn't have many things to answer during the call. I have realized over the last few years that the practices should not be enforced on the team members. It should be slowly sold to the team and the value should be exposed to the team members through various techniques. In my case study, the team missed couple of calls however suddenly they realized that they are losing the focus on work and things started looking chaotic. They made even a firm decision not to miss daily meetings.

Usage of white boards

Once the work starts in the day, we don't have any formal meetings but many of them are through informal discussions. If somebody has a point to share or want to discuss they will go to the white board and write it. We have a regular customer call and we read the points written noted on the white board to discuss any roadblocks with the customer. Because of this, we don't forget many things.

Usage of Spreadsheet

We use spreadsheet as the project tracking tool. On a daily basis we just update the status of each task. As and when we come across any new task, it gets inserted into the spreadsheet. It is amazing to know, how many "unplanned" tasks gets added into the project planner. This tool was created iteratively. As and when we found the information to be useful, we used to either create a new column or add a new status or anything else.

Use of Wiki

All documents are directly typed on to Wiki, no documents gets circulated via email.

Client meetings

Every team member whether junior or senior attends the regular customer call. In turn this has resulted in more efficient spread of knowledge and efficiency at work. Most of time, in many projects run in India, I have seen only the project managers/architects participating in calls with the customer. This results in team members not understanding the reality and never getting to know the first hand information. There are pros and cons to this practice(at least in the Indian context), but I feel there are more pros than cons.

Our team is still young and I am in the initial stages of buidling this Agile team. I still have a long way to go before I introduce retrospectives and other good practices ......


Monday, March 10, 2008

Self organization and Swarm Intelligence

Recently I read this article about Swarm Intelligence. This article talks about amazing efficiency of the insects like ants, wasps, bees, etc. The scientists have researched the behavior of these insects and, have proposed ideas that could be used in our day to day business. The portion of the article that caught my attention was the 3 characteristics of social insects that is making them successful.

They are

  • Flexibility
  • Robustness
  • Self organization
Flexibility and robustness is influenced by self organization. The articles claims that
Through self organization, the behavior of the group emerges from collective interactions of all individuals

In the case study given in the article, the ants, bees don't have a leader directing day to day activities. The social insects seem to have two key priorities in their life time, finding food and defending against enemies. It seems to be a simple life as compared to human beings :-)
There is no need to have a backlog of tasks to monitor of the ants/bees. They get up in the morning, go in search of food, bring it back to their nests and live happily.

I was wondering why can't we be self organized like them(atleast in our work life) ? Specifically, Agile methods recommend self organizing teams. My take on this is, we as human beings can't be like ants, bees. It is very difficult (even though not impossible) for human beings to self organize themselves at work. We have many needs, desires, characters, emotions. Each of these parameters affect our thought process and decision making ability. We have our own individual identities as opposed to the ants and bees. May be these social insects have their individual identity, but looks like they give higher priority to the group rather than their individual wants/desires. I think we can achieve self organizing teams within our projects, provided we keep aside our individual priorities and work only towards the projects goal.

couple of questions that is coming to my mind..(for readers)
  1. Is your project leader capable enough to create a strong goal that would make you to lower your personal priorities ?
  2. Have you seen any projects with self organizing teams ?
  3. What does it take to become self organized in your project ?
  4. Are you willing to lose your identity for the project's goal ?
So bottom line is, it is easier for ants, bees and other social insects to self organize as compared to us, human beings.

Friday, February 29, 2008

Scrum Meetings Vs Scrum Events

Some of the common events that is practiced by Scrum teams include
  • Daily Scrum meeting
  • Scrum of Scrum meeting
  • Requirement workshop
  • Modeling days
  • Review sessions
  • Retrospective sessions
Scrum teams would be conducting one or the other meetings mentioned in the above list, every day. New teams practicing Agile methods specifically Scrum would feel that, there are more meetings in Agile as compared to the number of meetings in traditional methods.

I think one of the reasons why teams start resisting these meetings is because, they might be practicing the methods not in true spirits (not understanding the true value of these meetings) but for the sake of "doing" it.

What is the solution for such teams ?

1. Coaching the teams about the values of these meetings. This could be done with the help from an internal/external Agile mentor/coach.

2. Change the vocabulary: The word "meeting" is kind of becoming synonym for "obligation". So, whenever the team hears the word "meeting", they start resisting unconsciously. One of the ways proposed by Tobias Mayer is to change the vocabulary. For ex: rename "meeting" with "discussion","working session", "event", etc.

After reading Tobias's email, I became conscious of impact on our mind; usage of the words like "firefighting","postmortem","warroom". Beleive it or not, each of these words increases stress,blood pressure level when uttered. Next time when you utter these words feel yourself.

Sunday, February 17, 2008

Right way to do Agile

If you are practicing Agile methods, I am sure at some point of time, you would have asked yourself or somebody else,

Am I  practicing Agile, the right way ?.

I would like to call this as an "eternal question on Agile".

If you visit any of the Agile related Yahoo or Google groups, people would be asking the same/similar eternal questions.   I conduct many Agile training programs and coach teams, and I keep getting similar questions.

There are many such questions. Some of them include  :

  • What is the ideal length of iteration ?
  • Do I need to practice Scrum meeting everyday ?
  • I am working on maintenance project, do I need to practice Scrum meeting every day ?
  • Can we have multiple Scrum Masters in a Scrum team

When I hear these questions, I feel that there is something missing in their understanding of meaning of Agile/Agile methods.

As we know, Agile is all about values and principles. These values and principles are manifested into practices with the help of Agile methods like XP, Scrum, DFDM, etc. But, the practices not limited to the one recommended by above methods. Beauty with Agile methods is, one can invent any practice/set of practices one wants provided the practices don't violate the values and principles.

You would say that's fine, I understood but where are the answers to above questions ?  My answer would be,

  • Invent any practice you want provided you satisfy the customer and team
  • Modify any practice you want provided it does not violate the Agile values and principles. It should be done after taking the team into consideration and a thorough research.

Practices should not be modified to satisfy an individual's taste. Many of the practices proposed by XP, Scrum are recommended after a thorough research and they have their own benefits. Some of them when practiced, are intended to identify risks and issues in the project. When a team practicing Scrum hits a painful point, they would tend to tweak the practice to reduce the pain. But instead I would recommend the team to retrospect and see the hidden issue behind the pain

 

Thursday, February 14, 2008

Agile Austin and wealth of resources

Agile Austin maintains a wealth of resources on Agile methods.

If you visit their website and click on the Resources link in the left navigation pane, you will find a great list of Books, websites, listservs, blogs, podcasts and videos to get you going.

Friday, January 25, 2008

Attributes of a true Scrum Master

As per Tao Te Ching
The worst leader is who people despise, a good leader is who people worship. A great leader is he who makes people say "we overselves did it"


If you really look at the responsibilities of a true Scrum Master, he is supposed to be a great leader. One of the key responsibilities of a Scrum Master is to create a Self organizing team, where team is empowered to make decisions, lead the project towards the goal.
* A true Scrum Master(SM) won't spend time micro managing activities of the team and instead, he/she would be working towards creating a space for the team to express themselves.
* SM steps out observing the team, coaching them to move in the right direction. This process of empowerment ultimately makes the team feel possessive about the project and creates an image that "they" did everything.
* A true Scrum Master would stay as an angel not in the view of the team, but keeping a watchful eye on every movement of the team.

So, going back to the quote from Tao Te Ching, the Scrum Masters should not consider themselves as "transformed project managers" but work towards becoming great leaders, satisfying the true meaning of "Scrum Master".

Even though no body is born as a leader, I firmly beleive that some of the leadership skills could be developed by observing other leaders.

Tuesday, January 08, 2008

Agile world in the Top 20 Blogs

Agile Daily has rated my blog Agile blog in the top 20 list as the most recommended blogs on Agile development.


Here is what they say:
Sorted by Fastest Gain in SocialRank. These blogs had the biggest increase in attention today.

  1. Geek Noise
  2. ASP.Net
  3. James Shore
  4. Agile Advice
  5. Agile Game Development
  6. Jason Yip - Blog
  7. George Dinwiddie - Blog
  8. Agile .NET CT
  9. Agile Programmer
  10. Agile Israel
  11. Agile Software Process Improvement
  12. Me.Andering
  13. Diana Larsen - Blog
  14. Jeff Sutherland - Blog
  15. Agile Artisans
  16. Agile Blog
  17. TargetProcess
  18. Agile Project Planning
  19. Better Ways of Developing Software
  20. Agile Software Development blogs

Accountability and Productivity

I have been reading one of my favorite books Slack, and in one of the chapters on schedules, Tom brings up a good point about accountability and productivity. He mentions that

When a schedule is not met, those inclined to pass out blame are quick to
point at the lowest-level workers; they reason that performance is the domain
entirely of those who perform the work. They ask plaintively, "why can't these
guys ever meet their schedules" ? the answer that the schedule might have been
wrong in the first place only befuddles them.

He continues to say

There is such a thing as a bad schedule. A bad schedule is one that sets a date that is subsequently missed. .... If the date is missed, the schedule was wrong. ... The purpose of schedule was planning, not goal-setting. Work that is not performed according to a plan invalidates the plan.

Saturday, December 08, 2007

Reducing the stress during software development

We keep seeing the stressed out software development team and the customers, blaming and pointing fingers at each other day in and day out. There are several reasons which causes germination of stress in the team. Some reasons include, poor top leadership, unskilled team, unsupportive customer and poor project planning to name a few.

In this post I am going to share some of my thoughts on reducing the stress by creating a proper project plan and estimation by keeping the forces of nature in mind.

Project plans are always good but it should be flexible enough to accommodate changes, considering the forces of nature in mind. The project dates and numbers should be thoroughly reviewed quite often and should be negotiated with the customer for any changes. The process of having a adjustable project plan is the key to reduce lot of stress for the entire team, including the customer.

Before I discuss about stress, let us review some of the commonly adapted software estimation techniques and their pros and cons.

1. Many projects use unscientific estimation techniques, which are mostly the "gut feeling estimations" and this leads to estimations being way off the right path. The poor estimates are either due to lack of skills to estimate or inability to think through risks and consider the risks during estimation.

2. In order to mitigate the risks due to unscientific estimation technique, shown above, many teams simply add 20% buffer to the total effort before submitting the estimates to the customer.

3. There are some light weight estimation techniques like Wide band delphi, planning poker using fibonacci series, relative estimation techniques, etc. which are found to be more accurate than the gut feeling techniques.

4. As per the cone of uncertainty, actual duration to complete the projects can be 4 times or 1/4th of the initial estimations. So, if one has to ensure a guaranteed delivery of the product to the customer, then the development team should do an optimistic estimate and multiply the number by 4 before committing the delivery date to the customer. Even though this theory is supposed to hold good for product delivery, no customer would agree with this model.

Moral of the story: So far no body has been able to come up with a model/formula which can give an accurate estimate and estimates remains as guesstimates most of the time.

Ok, Why is it not possible to give an accurate product delivery date and time to the customer ?
Because, it is we(human beings) who develop softwares. Until human beings are in control of software development one cannot give accurate numbers.

But Why ?
Because human beings themselves are controlled by forces of nature.
What are these forces of nature ?
Basically these are our surroundings, our friends and family with whom we interact everyday, our own emotions which are controlled again by our surroundings, etc.
Examples include : employees can fall sick forcing them to apply leave without any notice, government can change rules which can directly/indirectly impact personal productivity, natural disasters like earthquake, volcanoes can affect work etc

Ok so how is this related to stress ? Typically project plans are created at the beginning of the project and as described in the sections above, the PMs would add some buffer to the estimate before submitting to the customer. Major problem arises as this project plan and estimates are considered to be carved on stone without leaving any breathing space for natural forces to play. Even the 20% buffer on the optimistic estimate is not sufficient as natural forces cannot be predicted by %s.

The above said "Unnatural forces project plan" would be made as the guiding torch by the PMs to achieve the project goals. These plans are given to the developers to execute, which in turn forces the brave software development soldiers to fight every problem arising due to natural forces. These fights would in turn increases the blood pressure, heart beats of every team member. By the team the team reaches the end of the overshooted project, they would have won the half battle of the product delivery but would have definitely lost their mental peace.

How do we reduce this stress in above situation ?
  • First and foremost, acknowledging that there are forces of nature and we as human beings are controlled by these forces, every second. This is not the other way around.
  • As and when we see the blood pressure raising or the heart beat increasing, be aware that some forces of nature is casting its shadow somewhere. Bring this immediately to the attention of the customer and discuss the impact of this on the entire project. Try to make accommodative changes to the plan.
  • If the customer does not understand or does not want to cooperate on reestimations, bring this issue to the notice of your superiors. They in turn could influence the customer.
Finally managing one's stress depends on choosing whether to cooperate and plan to work with forces of nature OR to drive against it. Finally you might drive against the forces and win, but at what cost ?

Friday, November 16, 2007

"Done" ness and "done grading" system

The concept of "Done" is not new to "Scrum"ilists. Scrum prescribes that a "Done" check list should be created by the team together with the Product owner. But still the Product owner has the final say in choosing if the iteration is "Done" or "not".

Many people argue against using the "Done" checklist, because they consider this to be non-Agile and also consider this checklist to increase the stress on the team !!!

How is it non-Agile ?
Its because, it goes against the Agile values and principles. Agile methods are based on the fact that project work is unpredictable and they suggest empirical control theory of learn and adapt cycles. Now in case of "done" in Scrum, the product owner(PO) goes through the "Done" checklist, and sets an expectation for the team to achieve certain things by the end of the iteration. If the team is able to deliver "all" the things in the checklist an iteration would be termed success or could easily be termed "failed" iteration.

But don't you think "enforcing" "done" on the iteration is like enforcing the people to think that "everything in a project is predictable".

So, can we abolish "done" checklist and give a free hand to the team to do whatever they want to do ? How do we measure if team is really on the right track ? how do we know if the team is doing things which adds value to project ? How do we measure the quality of the iteration ?

Here is what Jeff Patton wants to say about measuring quality of iteration.

Jeff Patton recommends a grading system for features in an iteration. :
  1. In a small group, brainstorm the major features of your product.
  2. Independently for each feature write your "grade" for the quality of the feature. Answer the following questions: Do you like the feature?; Do you like using it?; and Is it a valuable part of the product? Let your answers help you grade the feature with an A, B, C, or D, or fail it with an F.
  3. When done, discuss your grades with those in your group. Agree on a grade that best represents the group's opinion of the quality of that feature.

After looking at the recommendations of "done" and "grading", I have been thinking of proposing a new model providing the best of both worlds. I am going to call this as "done grading" system as this is a mid way between the above two theories.

Here are the steps I propose:
1. At the beginning of each iteration, the team would sit with the PO and create the "done" checklist. This checklist is created to understand POs expectation for the iteration. I feel having "done" checklist sets the right expectation and provides a clear goal for the team to proceed further. Without a clear goal, the team would still be working but without a common goal.

2. At the end of each iteration, the PO would still go through the "done" checklist, but instead of calling it "yes" or "no", he/she grades the iteration based on completion of tasks.

For ex: if the team has following tasks in their "done" list
  1. delivering A,B,C features
  2. unit tests for all features
  3. regression test cases and testing
  4. automating the tests
  5. Introducing TDD
and, If the team has partially achieved the above goals, then the PO can chose grade as "A", "B" or "C", etc based on his satisfaction. Once the grading is done, and during the Iteration review session, PO would sit with the team to do a root cause analysis for poor grading of tasks. This session, provides rich inputs to the team, and this data could be utilized to improve the grading in the upcoming iterations.

By applying the above mentioned "done grading" system, the team is relieved of "stress" at the end of each iteration . This is because the iteration would be measured on a more collaborative way of "done grading" system rather than the earlier binary "done" system.

Wednesday, November 07, 2007

Agile conference in Oralndo, FL December 3 - 6

Agile Development Practices
December 3-6, 2007 * Orlando, FL
Shingle Creek Resort
http://www.sqe. com/go?adp07ng

Conference Web site: http://www.sqe. com/go?adp07ng
Master Schedule:
http://www.sqe. com/agiledevprac tices/Schedule
Download Brochure: http://www.sqe. com/go?adp07broc h
Keynote Sessions:
http://www.sqe. com/agiledevprac tices/Keynotes
Pre-conference Tutorials:
http://www.sqe. com/agiledevprac tices/Tutorials
Concurrent Sessions:
http://www.sqe. com/agiledevprac tices/Concurrent
Register Now:
http://www.sqe. com/agiledevprac tices/register

************ ********* ********* ********* ********* ********* ********* ****
**

WIN A REGISTRATION
Win a Registration to Agile Development Practices 2007! Request a
brochure or register for the conference by November 9, 2007 and be
entered to win 1 of 10 complimentary full conference registrations!

Click here for full details! --> http://www.sqe. com/go?adp07cont ng

Wanting to go to the conference but not sure if there is money left
in your training budget? Try your luck and enter the drawing for 10
complimentary registrations. Attend Software Quality Engineering' s
first Agile Development Practices conference to hear from some of the
best experts in the business. Choose from over 75 sessions to build
your own information- packed event complete with practices, processes,
technologies, and leadership principles geared for agile software
professionals.

************ ********* ********* ********* ********* ********* ********* ****
**
SPECIAL DISCOUNT
Save up to an additional $100 off your registration fees when you use
promo code NGAE during the registration process. For more
information, call 888-268-8770 or 904-278-0524.
************ ********* ********* ********* ********* ********* ********* ****
**

We're pleased to announce Software Quality Engineering' s first Agile
Development Practices conference coming to Orlando in December.
Whether you're investigating or implementing agile development
practices, processes, technologies, or leadership principles, this
new conference has solutions for you. Brought to you by the producers
of the STAR conference series and the Better Software Conference &
EXPO, you have our guarantee that you will experience the first-rate
quality and commitment that have defined Software Quality
Engineering' s conferences for the last 15 years.

Brochure Now Available
Download the brochure now to build your own conference from over 85
sessions.
http://www.sqe. com/go?adp07broc h

Don't Miss Out on the New Open Spaces Sessions
Want to discuss a topic that is not on the program? Great! You need
Open Spaces. We supply the room and the chairs. You supply the ideas
and the leadership. Choose a topic you'd like to discuss, pick your
timeslot, promote your topic at the conference, enroll others, and
have a ball.

That's what Open Spaces is all about—you are in charge of your
learning.

The basic principle is: Everyone who comes to an Open Space session
must be passionate about the topic and willing to take some
responsibility for creating learning out of that passion.

Five other key principles are:
1. Whoever attends is the right person.
2. Whatever happens is the only thing that could have happened.
3. Whenever it starts is the right time.
4. When it is over, it is over.
5. The Law of Two Feet—If you find yourself in a situation where you
aren't learning or contributing, go somewhere else.

If you've never tried Open Spaces, do it now. You'll teach and you'll
learn.

For registration information, please email sqeinfo@sqe. com or call
our Client Support Group at 904-278-0524 or 888-268-8770. To register
on the Web, visit http://www.sqe. com/agiledevprac tices/register

Friday, September 28, 2007

Agile in Product Company Vs Services company

During many of my Agile presentations, I keep getting the similar question from participants, "Can Agile work in services company" ?. My answer has always been "Agile methods could be implemented whether it is product company or services company".
I kept wondering where this misconception is coming from ? I think I have some clue here. ..

As we know, the software services company would try to cater to the needs of multiple customers. Many of the companies would be working on multiple projects ranging from Java/J2EE to COBOL, AS/400, etc. The verticals would be from retail domain to Avionics. As far as I have seen in Indians services company, each project is controlled by the customer's project team from distant locations. Even though the PM and the developers form the major crowd in the team, they have very little say in major project related decisions like choosing tools, process, etc.
The vendor software company has to negotiate with each of the customers about process, tools, methods, etc. Even the management of vendor companies cannot put their foot down about ideas because, there is a tough competition in the market. There is a fear that, many customers can walk out if they find any resistance to their own ideas. Keeping the above factors in mind, it becomes difficult for services companies to convince each and every customer about Agile method or any similar thing. This also results in poor implementation of methods like Agile in services organization. According to me, Agile methods can work successfully in services company provided there is a good support from not only from the vendor management but also customers .

Where as in product development companies, there is one team at the organizational level making all decisions about software development. If the management team is convinced about Agile, that is enough to take the idea forward with less resistance.