Basic Introduction To Agile
The Agile Methodology for developing and managing product creation grew out of frustrations with the existing traditional approach. Once you see the difference in the two, it is obvious why many are changing their attitudes to Agile.
The Traditional Development Approach follows a set procedure where one activity cannot begin until the other is complete. No emphasis is placed on communication between teams or between project managers and customers. Basically, with the Traditional Approach, products are developed in a microcosm that produces (more times than not) products that are irrelevant by the time the development cycle is complete. The development lifecycle for this approach is often much longer than similar product development using Agile Methodology. Donâ€™t be misled, there are benefits to using the Traditional Approach, but one must weigh the pros and the cons and determine the best approach for the product, the requirements, the market climate and the customer at hand.Â See Diagram 1.
Advantages of this method
- Very logical
- Easy to sign contracts
- Specialized people in each domain
- Tracking at each step becomes possible
- Works best if everything goes as planned
- Limitations of this method
- Rarely works
- Feedback comes late
- Skills more important than attitude
- Tracking at each step is not lean
- Most things do not go as planned every time
Iterative and Incremental Models work on one of the Agile frameworks that have been developed through attempts to create an approach that is less frustrating and produces a better track record than the Traditional Approach.
The Iterative Model
Using an Iterative Model enable development components to be created in tandem so that nuances discovered in one cycle can be easily applied across development. This model more easily and quickly replicates success and provides valuable understanding of coding details across development groups. See Diagram 2.Â
The Incremental Model
Using an Incremental Model also focuses energies on in tandem development instead of Traditionalâ€™ s sequential approach. Development groups are in constant communication with each other throughout the process so that components metamorphosize along with requirements and coding tweaks. This model keeps development in sync with dynamic project specs, keeping the product on track and minimizing major changes in final development stages when they can drive costs 9and frustrations) to unnecessarily high levels. See Diagram 3.
The Blend of Iterative and Incremental
Blending the two processes gives development teams the process structure that helps keep them on track, in sync and in communication. The process identifies success and gives development the structure on which to repeat it over and over again until the project is complete. Small incremental successes also validate the project business case, minimize frustrations and produce a more accurate, relevant end-product more quickly. See Diagram 4.
Iterative & Incremental + Something = Agile
Some Agile Frameworks that fit into the â€śSomethingâ€ť category are:
Lean – Move closer to customer, shorter cycles, eliminate waste, decide as late as possible, empower the team, build in integrity
Crystal – Emphasize people, gather techniques from other methods, improve communications, adapt the process itself (shrink or grow to fit)
Scrum – Manage a prioritized list of requires on a product backlog, collaborate through daily standup meetings, exhibit the product upon iteration completion, use retrospectives to correct the process
XP – Emphasize the values of communication, simplicity, feedback, and courage; use specific technical and collaborative practices, including TDD, refactoring, pair programming, continuous integration, open workspace, and automated acceptance tests
So what is Agile all about?
The Agile Methodology for software development actually has its own set of guiding principles organized in aÂ HYPERLINK “http://agilemanifesto.org/” Manifesto for Agile Software Development.
The Manifesto, summarized in bullet points:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
While there is value in the items on the right, we value the items on the left more.
Principles behind the Agile Manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- We welcome changing requirements, even late in development. Agile processes leverage change for the customer’s competitive advantage.
- Deliver working software frequently, from a few weeks to a few months, preferring shorter timescales.
- Business people and developers must work together daily throughout the project.
- Projects must be built around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a consistent pace indefinitely.
- We place priority on continuous attention to technical excellence. Good design enhances agility.
- Simplicity is essential. Simplicity defined: The art of maximizing the amount of work not done.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on ways to become more effective. They then tune and adjust behavior accordingly.