As a technology company specialized in custom software development, we embrace agile methodologies and processes in most of our projects.
The term agile software development has been first used and popularized in 2001, when The Agile Manifesto was introduced. The Manifesto outlines 12 principles and 4 values that can be used to develop software with cross functional teams, working in a collaborative, self-organizing style in a repetitive and incremental approach. Following these principles, it allows our successful agile teams to produce high quality software solutions, in a cost effective and timely manner, which meets the changing needs of our customers. Another main benefit of agile software development for a customer is that agile project teams deliver value much earlier than traditional project teams.
There are more agile development methods, most known of them being Scrum and Kanban. Agile works by breaking the development process into small parts, short time frames called iterations or sprints, with cross-functional teams involved. So the delivery of working software is continuous and starts from early stages of the development.
Many times it is our customers and partners who ask us to use Agile methodologies (Scrum, Kanban) from the inception of the project. When the choice is left to our engineers, we carefully analyze the project specifics, and we propose a project management methodology based on Scrum or Kanban which best fits the specific needs and context.
The Manifesto for Agile Software Development is based on 12 principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely
- Continuous attention to technical excellence and good design enhances agility
- Simplicity -the art of maximizing the amount of work not done- is essential
- The best architectures, requirements, and designs emerge from self-organizing teams
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly
Agile values the individuals and interactions between them. In IT and high-tech industry developers are required to deliver software. The people who want and need the product or service must explain it to the team that delivers it. The product owner is the project’s key stakeholder and represents customers and users.
Customer communication and collaboration is vital in the process and another agile manifesto value. The Collaborative environment between customer and the development team has a continuous learning curve and becomes more efficient with adjustments after each iteration. The steady communication with the product owner is also helping the development team to better understand the process and by testing after each sprint to fix the errors coming on the way.
One of the manifesto for agile software development values is “working software over comprehensive documentation”. The main scope of developers is to develop software with as little bureaucracy as possible. As a general rule, the Scrum project management processes will be minimized as much as possible – we target to avoid project oversizing and unnecessary/low-value procedures and activities. However, in our company we have specialists with rich experience in developing and maintaining project documentation and we emphasize this area of expertise as one of our key strengths.
Being Agile means being flexible, responding to change, adapting to changing scenarios, while being able to deliver high-quality, functional software solutions. It is also about having continuous focus on learning.
For most of our projects we do Scrum following these general rules:
- The Product Owner is a client representative
- The Scrum master role is usually fulfilled by the Arnia’s team technical lead role
- Each Sprint duration is usually two weeks long, but it depends on the project. For example we also have projects where we work in iterations of 4 weeks, or we can have weekly planning sessions and review.
The whole purpose of the agile methodologies is to deliver faster, better and working software. By focusing on value and results we are adding competitive advantages to your company.