Chapter 1: Understanding Agile and Agile Manifesto
Agile describes an approach to project development and specific projects relating to software development. This approach allows developers and coders to work with greater autonomy and an improved focus on quality rather than fulfilling a certain function on a team. In short, this iterative approach to development uses increments to ensure quality results.
In 2001, a group of top developers came together and created the Manifesto for Agile Software Development. The group of men who brought these ideas and principles together had led their field in development by drastically changing team dynamics and the approach to project management. The Agile founders were those who developed and represented Extreme Programming or XP, Adaptive Software, Crystal, Pragmatic Programming, DSDM, and SCRUM. Although they had structural differences, these systems for development all broke down to the need to emphasize the value of the developers and team members rather than focusing on getting the product completed. Together they moved to take power away from corporate executives and managers who were unfamiliar with the software development processes and demands.
That goal of redirecting the power dynamic and the abilities to manage or control a team led to a substantial amount of strife across many industries. Virtually anyone who needed software developed was told that they needed to follow Agile principles and methodology, and that would mean they would have no control over the team or project. It is important to emphasize that the lack of control or absence of a hierarchical structure does not mean that there isn’t a purpose for managing the project. Team members, SCRUM masters, and champions have key positions and roles to play. There are still deadlines, attainable goals, and specific steps necessary to see the project to completion.
What is Agile – And What Agile is Not
One of the most common misconceptions is that Agile Development is a methodology or an approach to software development. Agile is a set of principles accompanied by values that, in theory, should advance idea generation and implementation within the creative process. There are multiple goals of Agile Software Development, and there are different methodologies for approaching an Agile Project.
While chapter two will layout the principles in full, we will quickly overview the core values so you can get acquainted with what exactly Agile promotes. The core values came into place because when the Agile Manifesto came together, these were particular struggles that software developers and coders experienced. These are still common challenges within an Agile Project. But the core values in the Agile Manifesto have turned the tables, and now these core values can make it more difficult for project managers and champions.
The core values of Agile include placing individuals or the people involved in development over the processes and tools used to complete a project. Well, it seems that this value should go without saying, if you look at nearly any department within a business, you’ll see that the tools in the processes are valued much more highly than the people involved. When it comes to software development and a project which could easily go awry with the incorrect placement of a semi-colon, it is important that you listen to your team. Make sure that you value your team and make sure that they know they’re valued. Project leaders and managers will often appreciate their teams, but the teams won’t feel that firsthand and they can easily become disgruntled.
Additionally, Agile Developers value working software over excessive documentation or documentation that the people outside of the coding team can understand. Before Agile executives and high-level managers would put excessive documentation demands on coding teams. Then they would be quite upset when they would read the documentation and not understand it. Essentially the only people who need to understand documentation relevant to software development are the people working on the software for either building it or updating it later. If you can’t understand the documentation that your team provides, feel free to ask questions. But you should hesitate to demand that they change their documentation practices as they may be using a uniform method.
Agile teams also put a high value on collaboration between the customer and the team. For Agile teams, one of the customers is the business itself. This intense focus on value often takes over contract negotiation in that an Agile Contract may read more as a general guideline than a list of expectations.
Finally, Agile teams demand the ability to respond to change quickly and giving priority to change over following a strict plan. This is a particular challenge for project managers. You may have a plan all laid out with milestones, and within just a few days, that entire plan can be thrown out. You will need to develop soft skills such as adaptability, compromise abilities, and creative problem-solving. This doesn’t mean that the Agile Team tells you what happens. What this means is that you need to come together with your team and collaborate to determine a new plan that accommodates the changes as well.
Just to summarize, Agile is not a methodology or approach to project management. Agile is a collection of values and principles that should guide a software development team toward the successful development of software. As you learn more about Agile and the systems of project management that fit into Agile Software Development, you’ll see why software development requires a different approach in order to succeed.
Goals of Agile
So what are the goals of Agile? The Agile Manifesto and the leaders of software development in that time came together with specific goals in mind. The primary goal which should benefit any business was to satisfy the customers. When it comes to Agile Projects, the customer is both the business and the end-user. That means that the developers are not only looking out for what is effective and efficient for the business to support but also meaningful to the people who will use the software daily.
They placed the goal of satisfying customers above all other goals and believed that the four core values of Agile Software Development feed into this singular goal.
The second goal of Agile is to create a project which inspires the contributors. The meaning here is that software development should always be an exciting process because resources and demands change constantly. It is one of the few fields that allows work in the form of projects that demands constant creative problem-solving. The people contributing should always bring something to the table, and with Agile, if you’re simply showing up for your job, then you’re not an inspiring contributor.
The remaining goals of Agile borrow from some of the very specific principles from the Agile Manifesto in order to guide these projects. For example, one is that interaction should be done in person. This reflects other specific principles from the Agile Manifesto, but the underlying goal here is to ensure that all communication is clear and concise.
Defining the Goals of Your Project
When you’re defining the goals of your project, consider the goals of Agile Software Development. Various sections of this course will revisit how to define, set, and uphold goals for your Agile Project. However, there is some foundational information to help you move forward with understanding exactly how to define a goal in conjunction with Agile Goals, principles, and values.
When working on an Agile Project, goals should express a directive, and improve morale among team members.
That’s a lot to expect from a list of goals. However, when writing your goals, you’ll want to assess their extrinsic and intrinsic value to the team. For example, if you have a goal such as “Create thorough and comprehensive documentation daily,” that goal might drag down the morale of the team. However, a goal such as “Collectively create thorough and comprehensive documentation” could help pull the team together.
Keep these thoughts and suggestions in mind whenever you start to map out Agile Goals:
● Keep your goal simple and concise enough to fit on a sticky note.
● Ensure that there is only one interpretation of the goal.
● Not every goal has to be actionable, but every goal must serve a purpose.
● Will the team commit to the goal?
● Does the goal excite or ignite?
The reason for addressing goal-setting so early into this course is to establish that setting goals for Agile Teams are very different from creating goals for other projects. Many project managers create goals straight from their task list. With Agile Teams, the task list or Kanban board will guide the team members, but again, because of the drastic daily changes, these tasks may change as well. It is easier to approach goal setting for Agile Teams with a broader or more overarching purpose.
Overview of Methodologies
The many different demands of developing work calls for a different approach to handling the project management elements. Throughout this course, you’ll learn about the basic elements and principles of the Agile Method and how you can use these principles to guide your team through your project.
The common challenge among Agile Project Leaders is that the different methodologies may apply to a project in different ways. There may be times that a methodology doesn’t come into play at all during a project. Then there are other times where you may use a wide variety of the methodologies in varying capacities for a single project. You will surely learn more about the principles which govern Agile Software Development. However, you’ll need to use your leadership and communication skills to determine which methodology is applied to your project and which fits your team.
Agile Methodologies include, but are not limited to :
● Scrum – Lightweight framework that demands small increments of work driven based on productivity and simplicity.
● Lean – Use value stream mapping to deliver high value to the customer (end-user) and is highly flexible.
● Extreme Programming or XP – The focus is on speed and continuous delivery, usually used to continue software improvement.
● Crystal – Often called the most flexible Agile Method, it focuses on communication and team reflection to identify what did or did not work.
● DSDM – A method that focuses on delivering the “useful 80% part of the system in 20% of the time.”
● Feature Driven Development – Uses a model list with features to drive the iterations and development process.
● Kanban – Visual method for working and is often used alongside other methodologies. Project management through tracking works in progress and future tasks.
Again, when developing an Agile Project, you are not limited to a single methodology. Using grab portions from different Agile Methodologies and use them together. Alternatively, you may use a single methodology. How and what you use is determined by you and the Agile team. As the project manager, you’re likely the champion for the company and the project meaning that you are the bridge between the Agile Team and the desired result. With proper project management and Agile Techniques, you can help your team develop highly functional software through proven techniques and systems.