What I learned from Theory of Constraints that the overall system performance is determined by the slowest component in the value chain. What I learned from lean (esp Toyota Production System) is that we implement fastest way to respond to client demand and removing waste which elongates the Lead Time. What I learned from Agile is that software teams are self-organized in order to commit on delivering client valued software incrementally and often.The following diagram demonstrates my view of a Lean-Agile software company.
The cloud in the diagram is the business area which can create any kind of demand to the engineering teams. The engineering team for me is the bottle-neck in the whole system. The whole company ability to timely deliver is determined by the velocity of the team. We should make the project and team synonyms. The project is the team and the team is the project! Better remove totally the term software project. The backlog drives team’s development activities. The backlog is against the constraint in the overall system, which is the team. Agile from my view has tried to ease the constraint by increasing the team flow of value and therefore reducing the overall Lead Time.
Having the project same as the team means any source can add to the team backlog. But, business people should decide the team priorities. In other words the team is focused on the engineering work and increasing its velocity. Meanwhile, alignment of team priorities with business objectives are taken care by the product owner and business groups.
Frustration originated from the illusion business people had that if they created project with related requirements the teams will deliver. Business people need to add requirements against team backlog and influence the release planning and prioritization activity accordingly. The business project which creates demand is relevant mostly to business people while the project has very little relevance to the team.