The IT industry is littered with examples of huge overspends and projects which fail to deliver the planned benefits or timelines. Research from British Computer Society highlights that only one in eight IT projects can be considered truly successful – with failure being described as those projects that do not meet the original time, cost and quality requirements criteria.
So why are we as an industry so prone to failure and what can we do to improve our chances of success?
How can we work smarter?
Well really the answer is in the question. The SMART acronym (usually used for setting Specific, Measurable, Attainable, Relevant and Time-bound goals) can also be applied to improve the way we run IT projects.
Let’s discuss why.
We need to make Simpler products
Who hasn’t heard of the KISS princple? It stands for ‘Keep it simple, stupid’ and originates from the US Navy in the 1960s who believed that the most effective systems were the ones which were kept simple. Unfortunately it is often easier to make complicated ill-thought out systems than simple ingenious ones. When we design systems our key principle should be to keep them as simple as possible. We should seek out ways to simplify old legacy products too. Simple products are easy to use and maintain, resulting in a win-win situation.
Make systems you can Measure
The old saying goes.. “What isn’t measured isn’t managed”. True enough in many cases. Yet we seldom build in measurement systems into our applications. Then how do we know what features our users are using (or not), and what new features they may need in future? Of course this is no substitute for talking with users, but it can provide an additional source of enhancement ideas; ideas which often excite users the most – because they hadn’t thought of them!
Measuring system usage and performance also gives the product owner the ability to test out assumptions and opinions. When someone says they absolutely need a particular functionality, wouldn’t it be interesting to see how often they use the workaround or how long it takes? The functionality may not be as critical as they told you!
Be Agile when developing new software
As a software project progresses, the customer or user becomes more aware of what they are going to receive and therefore how it will be used. As a result they realise that the original requirements were either wrong, incomplete or missing in some aspects. As software developers we can either fight this reality and insist on delivering exactly what they originally requested (and therefore disappoint them), or we can embrace change and build processes for how we actively encourage changes as a source for improving the value in the final product. We think that agility is mostly related to the mindset of the team but that certain methodologies such as SCRUM or KANBAN can also help to achieve it when implemented properly.
Responsive performance and design
Everyone is now used to using sites like Google or Facebook in their private lives and they expect the same level of responsiveness from other applications they use. All applications must respond in an intuitive way within milliseconds of any interaction. Screen designs must also change to give the optimum layout whatever device (laptop, smartphone or tablet) is used.
Testing your ideas
This isn’t about ensuring the product is bug free; of course it should be bug free. What we mean is that you must test your concepts before fully delivering them. If you’re delivering a new booking engine, don’t go live and wait to see the impact on conversion ratios. Instead proactively test the impact on conversion ratios by delivering in small chunks to subsets of users.
Develop, test, learn, repeat.
Where possible create the minimum product you can and test it out. Is it a success? If it is then validate whether it’s a success in the way you expected.
Now you can extend the product, but be open to the idea that it may not in the direction you previously expected!