Over the course of my career I have worked for a two distinctly different types of development firms, companies that sell products and companies that sell services. Product companies develop a product that attempts to solve a business need. Service companies sell their people, labeled consultants, to other companies to help them solve their business needs. At the end of the day the goal is the same, to solve some business need.
Through these experiences I have seen both successes and failures on many different levels and have begun to notice patterns in the chaos. Why do some projects succeed while others fail? This is a very difficult problem to address and there is in no way one correct answer. There are however a few things that development teams can implement that will help assist in setting them up for success.
The list I have provided below is in now way a complete and comprehensive list of everything that could be done to assist in setting a project up for success. This list just outlines the tasks I have seen provide the greatest return on investment.
* Unit Testing
* Check-In Policy
* Build Process
* Deployment Process
* Continuous Feedback
I will dedicate a separate post for each of these point over the next short while. Again, these concepts will not guarantee success and are not the only things that a team will need to consider; but my experience has shown me that a team that employs these concepts have seen success far more often than failure.