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 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

************ ********* ********* ********* ********* ********* ********* ****
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
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

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

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.

Wednesday, September 26, 2007

XP Day Manhattan - Oct 13th 2007

Upcoming XP Day conference in North America would be held on Oct 13th. Here is the note shared by Niraj Khanna of Diaspar software about the upcoming XP Day Manhattan program:

Diaspar Software and Thoughtworks is proud to present another
installment of the XP Day North America series: XP Day Manhattan
taking place on October 13, 2007.

The focus of XP Day is to bring top extreme programming practitioners
to North American XP communities to share their successes, failures
and perspectives on how to release high-value software sooner.

Our program for Manhattan includes:
1) A keynote address by Steve Freeman. Steve is a fixture in the
London software development community, a regular organizer of the
original XP Day, well known for his contributions to test-driven
development practice and co-recipient of the 2006 Gordon Pask Award.
2) A tutorial by JB Rainsberger, a recipient of the 2005 Gordon Pask
award. JB will talk about why XP works using the Theory of
Constraints model developed by Goldratt.
3) A tutorial by George Dinwiddie, a respected member of the XP
community, and author of an insightful blog about coaching XP teams:
http://blog. gdinwiddie. com. George will talk about sustainability at
multiple levels in XP.
4) Open Space. There’s plenty of room, the space is superbly run and
the conversation is lively. Collaborate intensively with both local
and invited advanced practitioners on issues that interest you most.

Cost of the conference is $249 US)and includes breakfast and lunch.
Registration is limited to 100 attendees. To register visit http:// For group rates, contact me at the address provided
in the header of this message.

Check out the following links for pics of our last conference: http:// 2ysz6v and http://tinyurl. com/23ktwx

Tuesday, August 28, 2007

11 Ways Agile Adoption Fails -- Jean Tabaka

Jean Tabaka a great writer, Agile coach has written a good article on reasons behind failure of Agile adoption in organizations. Read the complete article here

In fact my previous article published on Agile Journal covers many of the above points and I can say the article compliments it.

Monday, August 27, 2007

Craig in UK conducting Agile Projectmanagement course

Craig larman guru in Agile methods would be conducting the course on Agile project management in UK. UK Readers of this blog can avail this opportunity. More information about this course is available here. Also there are some giveaways for early bird registrations and you can use this quote SKIL-PTC671 to get all those early bird prices.

Sunday, August 12, 2007

Rupee Appreciation and Agile/Lean practices

One of the hot topics being discussed in the Indian IT sector is how to beat the rupee appreciation against dollar. Here is an article explaining various moves by Indian software giants to handle the current rupee appreciation issue. Most of the decisions taken by these software giants are the ones usually taken during financial crisis. These decisions include laying off employees, asking employees to work overtime with no extra pay, or increasing the hourly rate for the customer.

My view is, one could effectively utilize the dollar earned during every hour by incorporating Agile and Lean practices. Some simple practices(as explained in many of the Agile and lean books) include,
1. Project managers sitting with their team rather than in a far off cabin. This reduces waste due to frequent walking up and down by the team members to PM's cabin.

2.Having enough supply of coffee, tea or snacks within each project room. Otherwise, a lot of time gets wasted when the team goes to a far off cafeteria. As it is evident that even though the customer is billed for 8 hours per day, effective value generated is only worth 6 hours(Ideal Engineering Hours) . The wasted 2 hours can be effectively utilized in situations like the rupee appreciation issue impacting Indian IT sector.

3. Improving communication and collaboration using tools like Wiki, Skype, etc.

4. Redirecting the investments on expensive tools and looking at simple solutions such as usage of digital cameras, white boards, post-its.

5. Improving quality of code and reducing defects by early and continuous integration.

6. Applying the engineering practices like Test Driven Development & refactoring right from the beginning of the project.

and many more...
bottom line is, one could start fixing the issue internally by adopting the right processes, which adds value to the customer rather than applying the usual "inside the box" solutions.

