Drei Ideen beim Einführen zu betrachten beweglich mit verteilten Entwicklung Mannschaften

-->

Der Rahmen der Softwaretechnik ist durch Einleitung der beweglichen Software-Entwicklung Konzepte neu definiert worden.  Beweglich hat grössere Verbesserung im Lebenszyklus eines Software-Projektes aufgefordert.  Wenn sind das Einführen beweglich mit vom Land entfernten oder verteilten Entwicklung Mannschaften, dort Gelegenheiten, drei Aspekte des Projektes zu adressieren.  Wir umfassen diese drei Einzelteile sowie zur Verfügung stellen einen wenig Hintergrund auf beweglichem.

Es gibt einige Entwicklung Taktiken, die durch bewegliches eingeführt werden.  Die meisten Taktiken fokussieren Versuch, Gefahr in sich entwickelnder Software in der kurzen Zeitmenge herabzusetzen und/oder herauszustellen. Wiederholung ist die Entwicklung von Software in einer Maßeinheit Zeit, und diese kann von eine bis vier Wochen dauern.  Sie schließt Planung, Anforderungsstudie, Design, Kodierung und die Prüfung ein. Software entwickelte sich während der Wiederholung braucht, nicht funktionell zu sein genug, als Produkt im Markt freigegeben zu werden, aber die Zielsetzung ist, Arbeits-Software, ohne Wanzen, am Ende jeder Wiederholung zu haben. Die Mannschaft bewertet die Projektprioritäten am Ende jeder Wiederholung neu.

Traditionelle outsource Herausforderungen werden verstärkt und neue Herausforderungen werden verursacht, wenn Software-Entwicklung ablandig genommen wird. Diese neuen Herausforderungen sind hauptsächlich in den kulturellen Unterschieden, kombiniert mit der Kommunikation Schwierigkeit wegen des Unterschiedes bezüglich des Zeit- und Sprachverständnisses. Most importantly, the biggest challenges remain in communicating, transfer of business logic understanding, demand in co-operation in poorly defined projects, unknown and imprecise requirements and lack of customer involvement, differences between customer and vendor, geographical distance, and many more. To be successful with offshore software development, these hurdles need to be overcome by both the onshore and offshore teams.

In plan-driven and Agile as well, face to face communication is stressed to improve communication and understanding of the project. This type of face to face time takes place during each iteration, where plan-driven project is concerned and this took place essentially at the beginning of the project.   When face to face time is not possible with the offshore provider, it is beneficial to have each developer answer 3 daily questions: what you did yesterday?  what you plan to do today?  describe any roadblocks or obstacles in completing the iteration stories?  Each developer should answer these question and not simply the offshore project manager.  Perhaps the offshore project manager can help in translating the answers to these questions.

In case of Agile, face to face meetings are held at all time, usually in the form of daily Scrums, pair programming, iteration retrospectives and iteration planning.  In distributed development teams, many times the onshore managers travel offshore to hold meetings with the offshore team, or in other circumstances, managers from offshore travel onshore for meetings. One important influence depends on the offshore person visiting the onshore team to absorb the project details and develop/foster relationships. He should take this know-how from the onsite team in a way that he is knowledgeable enough to answer many questions raised by his offshore team. In addition, he should be also capable of relating to his team members about the decisions that were taken in his meetings with the onsite team.  Depending upon the complexity of the project, a member of the onsite team, with good knowledge in business logic is often sent to work offshore.

In implementing Agile projects, a series of processes are utilized. The development process is not just a single approach. In implementing software offshore development, there are some principles that are followed, which have been termed as Agile Manifesto. These are as follows -

➢    Customer satisfaction is achieved by rapid and continuous delivery of useful software.
➢    Quick delivery of working software within weeks rather than months.
➢    The principle measure of development progress is derived from the working software.
➢    Any changes in the software may be incorporated later.
➢    Necessity in having face to face communication for better understanding.
➢    Maintain close relationships between the business people and the developers.
➢    Motivation and trust on the individuals make the project implementation successful.
➢    Apply continuous attention to the project design, and try to attain technical excellence.
➢    Adapt fast to changing circumstances.

