Nowadays, using agile methods is not only a common trend in software development companies but also supposed as a silver bullet for relive their pains in development processes. Now main question is that “could all companies change their development approaches to an agile method?” To be honest the answer is “Yes” although there is some symptoms. Due to these symptoms, most paradigms changes to agile not only failed but also during this change the incarnations of company gloaming will be appeared. In this post I will try to discuss some of these symptoms.
First of all, you have to answer this question “How do you define success in your projects?” In order to most common definitions of successful projects, many companies use “Meeting Time Constraints” as one of the success indices. If you define a project as successful, if and only if it meets its time limits while it meets project fixed scope goals, you are not ready to work with agile development teams. As it’s amply clear in agile manifesto one of the base value in this paradigm is creating business value by response to changes regardless of following plans, so as first step in agile journey you have changed your success measurements. Thus you have to change your strategic planning method in the head of the organization to manage project portfolio based on a more adaptive mind set than a yearly (Or more) fixed strategic plan, you have to learn that change your plan based on environmental changes and use “Plan” as an appliance to manage your movement toward goals not as a goal itself. Agile paradigm has been used to handle changes throughout the unknown business atmosphere which is unpredictable changes is a routine where you have to do experiments and get feedback then make correction on your road map.
Second issue is about your people. The importance of people and their interactions have been emphasized in this “Agile Manifesto” statement “Individuals and interactions over process and tools. As we all know, people will trust each other based on their common background and experiences and most important parameter to have an effective interaction is “Trust”. How could your team members trust each other when due to high human resources turnover some guys in your team are always new and could not establish a deep relationship with each other? If you don’t have a long lived team, you have to avoid reducing the ceremonies in your team management because these processes and tools which support this ceremonies help you to have project information out of team member memories. Therefore if a guy was replaced in your team you would have a chance to transform your project information to new members. Moreover when you don’t have an official process for overseeing architecture and design in your development environment you need non novice developers who can emerge a sophisticated architecture and design based on best practices. However, if your team members are so young and novice, you have to be sure in quality of architecture, design and even sometimes codes which have been written. Besides the statement “Working software over comprehensive documentation” in agile manifesto is affected by the quality of your team member and average age of your teams, as mentioned before you need to document your knowledge to transfer that while team members change frequently.
In addition, your customers and their type of contracts are impressed your ability to use an agile method in your development teams. How do you want to adopt agile methodologies and their practices will you have a fixed price and fixed time and fixed scoped contract with your customer, based on this type of contract you must a working software with adhered features and scope, not only you can not change the feature list easily but also you can not the time frame for your project. Thus with out different type of agreements with your customers you can not adopt agile methods in your team.
For sum up you have to provide some prerequisites before starting a paradigm shift to agile mind set,You some changes in your strategic planning and make it more flexible and measure your improvement with different techniques than usual, also you need either to create a long lived team which is consist of some practitioners or teach your guys to be empowered in creating high quality software, on the top of these you need different customers; Nonetheless you can use some agile method practices to improve your current development process agility but you should know you are not agile and you only try to use some of its practices partially regardless of this you might be fallen down very soon.