Money transfer to friends and family made safe,quick and easy.iKobo Money Transfer is a new method of remittance that is easier and more secure than sending money orders

Wednesday, July 04, 2007

Absolute estimates and Relative estimates

As soon as you ask any software developer about the effort it takes to implement a particular requirement, the answer would be either in hours or days. This is called absolute estimate and in the agile world the concept of relative estimate has been introduced by Mike Cohn(atleast as far as I know !).

In case of relative estimates, one would estimate the size rather than the effort relative to each other and then, this size could be mapped to effort based on the velocity/some other means. But the key thing is to understand the applicability of relative and absolute estimation techniques.

Story points are the units used frequently while applying relative point estimation technique.

Coming to the applicability part, the business people want to know how many days or months it would take to deliver the product. You can't tell them that the requirements takes 55 story points, these numbers may not help them to allocate budget or prepare themselves to market the product. They should always be given the absolute estimates. But, the route to absolute estimates at this point should be through relative estimates. This is because, as we move higher the abstraction the clarity reduces and accuracy with absolute estimates decreases. At higher abstraction levels relative estimates suit better than the absolutes. The maturity of the team lies in converting these relative estimates to absolutes and sharing with stakeholders.

Generally, product planning, release planning phases are at higher abstraction level than the iteration planning phase.

At iteration planning level, one has more understanding of requirements and can be more accurate in providing the absolute estimates.

Monday, July 02, 2007

Trends in Software Development methodology

Here is a good article about the changing trend happening around software development, what business people are thinking about software development methodologies and much more... Check out the following article

Thinking like Scrum Master

Most of the time our behavior/attitude would adjust automatically to suit a particular role or designation. For example, If somebody is a senior developer he would be spending time thinking only about solving a technical problem, he wouldn't worry or think about leading a team most of the time. His thinking gets limited to certain area of his responsiblities only.

Similarly, as one is promoted to become a project manager or Scrum Master, thinking patterns would automatically gets adjusted to lead the team and showing attributes of a leader. Fundamenally people wait for suitable title/designation and then would try to change their thinking patterns, atleast most of the times !!

Recently, Pete Behrens one of the Agile practitioner suggested a good thought in the Agile discussion group, and thought I would share here:

If you wait for a title to behave as that title you will rarely make it
there - rather if your act and behave what you want to become,titles become
some what irrelevant.

Wednesday, June 20, 2007

Microsoft release eScrum tool

Finally Microsoft seems to be encouraging implementation of Agile methods across its projects, and predominantly Scrum. They have gone a step ahead and have created this Scrum tool too. Read more information about this tool here. Even though this tool seems to have been created for internal project purposes, chances are their that they can commercialize it.

Right now, RallyDev, VersionOne seems to be leading the Agile PM tools bandwagon.

Sunday, June 17, 2007

Performance Appraisal - Different perspective

Here is a nice quote from Ester Derby about performance appraisal:

"Performance is *not* solely a matter of individual skills. Performance is a function of the person *and* the environment. Policies, procedures, structures (and dare I say it) the quality of management all affect individual performance."
     -- Esther Derby"

What Every Manager Should Know About Feedback

Right now many companies are going through performance appraisal cycle, and the managers are supposed to give their feedback to their team members.  How should one give an effective feedback ?.  Here is a good article by Ester Derby on how to effectively give feedback to others. This article provides a clear difference between an evaluation/judegement and a feedback.  


Monday, May 28, 2007

Meeting Effectiveness

Recently I attended a European-Indian business summit and I was representing my company Valtech. Many Italian, Spanish companies were visiting India and were look for possible business partners.
The meeting slots were pre planned/agreed and were circulated prior to the meeting. The time slot was time boxed for 30 minutes each. Separate stalls were set up for each of the EU companies, and during the specified time slot, the representatives from the Indian firm would go to the stall and have a discussion for 30 minutes.

3 of us from Valtech, met nearly 10 companies in 2 days. An important thing I noticed in the summit was the time boxing of meetings for 30 minutes. I have never seen such an efficient meeting happening from my earlier experience. During the meetings with prospective customers, we were able to make out if this is a make or brake deal and within the first few minutes itself.

