7 Lessons learned from delivering complex software projects

Complex software delivery project

Here at IJYI, we have over 200 years of combined experience in delivering complex software projects so we thought it would be a good idea to share with you some of the lessons that we’ve learned over those years:

  • Always document any process that will be required as BAU as you do it. Documenting afterwards is time consuming and you’re prone to forget small details.


  • A key driver in the success of a project is how engaged the key stakeholder is. If you get the right person as a product owner then you’re likely to deliver much better software than if it is a proxy or someone without a direct stake in the success of the delivery.


  • Postponing technical debt until the next sprint usually means you’ll never address it or be forced to address it once it’s proliferated throughout the system. For example, implementing a manual process and saying “we’ll automate that later”. You often forget it needs to be done at all, forget how you need to fix it or have no room in the plan to do that work later. You should do things right the first time in most instances even at the expense of looking like you’re making progress.


  • Build observability in early on. You may think you know how your system will run in production but often this is not the case, particularly in complex systems. If you can’t see what’s actually going on then you’re going to waste a lot of time diagnosing production issues.


  • No gold plating and remember that code can be (and should be) refactored as part of the agile process to deliver each small piece of value. Having a small amount of value delivered is far better than having a lot of work in progress but undeliverable (and therefore no value to anyone). Trying to deliver a large amount in one go becomes complex because of all the dependencies and the vast amount of work for the testers, users and Product Owner. Gold plating just adds complexity for no reason.


  • NEVER make changes directly in PROD – you’ll forget you’ve made them and they’ll get overridden.


  • If you deploy on a Friday you’ll be working over the weekend!

The IJYI approach to software development brings together hundreds of years of combined experience in delivering software in an agile manner. This approach relies heavily on having the right mix of talent in the room. This is combined with a management team that understands the value of autonomy and who ensure that customer outcome is prioritised over short-term commercial gain.

Struggling after a recent project failure? Check out our blog on how to cope when a software development project doesn’t go to plan.

Ready to start delivering something amazing?

Related Blogs

About the author