Is Agile Methodology Right For My Next Software Development Project?
The world of software has shifted the way we see the real world of today. With Iphone, & Android apps, CRM systems, and a host of other technologies have come from the advances of software. If your growing a business, and your in need of a custom software solution, you have probably heard the term Agile. In the software development industry, Agile isn’t as new as it may seem.
If you take a look agilemanifesto.org you will find the twelve principals for agile software development. Now, why is agile popular, and what problem does agile solve? If you ever hear someone talking about why developing custom software for their business, you may hear them say that the process is confusing, or the software didn’t actually solve anything. Here’s a few reasons why they have these opinions:
What Is The Waterfall Method?
An old and common development strategy for software is called the waterfall method. If you think of a waterfall, it flows straight down to another pool of water hundreds of feet below. In terms of developing software, the process started with gathering requirements from the customer, and this is the right thing to do. The issue came after the requirements gathering process and the customer was not involved at all. After the solution development team obtained the requirements, then they began to design the solution, implement it, test it, deploy it, and deliver it. Now all this sounds fine and dandy, but take a moment to think about how long it takes to implement & test software properly, and deploy it securely. This process could take from 3 months, to 18 months, depending on how big of challenge this project has to overcome. Just in that timeframe, a ton of business variables can change, and that means that the original requirements are likely to change with them. This is why when you hear some project managers, and business owners talk about building custom software, they come from a place of having a bad experience. And it’s likely that when their custom software solution was delivered it did not meet the requirements for their business in that moment.
How Does Agile Solve The Challenge Of Building Custom Software?
If we look at the first principle on the agile manifesto website you will see that it says:
“Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.”
Lets break this down a bit in relation to our waterfall method problem above. The first step in the waterfall method was to gather customer requirements, which is good. The difference in agile is that you continuously gather requirements so that when the product is at the end of its development lifecycle, the customer is satisfied with the results. As we continuously gather requirements, we continuously deliver on those requirements. Using the agile methodology involves the you in just about every step of the process. Now that you are heavily involved in the process, you have more control over the end result of the product.
“Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.”
The second principle of solves the second issue we talked about above. When you are attempting to solve a large business problem, or multiple business problems, you could spend a good amount of time on this project. In the current day and time that we are living in, changes are happening all the time. and your business has to adapt to those changes. This means that as your business adapts your original requirements are likely to have changed with them. The waterfall method does not happily welcome changes in requirements, and that is often why some people report that what was delivered to them is not what their business needed. When following agile principles, changes are welcomed. Lets say that one day you wake up in the morning and you get an email saying that there are new regulations and laws for your industry and half of the business process that you were building software has to change. If following agile principles, then the impact that this will have on your project will be minimal. When you add in sound software design principles, changing requirements will be easier to manage.
“Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.”
This principle builds on top of the second one. You will see how important continuous delivery is when it comes to building your custom software solution. A short time period is set where developers focus their time and efforts into building one specific piece of the overall solution, and delivering that to you for your review. If you think about how the waterfall method works, it becomes very inefficient for the day and time that we are living in. When you are able to see your solution being developed piece by piece, it becomes easier for you to determine if the deliverables actually meet your requirements. If there are any changes to be made, developers don’t have to sift through hundreds of lines of code that they wrote six months ago.
How Important Am I In The Agile Process?
“Business people and developers must work
together daily throughout the project.”
You being as involved in the process as possible is the objective for the fourth principle of the agile manifesto. When you begin to dive into agile, you will learn about the daily stand up. This is a short meeting with stakeholders and developers, and they discuss the current status of the project and what they are working on that day. You will always be informed on what’s happening with the development of the solution, and you will never have to worry about being unable to answer any questions about development.
“Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.”
One of the biggest issues with the waterfall method is the motivation, and mindset of the developers building the solution. Even though there may be a deadline, there is no real way to ensure that the team building the project is motivated, and has the right tools, and support they need to build a successful solution. I truly believe that motivation comes with accountability. How can someone truly be motivated to serve someone that they only see & speak with every so often? How can you truly create a successful environment for the development team, if there moving in the wrong direction, and have no one there to set them on the proper path? When you invest in agile principles, this whole dynamic changes. Since you and other stakeholders will be involved in the process, developers will feel more accountable, and will automatically gain the motivation to deliver a quality product.
“The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.”
If you have used the waterfall method to develop a business solution, or worked with an agency that used waterfall, then you will notice that you only talked to the developer team every once in a while on the phone, or maybe through video chat. The agile process encourages face-to-face conversations at any point information has to be shared between you and your developer team. Now this may be a bit more complicated since the COVID-19 pandemic. If you can’t meet in person, then the best solution would be to get on a face-to-face video call when information needs to be passed along.
How Do I Know My Custom Software Solution is Actually a Solution?
“Working software is the primary measure of progress.”
When building a custom business solution the only measure of progress and success should be, does the software function? And does the software function in a way that it solves the correct problem. Lets say that one day you have a car problem and you need to find a mechanic. You call a mechanic near you, he diagnoses your car, tells you what the issue is and how much it costs, and then begins to work on your car. After he’s done the work, and you’ve paid him for the job, you sit in the vehicle, turn the car on, and step on the gas. Then BOOM! you realize that the the problem still exists, and you have just paid for nothing. This can happen to you when you are attempting to build a custom software solution for your business. Your developers may have done all of this work, and spent a ton of time and effort into solving the wrong problem. Now you feel setback, and you have to start over completely, and spend more money. The way around this issue is to take the larger problem that you are looking to solve and break it down into smaller pieces. Just like you would a personal, or financial goal. Developers in turn work the same way when following the agile principles. They take your goals and brain storm on how they can transform them into a working software deliverable. Your job now is to oversee through constant interaction that your development team is developing software towards reaching your goals.
“Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.”
If you understand and have experienced what agile is like, you will see that it incorporates easily into your working day, and allows for continuous communication and progress. Development should be a continuously progressive process with changes being made easily when they are required. As stated before with the waterfall method, it doesn’t easily allow for changes, or even continuous development in a way that there won’t be any major hiccups in the process. such as learning 6 months into the project that your developers have been building something the does nothing to meet the needs of your company.
“Continuous attention to technical excellence
and good design enhances agility.”
Paying close attention to the quality of your software is a must. With the world we live in today, millions of people are surfing the internet at one time, buying products on the internet, communicating with other people, and a ton of other things. The question to be asked is can my software handle the users who the project is ultimately designed for. Imagine that you have a 10,000 employees, and you need a custom software solution for your field teams that amounts to 2,000 employees using the software. the kicker is that 5 days a week, all 2,000 of those employees will be using this software 8-10 hours per day. Are your developers designing a software solution that will be able to handle that capacity? What if one day there’s a power outage at the office. Will your software solution go offline with it? What if one day you need to double the amount of users who are going to use the application everyday? Presenting these questions to your development team, and paying attention to their answers will pay you great dividends in the long run. Do they have a strategy that will gracefully allow your software solution to handle different scenarios at any given time?
“Simplicity–the art of maximizing the amount
of work not done–is essential.”
This was the only principle that I had to read three times when I first saw it. It sounds backwards at first, but when you take a few moments to think about it, you see where the authors of the agile manifesto are coming from. I remember reading a self help book one time, and it talked about the story of a fly who wanted to get on the other side of a window. Obviously we know that a fly cant break through a glass window, yet the fly continued to hammer away at the glass and not even making a dent. The whole time, there was a door wide open, and the little fly could have gotten to where it wanted to go. Developing software is just the same. Simplicity stops you from doing a ton of work that you don’t need to do. Keeping things simple is the key to making sure that time is spent wisely, and things get done when they are supposed to.
What is The Mindset Of An Agile Team?
“The best architectures, requirements, and designs
emerge from self-organizing teams.”
When you think of an agile team, your basically a basketball team without a coach. It is the responsibility of everyone involved in the agile team to organize and work in harmony to accomplish the greater project. The waterfall method sets up an environment for two opposing teams, the developers versus you. When they all should be apart of the same agile team, working together. Everyone in the team should be motivated to do their part, to see the proper end result of the custom software solution.
“At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.”
Lastly and still very important is the reflection process. Every week the developers reflect on their production, and communicate with you to find out where they can improve, and also how you can better communicate information with them. Not everything is perfect, but you can learn from every experience you have following the agile principles. When you experience things that you or the developers were not happy with, the best thing to do is to reflect, communicate, and adjust. Fine tuning your agile team, and becoming more effective at accomplishing the task at hand.
If you are interested in learning more about how you agile can fit into your business, and ways that you can implement these principles for your next project, then click the button below to speak with one of our developers today!