Somewhere I read that most of the decision happens within the first 15 minutes of the meeting. So, I think any meeting intended towards making some decisions, would be effective it
  • it is time boxed
  • lesser the time, the better
More info. on meeting effectiveness
In one of the Agile forums, Mark Herschberg gave the following tips to improve the meeting effectiveness:
1) Set fixed time limits. I learned this from scrum meetings where we had a
kitchen timer with 15 minutes to force everyone to be efficient. Even for
longer meetings this has been found to be effective. Even if your meetings
aren't any shorter. the act of having a timer visible on the table and
counting down helps to focus people.

2) Have an agenda. Often meetings don't have a clear agenda. Even if
people know what the meeting is for (e.g. our weekly status meeting) it can
be a bit vague and fuzzy. Every meeting should require the following:
a) These are the issues to be discussed
b) These are the questions we will have answered by the end of the meeting

3) Have a clear understanding of when questions should be discussed. Often
people get side tracked as various issues come up in meetings and people
wander down a particular thread. By knowing when and where an issue can be
discussed, it's easier to say, "that's a very good issue, why don't we
address that in X meeting which is for such topics." Everyone needs to know
what meetings there are and what each are for. I'm debating creating a
"catch all" meeting once a week at my current project so if there's anything
we miss, we can always say, "put it in the catch all meetings."

4) Build a culture of efficient. Make everyone want to have fast, efficient
meetings, and empower everyone to be able to suggest moving a topic to a
different venue,

5) Recognize that there is value in inefficiency. Fast, to the point
meetings, while generally effective, sometimes miss that creative spark that
comes from getting side tracked, from the random threads that usually are a
waste of time, but once in a while yield a great insight. (This is one of
the reasons I'm looking at a "catch all" meeting to capture some of the free
form creativity.)

Friday, May 25, 2007

DBUnit Mind Map

From the last few days I have been testing DAOs using DBUnit. During the process of learning, I created the following Mind map. I will keep updating this mind map as and when I learn something new.

Thursday, May 24, 2007

Scrum Master - Picken

A discussion on scrumdevelopment forum, whether the Scrum master is chicken or Pig, lead to one of the person terming SM as "Picken", partly pig and chicken.
In fact this article provides a information about responsibilities of SM at various instances.

Sunday, May 20, 2007

Agile @ Philips Innovation campus

18th May, I was invited by Philips Innovation Campus, Bangalore as a speaker to talk to their team on Agile and Scrum method. Alexius Collete, Head PIC Bangalore was present with other senior management team to be part of this session. Saran, took care of the entire coordination and provided me an excellent support for making this happen.

I could see the enthusiasm in the management team to know about Agile and how to effectively implement the same. This is a clear indication of the support for Agile implementation from the top management at PIC(top down Agile adoption strategy). There is no doubt that Agile gets nurtured in such organizations.

During the session, I was happy to see the auditorium jam packed with Agile enthusiasts. In the recent weeks, I have been invited by many companies in Bangalore !

Friday, May 11, 2007

OST and Multiplex theater

Since I learned Open Space Technology last week, I am trying to encourage my colleagues to use this as much as possible. Some new joiners have hard time understanding OST and some people get scared away by the word "Technology" in OST.

Here is an analogy(may be modified :-) ) to explain OST.

Imagine a multiplex theater running movies in parallel. These movies are based on a theme and these movies were chosen by the people who came to see the movies. You have a global ticket to watch any movie you like, any time you want . If you don't like anymovies, you can as well walk out.

Thursday, May 10, 2007

Benefits of Top down Agile adoption

My article on "Benefits of top down Agile adoption strategy" has been published on Agile Journal

Saturday, May 05, 2007

Good books on Agile Methods

