2 The Option to Re Allocate Development Team Members in Real Time
Because change is constant, project teams are continually looking for moreflexible approaches than the waterfall model. Many methodologies follow a morefluid approach, with some steps happening alongside each other; for example,versions of the website could be released on a rapid, iterative schedule usingan agile or rapid development approach (Figure 4.4). An agile approachgenerally has a greater focus on rapid collaboration and a reduced focus ondetailed documentation and formal sign-off.A true agile approach (following the best practices developed by members ofthe Agile Alliance, for example) calls for small teams whose members arelocated next to each other physically, with little focus on defining formalroles between team members. Working this way allows a very high degree ofcollaboration, which reduces the need for heavy documentation between thestages of design, development, and testing. A team member can pose a question,come to the answer together with other team members during a quickwhiteboarding session, and implement a solution without the delay of detaileddocumentation and approval. Stakeholder reviews occur with a fully functioningsystem when one of the many iterations is released, and the resulting input istaken into account as the next iteration is planned. (Iterations are draftversions of a particular site or application and may also be called sprints.)Designers moving to an agile approach for the first time often face aconundrum. How do you go from a waterfall approach (which favors detaileddocumentation and sign off, taking weeks or months per phase), to an agileapproach (which favors conversations and quick decision making over the courseof days or weeks) and still make time for design thinking and user research?To see how some designers have made the transition, let’s dive deeper into aparticular kind of approach called Lean UX.
2. The Option to Re-Allocate Development Team Members in Real Time
One result of turning on a dime and releasing a new credit card return enginein 2 weeks was that the team needed 4 instead of 2 engineers working on thefeature to get it done within the sprint. Since pair programming andcollective code ownership allow team members to rotate and work on variousparts of the code, we were able to pull a pair that was finishing up anotherstory onto this new high priority story and maintain our velocity as wereprioritized.With Agile Engineering, the project doesn’t get held up by any one rock starwho’s too busy on something else. The whole team can morf to the newrequirements. Those best equipped to work on the new feature can be dedicatedto it. The team is in constant communication so adding more engineers to astory is fluid and not disruptive.
Let’s clarify this, Agile is not a methodology. It is a set of values andprinciples recorded in a namesake manifesto, which advanced ideas that weredeveloped to counter the more convoluted methods that pervaded the softwaredevelopment world despite being notoriously inefficient and counterproductive.Promoting similar values to Lean, Agile methods and techniques mostly focus onthe following key principles: * Satisfying customers is of foremost importance * Develop projects with inspired contributors * Interactions are best when done in person * Software that works is a measure of progress * Reflect and adapt on an ongoing basisAdditionally, the four core values of Agile are as follows: * Individuals and interactions over processes and tools * Working software over comprehensive documentation * Customer collaboration over contract negotiation * Responding to change over following a planSo every method, framework or behavior that follows these values can be namedAgile. Regardless of which Agile method/methodology a team adopts, thebenefits cannot be fully realized without the commitment of everyone involved.So, here are some examples of the most popular Agile methodologies.
What is Agile Development?
Agile development is an umbrella term defining a set of practices andframeworks based on the values and principles laid out in the Agile Manifesto.When approaching software development, experts suggest you adhere to agileprinciples and values and use them as a guide to determine the correct thingsto do given a specific context.The agile software development community primarily focuses on the self-organizing team and collaboration. But that doesn’t mean managers are non-existent–it just means teams are able to independently figure out how theywill approach a certain project. This means agile teams are cross-functional.Managers still have a place in an agile model. They ensure that each teammember has, or obtains, all the right skills required for the project. In anagile framework, managers work by creating an environment that brings out thebest from the team. However, instead of being at the forefront, they oftenstep back and allow the team to determine how they will deliver products.Managers only step in when teams fail at resolving issues after multipletries.
Agile vs Scrum
Scrum is a kind of agile methodology. It is one of the process frameworksincluded in the agile approach.In the scrum methodology, the basic unit of development is called a Sprint.Every Sprint begins with a planning meeting in which tasks for the sprint isdefined. This is also the part where the estimated commitment for the sprintgoal is made. A Sprint concludes with a retrospective or review meeting whereprogress is evaluated and the next sprint lessons are figured out.Meanwhile, the agile framework involves a team working through a completeSDLC. The product goes through several iterations throughout the process.Scrum sprints may correspond to agile iterations.
What is Agile? | Agile Project Management
Agile is a time-boxed, iterative approach to project management and softwaredevelopment that helps teams deliver software incrementally. Unliketraditional waterfall methodology where teams generally work on a big launchor delivery, an agile team works in small iterations and delivers apotentially shippable increment of the software. Users provide early feedbackon this increment and changes are taken up in the upcoming iterations. Thus,Agile Software Development is flexible to changing customer demands, ensuringthat the software developed, is relevant to business. Agile also recognizesand acknowledges individuals and teams as key elements of software developmentand strongly emphasizes on open communication, collaboration, and adaptationamong team members. Agile does not prescribe any iteration duration or teamsize, it simply lays out core values and principles to enable agility.
The Agile Manifesto was written in 2001, describing four key values and 12core principles that enables teams to become agile and develop faster todeliver high-quality (defect-free), working software of the highest businessvalue in the shortest lead time. All methodologies abide by these values andprinciples.
The following 12 Agile principles form the basis of the Agile Manifesto: 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale 4. Business people and developers must work together daily throughout the project 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation 7. Working software is the primary measure of progress 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely 9. Continuous attention to technical excellence and good design enhances agility 10. Simplicity – the art of maximizing the amount of work not done – is essential 11. The best architectures, requirements, and designs emerge from self-organizing teams 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly Any Agile methodology will follow these values and principles and these can beapplied using frameworks and practices that each methodology recommends.Since the inception of agile, various flavors or methodologies of agile haveevolved. The popular agile methodologies include Scrum, Kanban, ExtremeProgramming (XP), Feature- driven Development (FDD), and Dynamic SystemsDevelopment Method (DSDM). These agile methodologies are unique in theirrespective approach however; they revolve around core agile values andprinciples. They emphasize and enable incremental iterations and continuousfeedback, to deliver customer value and business goals. They all share somecore processes in common such as continuous planning, testing, integration andfeedback to deliver software faster with better quality. They are alllightweight, easy to implement and adopt when compared to traditionalwaterfall method. Other important factor that all these agile methods focuseson is encouraging effective team collaboration and faster decision-making.
What is Agile Methodology?
There are various agile methodologies that share the same philosophy,practices, and characteristics. But these methodologies are implemented usingtheir own individual procedures, terminologies, and practices. Here, we havesummarized some of the popular Agile methodologies:
Scrum: Agile Methodology
Scrum is a simple light weighted agile project management framework thatenables product teams to build products incrementally in an iterative fashionthrough effective team collaboration. Ken Schwaber and Jeff Sutherland are co-creators of Scrum and continue to contribute significantly to the evolution ofScrum.Scrum forms the base for many of the other frameworks and hence, it isimportant for an agile practitioner to understand this methodology. Scrumadvocates self-organizing teams working towards a common goal throughcontinuous inspection and adaptation. A potentially shippable increment orminimum viable product at the end of each iteration provides an option for theteams to quickly get feedback from end users and respond accordingly muchfaster.The Scrum Methodology is defined by: * 5 Scrum Values * 3 Roles in the Scrum Team * 5 Scrum Activities or Events * 4 Scrum ArtefactsScrum has gained popularity in the software development community. ScrumMethodology has proven to scale across multiple teams of large organizationwith 900+ people.
Kanban Software Development
Kanban is a popular framework in agile software development. Kanban method isused by software development teams, who need to deliver in a continuous flowand are not tied to a definite schedule. Kanban method was conceptualized fromLean and Just-in-Time manufacturing techniques from the Japanese Automakerswho, used Kanban methodology to effectively manage their workloads. Kanbanframework for software development helps to visually represent every piece ofwork or task on a Kanban board, allowing teams to visualize and plan work ortask accordingly based on the team’s capacity.Kanban is mainly based on the following 3 core principles: * Visualize the workflow (Value Stream) : The visual representation of the development process helps determine the current status of one’s tasks. * Limit Work in Progress (WIP) : The number of active tasks for every phase is restricted and thus, the team is able to pick work as per its capacity. * Continuous measure and improvement of the life cycle : The cycle time of the work items is measured. Teams focus continuously at removing the non-value adding activities and thus, continuously improving the cycle time and throughput.
What are the advantages of agile software development?
* Reduced risk of failure: Agile methods involve customers and stakeholders at frequent intervals throughout the development process. This allows development teams to obtain continuous feedback and adapt to changing needs of the business. This increases the probability of the software meeting market needs. * Reduced time-to-market with predictable delivery: Agile helps in delivering business value by focusing on what is needed immediately. Prioritizing what needs to be delivered helps realize early ROI with every iteration * Improved satisfaction of development teams: Agile fosters creation of empowered, self motivated and committed teams with a sense of purpose by providing a working environment based on transparency and trust. This drastically improves the morale of development teams and motivates them to deliver highest business value. They can clearly see the role their contribution plays to achieve the ultimate result. * High quality: The objective is always to deliver quality products by testing early and often, making the product more robust and defect free. * Collaborative environment for faster delivery: Agile improves team collaboration to clear hurdles and get work done effectively and efficiently.