What is an Agile Team?
A lot of people have been asking lately, “what is an agile team” and “how can I teach my team to be more agile”? Strangely very few people really know what agile truly means. In this article, I will tell you exact what it is and how you can become more agile.
First things first, what does it mean to do “Agile Development”? Simply put, Agile is a set of Values and Principles used in software development. The official definition on the Agile Alliance website is:
“Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto. Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context.”
This set of methods and practices are predefined but slightly adjustable to fit your needs. For example, one of the core values is to communicate daily on project needs and status. This communication works through many different ways but should be quick, fun, and productive. It shouldn’t matter how you meet so as long as you follow the core values of being agile.
Agile Values
In short, they are:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Let’s review each one because these are very important.
Individuals and interactions over processes and tools:
Since the goal is to get things developed, don’t waste time creating processes or other stuff. Talk to the customer or people who use the tool and let them tell you what they want. Then just develop it. Don’t worry about rework or about getting it perfect the first time. Just do it.
This makes sense when you consider that software is no longer a do it once and done type of project. Code will change all the time as new features get requested or bugs are found. Get it released and add new features in future releases.
Working software over comprehensive documentation:
For anyone who has worked on traditional software projects, we know documentation takes a very long time. The funny joke is most often people never read the documentation and it will become outdated at the next software release anyway. Why put the effort into documenting everything when a summary or inline information will be better. Spend your time writing better code! Those little help buttons on most applications probably get used more often then the official documentation does. Time is money so spend it where it will do the most good.
Customer collaboration over contract negotiation
In traditional development models, the goal was to get all the “requirements” up front and have the customer sign off on the project. Then the development teams programs to those contract set of requirements. Finally when it’s done (many months later), the program may not really do what the customer needs it to do today.
Instead, we should develop an shell of a project (coded and read to go) and give it to the customer to tell us what to add, change, or take away. This way they get something they can use today. Now the users can provide more valuable feedback on how they need the software to work. We can continue to adapt the software to meet the customer revised needs as those needs are constantly changing in the world we live in today.
Responding to change over following a plan
The world is changing more now then any point in history. We are changing 10 times faster then any other time in history. Planning is important but adapting to change in real time is way more important. Speed is key to success, so get it done!
As you can see, Agile Development is an never ending circle of adapting and changing with code releases often. This is how we live our lives today so why not develop software in the same fashion?
In addition to Agile values (remember its an ideal we need to follow as apposed to a set of rules). There are a set of 12 principles we should use as a guide to being more agile.
12 Principles to Being Agile
The Twelve Principles are the guiding principles for the methodologies that are included under the title “The Agile Movement.” They describe a culture in which change is welcome and the customer is the focus of the work. They also demonstrate the movement’s intent, which is to bring development into alignment with business needs.
The twelve principles of agile development include:
- 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, support their needs, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is Person-to-Person 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.
So how can you lead your team to adapt agile development principles?
The best way to implement Agile on your team is to share the information in this article with them and help guide them everyday in the process. Breaking old habits will be hard but in just a few weeks, I suspect most of the team will love the new method of working and will never look back.
You need to break the idea that each project has a beginning and an end. With Agile, projects run continually. Once the team understands this, then receiving constant customer feedback and providing constant improvements becomes natural.
Since the only goals that matters is customer satisfaction and working software, team collaboration happens naturally.
Here is a great video that explains Agile Values and Principles. Share it with your team and schedule several meetings about what everyone learned.
If you are doing things right, you will have the team learn from each other and start to constantly improving themselves and the software they are writing. They will learn empowerment and find new ways to accomplish their work. They will use their new found empowerment, become self-sufficient, and be laser focused on their goals, freeing you up for other work.
Conclusion
I hope this answers your question on “what is an Agile Team” and how to be more agile. If it doesn’t, check out the video and official Agile Alliance website. Remember this is not just about code programming but can be applied with some modification to any development work.
By keeping the principles and values always in focus while going about your day, moving to the agile way of life will happen naturally. Best of luck and as always, feel free to comment or contact me with any questions.