In part 1 of my Achieving Flow series, I discussed some of the hidden wastes that occur with most agile projects. Essentially each time there is a handoff in a project, it introduces delays. This includes handoffs to QA, handoffs to DevOps, handoff from a Product Owner (via Sprint planning), or even just handoffs within the team to name a few. These handoffs might just seem like a regular part of the process, but there are ways to eliminate them, and thus save a lot of wasted time. One concept in agile is to have cross-functional teams. What it means is that, ideally, the team is capable of taking care of a desired feature, from start to finish. If the work requires back end work, the team should have that capability. If a feature requires UX work, the team should have the capability. Taking it a step further, it can encompass DevOps, QA, UX, Product Ownership, etc. After-all those are all roles, not just titles. A developer is capable of learning DevOps. A front-end developer can a
One of the central tenets of agile software development is the ability to quickly respond to change. Instead of planning for months or even years at a time, as was common before agile, many software teams plan in short 2-3 weeks iterations. While that's certainly an improvement, to a much lesser extent there are even more nimble teams that deliver daily. There are many things that impact a teams ability to deliver quickly. Technical debt, unclear business needs, and constant interruptions are a common few. However, by and far the largest one of them all is not widely recognized. It's all of the waste we have baked into our processes. Let's examine a typical scrum sprint. The product owner comes up with requirements in the form of user stories. During the sprint kickoff the requirements are reviewed with the team. While many questions are answered during this meeting, ultimately more questions will come up afterwards. If the product owner is not immediately available to