Agile Software Development: What It Is & What You Get Out Of It
Mục lục bài viết
Overview of Agile Software Development
Brief Overview
-
Value-based: deliver value to your customer.
-
Putting people and their interactions first: work collaboratively and oriented towards the customer, to end up with happy customers, users, and development team.
-
Trust is essential. Not just within a team. Management needs to trust that everyone wants to do a good job and let the team manage itself to deliver results.
-
Communication at all levels of the team is vital. Regular feedback from customers and stakeholders keeps the team on track.
-
Working software as soon as possible means delivering value right from the beginning.
-
Incremental and iterative working means you take small steps forward and you course correct when the customer realizes a change is needed — usually thanks to seeing the growing product in action.
-
Fast results: breaking the end product down into bite-sized chunks and working on those chunks means the whole team gets to see working results within the first few weeks and cuts out finding you’ve failed a couple of years later.
Brief History
This all makes sense doesn’t it? So why is Agile even a thing?
The 4 Agile Values are:
-
Individuals and interactions over processes and tools
-
Individuals and iWorking software over comprehensive documentationteractions over processes and tools
-
Customer collaboration over contract negotiation
-
Responding to change over following a plan.
How does it work?
Everything starts with the Agile Mindset and the promise it holds.
The Mindset
As Aristotle already said:
“Pleasure in the job puts perfection in the work.”
The Promise of Agile: Solutions to Problems
-
Better alignment with (customer’s) business goals
-
Higher productivity
-
Higher quality
-
Reduced time to market
-
Improved customer/stakeholder satisfaction
-
Increased job satisfaction for the developers
-
Best results for the end-user
Customers and developers alike love it!
The Wider Agile Picture
Extension to DevOps and DevSecOps
What it takes to operate a software product is often overlooked during development, making it awkward to keep the software running smoothly for its users. DevOps — Development and Operations — seeks to address that by putting developers and operators together in a team. By working collaboratively, they can reduce deployment time, fix bugs more quickly and extend the product life. On top of that, DevSecOps adds security experts to a team to keep your product’s security up to par with explicit security measures and helping developers avoid software constructs that could be exploited by hackers.
Agile Project Management
Agile Corporate Cultures
The Agile Mindset does well in disciplines other than (software) engineering. Your marketing team, vendor management team and sales team can all apply it to their activities. Just about all regular corporate departments can benefit from becoming more agile.
Agile frameworks such as Disciplined Agile, SAFe, the Crystal Method and Kanban are suitable tools to help a corporation become more agile. They offer ways to optimize corporate organization by integrating agile and waterfall methods of working.
For more on this, read “Here’s Why (And How) Non-Software Teams Are Adopting Agile Methodologies.”
But let’s get back to agile software development.
Agile Software Development Life Cycle
Iterative and Incremental Development and Delivery
Development and delivery in agile is iterative. Work gets done in short iterations, usually lasting 1 or 2 weeks. Sometimes up to 4. It’s also incremental because in each iteration you build small slices of working software that can stand on their own two feet.
Here’s more on this process. Iterative and Incremental Development: Refuse to Choose
Mini Waterfall Are Still Waterfalls
While there are benefits to doing this, there are also many drawbacks:
-
It keeps people locked in their traditional roles.
-
It maintains the waterfall phase gates, leading to a lot of (wasted) wait time and inventory queues of unfinished work.
-
Cooperation between people with different roles is generally better because the topic is still relatively fresh in the previous person’s mind, but it’s a far cry from true collaboration where people work together on addressing a work item.
Collaborative Agile
Keeping Up the Pace
Cutting Waste to Speed Up, Sustainably
Consider these examples.
-
Why produce documentation when you can create code in a self-documenting way and be testable in an automated manner at the same time?
-
Why produce designs when designers and developers can collaborate on implementation?
-
Why produce hefty user guides, when you can design a self-documenting interface with in-place explanations?
Similarities and Differences
Key Roles and Responsibilities
-
The Customer, or a representative, who contributes the business perspective.
-
The Product Manager, who acts as the link between customers, users, and teams. Teams still work directly with customers and users to clarify what they’ll create next, but the product manager brings them together. By not getting into the weeds, the product manager is free to do more forward looking work.
-
People from different disciplines work together on (a part of) the product in the Team. A team always includes the people actually producing the product, i.e. developers, designers, analysts, testers, and may include others.
-
The Coach helps the team and all its stakeholders to adopt the Agile Mindset and values, and work according to the principles. Some distinguish between team coaches and agile coaches, where team coaches focus on 1 to 3 teams, and agile coaches help the wider organization. The Scrum Master role in Scrum is defined doing both, but in practice the Scrum Master is often seen as a team coach.
Key Meetings, Cycles, and Delivery Cadences
-
Delivery cadences vary a lot. From quarterly deliveries, for example in many scaled agile frameworks, to continuous delivery and continuous deployment where users receive updates even as they’re using the product. In many organizations the delivery cadence is equal to the length of their iterations.
-
Iteration cycles tend to be 1 to 4 weeks. Most Scrum teams prefer 2-week Sprints, Kanban and Lean often work to the tune of a single week. Generally, the longer the iteration, the fewer benefits from learning and adjusting and getting better at practising agile.
-
Refinement meetings to clarify what needs to be done for the work that’ll be taken on shortly. Some frameworks see this more as an activity than a meeting.
-
retrospective meeting to look back and learn, and take steps to improve your process in the following iteration.
-
A planning meeting to decide what the team will work on in the upcoming iteration and resolve any outstanding questions. The planning meeting for the next iteration should ideally come after the retrospective so that any lessons learned can be applied immediately.
-
An inspection meeting where the team presents what they’ve created during the iteration and receives feedback from customers, product manager, and other stakeholders.
-
A daily check-in meeting to keep the team focusing and moving forward to the goal of their current iteration.
Methods and Techniques
There are many frameworks and methodologies available that’ll help you on your agile journey. For example, Scrum, Kanban, Lean Software Development, and Extreme Programming.
You’ll also find frameworks to help scale agile to multiple teams and even throughout your organization. You’ll find a comprehensive but succinct overview in “6 Scaled Agile Frameworks – Which One Is Right For You?”
Here’s a quick look at some well-known techniques.
-
User Stories and Story Mapping to create a vision for the product, identify the individual requirements, and prioritize them in several releases.
-
Behavior Driven Development to facilitate communication and collaboration with your customer and produce a product that can be verified in an automatable way.
-
Test-Driven Development, which stands alone but is also a part of Behavior Driven Development, to inform the design of your code create a safety net around it that’ll reduce anxiety over breaking anything with a change.
-
Refactoring is a technique used in Test Driven Development and strongly advocated by Extreme Programming to keep your code amenable to change.
-
Another method strongly advocated by Extreme Programming, is Pair programming, or pairing. It’s a means of collaboration, training, and preventing bugs (two see more and know more than one).
Common Pitfalls: Why Agile Doesn’t Always Work
-
Doing agile
-
Lack of clear direction from the top
-
Inadequate coaching
-
Not everyone is suited to agile
-
Vested interests
The agile way of working demands radical change that often is at odds with vested interests and long-standing organizational structures and reward systems. Often especially so in large corporations and governments used to rigid contracts and top-down direction.
Remember, you can still use your Agile Mindset and some agile frameworks even if a customer insists on a waterfall approach such as fixed costs and fixed delivery times. For example, here’s how Kanban can help.
Getting Started
-
Above all, develop and use your own Agile Mindset.
-
Employ agile coaches to get you started and keep you on track.
-
Identify agile leaders within your business to ensure understanding and sponsorship.
-
Train managers as well as your software developers so they don’t talk past each other.
-
Get enthusiastic key people certified in agile methods and frameworks.
-
Get enthusiastic key people certified in agile methods and frameworks.
-
Invest in suitable IT programs that support your agile working.
-
Identify the opportunities for more agility in your current development methodologies.
-
Introduce frameworks that will work in your business.
-
Look at tools like Kanban to set your goals, monitor progress and achieve results.
-
Introduce change incrementally so that it is not overwhelming for all concerned.
Recognize that it will take time to make all the changes needed to move to a fully agile business model. Depending on the scale of the Agile adoption in your enterprise, there are several tools available that will support your journey – you can see Digite’s tools here https://www.digite.com/products/
Further Reading
Books and Articles
Coaching and Training
Certification and accreditation
Untangling Some Agile Terminology
What Is The Agile Mindset
What Are Agile Software Development Methods
What is Agile Methodology
What Are Frameworks
Champion Agile Software Development
FAQs
1
What is Agile Software Development?
Agile Software Development is the process of creating and maintaining software using an Agile mindset and practices, particularly iterative approaches.
2
Why is Agile so popular in the software development space?
As The Agile Manifesto was created by software developers with the software development process in mind, it is widely adopted by software companies worldwide.
3
What is an SDLC?
SDLC stands for Software Development Lifecycle. This is the set of practices, or steps, that a software company uses to create and maintain their products.
4
What are the steps in the Agile software development life cycle (SDLC)?
Companies tend to take different approaches to their SDLC. Typically, the steps in Agile SDLC include Conceptualization, Inception, Iteration, Release, Maintenance, and Retirement.
5
What are examples of Agile Software Development Frameworks?
There are many Agile frameworks that software developers can use. Some examples are: Scrum, eXtreme Programming (XP), Adaptive Software Development (ASD), Lean Software Development (LSD), and more.