Software Development could be considered an art and a science. This is one of the reasons why it is not as predictable as other engineering disciplines. Leaders in the industry have been trying to find a standardised approach to building software for decades, and considerable progress has been made, but we still see a high percentage of failed projects with budget, scope and time overruns.
Why is it so difficult then? There are a myriad of factors and variables that need to be considered which include development resources, maturity of technologies, expectations, greenfield or legacy applications and a whole host of other factors.
Companies have the responsibility of increasing revenues, creating efficiencies, adhering to regulations and implementing a host of strategies where IT is key to the success of these initiatives. Businesses need accurate information to assist with their investment decisions, and that includes scope, timelines and costs for IT. Once a budget has been allocated and the timelines agreed, then a business needs to coordinate all the other activities that are dependent on the IT projects like marketing, advertising, merchandising, training and support.
IT usually find themselves in a position where they have to make commitments based on limited information, or at the other end of the spectrum, spend months creating detailed specifications which could be out of date by the first month of constructing the software. Irrespective of the approach, the following always needs to be taken into account:
- The level of risk e.g. an internal bank system versus a mobile application
- Existing legacy systems
- Amount of third party integrations
- Availability of experts with domain knowledge
- Maturity of the proposed technologies
- Architectural approach to building the software
- Are there enough internal development resources available for the project?
- In-house or outsourced development
- Budget constraints
As you can see, multiple stakeholders and factors are involved in the process of determining the scope and approach to a project. A strong lead or business owner is required to make this successful, because it will be difficult to reach consensus with so many people in the process.
What can then be done to increase the odds of success?
- There needs to be a clear well-documented project charter. There is a high degree of complexity in building software, so trying to micromanage every aspect of it will lead to sub-optimum results. Every stakeholder, including business owners and developers, has to be 100% percent clear on what needs to be achieved and what the parameters are. This will allow for decentralised decision making which will speed up development over the course of the project.
- All the stakeholders listed in the project charter needs to be accountable for the outcome. This will break down the barrier between business and IT, resulting in much needed daily communication between all the parties.
- Deciding on the technical direction and approach could be instrumental in the project’s success. Unproven technology, or using an architecture that has too much overhead, could slow or halt progress completely.
- As explained above, businesses can’t make decisions if they don’t know the costs or timeframes for a project. This then becomes a non-negotiable aspect. You do however have control over the scope of the project and MVP (Minimum Viable Product) has to be considered in every decision that is made. It sometimes requires heated discussions, but when you start comparing the value of each of the components and the cost associated in building them, there will be clear winners in terms of value to the business. This will allow you to adjust business expectation while still delivering value.
- Developers are not always the most well-understood people. They have a personality type that is suited to problem solving through experimentation and prefer working in isolation as much as possible. This is not very conducive to communication, resulting in a lack of transparency. The best way to overcome this is to use short, time-boxed timeframes where project progress is measured based on working software. Agile approaches (like scrum) are very mature, and can be used as effectively in a small project as in geographically dispersed projects with hundreds of people.
- Building a development team for a project can be a big challenge. There is a huge shortage of experienced software developers all over the world. This demand has resulted in developers choosing the best projects to work on and at a price that they dictate. When you are building a run-of-the-mill line of business application, you will find it difficult to compete against the more exciting AI, mobile and blockchain projects out there.
Both in-house and outsourced software development have their own pro’s and con’s, but there is an increasing trend of outsourcing development due to costs and resource shortages. The outsourcing companies can provide the excitement and career growth developers want, and because they are based in countries with a lower cost base, can offer good salaries while the company can still provide competitive pricing to their customers.
As we can see, software is not a trivial endeavour. It is important to have a project owner that is experienced and understands the complexities involved in building software and all the actions required before the first line of code is even written. This, and making sure you have a strong team that can execute, should increase your chances of success considerably.
By Leon Coetzer, Co-Founder getDeveloper
Leon has more than 20 years in the software development industry, successfully delivering both enterprise and greenfield software projects. Responsible for strategy and operations, Leon brings a unique blend of technical and business knowledge to getDeveloper.