Following Agile related books are found to be good by many readers

  • Agile Project Management with Scrum - Ken Schwaber
  • Agile and Iterative Development - Craig Larman
  • Applying User Stories, Mike Cohn
  • Agile Estimating and Planning, Mike Cohn
  • Collaboration Explained, Jean Tabaka
  • Lean Software Development, Mary Poppendieck
  • Agile Project Management - Jim Highsmith
  • Managing Agile Projects - Sanjiv Augustine
  • Domain Driver Design: Tackling Complexity at the Heart of Software - Eric Evans
  • Working Effectively with Legacy Code - Michael Feathers
  • Refactoring to Patterns - Joshua Kerievsky
  • Project Retrospectives: A Handbook for Team Review - Norm Kerth
  • Agile Retrospectives - Ester Derby
  • Fearless Change: Patterns for Introducing New Ideas, Linda Rising
  • Product Development for the Lean Enterprise - Michael Kennedy
  • Crystal Clear by Alistair Cockburn
  • FIT for Developing Software - Rick Mugridge, Ward Cunningham
Online Resources:

  • www.agilealliance. org
  • www.scrumalliance. org
  • www.theagileblog. net
  • www.mountaingoatsof
  • www.stickyminds. com
I will keep updating this list as and when I come across good ones..

Thursday, May 03, 2007

Open Space Technology

Craig Larman conducted an Open space technology event and I had the opportunity to be part of the event. This is the first time that I participated in such an event. Open Space Technology(OST) is not really like a technology, but a way of conducting events, meetings, conferences, etc.

During OST, the session could start with a specific theme. In our case, it was about Agile methods. When the participants assembled in this huge hall, Craig requested people to come forward with a burning issue related to the theme. Volunteers(conveynors) started pouring in with their burning issues written on a post-it, and pasting the same on a specific time slot.

Once the time slots gets filled, the conveynors would go to their respective counters, and interested participants can join the discussion.

some good things that I noticed:

1. The time passed so fast that, I didn't feel that it was a meeting. Enjoyed every minute of it
2. Lot of issues came up during the event.
3. participants can get full value of such events, as they can chose the topic.
4. Pretty informal setting

This might be a premature statement, but I felt that OST may not be effective if the safety and trust of participants is not built during the session. This is especially applicable if the theme is on solving burning issues.
For ex: if the team is planning to solve some people related issues of an organization using OST, senior management team present during the session might add a fear in team's mind. The fear would be due to the repercussion for being open.

It is also quite possible that, senior management by being in authoritative position, can hijack discussions. So, good facilitation skills are needed by conveynors to handle such situations.

Tuesday, April 17, 2007

Usage of Tool in an Offshore Scrum Meeting

I have posted the following article on my new blog Agile offshore blog

There are number of ways how a team can conduct Scrum meeting in an offshore environment.

It is always recommended to have the answers for the 3 questions ready before attending the Scrum meeting. In an offshore environment, the Product owner sitting onsite(Ex:Australia) may not be able to attend the offshore scrum meeting (Ex: India at 10 Am in the morning) due to time differences. Sometimes, even though PO is able to attend the scrum meeting, he/she might have issues w.r.t language and accent (Ex: between French and English speakers). Such situations have taught us that, usage of tools like a scrum logger would benefit both the onsite and offshore teams.

The offshore team can make use of some tool to input the answers for the 3 questions on a day to day basis before getting into Scrum meeting. The onshore customer (who is having issue with accent or language barrier) can go through the answers daily and can get to know the impediments or any other issues without being a part of Scrum meeting.

The above scenario has been given keeping in mind that only the offshore team is part of development and the product owner is sitting onsite.

Thursday, April 12, 2007

Servant Leadership and Chanakya

The servant leadership, a type of leadership development coined by Robert GreenLeaf is one which is referred the most in Scrum community. The Scrum Master is supposed to be a servant leader. Recently, while I was going through Wikipedia, I came to know that, servant leadreship is not a new concept and this concept existed even as early as 4th century. Chanakya or Kautilya, strategic thinker in India has advocated this concept in his books. As per Chankaya
the king[leader] shall consider as good, not what pleases himself but what pleases his subjects [followers]". He argued that "the king [leader] is a paid servant and enjoys the resources of the state together with the people"

