Software engineers have been researching widely on how software development methods can be improved. The main aim of doing this has been to provide the client with the best possible application that he or she wants and to promote communication between the client and the developers of the system. To this end, many processes of developing a software project have been discovered. Examples of these processes include prototyping, systems development life-cycle, and agile methods which include processes such as extreme programming among others just to mention but a few.
specifically for you
for only $16.05 $11/page
These methods do have principles that are supposed to be considered when carrying out a software development process. Stakeholders should not force all the principles to their project. What they are supposed to do is only pay attention to those that apply to their project1. As information systems continue to become a very important part and parcel of each business, systems or software development methods persist to evolve as new development methods continue to emerge. Of essence here is to develop software that is fully accepted by end-users irrespective of the complexities of the technology involved in developing that software.
Software development methods are the ones that determine how best the software meets the specified requirements by the user. It also depends on the complexity of the system and therefore the stakeholders determine the best method to use. The waterfall method is the method that software engineers have been using for quite some time but it has been phased out due to the emergence of new and better methods such as prototyping and the agile method, just as mentioned earlier. This report will discuss the project carried out using the agile methods and it goes an extra mile to justify the use of this method in this project.
Other methods for developing software also do exist apart from the listed ones. Other technologies will continue to emerge as new devices and software enters the market. It is the role of the project manager to constantly evaluate what the users want in conjunction with the stakeholders and decide the best development method to use so that the development process will not be faced with a lot of obstacles. This will help save time that would otherwise be wasted in the course of trying to put the development process on track when things go wrong. It is advisable to take time while planning all the activities involved in a project and allocate enough resources to each activity as required.
This project report concentrates on salesforce.com that used a transformation based on agile methods of about two hundred people in a period of three months. It is considered as one of the biggest and effective agile transformation from the previous processes used in software development projects. The report will discuss the reasons why agile method was chosen, how the team managed to apply this method and lessons learned during this big project.
In summary therefore the report will cover the description of the project and in particular concentrate on the background of the project, the development process being used by the stakeholders, people involved, the duration of the whole project, the activities that took place during the whole project, the issues that triggered the use of the agile methods and finally the status before the project.
The report will also dwell on critical analysis of the project specifically looking in to the agile method itself its strengths, weaknesses, how it can be applied to this project and finally how to introduce it to the project in question. As you go through this report trying to find the best processes to use in the current business environment ,I have no doubt that the agile methods discussed here will prove to be effective in enhancing continuous improvement in business environments.
100% original paper
on any topic
done in as little as
Salesforce.com is currently leading in technology and market services based on on-demand. A lot of transactions are processed daily by this company and it has about 646,000 people subscribed to it.It also involved in developing customer relationship modules solutions (CRM) which is done in on-demand platform. There is one group that is responsible for all products developed by salesforce.com and this group is called the services technology group. It is the duty of the service technology group to know what has been produced whether will cater for the clients and if not find out why production is below what is expected.
It has been growing rapidly due to the fact that it has grown to about more than fifty percent each year. This has been the tread since it was started about eight years back. Before implementing the agile methods it was noted that salesforce.com was only managing to come up with one big release each year, which is below its expectations. The main reason salesforce.com decided to go the agile way was mainly to counter the problems experienced while they were using the previous processes which include the following:
- Unrealized visibility in all the stages during the releases.
- Getting early estimates which are not accurate hence resulting in missed feature, finished dates and schedules that have compressed testing.
- Getting feedback on features very late after the release cycle.
- There was release of schedules that were not expected.
- Finally there was decrease in steady productivity when the team of the developers was growing.
A loose process based on waterfall was leveraged long before R$D group. This process was based on an entrepreneurial culture. R&Ds are well planned or organized into user experience, program management, quality engineering and finally engineering of the quality. Despite the fact that different teams and software projects were not the same in the approaches that were being used, some waterfall approaches applied. In fact the development seemed to follow phase-based of waterfall.
Functional specifications are featured by-product management. Users experience team was accountable for a very important part that of developing blueprint of the project and also the interfaces of the end users. This development also involved developing codes or programs. The resulting code was then being tested and verified by the quality assurance group. Any problem found at this stage calls for redoing the previous step to make sure that everything is as planned. The final step involved making documentation of all the activities and codes done by the team. It involves documenting explanation of the codes and also explaining how to go about each and every step.
This is important because any other stakeholder in the team can follow the preceding of the project without experiencing any problem. Also the programmers will be on the safe side because in case new programmer joins the team he or she can be in a position to follow-up the codes. The group which was responsible to oversee the project and controlling all the events related to it was the program management. When the company was growing or when the team was very small, the initial process which is waterfall was working very well.
When the company started scaling, that is becoming bigger and bigger it was not possible to continue with waterfall based process. It eventually started experiencing longer time duration between consecutive major releases but all the same it was possible to make small releases at a time. This lengthening of the cycles of releases resulted in many persons in R&D not participating in big opportunities of learning of the organization. This means that, as releases went down there was few learning opportunities. The end results were decreased morale and reduced ability to deliver goods features to the customer or to the market.
It was therefore important to think outside the box on how to launch an organizational restructuring by introducing effective and quicker processes to use for the next durations that sales force was in business. The development process was therefore redesigned by cross functional team put into place. There existed about three key areas which assisted very much in the process of transition. The first of these key areas is a test system that is automated and it provided the foundation for the incoming process. The other one was the on-demand model which is a software model fit for agile processes.
The third was R&D. It was then discussed by the team why salesforce.com decided to transform to agile and some of the reason raised was that the previous one was not effective and it was very slow in the sense that it took a lot of time before delivering the software to the client. In that case, incremental method was adopted whereby pilot projects would be used. To realize this process a group of people had to be sent who were mainly functional managers and program managers to train at Certified ScrumMaster.
Agile books were also bought for the office. There were three people who belonged to cross functional team who went an extra mile to prepare a presentation. This presentation had paradigms from extreme programming, scrum and lean methods. Apart from that every team or group was trained on agile methods. Reference materials were also kept well on a repository. Of essence here is the cross functional team that was running using Scrum and its daily focus was to make the rollout a success.
Initially before the Agile methods being rolled out there were some issues that were facing this projects such as the teams not prioritizing their work, focus on individual work which reduced the flexibility of work delivered and increased chance of the project being finished on time. They also used complex methods which were composed of diversified vocabularies. It was not possible to realize organizational roles which are well-defined when using the previous methods based on waterfall. You could not also find cross functional teams that would make it possible to meet daily. This is especially important basically because of achieving communication which is important at this level. It was also unrealistic for planned iterations to work in this case with R&D. A lot of bugs could also be seen in case of waterfall methodology and unrealized time-box release.
After the adoption of agile method it was possible to realize many things that were not possible initially. It has therefore proved that it is an effective process to use in software development projects. Some of the realized benefits after incorporation of the new processes include: embracing team work rather than individual productivity. This improves the quality of the project and flexibility of the project in general. It also increases the chances of detecting errors or flows earlier in development of as software development project hence reducing the cost and time that would otherwise be wasted when an individual goes alone2.
Cross –functional groups who can physically show up daily for a meeting making it possible for sharing knowledge and ideas among developers or team members. It was also possible to realize agile process which is simpler than the traditional waterfall based methods. Each and every team involved in the project can now have their work prioritized and achieve better project results. R&D heartbeat is now available with iterations which are well planned considering the fact that iterations are part of agile processes.
The organization achieves organizational roles which are well planned such as the owner of the product and a member of the team. It is therefore easy to have teams that are focused on tests which are automated and this is possible on daily basis. This also means achievement of products release that are of high quality is achievable without wasting too much of resources and in particular financial resources and also time. It should be noted or kept in mind that they are the major determinant of a quality software development project, although meeting the requirements of the customer is a major achievement as far as the project and the user is concerned.
Concerning bugs, it is noted that there is significant reduction due to the consultation and communications among stakeholders which is key in agile software development project. There is provision of visibility by the product line of Scrums to all the groups or teams that are concerned. The last achievement is the realization of releases which are time boxed. This shows that salesforce.com decision to make the above transformation was a major breakthrough and will not regret because the end results are evident that its undertakings are indeed a success.
This project was carried out essentially to transform the traditional methods to agile methods. Indeed program managers were meant to oversee the completion of the project which involved on continuous integration and early focus on automating the operations, ensuring that all stake holders are committed to change, come up with a determined rollout group to oversee the changes. This is because there are times when things have to be done through sacrifice. This is more than willingness. Also of essence in this project is to make sure that all these undertakings are done with a lot of transparency.Influencing training and professional development in areas of agile methods.
100% original paper
written from scratch
specifically for you?
The key focus of agile methods is the delivery of software that meets the user specifications and more important, waste reduction to achieve a high quality system. Tight feedback loop is encouraged including checkpoints of a system in question. This is particularly more important between users and developers who are the main stakeholders in a project. They are software development methodologies that concentrate on incremental and iterative development. Solutions and requirements go around the stakeholders. This means the team must consult and discuss the underlying issues widely before implementing the software.
In incremental and iterative techniques which are the basis of agile methods, the software is developed in a cyclic manner such that if it is noted that the software being developed does not meet the required requirements, changes are made immediately to accommodate the required functionalities and make the required improvements and the cycle continues. The idea is to develop the system in question in repeated cycles and in small parts after a given short time. This allows the developing team to learn from the previous deliveries and make changes as required. A simple implementation is done repeatedly until a fully working system is deployed.
Users must also be listened to carefully to avoid errors that may happen in future and accommodate changes that may be suggested in the course of the development. This method is very flexible in the fact that more and more changes may be incorporated to the already planned project depending on how the user wants the system to be. What is taken into consideration in agile development techniques is software that is working rather than a comprehensive documentation, collaboration with customer or working hand in hand with the customer over negotiation of a contract and taking care of changes in the course of development.
The whole project is broken into small incremental tasks that do involve short-term planning hence eliminating the errors and complexities that may be brought about by the long-term planning. The cycles or iterations last for a minimum of one week and a maximum of four weeks. A team is involved in planning, analysis of the requirements, design of the software, coding using the appropriate programming language and finally testing.
Testing involves unit testing where each module of the system is tested individually and system testing which involves testing the whole system. Agile techniques focus on teamwork rather than assigning activities to individuals who may end up not showing up one day hence stopping the progress of the project. Communication in agile methods is taken very seriously. The stakeholders prefer face to face communication over other means of communication such as emails and video conferencing but these means of communications can be used where necessary. The team members therefore work in open office which is more convenient for consultations.
In case the team members are in different locations daily contact is essential through voice and video conferencing. In the development team a customer representative is required to always work hand in hand with them and will represent the interest of the stakeholders. Constant review is encouraged after every step.This is done by the team together with the client or the end user to determine whether the progress of the project is being done in the way it should. It involves finding out if the team is doing the right thing and also if whatever is being done is being done right. Examples of agile techniques include extreme programming, agile modeling, agile unified modeling, essential unified process and velocity tracking just to mention but a few. There are several principles that are used to make sure that the delivery of a system using agile techniques is a successful one.
One of the principles is customer satisfaction. This is done by ensuring that the delivery of the useful software is swift and continuous. Opportunities for the feedback should be created. The feedback that is more important here in that of the process, team and the requirements. Another principle is the numerous delivery of working software. This allows the stakeholders to identify bugs early than wait until the whole system is done. To make sure that the team is progressing well, working software should be delivered. The developing team should always be ready to accept changes of the system even if it is already late. This will ensure that the end results will be appealing to the customer.
All the stakeholders of the project should cooperate. This includes the business people and the developing team. While discussing the project issues the best away to do it is face to face conversation if possible. The teams involved in this should be well-organized and simplicity should also be taken into account. Attention should be paid to a good design and excellence of the technical skills. It will be easier to do transition of this technique by dividing the project into small iterations that will be delivered in increments.In every part, there is a team which will be responsible for this iteration and the normal activities will be carried out on each loop.
Delivering the iterations will allow analyzing it and giving the developing team a go ahead. This will also allow correcting the errors as early as possible. Teams rather than individuals work is emphasized to allow sharing of the information and increase flexibility of the project. The project manager will also identify the areas which each member of the development team has a great wealth of knowledge so as to assist other members in such areas.
Constant reviewing of the project progress will also be carried out after a minimum of one week or a maximum of three to four weeks. To ensure flexibility of the development process, the team should not work for one stage throughout the development process. They should keep changing with their fellow developers so that incase one of the developer does not show up, the other developers can continue working on that stage of the development.
Having used the traditional method, it is quite clear that there were many limitations that could not be solved until agile techniques were introduced. Extreme programming at first is a deer undertaking but users will eventually be satisfied with the final results since it is guaranteed that the functionality is achievable due to concentration on teamwork and at the same time shunning individual work which was not working well initially as we have seen in salesforce.com case. Also agile techniques fit very well to this project due to the fact that it involves more than one individual to make contributions early.
This means that there are more chances of conducting stakeholder’s meeting which eventually make it possible to collect feedback from users. The feedback got from users is considered important since it will allow engineering of that feedback to the functional features and hence be used in the development of the project. The other reason why this technique will be appropriate for this project is the fact that it will be possible to identify errors early in the development of the system and this will enable making the necessary amendments to the system3. In case that these changes are not feasible the system can be restarted all over again.
This is also important because if the system was being developed for the first time, it is possible to identify projects that will not be feasible and abandon them for a feasible project. Early termination of the failing project will eventually save a lot of finances that would have otherwise gone to waste. Another good reason to justify this technique is that it will enhance increased return on investment. This is achieved by using the initial requirements specifications as the baseline for return on investment. There is also probability of getting working software even before lapsing of the projected time. This means that the system will also be deployed early in time hence provide return on the initial capital.
By use of agile development method it will ensure that the system development will not fail. This is due to the fact that agile techniques reduce dependability and at the same time increasing the flexibility of the project. The reason is that teamwork is encouraged as opposed to individual work. Therefore in case of individual work, the individual may happen not to show up hence inconveniencing the progress. Scope is one of the variables used to ensure quality of the software.
Emphasis is put on deployment of high quality software in agile development while at the same time using extreme programming to achieve it. Since it has been noted that managers of many organizations do not like changes, it will be very important to hold a discussion meeting with them because they must accept the introduction of this technique basically to make sure that financial support by the management will not be an obstacle to them.
Conclusion and recommendation
Initial goals with the agile rollout have been achieved. These include self organizing groups, time boxed releases, and automation. However it is advisable for other teams to carry out these things earlier so that they can achieve much more. The things that can be done earlier include getting external training early, giving training to the owners of the product and being more concise about the agile principles. So as to make sure that you don’t experience problems when looking for the feedback, it is good to conduct open meetings whereby each person raises their issues. The management of the process is not easy but the final project outcome is of high quality.
The most important aspect of project management in software engineering is the delivery of the proposed system within budget and within the timeframe. Functionality features cannot also be understated because developing team must make sure that the system meets the user specifications before being deployed. This is why it is important to involve the users in every step taken in the project management. Also of importance is to understand that not every project will be developed using the same methods. It is the responsibility of the stake holders to consult and come up with the appropriate method to use in developing a particular application by considering the advantages and the bottlenecks of each technique.
This due to the fact that the world of information technology is constantly changing at a higher rate, so there is a need to stay updated. It is also very important test and prioritize infrastructure on time during the process. The most important thing is automation in any agile technique. Therefore you should make sure that it is integrated and this gives visibility to the organization as a whole. A set of unit test and functional test has already been invested by Salesforce.com.
Other people who would like to embrace these techniques should have a cross functional and determined rollout team. The functions of such a team are to facilitate communication in an organization and participate in change management. They have the mandate to access anyone in an organization when things go bad. This means that they have the potential to address such cases amicably. Deciding the right tool early in development is crucial since there will be no confusion after starting the project or wasting time in the course of the project and deciding on the other course. Over-communication encouragement and radical development is important.
This will help the teams conquer the anxiety of sharing information with other people. It is recommended that multiple channels of communication should be availed so as to reach even those people who may be a bit busy and not in a position to seek information from their emails. Since no one is perfect it is always good to expect mistakes and be expecting them so that proper rectification can be done4.This means that you must always be patient with what you do. Another key factor that will always ensure success is being inclusive. This involves extending reviews of the technology to every individual in the team.
That is giving each one a chance to express his or her views because you can ignore a view that can be very important if implemented. Seeking professional help will assist to overcome challenges because they have experience and can always advice on what is good for the project hence saving you substantial amount of time that would have otherwise gone to waste. Finally, this report puts on the record a big and successful transformation to agile methods from waterfall based methods.
It is therefore critical to move all your teams at a go while you intend to do transition to your organization. Implementation of this method of project development does not mean that the work is over since constant review and maintenance is important to keep it working properly. It is therefore important for the users to ensure that they report any difficulty they experience when interacting or dealing with it so that the developers can respond quickly by correcting the problem on time.
Cockburn, A. (2006) Agile Software Development: The Cooperative Game, 2nd Edition. Addison-Wesley.
Cohn, M. (2005) Agile Estimating and Planning, Prentice Hall PTR.
Kent, B. (1999) Extreme Programming Explained: Embrace Change, Addison-Wesley.
Poppendieck, M. and Poppendiek, T. (2006) Implementing Lean Software Development, Addison-Wesley, Boston, MA.
Schwaber, K. (2004) Agile Project Management with Scrum, Microsoft Press, UK.
- Schwaber, K. (2004) Agile Project Management with Scrum, Microsoft Press, UK.
- Cockburn, A. (2006) Agile Software Development: The Cooperative Game, 2nd Edition. Addison-Wesley.
- Kent, B. (1999) Extreme Programming Explained: Embrace Change, Addison-Wesley.
- Poppendieck, M. and Poppendiek, T. (2006) Implementing Lean Software Development, Addison-Wesley, Boston, MA.