The theory of natural selection says that if you do not adapt yourself to the ever changing environment then nature will omit you from existence. While there is a plethora of examples to establish this theory in evolution of human life, let’s hear it from the perspective of building a software.
In order to build a stronghold in the market, it is essential to address the evolving needs of the customer. Continuous evolution is the key to success because the moment you cease innovation, there is someone who will throw you off the charts and grab your throne.
And why not? ‘Customer is the king’ and everyone would want to be his favorite queen.
A group of seventeen software professionals had a premonition about this ‘game of thrones’ which is why they created an incremental development methodology and called it Agile software development. The developers also agreed upon twelve crucial principles which they named as ‘Agile Manifesto’.
Here’s what each principle says:
1. Early and continuous delivery of valuable software to satisfy the customer
Have you ever experienced the joy of getting an early delivery of your online purchase? Yes? Then you will understand this better. If you produce a quality product and deliver it to the customer well before the timelines fixated, not only you win their hearts but also their respect. The satisfaction of customer should be the top most priority.
2. Welcome changing requirements, even late in the development. Agile processes harness change for the customer’s competitive advantage
The only thing which is constant is change. If you do not embrace it, you will be stuck with the traditional burdens and challenges. While other development processes inhibit any changes after a certain stage in development cycle, agile encourages it.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
This principle aims at reducing the time spent in documentation and utilizing it in delivering a functional software to the customer. This improves the working efficiency of developers and reduces the loopholes, which occurred due to bad implementation or lack of planning.
4. Effective teamwork between business and product developers
For a productive work it is important to fill gaps between customer and developers. The development work should not stop because of lack of understanding from either side.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Micromanagement slays productivity. Each team member should be proactive and self-motivated. Make sure that your team is self-reliant and can be trusted for effective and timely completion of the project.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Although written communication is more tangible but face-to-face communication works in a jiffy. Consider a situation where you are stuck in an issue which needs immediate resolution. So setting up a mail chain and waiting for a response from a person sitting miles away will only kill time. There are numerous communication platforms like Skype, which can be used to initiate a real time conversation.
7. Working software is a primary measure of progress
Have you ever paid attention to this idiom- ‘if wishes were horses, beggars would ride’? This means that you cannot deliver results just by wishing. You need to produce a successful outcome. Nobody will count the number of days or months you spent building the project. It’s a binary function- either a zero or one. So make sure you present a functional project to the customer.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
While you would swear on timely delivery of the project again and again, do not forget that it’s your developers who are burning the midnight oil for carving out the actual deliverable. If they feel exhausted daily, then your project might face glitches in the long run. To overcome this, make sure you work at a suitable pace without compromising on deadlines.
9. Continuous attention to technical excellence and good design enhances agility.
A good design has provisions for identifying bugs and solving them on the fly. If you keep waiting for a full-fledged product delivery and then start your testing, you might end up rewriting your whole code again (literally!)
As a developer, inculcate a habit of self-review. You would be amazed to see the amount of time it saves.
Furthermore, as an agile team, code reviews should happen during each iteration to avoid building a fragile product. You will notice you have written an excellent code, if it accepts changes gracefully.
10. Simplicity–the art of maximizing the amount of work not done–is essential.
Eschew tasks which are not important. Reduce the distance between perception and culmination. Improve efficiency by adopting simplicity in tasks.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
In the agile team, ideas serve as a chain reaction. There is no one who sits waiting for a surveillance. Similarly, there is no one who sits for providing directions. Developers have to come up with a solution to their problems, fight with its implementation and survive by doing regressive attempts.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
There is a possibility that if you follow all of these above stated principles religiously, you would do perfectly fine in your development cycle. However, there is always room for improvement. May be a better approach is just waiting to be discovered.
Being an agile team you should always be open to retrospection and achieve higher standards of team efficiency and product development.
This is guest post from Harmeet Singh, The views expressed in this article are of his own and not of noeticforce.