Showing posts with label Agile. Show all posts
Showing posts with label Agile. Show all posts

Sunday, July 15, 2012

Working With Distributed Teams in Agile Methodology

Outsourcing a portion of work is becoming more and more common for IT departments around the world. The main reason an agile software development company may outsource is to reduce costs due to lower wages in foreign countries or to seek out expertise not found in their local area. When a company outsources a portion of work to a team in another location, the two groups must work as a distributed team. While many people do not consider working on a distributed team as ideal compared to working with co-located teams, there are many ways to improve the group dynamic and achieve optimal results. The agile methodology can be an excellent way to work with distributed teams.

Communication is key when working with distributed teams. It is very important for all barriers to communication to be removed so the team members can work together easily. This includes utilizing conference call and video conferencing software that is reliable. Conferencing is important for group meetings but instant messaging is available for team members to discuss work one-on-one. In the agile methodology, stakeholders and designers meet after each increment of work to discuss what has occurred, re-evaluate requirements and determine priorities. All team members should have access to these meetings in addition to constant communication during the iteration.

Meeting in-person at some point will increase team cohesiveness. Although the team may be in two different locations, it is important to meet face-to-face a few times throughout the project. Team members should try to meet at the beginning of a project in order for everyone to get to know each other and get an idea of what it will be like working together in addition to creating a team bond, which will keep morale high during the project.

Reducing the effects of time zone differences will improve the work of the distributed agile teams. Agile teams need ample opportunity to communicate, therefore it is important to maximize the time both teams are working. All team members should be aware of the hours of operation for the members to ensure high communication during those hours. Teams that are spread across vast time zone differences may need to adjust their work hours so there is some overlap in business hours. Many companies are moving toward nearshoring, outsourcing to a country that is near the location of the main team. This minimizes or eliminates the differences in time zones so the team can work in real time.

Language barriers need to be addressed. If the two teams who are working on the project are in different countries, they may have to deal with members who speak different first languages. Ensure meeting times are long enough to deal with any language issues that may arise. In many situations, written communication is easier to understand when working in different languages, therefore, using chat sessions may be more beneficial than video conferencing. Also, keep in mind that with nearshoring or when two teams speak the same language, they are still barriers in communication due to culture.

Ensure access to all materials for team members. All team members need to have reliable access to the documents they need to do their work. This may require investing in tools to share documents in a central location with easy access for all.

Working with a distributed team poses some challenges, but they can be overcome in order to gain the benefits associated with offshore or nearshore companies.

Agile methodology relies heavily on communication, which can improve the way distributed teams work. The two teams must come together often to discuss work and meet with the product owner and users. Misunderstandings and miscommunications can be addressed early, reducing mistakes and delays in getting the end product to the market.


View the original article here

Saturday, July 14, 2012

Cost Reduction With Agile Methodology

Agile methodology is becoming a more and more popular software development method. While there are many advantages of agile, including more control on the part of the product owner and less risk of the product not going to market, the reduction in the actual cost of development is one of the most important advantages.

Agile development is a strategy of software development in which the development process occurs though short increments. The phases of the development process occur continuously in iterative cycles, with each team member and the product owner sharing in the responsibility for producing "potentially shippable" software at the end of each iteration or "sprint". The team meets after each increment to discuss what has occurred, re-evaluate requirements and determine priorities. This allows for greater transparency between clients and programmers and clients have greater influence in what is being designed to ensure the product is what they want. This is a departure from the traditional "waterfall" method, which typically involves the product owners during the requirements phase; then the development team takes over and develops the application.

In agile methodology, there is no upfront requirements document detailing all the work that will be done on the project because it changes constantly. Initially, software development companies may have difficulty budgeting for the project when so many things are unknown at the beginning. However, the development team works with user stories which are short descriptions of application functionality from the perspective of the user. A collection of user requirements are stored in the product backlog, to be developed as the project continues.The development team assigns each user story an estimation of the amount of time and effort the team will need to put forth to complete. Once the most important user stories have been identified, the project manager can determine a budget to present to the product owner. Of course, with agile methodology, there are bound to be changes, but it is possible to determine a budget up front that is a good estimation of production costs.

The main way agile methodology can reduce costs in software development is by reducing the amount of time it takes to bring a useable product to market. Agile methodology focuses on developing the most important aspects of the project first. If an aspect of the system does not work, it will become evident early in the process and there will be little time wasted on something that will not work. Also, if the system is not exactly what the product owner or user had in mind, it can be altered immediately. The development team does not waste time developing aspects that will get little or no use by the user.

The project is continuously tested to ensure it is running correctly. A useable function of the system is completed after each iteration. Each meeting at the end of an iteration provides an opportunity to make sure the system is working and contributing toward a finished product. The team is not waiting until the end to see if the program runs correctly, resulting in costly and time-consuming changes.

Agile is about collaboration and communication is key. Less time is spent dealing with miscommunication because the team meets often. All members of the team meet so everyone agrees and is made aware of what is being developed. The product owner is included in all meetings to ensure he or she is getting exactly what is needed.

Less cost is associated with overhead in agile methodology. Management and administration occur within the team and extra staff is not required, for example, to write the requirements document at the beginning as with the waterfall method. Staff is not needed to schedule meetings and track down members of the team because everyone is aware that meetings happen regularly and are required.

Agile is an effective method for working with distributed teams. Outsourcing or nearshoring may be instituted to reduce costs, and utilizing agile will ensure multiple teams work well together by reducing miscommunication and catching errors quickly.

