10 Principles: What Is Agile Based On
In this article, we will present 10 aspects (principles) of the Agile Project Development. This methodology is important for managing of different project types, so we are exposing here the main agile practices.
1 – Customer communication
Customer satisfaction is very important in every project, and that is also valid in the software development. This means your software will need to incorporate all required items and modules. The client of the software product should always be informed about the progress of the project and he decides (together with the team) what should be done in the next sprint. This permanent interaction between the team and the client will ensure that the client will get all the required functionalities. By frequent presentations, the customer will see the real progress of his software and will give you proper feedback on each new feature. When the client is actively involved in contributing the ideas, features and functionality to the application, he is more likely to approve the result.
2 – Accept requirements changing
The Agile methodology is very suitable if you face frequent changes of requirements from the client side. The clients always need fast deliverables that will satisfy all of their ideas and desires. You can achieve this only by careful talks with the client in order to grasp the new inputs and to implement the changes. If you can react quickly to the changing requirements, your team will be highly appreciated by your client. Agile will improve your communication and the acceptance of changes. You can create features that you were asked to do, making the software development process finish earlier. You can achieve this if you develop small pieces of software, so that the change in the requirements will not affect you.
3 – Frequent delivery
The software developed during one unit of time, which is usually from 1 to 4 weeks, is called iteration. Each iteration is a complete software project, including requirements, design, coding, testing and documentation. Iteration may not have enough functionality, but the aim is to have available release without bugs, at the end of each iteration. After the iteration – the team will re-evaluate the project. For example – you can get a request from the client to display textual content on the screen. Alter on – the client asks for an input form that should be able to send an email to a selected address. Also, the form should be customizable, so the user can add new fields and define validators. So, the initial requirements for a simple text field have changed drastically and you have to accept that.
4 – In-person communication
The client of the software product is always informed about the progress of the project and he decides (together with the team) what should be done in the next sprint. This permanent interaction between the team and the client, will ensure that the client will get all the required functionalities. Face to face contact will facilitate the communication between your team and the client, and will allow you to grasp more information. But above all, you will have to build trust among each other; trust could be gained only if you encourage face to face communication.
5 – Use continuous integration
In the agile development – programmers often commute their code several times a day, asking frequent builds of it, additional configuration and testing environments. To achieve this, there are some basic practices that we should adopt: code automation, continuous integration (continuous integration), continuous delivery (continuous delivery), continuous assessment (continuous testing), and monitoring. We can apply different automation tools (DevOps, Puppet labs, etc.). Daily Scum meetings are short morning meetings, lasting about 10-15 minutes. The whole team is present and led by the Scrum master. During these meetings – we talk about three main issues: to re-visit what was done yesterday, to define the goals for today, and to check to see if there are any obstacles to peaceful work.
6 – Product backlog and user stories
Product backlog is a list of features and properties expected by the final product. Features in the list are arranged in order of priority from most important to least important. The project can be defined to implement big tasks that are divided into several smaller ones. The project team determines how much work is needed to be done for the application. Further on – you need to identify priorities based on business needs of the client. The main features are elements will be written in the first practice. Based on the duration of the task, (and therefore the duration of the implementation of each completed units), you select the user stories, which will enter into a sprint. It is advisable to prepare more stories, which could potentially be done, if Sprint is completed ahead of schedule; however, you are not bound by their implementation. If the user stories are too complex, they can be broken up into smaller pieces, so as a whole would be processed within a few sprints.
7 – Stay simple
Successful managers always strive to find the simplest way to do the tasks. Simplicity is always welcomed. This will mean that your developers should not complicate their own work in most of the time. If you develop only the features that the client wants, without any additional functions and capabilities, your work load will lessen, and you will achieve your goals. That is the ultimate situation for both – you and the client.
8 – Team work
There is a difference between the opinion by which the software engineering is art, and the other – that it is a science. Pair programming deals with the artistic side of software development, recognizing that the metaphor of a master-apprentice is useful in the phase when the new programmers learn how to develop a master’s instinct. Using a single keyboard, two programmers who work in pairs can develop a system based on the specification and design. One person is responsible for coding, but work in pairs has the flexibility, because a developer may have more partners in the same day. They have consultations, exchange of ideas, etc.
9 – Test-driven development
To ensure that the needs of the customer are the main driver of development, first write test scenarios, then the code necessary to pass this test, as a way of forcing the client to specify requirements, which can be tested and verified. In extreme programming – there are two types of tests. The first type is functional test specified by the client, and carried out by the project team and users. Other types of tests are the unit tests that are written and executed by the development team. In extreme programming – there are automated functional tests, and ideally they are executed each day. Functional tests are considered as part of the system specification. Unit tests are written both before and after the coding, to verify that each module deployment works as expected.
10 – Evaluate and improve
Burn-down charts are good evaluation tools for your progress – they show do things really go according to plan and calendar of programming. They precisely describe the work schedule and time. Also, well-designed charts show the amount of user stories per unit of time, below or above our plan. The retrospective meeting should be done as a finite of the iterative development (1-hour meeting, for 2-week duration sprints). The meeting should be attended by all of your team, and the client may also participate. The topic of the meeting is how to improve the process, tools used, quality of our work, lessons learned, training, etc. You can use the matrix with the division into sections: stop, start and continue.