Tuesday, April 10, 2007

Agile, Wiki and Trust

Is there any relation between Wiki and Trust ? I know it is difficult to believe, and it is true that there is !! Many organizations and teams use Wiki just as knowledge management tool Or a collaboration tool to share information across different teams spread across geographical regions. But this tool is much powerful than just a knowledge sharing tool.

The information that is shared in this tool shows the trust, the PMs have with their development team, the trust, the customers have with the software services vendor, and the top management has with their employees.

Consider that, you are an employee of a company in sales/marketing division. Can you put the day to day activities of the prospective customers you met that day, the discussions what you are having with the various customers, status of various accounts, etc in Wiki. Why not ??

If you are not doing this, it is mainly because you want to protect your customer information from getting into your neighbor who is another sales/marketing guy. You might be worried that somebody might steal all this information. You might be worried that your information would expose some of your weaknesses in handling the customers.

Consider that you are a developer in a software services firm, and can you put all the problems(as in roadblocks, to achieve goals) you are facing in your project on official wiki ? Why not ?

If you are not doing this, it is mainly because you are worried about exposing the problems of the project to public, customers and to the management and, the finally the consequences of getting thrown out of the project.

In each of the above cases, one of the main problems is the lack of trust within the team and across teams.

As we are aware, Agile methods would succeed only in an environment where people work together with no fear or favor and with trust. Now, coming back to wiki, the amount and type of information you put on wiki without fear or favor decides how much trust is present in your team and as a whole in the organization.

I have seen many organizations having a wiki with access control. It is not bad, especially in a software services firm, while working with multiple customers, NDA would force the organization to mask information from each other. But restricting access to public domain information shows the lack of trust.

If you have read Maverick , you would understand that Ricardo Semler even goes ahead and exposes the company financial information to all employees. Initially the senior management gets worked up and starts worrying about the possible leak of financial data to competitors by employees. During that time, Ricardo asks something like,
if you don't trust your own employees, why did you hire them at the first place ?

Friday, April 06, 2007

Applying Agile/Scrum practices in Maintenance projects

In many Agile training programs and conferences, common question that gets raised is, does Agile/Scrum works in maintenance projects ?

I always say "YES" and the team needs to tweak Or invent the practices to suit their needs.
Maintenance projects could be enhancement projects OR pure defect fixing projects.

Enhancement projects involve new set of development over existing one. Since the developers gets new set of requirements at the end of each iteration, one can apply the standard set of Scrum practices with little or no modification.

Defect Fixing projects involve fixing defects on closed or current projects not in development. Sometimes these projects are boring, especially if a new team has been hired for defect fixing purposes only. The customer sends a set of defects on a daily basis or weekly basis with a deadline to deliver. The development team needs to fix them ASAP and send the patch for further testing.

While coaching one of such a defect fixing projects, I found that the following Scrum practices can be applied without much modification
1. Daily Scrum meetings
2. Scrum of Scrum
3. Modeling days while solving complex defects
4. Information radiators displaying InProgress, completed, reopened, closed defects and other information
5. Usage of Wiki for collaborating with the customer
6. Requirement workshop while understanding complex defects
7. Review and Retrospective

Common problem that I have found in defect fixing projects include, setting the iteration length. Especially, if the defects are given on a day to day basis without prior knowledge of what you are going to get, it makes the life of the development team bit difficult.
This can be solved by collaborating with the customer and coming up with a plan to have 1 or 2 weeks of iteration length.

Sunday, March 25, 2007

Agile Offshore Development Tip 4: Involve Offshore into Scrum meetings

I have seen distributed teams following Agile practices but each one not really sharing information with other distributed teams. For ex: Both onsite and offshore teams would be conducting Scrum meetings but skipping Scrum of Scrums.

Important thing in distributed Agile development is to include the offshore teams for all important workshops. For ex: Requirement, Retrospective, Modeling days, Iteration planning meeting.

