Agile Development
Agile is a mindset, an attitude with which a project is undertaken. We at Semaphore are committed to give our very best to our prestigious clients driven by our quality policy "Deliver best products, software solutions and services, on time with quality, and as per customer expectations". Thus in this pursuit we are now weaving the Agile model in the functioning of our projects to produce the zenith of customer satisfied end products. To understand the terms better let us view the key issues of this emerging field and its implications on the projects underway.
Thus, we continuously experiment with new concepts, molding old frames into new casts as to best suit the client requirement. Using Agile methods we break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a cross functional team working in all functions: planning, requirements analysis, design, coding, unit testing, and acceptance testing. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations might be required to release a product or new features.
Semaphore uses a routine and formal daily face-to-face communication among team members. In a brief session, team members report to each other what they did the previous day, what they intend to do today, and what their roadblocks are. Another key aspect of our Agile software development model is that it tends to be user-centric, focusing primarily on the user experience and usable software interfaces using agile methodologies. Most of our projects follows the Agile system, since the core value of this methodology is to be flexible, sensible and to focus on getting stuff done.
Methodologies of Agile used at Semaphore
- Scrum can be defined as “a loose set of activities that combines known, workable tools and techniques with the best that a development team can devise to build systems.
- Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development.
- Scrum is a light weight software development process consisting of implementing a small number of customer requirements in two to four week sprint cycles. A sprint is the basic unit of development in Scrum. The sprint is a "timeboxed" effort, i.e. it is restricted to a specific duration. The duration is fixed in advance for each sprint. Scrum is composed of three broad phases:
- pre-sprint planning, sprint, and post-sprint meeting.
- During the pre-sprint planning phase, programmers gather to prioritize customer needs.
- During the sprint phase, programmers pretty much do whatever it takes to complete a working version of software that meets a small set of high priority customer needs.
- Finally, during the post-sprint meeting, programmers demonstrate working software to their customers, adjust their priorities, and repeat the cycle.
- During each sprint, the team creates finished portions of a product. The set of features that go into a sprint come from the product backlog, which is an ordered list of requirements.
- The sprint goals should not be changed during the sprint. Development is timeboxed such that the sprint must end on time; if requirements are not completed for any reason they are left out and returned to the product backlog. After a sprint is completed, the team demonstrates how to use the software.
Extreme programming or XP consists of collecting informal requirements from on-site customers, organizing teams of pair programmers, developing simple designs, conducting rigorous unit testing, and delivering small and simple software packages in short two-week intervals. It advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
XP attempts to reduce the cost of changes in requirements by having multiple short development cycles, rather than a long one.
Extreme Programming or XP can be in nutshell :
- Planning game
- Small releases
- Metaphor & Simple Design
- Tests
- Refactoring
- Open workspace & Just rules
- Pair programming
- Continuous integration
- Collective ownership
- On-site customer
- 40-hourweeks
Benefits of Agile Development:
Agile development is no silver bullet, but it is useful. Organizationally, agile delivers value and reduces costs; technically, it highlights excellence and minimal bugs. IT industry is now having more and more LEAN STARTUPS with innovative IT ideas to capitalize on dynamically changing day-to-day need of people. Thus Lean startups need Lean development with minimized lifecycle and faster release management.
The benefits of agile development include:
- Improved productivity
- Reduced technical risk
- Reduced development time
- Flat organization as its nature
- Faster release management
- Faster rollouts of new features
- Competitive edge in rapidly changing consumer software market
Process implications of Agile compared to traditional waterfall software dev.
Agile methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well.
Traditional methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a traditional team can report exactly what features and tasks are planned for the entire length of the development process. One of the differences between agile and waterfall, is that testing of the software is conducted at different points during the software development lifecycle.
Ideal Scenarios for adopting Agile development
The choice of which Agile components an organization will adopt depends, in part, on organizational characteristics.
- IT departments adopt techniques that improve project deliverables. IT organizations struggle to get requirements right and test effectively, so they emphasize techniques — such as story-based requirements, daily Scrum meetings, and rapid feedback mechanisms — that help keep project deliverables on track to meet business needs.
- Technology industry companies stress pace. Tech industry development teams are under constant pressure to deliver new products and services, so Agile techniques related to speed, such as daily Scrum meetings and short iterations, naturally get priority.
