When we talk about agile adoption or implementation of agile in project or work; often, the first thing that comes to our mind is iteration. And we start to worry about roll out and requirement planning for incremental and iterative development.
While, iteration and incremental delivery is an essential aspect of Agile, it should not be the starting point, from agile adoption per se. First thing, you should be concern about, do I have fully cross functional team(s). If needed, be brave enough to shake up the current team structure and re-org them in to cross functional teams.
Let’s see this example, to understand the point I am trying to make –
Say you are working in a fairly large size organization and you are traveling / relocating to a different country for some work assignment. For all immigration (visa) & travel related things, your organization have different inhouse support team (sounds similar). Now when you start travel & visa process, you need to reach out to or follow up (over mail or some ticketing system) with respective departments, one by one. For visa, documentation, forex, air tickets, hotel booking, so on and so forth… at time these processes are really cumbersome and unproductive for you (as you might be working on some other deliverable).
Some organization have better approach, and they have single window or single point of contact system. For employee it may seem friendlier; but internally, there are still sperate teams, working on a defined process, one after another. One can see status and workflow log; so, it seems effective, but in realty, it is inefficient. Many things that may happen in parallel, are happening sequentially; as defined in process…. Incremental but not agile.
Just imagine, in place of separate team like Visa, Forex, Travel deck (at times separate teams for Air, cab and hotel bookings), insurance, etc.; we have cross functional teams consist of people from all department. Say organization have 10 departments (for this purpose) with 5 people in each department, so in total 50 people working. In place of 10 teams/department; I would re-org it in 5-6 team with equal number of people from each department.
Any new request will come to a common system (say master product backlog) and will assign to any team (team specific product backlog). Then team can complete it quickly, as they have all the elements / skill / resources needed to fulfill team. Team may follow Kanban or another model, to be more efficient and self-organizing. Now it will be more efficient and Agile, though not incremental necessary.
From employee perspective, it is much effective and easy; no extra cost to organization as no addition of new people, in fact, added efficiency will now reduce cost, on top of satisfaction of support team members.
Now, think from a customer (business function) perspective, by having different requirement, development, test and deployment teams are we not doing the same. Sometime event different frontend and backend team OR technology or skill effective teams. In place of that, we should have cross functional team; sufficient to manage and delivery the requirements end-to-end. That should be the starting point of an agile adoption.