It was found that the iterative framework brought benefits to Agile software development vendors. By this approach, the customers could make payments after each iteration. By paying this way, the customer does not lose or be in a risk to pay the for the whole lot after the completion of the project. This brought in commitment from the customer to provide the vendor with better business and motivates the vendor to consider each iteration important. The method of continuous feedback and communication helps in the offshore development process, but the approach of short iterations has proved to be especially successful.
Another aspect of Agile development is the importance of testing in each iteration.  Each iteration should produce automated tests that can be used during each iteration and future iterations as well.  The benefits of automated testing is better covered in different articles.  However, in the context of this article, it is important for your offshore vendors to deliver automated tests with each iteration.  When considering new vendors, ask about their testing strategies.  It is better to go with a vendor who believes in automated testing, rather than trying to convince a vendor the benefits of automated testing.
So, in sum, when implementing Agile in distributed development teams, there are opportunities to address three aspects of the project:  communication, payment/deliverables and automated testing.


Establishing and Managing Risk factors in Offshore Software Development

Outsourcing software development is usually done with the intention of lowering the cost of a project. The decision to outsource is also taken to redirect and conserve the competent skills of a particular business, or to utilize the more efficient skills of the outsourced company, its technology, and its resources.

In outsourcing a software project, traditionally, the onsite company hands over the management and the day-to-day functions of the project to be developed to a company established offshore. The onsite and the offshore companies enter into a contractual agreement. This agreement provides the terms and conditions agreed between the two companies related to the transfer of services. By this agreement, the offshore company acquires from the onsite company the documentation of the project to be executed, along with transfer of people, assets, and other resources. Such project outsourcing usually includes:

1. Information Technology.
2. Human resources.
3. Facilities.
4. Real estate management.
5. Accounting.

There are many onsite companies who outsource customer support, and call center activities, such as, telemarketing, customer services, market research, manufacturing and engineering.

The decision to outsourcing a project is usually taken by the high level management of an organization, and at some instances, the decision requires to be endorsed by the Members of the Board. The contract entered into by the onsite and the offshore companies brings about a sort of divestiture of a particular business function, in this case software development, made by the onsite company to the one situated abroad. Once the decision is taken in the matter of outsourcing, the search for an offshore partner would start.

The most important criteria in setting milestones offshore software development is to take care of the risks involved. The management of risks should start at the very initial stage, and as such, there are several risk factors to be taken into account. Risk management is as follows:

➢ Take early actions on identifying the risks.
➢ Determine the ways to mitigate those risks.
➢ Decide on when to mitigate the risks.
➢ Assign responsibilities to your staff to manage the various risks.

Usually, the teams involved in software development are “can do” groups, and it is not advisable to talk to them about process failures. There will be likely resistance from such groups, and you would need to overcome this attitude of resistance. You would need to plan for contingencies and also identify potential risk areas. In establishing such a procedure, the approach will yield the following:

➢ You will have a prioritized listing of all the risk that you envisage.
➢ You will have estimation of the probability of each of the risks occurring.
➢ You will be able to gauge the potential impact of the risks as regards the project or company.
➢ Contingency plans.
➢ Assigning responsibilities to individuals or groups for managing risks.

Further to the above, the following would make your risk management more efficient, minimizing and resolving the risk factors as identified by you in your offshore software development project:

➢ The software development life-cycle (SLDC) should be well defined between you and your offshore partner, remembering that SLDC is not only a project management tool, but also a risk management tool as well. Establishing the development life-cycle enables both the sides to set the time of completion of the project, and identify quality goals, deliverables and key milestones.

➢ Two project managers need to be identified, each from both the sides, who will be responsible to maintain the process as laid down in SLDC.

➢ For the critical areas in the project, you would need to set up the groundwork for “critical path management”, and front end load. This needs to be established as much as possible, for the critical path as identified in the project, becomes a crucial factor.

➢ As you define the milestones, you would need to define perceptive goals for each one of them. If this task is taken at the end, there could be drastic set back in the whole process of the development activity.

➢ You would need to plan for any deviations that can occur in the process of development. This is an important task, which allows you and your offshore team to highlight deviations, track the deviation properties, and learn from it.

➢ It is important that IP protection is in place and is mentioned in the contract drawn up between you and your offshore partner. When making a decision to outsource your software development, this is one important factor to be taken into that decision.

➢ The implementation of the enactment and enforcement of IP laws are different in different countries, and even if you adopt US related laws, enforcement still becomes difficult.

➢ Effective business relation and partnering would be the best way to mitigate the IP enforcement and enactment law. This could be done by effective maintenance of disciplines and auditing features.


Using Open Source in Offshore Software Development