In many onsite-offshore projects, the onsite team handles the design/architecture part and the offshore team is involved in pure development and testing. This model makes many onsite teams don't feel like involving offshore teams for Requirement workshops, modeling days.
Which in turn leads to a huge communication gap and would result in creation of a poor quality product. The above mentioned scenario would also involve lot of hand offs from onsite team to offshore team, resulting in lot of wastes being added to the system.

Systems thinking needs is the key to succeed in distributed Agile development.

Sunday, March 11, 2007

TestSuites should be on Feature Themes

Many developers tend to package TestSuites to contain the tests based on technology/layers. For ex: TestSuites to contain the tests on UI layers, Dataaccess, BO.

Since we create unit tests to test a unit of functionality, the TestSuites should contain tests based on the Features/Use cases.

For Ex: TestSuites to contain Unit tests testing feature to add User Or Modify User.

Task creation for fulfilling user requrirements

At the end of the requirement workshop, first thing the Scrum team would be looking forward to is to create the tasks for the features. For the rest of the iteration, only thing they are worried is how many tasks they have been able to complete. In this process, they forget that they have to deliver the Running Testing Features(popularly known as RTF) to the customer.

One way to avoid this task creation madness could be to divide the features into smaller feature chunks that can be handled like a task. (Right now the discussion is going about this in scrumdevelopment forums)

For Ex: instead of writing a task like "Database creation", if we can rewrite it as "Database creation to fulfill the storyX" Or rewriting it as "Handling Database related work to fulfill FeatureX" could make the team to "NOT" lose their focus on features/requirements.

Thursday, March 08, 2007

Applying TDD while dealing with database related actions

There are numerous thoughts about how to go about applying TDD while dealing with database access related code. Some of the common thoughts include

1. Replacing DB with Mock Objects to simulate Database
Most preferred one. Advantages include
  • No need to worry about DB info, driver info,
  • tests run faster as compared to other techniques
  • No need to change any test code because you changed the database
  • Easier to maintain
2. Using a local copy of DB
Some programmers suggest to make use of a local copy of database for testing purposes. It has its own pros and cons:
  • One needs to be aware of local Database related APIs
  • Keeping the local copy of DB in synch with central test DB is bit tricky, especially with a large project team.
  • Easier to use
3. Use central test DB
In this case, test with the cental DB, and apply transaction/roll backs to clean up DB after the use brining the DB back to its original state

  • You can be confident that your code works well with the DB
  • goes against some of the unit testing principles created by thought leaders like Michael Feathers
  • Easier to maintain and use
  • Be aware of Database APIs, drivers, etc .
4. Use an in-memory DB (like HSQL) Or any other faster databases

Not recommended much
  • Again this goes against unit testing rules
  • easier to use
  • You are not sure whether your SQL queries tried against in-memory DB works with real DB

Monday, February 26, 2007

Group Thinking clouds decision

Recently I read this article, "Group Thinking Clouds Decisions" on live Science.
"http://www.livescie logy/070221_ friends_memory. html

As per the above research, "People have a harder time coming up with
alternative solutions to a problem when they are part of a group, new
research suggests." and also, "When a group gets together, they can
miss out on good options,"

As agile practioners we encourage people to come together and make decision as a team. I am not sure, what is the impact of above research on Agile practices. I have put this question in Scrum development discussion forum, and one of the respondants came back with the following response

There is a natural tendency for groups to seek a sort of median, but
with a group of exceptional people, that can be a fairly high mark.
A single study does not decide much in science

Even I am not sure of the impact, but time could decide !

Friday, February 23, 2007

Agile Retrospective meetings for new scrum teams

Retrospective meetings are the heart of agile methodologies. Scrum teams follow this religiously at the end of each iteration.

When a team starts practicing Agile methodology, how should they conduct the retrospectives, what should they cover during their first retrospectives ?

Here are my thoughts
1. Take the help from an agile coach if you are doing the retrospective for the first time

