Already 55 years ago, Melvin E. Conway came along with the
insight "Any organization that designs a system (defined broadly) will
produce a design whose structure is a copy of the organization's communication
structure."
Since then, the software product world has changed
dramatically while most of the software companies have been created within that
time. Around 20 years ago, the Agile Manifesto was released and is spread since
that through the world and a lot of companies jumped on the Agile topic -
jumped on and not dived into. And while more and more jumped on, the questions need
to be raised why a company wants to go Agile.
-Why Agile?
The higher in the hierarchy you address this question, the
more it will spread through the company. A good place is to be addressed within
a company plan or vision. If you do it just in your development teams as it is fancy
to have Agile teams, then you will get this structure sooner or later into your
product and it will not be good. Keep the law in mind.
Changing an organization is probably the most difficult part
in an organization because it results in gaining and losing influence and
power. Thinking e.g., on Scrum, there is no line manager needed and of course
this causes social fear in these people. Also, the team members who gain power
and responsibility need guidance.
The lower in the hierarchy Agile will "deployed"
the more methodical cutlines you will face. Then you have people within and
outside of Agile.
-Face the uncertainty
Uncertainty is always present in software development. The
question is how to handle this. When the team is stable, uncertainty can be
reduced by addressing learning session to reduce knowledge gaps and for project
management to use forecasting on existing data instead of forecasting on estimating.
Keep the iron triangle in mind. If you try to fix all edges
you are lost. You can deal with uncertainty but not get rid of it.