The term open source software, OSS in short, may not be known to everyone. In your IT career, you must have heard of the Linux operating system. This is the operating system that has made a huge impact in the data center. Though LINUX has made its name as OSS, there are several others that fall under the category of open source software, some of these been developed by large organizations, such as SUN, IBM, and others. There are others from smaller companies which you might not ever hear about. There is a difference between what we call OSS and other software like the one from Microsoft, which is essentially proprietary software. Open source software allows free distribution of its copies. Not only that, you get to receive the original code that makes up the program. On the other hand proprietary software can only be distributed under license, and the original codes are never made available to you.

The combination of OSS and offshore development, yield high quality, and cost effective software, which is more easily available. As it is it is a good idea in having OSS as a part of the software development project that you want to outsource. However that is a different topic all together, but covered in a previous article Open Source and Offshore Development.

In choosing to outsource your software development project, it is not only the pure coding skill that should be considered as far as the offshore company is concerned. A decision to outsource your project involves many other aspects to be considered before that decision is taken. There is obvious trust that you should have on the offshore company, who you wish to partner with, and this trust would develop over time. However establishing trust needs to have a beginning. First of all the offshore company should be having good references of their previous work. There should be case studies that you can go through, which would reflect their professionalism in the work that they have done so far. At the same time the applicable skill set that the team has, needs to be evaluated. Even after all these, there could be those nagging doubts that you may have in trusting the offshore company in the way you would want to, since the company concerned is not a referral from one of your previous contracts.

OSS source is the foundation of trust and confidence when you choose to outsource your software development. It provides you with the trust in the software being developed. It provides insurance in the worst case the project has not been delivered in the way you wanted. You still have the code and your infrastructure based on open source architecture which can be resumed or modified by a different software development partner. In other words, you still have the opportunity to engage other programmers to update the software much faster, since it is based on open source. If open source was not used as the base of the software being developed, it would have been more difficult to replace the programmers, in the event of worst case scenarios.

There are different interpretations to the term open source. In the previous example, open source would mean the complete product, which includes, tools, libraries, etc. Delivery of the developed software would not just mean delivery of the source code with the solution. It has to include the open source product, tools, library, and others which need to have some established resources. This reduces the time and effort of the new programmers in analyzing the software. The new programmers would take much more time to get on to the speed, if the software development is not based on community based open source software.

When you choose to outsource your software development, chose developers who would use open source architecture in developing the software. In such outsourced projects, open source provides the confidence and trust in much shorter time. In a decision to outsource, open source takes a positive approach to your risk management system. You can obtain the most competitive cost in choosing a vendor who would use community established open source architecture with appropriate license. This would provide you with the quality that you require.


Offshore Software Development Dynamics

Imagine the following article is software code.  Sure, it’s English and it somewhat comprehensible, but it’s going to take an investment to make it informative, clear and useful.

This is a continuing post on the series of outsourcing article writing.  Outsource Article Content Part I, Outsource Article Content Part II.  There are many parallels in outsourcing software development.  Sure, you receive Java, Ruby, PHP code back, but many times it requires a significant investment in making the code comprehensible.  Many people and organizations have experienced this missing of expectations when offshoring software development.  It takes time and effort to find good partners.

Developing software is an activity that requires intensive knowledge in the field of its expertise. The differences in cultures, languages, development practice, power structure within organization, quality standards, documentation, time zones, and software updates and estimations hinder outsourcing of software development to other countries in more ways than one. As it becomes a widespread practice for organizations, in outsourcing of software projects, it becomes increasingly important to understand the environment which affects these practices for an effective development activity. The key drivers in software development outsourcing, which mostly affects the effectiveness of the development, have evolved through the past experiences of organizations, while outsourcing their projects to companies in other countries.

Offshoring of software development is relatively new, and the various procedural aspects in this activity, such as, quality control, project management, faster development cycle, etc. have yet to be evolved fully, which understandably would provide a better confidence level. Constant research work is going on for the success of software development outsourcing. This is being done through understanding of the various models, while investigating into the factors of its success. These models have evolved through the interactions between the onsite and the outsourced organizations, and that’s how the learning curve has been derived out of years of experience. In order to make outsourcing a success, the offshore sourcing needs to be taken up as a serious effort, with the stakeholders needing to learn more quickly through the experiences that they have had, bringing out the best practices that could be achieved. Offshoring projects involve various socio-cultural processes inherent in the system of knowledge transfer, including the explicit and implicit, formal and informal exchanges of knowledge between the onsite and the offshore companies.

