Successful Enterprise Software Development
By many accounts, enterprise software development projects fail between 30 and 40% of the time and over 60% of projects don't meet their stated goals. These projects fall victim to shifting requirements, lack of user communication and unweildy and unmaintainable code bases. This is a staggering number of projects representing billions in wasted cash.
Enterprise software development projects fall victim to three major issues – shifting requirements, lack of communication and poor execution resulting in unweildy and unmaintainable software. Fixing these issues is not simple, but the key to success is having disciplined technical project management that focuses on continually shipping working software.
Shifting Requirements are a reality in every business setting and cannot be avoided. What can be avoided is putting the development team into a spin cycle of requirement change. Disciplined project management must be employed to create time-limited "islands of calm" in which development teams have no changes to their requirements for that period of time. Outside of these time slots, the requirements can change significantly, but it is up to the project management to isolate the development team and ensure that they can accomplish useful work in an unchanging environment for a period of time.
Lack of Communication frequently causes immediate problems as development proceeds in the wrong manner due to a lack of understanding between the business owners and the developers. But there is a more insidious problem caused by a lack of communication which is a lack of acceptance by the user base. Software projects generally cause major changes in the way that a business operates but in the majority of projects, users are not fully involved in the development and sufficient time is not allocated for change management post-development. In the major projects we've seen with challenges, a 1-2 year development project typically is gieven less than 2 weeks between the date it is anticipated to be completed and the date that users will start using is in production as their primary business tool . This timeframe is far too compressed unless all of the users have been intimately involved in the project development process which is often unrealistic.
A lack of communication can be radically reduced through a relentless focus on shipping working code. When the code is consistently deployed working, users, business owners and developers can be united around the demo and can reset their expectations and work with requirements with a common understanding. This is the only way to truly have all owners fully understanding the project and where it should progress from there.
Poor Execution is a failure both of ownership and skill. Think about software development as your own home – if, every time you do something, you were to improve or clean something, your house would improve every day. Make dinner, clean up immediately but also fix that loose handle on the cabinet. Play with the kids outside, do a little weeding at the same time. Software is the same way – with a highly skilled team that feels a sense of stewardship over the code and has management that is technically astute enough to understand this process – every time that the code is touched, it's cleaned up and improved through a process known as refactoring. Without this intent, understanding and discipline, software rapidly becomes unmaintainable and every step forward in the development starts to take longer and longer. This not only kills the forward motion of a project, but also makes the resulting software incredibly expensive to manage and run.
Software development in enterprise is hard. There's no question about it. But with the careful application of strong, technical project management, it can be successful every time.