- Re-factoring: I am aware that particular section of code needs re-factoring, as it was just built as a prototype. But it will have to wait, as the feature development takes priority over re-factoring.
- 3rd Party dependency: I know we should integrate with these newly released 3rd party libraries as it contains the fixes we need. But based on prior experiences it could take up to a week. It would be better if we do it in the next iteration.
- Tests: I wanted to write end to end automated test case for this feature, but if I develop that, I can’t test the other features under development. I will plan for automated tests in next iteration.
- Defects: We are done with our stories, but we have 10 open defects that we plan to target first thing in next iteration.
Friday, August 28, 2009
Agile and Scrum buts causing Technical Debt
Sunday, August 23, 2009
Enterprise scrums - A Tiered Approach (Implementation)
The guidance process gives direction and generates prioritized iteration backlog with sufficient details for scrum teams. Next step is to glue deliveries from these individual scrum teams together to have a viable end-to-end demo at monthly boundaries. To achieve this, we have setup integration-level scrum development team. This scrum team by itself does not develop any functional software, but it develops a framework to build and test the deliveries generated by feature and component teams for Tier1 goal. This scrum team also owns release management activities for the product being developed.
To achieve integration at the monthly boundary, we broke down the monthly sprint schedule for all scrums into 3 weeks of development with the last week of each month reserved for hardening phase. With this approach all scrum teams plan for 3 weeks worth of work and are done with their feature deliveries by end of 3rd week. In the hardening week, each scrum team verifies that they have met the "Done" criteria for their planned user stories - "Done" means all automated end-to-end integration tests passed, acceptance tests passed, functional specs and design updated on wiki, etc.
During the hardening phase each scrum team also makes their deliverables available to the integration-level scrum for overall integration. If there are any hiccups during the integration testing, scrum teams makes themselves available to fix those issues. An additional point to note is, integration is not just happening at Integration-level scrum, it's also happening between component teams and feature teams. As and when code is ready for integration, feature teams consume deliveries from component teams. Integration-level scrum is where all scrums deliver and everything comes together for end-to-end value-driven feature that customers value.
To further align and ensure all teams are working in unison and bring transparency, we have daily Scrum of Scrum at Integration-level scrum with participants from all scrum teams. At this forum, we help resolve any team impediments as well as dependency issues.
This is the strategy we are using to align scrums and develop value-driven feature for our customers in enterprise environment with global teams. Are you using a different approach that worked for you? if yes, I would be really glad to hear your experiences.
Wednesday, August 19, 2009
Enterprise scrums - A Tiered Approach
Friday, August 7, 2009
Would longer build time hamper Agile Development?
This is one of the biggest issue I have seen in enterprise environment for teams trying to be Agile.
Consider multiple scrum teams delivering features and bug fixes to a common stream. If nightly builds takes 8 to 10 hours for completion then it’s difficult for this group of engineers to be Agile. Build can take long times for various factors like
Hardware – Build is running on slow network and/or running on older hardware that is unable to keep up with the demands.
Software – Build has circular dependencies between modules; each module is being executed in serial order, etc…
Global teams - If multiple global scrum teams (Ex.
In addition, isolation of build knowledge at single geographical site adds to the delay in generating timely build.
Here are some possible solutions…
In my opinion, enough investment should be made on hardware and the tools used for build environment. Future growth and needs of the product should be kept in mind while designing the build system to avoid future disruptions to the build system.
Sufficient investment should be made in people who understand build system so that issues like circular dependencies in the builds can be broken.
If need be, take hit on active development to split the serial execution of modules so that they can be run in parallel on separate hardware to speed up the overall build process.
Train and educate build personnel across each site to avoid single point of failures.
I have led some successful agile projects and have seen over and over again that by investing up front and taking control of build environment helps reduce overall build delay. By setting up build environment using continuous integration server like
The question you should ask yourself is – should I spend time and money NOW to correct this problem, or am I willing to take a hit, and pay the price of not fixing it forever.
Have you ever faced such situations? How did you remedy it?
There is some good discussion on this thread at "ScrumDevelopment" forum.
http://groups.yahoo.com/group/scrumdevelopment/message/40744
Thursday, August 6, 2009
Have you ever tried geographically distributed cross functional scrum team?
- Planning meetings, Retrospectives, Demos, Daily Scrum meetings were becoming extremely painful due to time zone differences. Morning meetings in US meant late night meetings for folks in Bangalore and vice versa. Put Cork from Ireland in this mix and you are left with couple of hours slot in the mornings. As time progressed, getting full participation from all team members became challenging and as it was affecting people's personal family time. This is where I believe site afffinity that Ken Schwaber swears on definitely helps to build team momentum.
- The idea behind co-located, self-organized team is to ensure that all issues are resolved by standing in your cube and giving a holler to your team mate. In global scrum teams, this is a major impediment, as defect fixes, build failures, code reviews, etc might have to wait until the next day. Again this depends on how the expertise in your team is distributed. As a Scrum Master, I have lived this experience where teams had spent cycles waiting for updates/feedback from remote site that could easily have been avoided.
Tuesday, August 4, 2009
Can you form a Scrum team with just one person?
Recently, one manager approached me for advice on scrum practices which I was happy to assist with. This manager had a request to build some new features and integrate the same with the existing product. She was also looking to develop these new features using Agile software development with Scrum. All was good with me so far. What I found a bit unusual was this manager only had one person @ 60%capacity to work on the scrum. The manager herself would play role of a scrum master as well as a product owner.
My first thought was does she even have a Scrum team, a team of just one? However, talking further with this person and understanding what she was looking for, I thought one person scrum might make perfect sense too. She was looking for predictability on how long it will take to get this project done with one person working at 60%. Secondly, she also wanted to make a case to management that this project might not be one person effort and would need multiple folks to pull this release off. So, scrum made perfect sense for both her concerns. For now, I have asked her to do capacity planning, list sprint goal, conduct planning meeting, and finally demo at end of the sprint to demonstrate what was achieved to management. Only time will tell how successful or not so successful she was. However, I am inclined towards saying one person Scrum team is a real scrum team and a lot can be accomplished by this one person army.
I have posted this blog in scrumdevelopment forum and it has generated some really good discussion.
Saturday, August 1, 2009
How to roll out a process for large global teams?
- One approach is to roll out a process in phases. Select couple of high performing teams and educate them on a new process. Monitor and measure their progress for a short duration (2 to 3 weeks). Once you feel comfortable, use their success stories and start rolling out the new process to all teams by conducting further meetings. This also gives you an advantage of making tweaks to the process based on working experience of these teams. The cons of this approach is, it takes a while until the entire organization comes up to speed.
- Another approach is to form a team of key players like managers, team leads, scrum masters for Agile development across the organization that can be trained and educated on a new process. The next step is to hold them accountable as well as responsible for rolling out this new process to their teams. The trick to making this approach successful is to ensure that these subset of players talk and have same understanding of the process. If not, its difficult to get consistency, as each team will be trained differently based on the version of the new process understood by these trainers.
