I’ll keep myself in most important things.
Most of the software projects are complex. This is stated in Appelo’s book and is based on research of many people. My experience is that one major reasons for complexity is need to do something which is difficult to explain for the users. And for users and customers it’s difficult to explain to you what they really need. Nothing can be sure before you can see it and try it.
Other major thing is organization layers. Even if it is difficult to know what to build it is even harder when you have multiple people in communication chain. How to know that we are building right thing?
Also complexity exists in the product itself. There needs to be taken care of maintainability, security, scaling and so on. Also there might be 15 year old legacy code behind product core architecture. How to make sure that product is build right?
Agile methods for my product
So I can’t know 100% what user want’s. I need to get feedback for product and therefore I prefer to have check points where I can check if we are building correct things for the users. And if there is something going to wrong direction I need to be able to change my plans. As we know iterations works here nicely. Like I read from Toyota way book about continuous improvement with PDCA:
Also it is important that there is reduced organization layers between development and customer. That is the way how people who actually are building the product can understand problem to be solved. Developers needs to be able to stand in customer shoes. Side-effect is that when people are able to empathize problem they are able for trying to seek the best way to solve it. Not just add feature after feature. That is the way to build best product.
Agile methods for my people
I don’t want to work with organization where can be stated that: management want’s more out from the development and development thinks that not full of their capabilities are used. It’s one of the biggest waste. It makes me angry (this energy can be used to positive way like changing organization to be more effective). As we are working with complex environment, where I assume that nobody alone can’t understand all things, then we need to have teams. Teams which contains people with different competences. For teams we need to make environment where teams can use their full potential. For me it means things like:
- Team can decide what is best way to work together
- Listening team about solutions what could be used
- Let the team build the software
Management needs to give direction where to go. For example: they need guide what problems team needs to solve and which quality level to achieve. It can be either customer problem or process problem.