Agile Methodology For Software Development: Intro


Ultimate Guide to Agile Methodology – PART 1

I won’t bore you with a lengthy background of how project management has evolved from more traditional methodologies to agile methodology.

However 🙂

It will help to provide some context as to why the two are different, and why agile software development has taken a stronghold.

The agile methodology was born out of the inadequacies of past software project management approaches.

The waterfall methodology for example, is almost never adopted in the startup world.

Waterfall and other traditional project management methodologies require:

  • A ton of planning.
  • Committing to all requirements from the starting blocks
  • Writing lots of code, and then…
  • Testing.

In agile methodology, three unavoidable truths regarding software development are addressed:

  • You can never gather all the requirements up-front.
  • The requirements you do gather will change.
  • There is always more to do than time or money will allow.

Furthermore, waterfall requires you to take all of the above steps before delivering any type of MVP (minimum viable product).

Products need to get to market faster than ever, and traditional methodologies don’t support that need.

Simply put, the traditional approach isn’t likely to cut it in the present competitive business environment.

So to emphasize my point, ask yourself the following if you’re considering a more traditional methodology:

  • How do I know that anyone is going to want what I’m building?
  • Is there any way to know that I’m focusing on the right features and benefits without testing and receiving feedback?

So unless you’re a Steve Jobs prodigy, your answers to those questions aren’t likely to be confidence builders.

Hence why agile methodology is now the prescription chosen by most software project and product managers.

What is Agile Product Management?

Since the introduction of the agile manifesto in 2001, agile software development has taken on multiple forms.

For startup and small business level projects, the most popular agile software development methods consist of:

For large and complex projects that require the full lifecycle of of project management…

Such as governance, resourcing, financial, explicit risk management, and other key project management concepts – you’re better off looking into an agile methodology like:

Additionally, if you’re leaning towards the more complex projects and the PMI Certification or PRINCE2 Agile route, the remainder of this guide is likely not for you.

Sorry!

So before we go any further, let’s define agile methodology as we intend to use it in this article…

Agile methodology (or agile software development): Describes an approach to software development under which requirements and solutions evolve through the collaborative effort of self organizing cross-functional teams and their customers or end users. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. 

Notice how the definition emphasizes two concepts:

1. Collaboration

2. Adaptability

Agile methodology is all about continuous improvement, guided by a data driven feedback loop.

You hypothesise, develop, gather feedback, make necessary changes, release or don’t release to market, and then repeat the process.

Here’s a great visual to better understand the agile methodology for software development…

agile methodology
Image Source

Why and When To Use Agile Methodology

When designing software, it’s nearly impossible to state at the beginning of a project that you know all the requirements necessary to deliver valuable, working software, without need for change.

Change presents both opportunities and risks to a project’s success.

Unmanaged opportunities can mean the difference between a good company and a great company.

While unmanaged risk is a recipe for disaster.

This is where agile methodology comes into play…

Agile methodology manages change

Agile manages change by allowing you to be responsive to new requirements.

So what does that mean? Well, it means a number of things…

Agile methodology empowers development teams to make decisions supported by an engaged, collaborative organization.

Furthermore, agile methodology provides the ability to deliver what customers actually want.

And ultimately, agile methodology puts you and your team in control of delivering high quality software, which lives up to end-user expectations, while producing an ROI as quickly as possible.

Agile methodology puts you and your team in control of delivering high quality software, which lives up to end-user expectations, while producing an ROI as quickly as possible.

Agile methodology creates value

As great as agile may sound thus far, there’s definitely a cost to adopting agile software development practices.

Like many other methodologies and processes, if you don’t have complete buy-in from your organization or team, you’re wasting your time.

Furthermore, buy-in from the team is especially relevant to agile methodology, as daily communication is an absolute requirement.

So when properly implemented and strictly followed by the team, agile methodology can pay huge dividends.

Here’s a list of the top benefits you can expect from agile software development:

  • Faster ROI
  • Speed to market
  • Lots of data
  • Regular delivery of value
  • Manageable expectations
  • Manageable risk
  • Strong visibility of progress
  • Increased customer satisfaction

Agile methodology requires failing

Yes, I said it 🙂

You’re going to have to experience failure if you want to build something special.

Agile software development is closely tied to the notion of “fail fast.”

Now although “fail fast” may sound like a negative, most entrepreneurs will tell you it’s one of the core principles to getting stuff done.

Additionally, agile methodology will actually encourage you to fail, but to fail early, learn from it and move on.

Hence the reason why many entrepreneurs truly do fail, is simply because they’re afraid to fail.

So while you never want to push out a product that doesn’t shine when performing its primary function, you must have the courage to put it in front of people.

And let’s face it, if you can’t handle criticism, you’re going to have a rough go of it as an entrepreneur.

Get an MVP into the hands of early adopters, collect feedback and data, prioritize improvements, and get that next version out.

Agile methodology is adaptable

The important thing to keep in mind here, is that you can adapt agile methodology to your company’s needs.

However, this doesn’t mean you can just turn agile into whatever you want it to be.

So whichever way you start out, stay true to the content and character of the method you implement.

If you’re:

  • Just starting out – Learn.
  • Have some experience – Understand.
  • A friggin pro – Apply.
  • Leading projects that are complex and interdependent – Govern.

As time passes, you and your teams will figure out what is, and what’s not working for your company.

How To Get Started With Agile Methodology

Okay, so you’ve likely been asking, “How do I get started?”

Now I’m assuming you already have a vision for what you want to build and that you’ve already determined whether or not the project is feasible.

Or wait…

Do you know whether or not the project is feasible?

If you’re still in this phase, you’ll want to check out this in depth Wiki on: How To Do A Feasibility Study

