Showing posts with label Methodology. Show all posts
Showing posts with label Methodology. 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