The representatives of agile development methodology have defined their most important values:
- A new role understanding for developers, managers and customers
- No big steps ahead
- An interactive and iterative development
- Limited, negotiated functionality
- A focus on quality, to achieve through test
The agile understanding of a role gives the team a great deal of weight and leaves the selection and allocation of upcoming tasks to the team. The manager is understood as a supporter of the team, no more than decides. Customers are no longer just passive receivers of the development results, but actively participate in the development process. In many cases, you have a representative in the team.
Planning and the creation of requirement documents often require considerable effort in non-agile processes. The advocates of agile methods claim that customers often do not know what they want at the beginning of a project. Even if one plans and compiles requirements, this work will be overhauled and changed in the course of the project. Pre-designing designs is considered a waste of time because you do not even know what will and will not work.
Instead of creating preliminary requirements, it is recommended to interact with the customer at all times. In this way, the development team gains insight into the customer’s problems and, at the same time, provides a timely feedback to the already developed development result. Instead of one of these, the interactive approach is preferred when building the system. Necessary changes to the design are achieved by “refactoring”.
Agile development is very much interactive due to the strong involvement of the customer, and proceeds in fixed time segments ( “iterations“) . At the beginning of each iteration, a list of the desired functionality is created from which the team selects the tasks that promise the highest business value or ROI.
It is not the deadline that is negotiated, but the range of functions, which can be delivered at the end of the time period. Agile developers believe it is unrealistic to create an overall plan in which both a functional scope and a delivery date for a finished product are defined. Agile planning is always only binding for the next period of time, which usually extends over a few weeks.
Quality is achieved mainly by testing, according to agile understanding. Regression tests play an important role in ensuring that the software is constantly improving. Other approaches to improved product quality, such as formal methods, reviews, or design, are considered mostly irrelevant.
Critical Review of Agile Values
There are many developers who are inspired by the agile methodology and especially by Scrum and Kanban. This is not least because developers want to write code and no documents. Also, it is usually more unpleasant to work against a plan, than to be able to determine more or less what you want to achieve in the next two weeks.
Giving a team greater decision-making competence works when the scope of the total project requires less than about ten people to process. If the project becomes larger, the number of interfaces between the various team members will increase significantly, and clusters must be formed whose interfaces are realized by individual clusters of the clusters (called “managers”). Because one can no longer assume that any team member can speak with anyone at any time. Experience shows that agile methods are scaling badly.
The absence of longer-term planning and the creation of requirements before the implementation is implemented is particularly effective when systems can be developed incrementally. The agile approach is therefore suitable for the further development of existing systems and wherever the conversion of an existing solution does not cost more than collecting requirements in advance. It is easy to imagine, however, that it is not advisable to build a two-family house according to this method. The same applies to systems in which not only software but also the development of hardware plays a role.
A development into fixed time sections is independent of agile or classical methodology a recommendable procedure. Due to the fixed rhythm, one specifies a requirement for the planning, in which one must consider, which new functionality one can realize in a time block lasting a few weeks.
Developers like to write code, and writing regression tests can be a lot of fun. Whatever the nature of the chosen methodology, it is useful to have automatic tests. Tests are used to detect errors. The probability of discovery is always less than 100%. In this respect, it is often more effective to prevent a mistake, instead of having to search for it later. Focusing on defect detection instead of defect avoidance is therefore only to be considered if the effort for the creation of the tests is considerably less than the effort for a careful design.
The Role of Tools
There is a bunch of Scrum software that eases the life of developers. Complicated project management software is not required any more. Next to Scrum tools a number of supporting systems are considered important. Examples are continuous integration systems like Jenkins und configuration management systems like Git and Subversion.