Some of the emphatic declarations that have been so far derived at, from the experience and previous results out of software development outsourcing, provide an understanding of the variables affecting the success of offshore software development. Some of these assertions include:

  • The essential components of offshore software development success are the various dimension of the project itself, which are on-time completion, within-budget completion, costs and effort, meeting system requirements, system quality, user satisfaction, system use, and net system benefits.
  • The process performance is a measure of assessing the functioning of the offshore partner. These performances could be classified as on-time and within-the-budget completion of the project by the offshore company, effectiveness of communication, etc. The performance of the software product implemented is also a measure in assessing the efficiency and capability of the offshore company.
  • Understanding of the project being outsourced is one of the vital aspects of any project success. The offshore company would need to have adequate relationship management and engagement staff, who would be skilled to understand the process of outsourcing, there-by helping the onshore company to navigate through the complexity.
  • A disciplined software project management is success by itself.
  • The major issue regarding communication between the onsite organization and its offshore partner company has been identified as the most important aspect in any outsourcing of software development projects.

In outsourcing your software development, you would need to take care of the complex processes that it involves. These are further complicated by the ever changing business scenario, when requirements still remain fluid. Offshoring a software development project is not simply handing over a set of documents to the partner company. It needs a careful interactive session between the onsite and offshore company, discussing the project threadbare, providing the required detailed information possible for the project to be taken up by the partner company. The offshore company on the other hand would need to comprehend fully regarding the project implementation, taking into account all the possible pitfalls that may come up during execution.

The time zone separation, the cultural differences, communication, etc are all pitfalls in any outsourcing of projects. In addition, the geographical boundaries, and the changing definitions and relationships in the development effort are all part of the game of offshore software development.


Challenges in Offshore Software Development

In this day and age, with globalization setting in, organizations are constantly looking for benefits derived from outsourcing software development to other countries. There is skilled software teams distributed all over the world, which are increasingly being made available to organizations as partner companies, collaborating on offshore software development projects.

Organizations have been distributing their work all over the world, outsourcing their software development projects to different countries. The motivations of these organizations, as well as the process they follow in distributing projects, continues to evolve. There have been significant management process changes adopted by companies in dealing with offshore companies and their software teams.

Offshore software development offers several benefits, but at the same time distribution of projects to distributed team of software engineers offer more challenges than the collected team. The question is how to address these issues, and as these evolve, there would be finally a set of critical factors that would ensure the success of offshore software development.

The trends in the market:

There is a continued global expansion of companies, and this expansion has resulted in distribution of their teams around the world in several ways, whether be it offshoring, acquiring, partnering, or outsourcing. As this practice becomes prevalent, there is a constant evolvement of approaches and practices, taking the offshoring to a matured level.

The decision factor:

Many organizations are moving their work to one single destination, and frequently in India. In the present days there are trends in transferring projects to China, and the Eastern European countries. In transferring the work, the main motive was the cost factor, where the decision to move offshore was influenced mainly by the availability of the skill at a much cheaper rate than the US or Western European countries.

Organizations in the US and Western Europe are increasingly setting up their own development centres in several locations in the world. The decision to set up such center in Asia, and Eastern European countries are mostly motivated by the availability of the right skill at low rates, and there are other motivation factors which has prompted organizations to move offshore.

Having centers all over the world, organizations now have a pool of talents from which they can draw from. Having set up the teams in different time zones, the organizations can now have extended working hours. The team in the eastern zone hands over the job to the western team at the end of their day. The team in the western region starts to work on the same project, there-by extending the time extensively, saving cost and time of completion.

There is increasing number of outsourcing providers growing in the world, which has made outsourcing popular for quite some time. Initially, the organizations used to select outsourcing vendors who made sense at that time. The decision could also have also have been based on the project itself, which was perhaps found to be suitable for outsourcing, or the organizations might have based their decision on such projects which were short of funding.

The pitfalls:

In order to successfully accomplish project completion, the offshore companies need to be flexible in adapting to new methodologies, life-cycles, and specifications in order to meet the outsourced project requirements. In each case, the methodology applied for projects are usually different. There are other factors which may affect the offshore software development processes, and these could be the existing communication and co-ordination variables, cultural differences, requirement deficiencies, relationship management, quality process, project management tools for project evaluation, and more importantly the turn-over of skilled people attached to the project.