What is agile process in software development?
Let’s start with a quote:
“Fast is fine, but accuracy is everything.” Xenophon
Xenophon was an ancient greek philospshor who lived from 430 BC to 350 BC. He was also a soldier, commander and gifted horse trainer. He understood, far better than most of us ever could - both the value of speed AND accuracy. In battle, your life may well depend upon the speed and accuracy of others and yourself.
I selected this quote to preface our question for today, which is: “What is the agile process in software development?”
The term ‘agile’ communicates features such as ‘faster, flexible, responsive, cost-efficient’. But with regard to sotware development, a faster, flexible, responsive, cost-efficient process without accuracy - is worthless.
Acccuracy is paramount - and your software or application will fail without it.
“Build it and they will come” - is only true, if it truly works.
As Xenophon likely knew from experience upon the field of battle, fast is definately fine - and yes, aglility and flexibility is beneficial - but above all, accuracy is everything.
Now back to our key question for today:
What is the agile process in software development?
Firstly some definitions:
According to the Oxford Dictionary, ‘agile’ is defined as follows:
Able to move quickly and easily.
Able to think and understand quickly.
see here: https://en.oxforddictionaries.com/definition/agile
And what about an ‘agile process’ definition?
It is that "Relating to or denoting a method of project management, used especially for software development, that is characterized by the division of tasks into short phases of work and frequent reassessment and adaptation of plans."
Thank you again Oxford Dictionary.
see here: https://en.oxforddictionaries.com/definition/agile
Now let's learn more about agile development
In simple terms, agile development aims to streamline the software or app development process. The goal is to make the product live asap - and then improve, fine tune and expand the product over time as required - as an ongoing response to real world testing and user feedback.
Agile development seeks to reduce the project to it's baseline core features and then build on from there.
The term used here is minimum viable product or MVP.
To take advantage of an agile development process, you need to let go of all the 'bells and whistles'. Think instead 'minimum viable product'.
Focus only the core, basic features you really need to start - in order to minimise timelines and keep things simple for you and your development team.
Agile development ensures that your software or mobile application is released to market more quickly and more efficiently, with a reduction in initial investment.
This makes sense - as larger projects can easily get bogged down in the details. Remember, a native app has to be built one line of code at a time.
With agile development we say '"Let's just cut to the chase. Let's get your project out there, get to market and then build as we go."
As Rome wasn't built in a day, I'm am sure Xenophon would agree that this approach offers significant benefits, particularly for big scope projects.
What is agile methodology?
The core strategies of an agile methodology are as follows:
The first strategy is one of incremental development.
This is a practical approach in which the development process is understood to be evolving, responsive to feedback and adaptable, both to technology updates and user requests. Of course, the goal is that the final software build will be 100% fully featured.
The second strategy is to infuse the entire management process with a spirit of flexibility and discovery. This works best with small, dedicated teams - who coordinate closely across all touch points, with a clarity of vision.
Think of your agile management team as your 'elite forces'. They are your small team of highly trained, rapid response experts - who know you, your project and your goals - and who think strategically to make it happen faster, cheaper, better - while still maintaining quality standards.
This bring us to the third essential strategy - which is one of embracing a collaborative approach. Ensure that you and your team share the vision and understand the goals. Again, small teams do best here, where everyone works in close co-ordination.
Of course, the development still has to be built for excellence. Remember Xenophon : “Fast is fine, but accuracy is everything.”
A quality agile development process will still deliver a world class app - but do so with strategically paced development that benefits the client, the development team and the software application itself.
How does agile software development work?
The step by step, incremental approach to agile development represents a flexible methodology that offers an attractive alternative to those seeking to develop large, fully featured software and application projects.
Think small.
Think living big in a tiny house. (I love this channel, check it out: https://www.youtube.com/user/livingbigtinyhouse)
Less IS more.
There is wisdom in the notions of minimum viable product or MVP.
When appropriate, this makes a lot of sense. It saves on time, money and provides development teams with a shorter term objectives. This is turn fosters a healthy dynamic between customer and developer with more tightly co-ordinated processes for better outcomes.
It also provides more certainty for developers in terms of scope, expectations and transparency - with reduced timelines and simpler planning from start to finish to demo.
What are the core principles of an agile development process?
Ten main elements define agile software development process.
Adherence to these principles gives peace of mind to both the development teams involved and the client. Goals are simplified. Tasks are streamlined. Timelines are shortened where possible. Communication channels are kept open at all times.
These ‘core agile principles’ include:
A focus on customer satisfaction throughout all development stages
A flexible and adaptaive environment
An understanding of an iterative processes - where features and improvements are delivered over the longer term.
A lightweight approach to coding and development - with quicker implementation timelines
Quicker times to market
A commitment to simplcity
A preference for smaller teams
Lower upfront costings
A willingness to change and be adaptable
Constant testing and critical appraisal
Close communication maintained between all parties
Is an agile process the best approach for you and your project?
It is up to you - and it is highly project specific.
It depends upon your unique application, your end goals, your timeframe and more.
Agile development processes are not recommended for every project.
But oftentimes for larger, software and mobile applications that are broad in scope and rich in features: the agile approach can be a great fit.
Everybody appreciates faster delivery, shorter timelines and lower entry cost. Add to that a closer working relationship between clients and developers - more transparency, openness to change, a controlled approach to risk management and a responsiveness to user testing - and you have a compelling business offering, that at the end of the day, makes a lot of sense.
“Fast is fine, but accuracy is everything.”
A successful agile development process delivers both on speed and accuracy.
I feel sure than Xenophon would agree that agile is is a great solution for achieving objectives, where the goal posts are narrowed and it is easier to get your project off the ground and score a winning goal.
Good luck with your next software or mobile development project!