2. Do the +/Delta analysis for the time already spent on the project in the past i.e. cleanse the past !. This session might take anywhere between couple of hours to a day, depending on how large the past is. Let the team select important times lines from the past(release dates, company meetings, customer visit presentations during project kickoff,etc) and create +/D for those events. At the end of retrospective, the information can be merged together.

3. Let the participants spend some time on thinking about the past events before attending the retrospective meetings. Let them have a brief summary of things that went well, and didn't go well and things to improve. This would save some "thinking" time during retrospective sessions.

4. If the managers are coming from command and control background, it would be better to do a separate retrospective for managers and development team. Read Diana Larsen's book on Agile retrospective for further information.

Sunday, February 18, 2007

Semantic Diffusion

A nice article by Martin Fowler about thoughts, trends and future of Agile. He discusses the topic, if Agile just a buzzword ? where are we right now ? Are we on the right track ?

Monday, February 12, 2007

Sunday, February 11, 2007

agile Vs Agile

Here is a nice article on Agile Journal trying to differentiate between Agile Vs agile

Saturday, February 10, 2007

Traditional Planner Vs Agile Planner

How do you differentiate a traditional Planner Vs Agile Planner. Here are some of my thoughths about them.

Traditional Planner during planning
  • Considers that the developer works 8 hrs per day.
  • Allocates tasks to the development team and allocates features to fit into 100% of resource budget available
Agile Planner during planning
  • Takes Ideal Engineering Hours (IEH) into account. It could be anywhere between 6 - 61/2 hrs per day (from my personal experience)
  • Allocates tasks only between 70-80% of the resource budget available. For ex: if there are 6 developers working on 2 weeks iteration. He would then plan for 70% of (6 * 10 d * 6 IEH). (ofcourse, keeping holidays, planned leaves into account)
The 70-80% buffering is context dependent. Even though there is no standards available, Mike Cohn suggests, 70% of the planned effort needs to be targeted. There are various techniques to calculate the size of the buffer, and one of them quite often referred by Mike Cohn is "Square root of sume of squares" approach. I felt this is too mathematical and complex to apply during planing and many people have felt it is time consuming.

I have created a rule of thumb, if the iteration length increases, then the buffer needed to handle uncertainty needs to be increased accordingly.

I have tried with 80% planning in a 2 week iteration period, and it worked well.

One of the columns in Product Backlog(PB), we have been using at Valtech is "MoSCoW rule". This rule is extensively used in DSDM community. This column is being used to prioritize the requirements. These rules are very handy and easy to understand, as comapred to "High, low, Medium" Or "1, 2 and 3" numbers. It is advisable to fill 70-80% of the PB with Must Have requirements, and the rest with Should/could have requirements. Customer needs to be made aware that, if new tasks get discovered during iteration, the 20-30% of lower priority(SCoW) would be dropped.

More info. on MoScoW rule is available here

Monday, February 05, 2007

Tips during Requirement Workshop

While I was coaching one of the teams on Requirement workshop at Valtech, I jotted down some ideas, and here they are:

1. Once the feature team completes their "Questions", "Assumptions" part , ensure to do the Show and Tell exercise

2. During Show & Tell (ST) exercise, ensure to remove the duplicate questions/assumptions immediately as soon as they are found. This would help the team to consolidate in the end

3. During ST, If anybody in the team answers the questions(from the questions column), and found to be accepted by others, move the same to "assumptions" section.

4. If you are working on UI related application, keep the mock or prototype of the screen handy. This would immensely help the teams to visualize validations/screen structure, etc

Thursday, February 01, 2007

Features and Tasks

I have seen many programmers getting confused between Features and tasks. Features are going to be part of Product Backlog and Tasks, are added by the developers into iteration backlog.

Features/Requirements are given by the Product owner. Iteration Backlog should contain only those tasks that would add value to the customer. There are certain tasks that need not be mentioned explicity. For ex: Refactoring, if you are following TDD.

It is assumed by default that Refactoring is going to be part of TDD(TFD + Refactoring). But, until the team gains profeciency in this area, they might have to explicity mention it in iteration backlog.
Similarly, Unit testing. If you are following TDD, then adding a task like "Coding..." would imply by default that, unit testing is done.