Agile methodology can reduce costs for a software development company. However, it is important to have an end point so the budget can accurately reflect what the project can entail. When there is no upfront requirements document, the team could continuously make changes to the system, extending the project indefinitely. Once a company becomes comfortable with the agile methodology, it will begin to see reductions in costs.


View the original article here

Friday, July 13, 2012

Agile Development Practices Are Based On Agile Manifesto Stipulations

Every business has a potential to grow and expand via agile development practices. Agile practices allow software developers to divide a large project into several modules. Developers tackle each module at a time while making sure that it is completed within a preset period. After the completion of each module, the software owner is requested to verify if the completed software module is usable. Agile practices are preferred to traditional software development methods that require an in-house team of developers to do one project until it is over. These traditional approaches do not involve the project owner until the work is finished. They therefore allow costly mistakes to be committed. Due to the unreliability of these methods, big and small organizations are turning to agile developers for help.

Today numerous businesses meet their software creation goals via agile development practices. Projects that demand extra speed or technological expertise are generally assigned to nearshore or offshore agile developing teams. These teams are preferred to in-house developers when an urgent project has to be performed creatively and accurately. These teams are remote companies that do not involve a customer in person. They use latest methods of internet communication to get in touch with their customer until a software development project ends. These communication methods include Skype, instant messengers and email chatting and messaging. Effective communication remains a vital component of agile development practices. It unites development teams and consumers irrespective of the big distance between them. Agile practices are based on the stipulations of the Agile Manifesto.

This manifesto was created by a group of creative and talented programmers such as Jeff Sutherland and Ken Schwaber. These two people contributed to release of the famous Scrum methodology. Scrum is a system where a team does small portions of a work autonomously. These portions of work are called Sprints. Each member must pick enough tasks from the Sprint backlog and complete them within a preset period. Other advocators of the Agile Manifesto include Ron Jefferies, Kent Beck and Ward Cunningham. They came up with Extreme Programming methodology. Simply shortened as XP, Extreme Programming was created for programmers that work face-to-face with their customers. It has many principles and some of them include planning game, small releases with high-value elements, metaphor, simplicity, refactoring, pair programming, testing and sustainable development.

XP methodology emphasizes on customer involvement as well. Customers are called upon to review the features and capabilities of the software product while the development work continues. Crystal methodology is also featured in the Agile Manifesto. Crystal was created by Alistair Cockburn and it refers to a collection of techniques that Alistair created in order to eliminate an anomaly called software engineering. The foundation of Crystal agile development practices is effective communication and larger teams. Although there are other methodologies, the above are very popular among developers. To make sure that proper practices are followed when developing software, one should begin by choosing the right programmer. This is a programmer who is very familiar with agile projects and can provide proof of prior experience.


View the original article here

Wednesday, July 11, 2012

Agile Methodologies

Agile methodologies promote delivery of a long software development project in short-term cycles or iterations. Iteration involves a tiny portion of software that is developed quickly and accurately for a testing purpose. Iterations are technically called time-boxed, because they are based on a predetermined duration. The duration usually varies between different methodologies. Each agile methodology's uniqueness is determined by the number of tasks, steps and work products involved in it.

The methodology that has lots of steps, activities and work products is normally referred to as higher ceremony while the one with fewer steps, activities and work products is called lower ceremony. Agile software developers have power to design the ceremony they want by picking tasks, steps and outcomes for every project. A number of agile methodologies are available but the main three are explained below.

XP or Extreme Programming - This is one of the hugely used agile methods. According to XP, programmers should pick agile practices based on the requirements of every project they are doing. It recommends use of very short iterations, such as seven to thirty days. Extreme programming is also among the methods that have the lowest ceremony. Its work products consist of the story cards, unit tests and code. Even so, XP is associated with the most complicated agile practices that are delivered via four core values. These include courage, communication, feedback and simplicity. There are thirteen practices that diverge from these four core values. Roles in any XP project include the Coach, programmer, customer and tracker.

Scrum - This is among the very commonly used agile methodologies with an iteration of thirty days. Scrum iteration is called a Sprint. Programmers have flexibility to create shorter Sprints that end after every 14 days if they like. The rationale behind the Scrum framework is that each project has to be tackled by an autonomous team. A team usually consists of four to nine members In other words a team of programmers are required to gather daily so as to discuss and come up with the tasks that would make up a Sprint for the following day. It has three main roles including Scrum Master, Product Owner and Team Member.

The Scrum Master is described as person responsible for restoring order among project team members. This is, however, not a domineering role since teams are self-governing. Scrum Master's role is detecting and eliminating obstacles, reporting progress and channeling the teams toward the high priority job. Product Owner is either the actual owner of the project or their representative. The Team Member refers to the software development team that is often made of programmers, database managers, product testers, engineers and all other involved staff.

Feature Driven Development - The fundamental step in this one is the problem domain model creation. It is done by gathering information about the domain from experts called Subject Matter Experts (SMEs). All the data is merged to form a unified model that is used to make a draft plan for the necessary resources. FDD also encourages teamwork and iterations that last for about two weeks. The teams are first given a group of initial features to work on for about 14 days. Several different feature sets can be delivered at the same time by team members but each feature must be finished. It has up to nine roles such as the project manager, development manager, chief architect, class owner, chief programmer, tester, domain expert, technical writer and deployer.

There are other popularly used agile methodologies not discussed in this article. Examples include Lean Software Development, Agile Unified Process, and Dynamic System Development Method among others.


View the original article here