This post is in response to the article "The failed record of the software industry – why software people don’t get it" by Jeffrey Palermo on the Headspring blog.
Software is not like any other product it is often compared to. It is fundamentally different from a car or a house. Every project is different, even if only the team is different, so there is less predictability. The industry is small,fast-moving, and there is no complete well-known set of templates and methodologies that guarantee timely delivery of a wide variety of tasks – simply because many of the best methodologies, practices, and platforms and tools are a work in progress. The important result of these differences is that planning software projects is harder and achieves worse results, than planning in other industries.
Industry surveys that try to measure success of software development and IT projects usually define success as being on time and within budget. This is the usual metric for manufacturing and other traditional industries. However, it is often a misleading measure for software development.
Consider wildly successful software projects, like Google search or Facebook social network. Who cares whether these projects were on-time and on-budget. They redefined how people live their lives, and delivered stunning ROI for investors, and the entire world.
The industry-watching outfits should reconsider what they define as ‘success’ and ‘failure’ in software development and IT industry. When a project does not deliver according to a time and budget projections, the reason is often not poor team performance, but incompetent estimates. ROI and delivered value is a more meaningful measure, than adherence to an arbitrary timeline.
It is true that software industry does fail a lot, and it could, and probably will, do better as it matures. However, on the B2B side of the industry, the clients need to broaden their understanding of how software development works. Client engagement is very important for project success, and is very often the piece that causes either the project failure, or limiting projects’ potential for success. Software engineers (or any person responsible for delivering software) know it, and the best ones have been pushing for it for decades now.
The IT and software development industry can and should do more to educate clients about what it means to have a successful project. It is up to the software engineers to learn and to teach the society at large what is needed for the entire industry to be more successful, and to deliver value to clients and users.