Friday, January 26, 2007

Nice Article on Agile Contracts

Here is a nice link on various types of Agile Contracts (Fixed Price, T&M, etc)

Wednesday, January 24, 2007

Software Development Vs Construction of the house

A house is being newly constructed in front of my house. I have been watching this from the last few weeks. One day, I saw the owner with the architect at the site discussing about something for a long time. I am assuming the owner was trying to explain his requirement to the architect. After few days, I could see the plan with the architect and he discussing the same with owner and making corrections. After a while, I could see some construction workers starting their work by digging the foundation, building the house wall by wall. I know that this is pretty much the same process everywhere no matter where you are. Most of the time, the house gets constructed within the budget and within the time.

I was wondering, why can't we follow a similar process in Software development. In software too, we have the product owner, architects, etc. Why can't we deliver the software within the budget and on time (atleast 50% of the time).

I know we can't in software, here are some of my thoughts:

1. During house construction, there is mostly freezing of requirements during the initial stages

2. In waterfall model, freezing of requirements was tried and we know it was a failure. In agile methods, we tend to keep this open and ask the customer to prioritize and give the requirements.

3. Advantage in software development is, the customer can change his requirement at any time. So, there is a huge responsibility on the software architect to have a flexible architecture.

4. During house construction, since the requirements are frozen, there is a little room for the owner to change his requirement once the foundation is laid. It does not mean that the customer should not Or cannot change. But the key point to note here is "Cost of change" in house construction is more than in software development (assuming robust architecture is in place !!)

Friday, January 19, 2007

Good Books on Agile

Here is the list of some of the good books on Agile software development and related areas. I am hoping to keep this list updated:

1. Agile and Iterative Development by Craig Larman
2. Agile estimation and planning by Mike Cohn
3. Extreme Programming Explained
4. Test Driven Development by Example
5. Pair Programming Illuminated
6. Agile Project Management with Scrum by Ken Shwabber
7. Agile Project Management by Jim Highsmith
8. User Stories Applied by Mike Cohn
9. Rapid Development
10. Crystal Clear
11. Goal
12. Critical Chain

Saturday, January 13, 2007

Scrum Vs Traditional Project Management

Here is a nice article comparing Scrum with Traditional Project Management

Tuesday, January 09, 2007

Traditional PM Vs Scrum Master

When agile methodology(specifically Scrum) is introduced into an organization, first question that is discussed is about the scrum roles. Many of the Project Managers(PM) get worked up about their new role as Scrum Master(SM) and lack of clarity around this new role(SM).

There are a lot of misconceptions and misunderstanding about role of SM. Most of the questions comes from the statement that "Scrum Master has no authority". It is the inherent nature of human beings to "Control" things around them. PMs start connecting that "No authority" means "No control". They feel powerless.

Some of the common functions executed by traditional PM include:

  1. Assigning tasks to the development team
  2. Estimating the features and tasks(by sitting with architect or tech leads)
  3. Resolving conflicts among team members
  4. status update on behalf of team members with the customer
  5. Time sheet management
  6. Resource management
  7. Change request management
  8. Single point of contact for the management for anything related to project
  9. Single point of contact for the on site team for anything related to project
  10. Leave approval
and many more...

Responsibilities of Scrum Master include
  1. Ensuring that everyone follows the scrum rules
  2. Bringing the scrum team and product owner together
  3. Removing the impediments from the project
  4. Helping the team to move towards self organization
  5. Servant Leader

If you compare the roles of PM with SM, you could see that many tasks are missing in SM. Who would do those tasks ? Everything lies with the team. This is exactly the reason why self organizing team is critical for success of projects practicing Scrum.

It is critical that traditional PM is convinced and has understood the roles of SM properly. Any misunderstanding leads not only failure of the project but also, failure of the entire team in implementing agile. Traditional PMs with half baked knowledge of Scrum Master role would be causing more harm than anything else.