What is Agile?
Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly.
What is - Agile software development?
Agile software development is more than frameworks such as Scrum, Extreme Programming or Feature-Driven Development (FDD). Agile software development is more than practices such as pair programming, test-driven development, stand-ups, planning sessions and sprints. Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software Development and the 12 Principles behind it. When you approach software development in a particular manner, it’s generally good to live by these values and principles and use them to help figure out the right things to do given your particular context. One thing that separates Agile from other approaches to software development is the focus on the people doing the work and how they work together.
Solutions evolve through collaboration between self-organizing cross-functional teams utilizing the appropriate practices for their context. There’s a big focus in the Agile software development community on collaboration and the self-organizing team. That doesn’t mean that there aren’t managers. It means that teams have the ability to figure out how they’re going to approach things on their own. It means that those teams are cross-functional. Those teams don’t have to have specific roles involved so much as that when you get the team together, you make sure that you have all the right skill sets on the team. There still is a place for managers. Managers make sure team members have, or obtain, the right skill sets.
Managers provide the environment that allows the team to be successful. Managers mostly step back and let their team figure out how they are going to deliver products, but they step in when the teams try but are unable to resolve issues. When most teams and organizations start doing Agile software development, they focus on the practices that help with collaboration and organizing the work, which is great. However, another key set of practices that are not as frequently followed but should be are specific technical practices that directly deal with developing software in a way that help your team deal with uncertainty. Those technical practices are essential and something you shouldn’t overlook.
You might be also interested in reading the article
How Prototyping Can Bring Your Business Ideas to Life
Agile development terminology
For an exhaustive list of words used in Agile development. Here are few of them:
- Acceptance Testing - Formal testing conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system.
- Application Lifecycle Management - Application Lifecycle Management (ALM) is a continuous process that uses governance, development and maintenance to manage the life cycle of an application.
- Backlog - A collection of stories and tasks the Sprint team will work on at some point in the future. Either the Product Owner has not prioritized them or has assigned them lower priority.
- Build Process - Refers to the automated steps that use source inputs to create artifacts necessary to install a software system. Source inputs generally include typical programmer-written source code but may also include static content, and other pre-compiled components.
- Design Pattern - A reusable solution to a commonly occurring problem, particularly useful in software design.
- Developer Unit - The developer unit refers to the people responsible for delivering working software that meets requirements by collaborating with the customer throughout the development lifecycle.
- Flow - Continuous delivery of value to customers
- BIteration Plan - The iteration plan, also known as the spring plan, is the detailed execution plan for a given (usually current) iteration. It defines the iteration goals and commitments by specifying the user stories, work tasks, priorities and team member work assignments required to complete the iteration.
- Lean - Lean thinking is a set of principles and practices that maximize customer value while minimizing waste and reducing time to market.
- Test Automation - The use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting function.
- Timebox - A timebox is a time period of fixed length allocated to achieve some objective.
- Unit Testing -A unit is the smallest testable part of a software system. In procedural programming, a unit may be an individual function or procedure.