The article will walk you through how to determine whether or not a project is a justifiable endeavor to pursue.

If you’re way past feasibility, let’s move onto the initiation phase…

Initiation

First of all, taking the time to think about how to best deliver your project is crucial to its success.

If nothing else, agile methodology is about providing value early and often, while satisfying your customers along the way.

So if you’re just starting out with agile software development, don’t be afraid to take your time and get it right the first time.

Team Dynamics

Scrum is the most popular agile methodology for software development, and it’s all about the team.

The term Scrum was coined by Jeff Sutherland, who was inspired by the game of rugby.

In rugby, there’s a team within a team, made up of the players designated to be a part of “the scrummage.”

This team interlocks their arms and engages with the opposition to win the ball back.

When the scrum takes place, each interlocked team works with no leader, as a single unit.

Similar to a rugby scrummage, Scrum software project management involves a cross-functional team, which constantly huddles together to prioritize and execute.

Although Scrum is not the only agile software development methodology, it is the one which best represents the concept of working together as a team.

Scrum focuses on:

  • Empowering individuals
  • Building trust
  • Self-organizing, and
  • Being transparent.

A few things to know about Scrum when it comes to the team:

  • Circumstances will determine how your team is formed. For example, you may or may not have developers available to you, and they may or may not have experience with agile project management. So it’s possible that you’ll need to hire a team or link up with a third party.
  • Additional roles will be required, which we will cover later on.
  • No matter the makeup of your team or where it’s from, it will come with a variety of skills.
  • Especially relevant is how you form your development team. So be sure to conduct a technical evaluation prior to arriving at this point.
  • Not surprisingly, teams work best when they work together. So in agile methodology, you’re looking for individuals who are self-sufficient, able to “wear many hats” at once, and pitch in wherever needed, regardless of job title.
  • Team size should not exceed eight. If there’s a need for many developers, you should break the teams down and have each team be responsible for an individual functionality of the product.
  • Emphasize and enable the team(s), organization, stakeholders, and even end users have access to one another.
  • Structured daily interaction amongst the team is paramount to the success of agile project management.
  • Create a culture and environment in which the team can execute without distractions or restraints.

The “Inception Deck”

You might be asking, “So how are we supposed to keep everything organized?”

agile methodology

Without question, your team will not be able to execute if anything about the project is unclear or inconsistent.

And unfortunately, one area that the agile methodology is relatively silent on, is what’s known as project chartering…

Project chartering can also be referred to as:

Personally, I like the term Inception Deck, because it sounds super important 😉

But yes, all of these terms can be used interchangeably.

Hence the need for some type of documentation to get everyone on the same page from Day 1.

A standard Inception Deck should include:

  1. Shared and agreed upon expectations amongst all stakeholders.
  2. Milestones to reach in order to achieve the project goals and objectives
  3. The goal, objectives, vision, scope and context

As previously noted, an Inception Deck is very similar to software design documents, which I hope you’re all familiar with!

If you’re not, it just so happens that Tara AI has a template you can use for this. To learn more about software design documents, see this post: How To Create Software Design Documents

Team adoption of agile methodology

Don’t expect your business or your team to be ecstatic over the adoption of a new methodology.

There’s almost certain to be pushback and confusion when implementing any new way of doing things.

These are challenges you must overcome!

However, in order to get people to buy in, you also cannot make agile software development feel like it’s being forced upon the stakeholders.

So in the beginning stages, focus not so much on promoting the greatness of agile methodology, as that will not build trust, engagement, or adoption.

Instead, focus on respecting the opinions of others, and be empathetic towards those who are having a tough time with adoption.

This is especially relevant to large organizations and more traditional industries, where processes have been engrained throughout the organization for years.

Should that be the case, start small, and slowly gain the respect of others by delivering real results.

Once you’ve gone through informing the team of adopting agile methodology, the team has been briefed of the project, and they’re ready to get started…

Allow for the team to decide how they wish to operate.

For example:

  • Point the team in the right direction towards identifying agile concepts, behaviors and techniques that they feel fits their needs.
  • Try your best to meet the requests of team members; some of which you’ll be able to resolve quickly, while others may require additional budget.
  • Whatever you can do for the team that’s reasonable, whether that’s a dedicated space to work, new software, their own espresso maker…make it happen.
  • Once you and your team have agreed upon a framework, organize some time-conscious training in the concepts and techniques you’ve chosen to adopt.

Agile Methodology – article summary

Agile methodology is as much a mindset as it is a set of guiding principles and concepts.

When implemented properly and fully adopted by the team, agile will aid in the development of new behaviors, thinking, collaboration, and performance.

Most of all, agile software development is dependent upon the strength of the team, and not from a skillset standpoint.

Instead, the strength of agile software development is derived from the exact same source as a great sports team. By working as a single unit, effectively communicating, and holding yourselves, as well as one another, accountable for executing, a championship level team can accomplish far greater feats than any individual.

Find a common goal to rally around.

Become hell bent over how to complete your mission.

Take it one day at a time.

Adapt quickly to change.

And push one another to achieve it.

As a famous college football coach once said, “The team, the team, the team.”

That’s what agile is all about.

Agile Methodology Ultimate Guide – PART 2

Okay, we’ve breezed through PART 1 of this ultimate guide to agile methodology for software development.

You’re either ready or not ready to move forward with agile software development at this point, and I respect your decision one way or the other.

But for those of you that want to get hands on and really get started…

You might be asking, “Well now what?”

Simple…

Let’s move on to PART 2!!!

In PART 2 the Ultimate Guide to Agile Methodology for Software Development, I’m going to show you step-by-step how to start running Scrum sprints with your team.

Discover more from The Tara Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading