How the Agile Teams and Organizations Mature and Become Fluent

Agile Fluency - How The Agile Teams And Organizations Mature and Become Fluent

It’s not quite easy to switch from Waterfall Model (I prefer calling it a “Waterfail” model) to the Agile platform. But patience and learning greatly pays off. As you can see in the beautiful diagram above by James Shore and Diana Larsen, there are various shifts that happen along the journey providing various values. As you construct a new Agile Team and begin working on it, the major shift that happens is Team Culture Shift. Going from your cubical private seating to open seating planning preferred by Agile is a mindset change, it’s a team culture change. People take time to like it, adjust it and then will slowly start loving it.

Once the team members mentally accept the new Team Culture (Some of them do, some of them break apart but the final team that has been mentally ready is the team that will start providing the value), the focus will be on business value – what value the team can produce for the business. Along the way, as you can see, the team advances in the skill, so there will be a team skill shift. There will by Poly-skilling, people will start learning the other domain, developer’s will begin testing, testers will learn writing requirements (in order to be a cross functional team). If you have Java and Cobol developers sitting on the same team, people might cross one programming paradigm to another.

Then comes the Delivery of the value – where the shipment of the product is done more frequently, capturing of the value is done more frequently, defects and obstructions are detected and revealed often and early. Then you will see the organizational structure shift. Maybe there will be more agile teams coming along. Stakeholder’s may start understanding the value delivered by Agile teams. Once you the team fine tunes the delivery and organizational shift occurs, then various experienced agile team can then start focusing on optimizing the value that is being delivered. You may start making decisions that are great to the company, you may notice that the handoffs are eliminated. The decision making progress takes speed. The business gains feedbacks quicker and respond quicker.

What follows is the organizational culture shift that leads to the optimization for Systems. Agile teams can then be optimized based on what various systems perform, what their domains are etc. This leads to cross pollination of perspectives thereby stimulating innovations, and optimizing value stream. Then you gain the Agile Nirvana !! You and your company has mastered the agile process, adopted it and started to gain the most benefits out of it. You have become agile fluent.

N-Things You Can Do With Continuous Integration Tools Hudson and Jenkins

Hudson (or Jenkins) is a great tool for continuous integration. Once I learned about it and started doing continuous builds and integration for my projects using hudson, I am simply in love with it. It is so flexible, light weight and does a variety of things. With over 400 different plugins available at their update website (see Jenkins Plugins Page and Hudson Plugins Page) , you can extend your base installation of this tool to do a variety of things.

If you still evaluating why you or your company needs this tool, here are a few things I noted down that you can look at to make your decision. This is by no means  a complete list of items. Hudson and Jenkins are far more powerful that just doing the items that I have listed below.

  1. Poll subversion for any changes and trigger a build if any new changes are available.
  2. Tag the release back to subversion.
  3. Schedule Ant or Maven builds based on cerain triggers such as code change or time,
  4. Trigger another build when one build completes.
  5. Trigger a build when Maven dependencies have been updated by Maven 3 integration
  6. Trigger a build when Maven SNAPSHOT dependencies have been updated externally.
  7. Build a project after another project is built.
  8. Automatically reschedule a build after a build failure using “Naginator Plugin”
  9. Build a project with Parameters via “Parameterized Trigger” plugins. The parameters passed could be for example, build label etc.
  10. Run your JUnit Tests automatically and get a nicely formatted graph
  11. Run the code coverage (Clover, Emma or Cobertura) automatically and get a nicely formatted graph
  12. Configure to run Checkstyle for capturing the code formatting issues and present the output in a nicely presented graphs.
  13. Look at the list of recent changes that were made on subversion by revision numbers.
  14. Copy the build artifacts to FTP, SCP, Network folders or other local folders.
  15. Run automated Tests using Cucumber
  16. Run automated tests using QTP
  17. Code Quality Metrics via “Violations” plugin.
  18. Run multiple builds in parallel.
  19. Send a list of people an email (Can be customized) when the build fails, is successful or has JUnits failing.
  20. Group your build jobs on different Views that are displayed as tabs.
  21. View quickly what builds are currently running.
  22. Look at the build history for build time taken, build status etc.
  23. Look at the console output of the build that is constantnly updated via Ajax calls.
  24. View the disk space usage.
  25. View the build time trend graphically
  26. Integrate Hudson Build With Sonar – via Sonar Plugin
  27. Run the build from web – no more kicking the builds from consoles or terminals.
  28. Secure the hudson access via LDAP. Users and user permissions can be added, modified or removed to finer levels.
  29. Run the hudson server itself as a service.
  30. Limit the maximum number of builds to keep on the server.
  31. Monitor your build via iPhone app – “Hudson Helper iPhone app”
  32. Monitor your build via RSS

List of some popular agile methodologies of software development practices

The following are some currently well known agile software development methods and practices in software development arena. Since the whole agile concept is in the evolutionary phase, do not expect these methodologies to be fully matured as the Waterfall methods, but they sure are progressing towards the maturity.

  1. Agile Modeling
  2. Agile Unified Process (AUP)
  3. Dynamic Systems Development Method (DSDM)
  4. Essential Unified Process (EssUP)
  5. Exia Process (ExP)
  6. Extreme Programming (XP)
  7. Feature Driven Development (FDD)
  8. Open Unified Process (OpenUP)
  9. Scrum
  10. Crystal Clear
  11. Velocity tracking
  12. Kanban (development)