Term Paper Assignment Quality, expedience and cost are the three determining factors in the success of any business in today's market. To ensure success in the software engineering and analyses market, you have to be able to turn out a high quality product faster then your competitors and do it at less of a cost. Companies tend to resist change because they are comfortable with the way things are done and they fear failure. In other words if it isn't broken, don't fix it. Kent Beck, the developer of Extreme Programming (XP), did not necessarily agree with this thought process. He developed XP based on the observations of what made computer programming faster and what made it slower. XP is an important new methodology for two reasons. First and foremost it is a re-examination of software development practices that have become standard operating procedures. Second, it is one of several new lightweight software methodologies created to reduce the cost of software.
XP goes one step further and defines a process that is based on simplicity, communication and feedback.
Escrow.com was a company faced with problems in its development efforts. These problems included slow delivery, increasing development costs and poor product quality. To Escrow.com, time-to-market was critical in establishing their business and gaining market share. In an attempt to improve where they were failing, early process improvement efforts were implemented and found to be largely unsuccessful. It was evident that a fundamental change to the development process was needed. In response to this need, Escrow.com looked at implementing Extreme Programming (XP) because of the hypothesized benefits they expected the new method to deliver. They implemented the change and compared it to a non-XP project they were conducting at the same time. The differences between the two were noticeably in favor of XP. Since Escrow.com did not have the time or the resources to conduct a pilot XP project, they made an immediate and complete switch to XP. They adopted XP as their fundamental software development process within a two week preparation period. Escrow.com is just one example of a company to take this step forward. Many other companies, including Symantec, are testimony to this, having implemented the XP methodology as well. All of these companies have embraced the practices of XP because it is simple, cost effective, advanced, and enjoyable. XP could bring any company great success, specifically when its 12 best practices are implemented. The best practices to be discussed in further detail are on-site customers, contiguous integration and paired programming.
An on-site customer is an employee of the company who will actually use the system. The on-site customer works directly with the development team to keep scope intact and improve question response, quality and time. If the contracture does not want to lend an employee to be an on-site customer, the value of the project should be re-assessed. In other words, if the company does not gain more value by having a completed project and temporarily losing and employee, then the project may not be feasible. The goal of the on-site customer is to ultimately bring success to any company because of the time, and therefore money, they save. They are fundamental to a successful XP project for a number of reasons. Firstly, they decrease lag time when developers have a question. On-site customers can answer these questions immediately, and answers are more direct, resulting in less chance of confusion and miscommunication. Secondly, on-site customers increase correlation of software to business needs. For example, Escrow.com used their on-site customer to help bring the delivered releases inline with the requirements of the end users, eliminating unnecessary or low return-on-investment features. The result was an increasing rate of development which allowed them to keep up with the increasing demand for new features, one area that a lot of projects fall behind in.
Continuous integration is also stressed as an important XP practice which can greatly increase the success of any business. For example, continuous integration calls for multiple builds per day. This is somewhat different to the more common methodologies that emphasize builds once a week or even once a month. Multiple builds are important because they greatly decrease the chance of issues when the program is integrated. All issues should be worked out in previous builds. Realistically, problems do arise when continuous integration is not implemented in any project. One of the first team projects I was a part of we integrated the project bringing four different parts together at once. After 3 weeks of coding separately, the inevitable happened. Nothing worked. We spent countless hours trying to fix all the bugs. Other projects I have been part of integrated all parts of the project at least once a day and worked out the bugs at that time. This greatly decreased the amount of time spent debugging because there is a lot less system to work with when building in such small increments. Continuously integrating the program allowed everyone to have an up-to-date working program to use. Continuous integration also brings companies success by increasing productivity with the avoidance of code freezes. This means that no developer should have to wait for someone else to finish before they can start. I was first faced with this issue when a project I was a part of was divided up unevenly. The rest of the group had to either help out or wait for a team-mate that had more work to finish before we started. It was a poor use of time for us to wait for the team-mate to finish, so we helped out. This could all have been avoided with the use of continuous integration. Another thing that the best practice of continuous integration explains is that if problems arise while fixing code, then discard it and start over. This may sound unreasonable, but in the long run you are saving time. The quality of your code will increase while the size of your code decreases. Rebuilding it will actually be really quick since you have already done it once. Saving time, increasing code quality, using fully functional new versions of the system, building smaller more manageable chunks of code can all help create a success out of your business. All of these benefits are encompassed in the XP best practice, continuous integration. If continuous integration is implemented as part of the XP process, your company will benefit.
One of the more interesting and probably most feared best practices of XP is paired programming. The common belief is that it will decrease productivity and increase the time spent on development. That is simply not the case. By adopting the XP process and implementing paired programming you can be guaranteed both an increased rate of development and an increase in product quality. Paired programming, also called team programming, is more productive because instead of one person having to worry about both developing the method being created and how that method works into the class, two people split the tasks up. This allows each person to help the other when they become stuck or confused. Furthermore, it creates a better flow to the programming because there are not as many interruptions such as getting up to find help or forgetting where you were when you start working again. Another benefit is when one person gets tired the two can switch jobs. I have used the paired programming technique throughout school and without a doubt, it increases my productivity. Paired programming is also a great way to learn and adapt programming style. You can pair new employees up with older ones so that they can develop their coding standards and build up some confidence at the same time. There have been times in school when I have had to try coding on my own and I usually end up feeling very lost. Working with someone who knows more than you is always beneficial. The result is a greater understanding and knowledge base, which is why paired programming is one of XP's best practices.
After looking at a couple of XP's best practices and the benefits that are produced when they are used properly, any company could keep their edge even in a rapidly changing market like we have today. If companies resist the change, they will be unable to compete with those companies able to adapt such an innovative and new process. Extreme Programming is a discipline of software development based on simplicity, communication and feedback. Due to its simplicity, it is often overlooked as a meaningful process. However, if XP is integrated properly, it can help your company align requirements and eliminate unnecessary features, reduce product time-to-market, increase product quality and reduce development costs.