Finding the right approach to Software Engineering

By Declan Newman
A graphic of circles and cogs with the words 'The Inviqa Guide: Engineering Change' on it

This five-part series explores how composable architecture, emerging technologies, and a collaborative engineering culture drive meaningful transformation. It’s a practical guide for organisations looking to modernise legacy systems, unlock agility, and build future-ready digital solutions.

This is part one: Finding the right approach to software engineering. 

Here we introduce our engineering philosophy, blending people, tools, and processes to solve real client problems with modular, composable solutions.

In a snapshot:

  • Software engineering is about solving problems collaboratively, not just writing code
  • Modular architecture enables agility and future-proofing
  • Agile is our default, but we adapt delivery models to suit client needs
  • A strong engineering culture fosters innovation, psychological safety, and cross-disciplinary collaboration
     

So, what does “software engineering” mean?

If you look up the dictionary (or internet) definition of software engineering, you’ll often see it described as a “branch of both computer science and engineering focused on designing, developing, testing and maintaining software applications.”

For Inviqa, we look at it as a way of bringing people, tools, and processes together to solve real client problems.

Now, we’ve been building digital products for a long time – we have hundreds of years of collective engineering experience and knowledge across our long-standing team. 

This experience has taught us a few key things: teams work best when 

  • everyone knows their role
  • good tools are at their fingertips
  • and there’s a clear way of working

It’s also given us a mix of wisdom and curiosity that lets us react quickly to the fast pace of change, pivot when needed, and still deliver high-quality work. We've had exposure to a wide variety of tools and technology: experience we can draw on when working with new clients, and helps us more easily identify appropriate solutions depending on needs.

Over the years, we’ve gained experience in content management systems (CMS), digital asset management (DAM), Product Experience Management (PxM), artificial intelligence integrations, ecommerce, business intelligence, authentication and authorisation, and all manner of bespoke software. And we continue to explore new technologies as they emerge to see how they can help our clients.

In short, if you have a digital problem, there’s a good chance we’ve solved something similar before – and if not, we’re hungry to learn new tricks.

 

Adopting a modular approach and embracing composable architecture

Over time, our approach to software engineering has evolved to be highly modular, delivering full client solutions by composing flexible building blocks from various technical areas of expertise.

A complete solution can be thought of as an assembly of these components – content management, ecommerce, identity, data, and so on – each of which we can provide and integrate as needed to meet a project’s requirements.

Full solutions are composed of interoperable building blocks from key technical domains, while the central solution integrates the appropriate modules for each project.

Of course, this doesn’t mean that enterprise-scale solutions are obsolete. We’ve just found that often, these don’t provide our clients with the agility and breadth of tools needed to realise their growth potential. A more modular solution helps address both current requirements and allows for the flexibility to adapt the technology stack as needs and technologies evolve.

 

But it’s not just about the technology, it’s also about the approach 

Technology aside, successful software engineering comes down to how work is organised and how we collaborate with clients. Agile has been adopted as our default way of working because it encourages regular feedback and continuous improvement. 

That being said, being pragmatic is also key. If another approach (perhaps a more waterfall-style for fixed scope projects, or a devOps/DevSecOps emphasis for infrastructure-heavy engagements) is a better fit for the work or client, we’re comfortable adapting.

Regardless of the how, the principles remain constant: an emphasis on quality, close collaboration, and transparency as non-negotiables.

 

And at its heart, engineering requires a culture of collaboration

While tools and processes are important, it’s people who make the difference. So, it’s important to foster a culture where everyone keeps a growth mindset: we’re always learning and improving our skills. We welcome feedback and treat it as a tool for improvement rather than criticism. 

Knowledge sharing is part of our DNA: we host regular demos of our work in progress, new technologies and maintain thorough documentation so insights aren’t lost.

Collaboration is also cross-disciplinary by default. We bring developers, testers, designers, security specialists, and product owners together throughout the project. This diversity of perspectives leads to stronger solutions and catches issues early. We also support flexible and remote working arrangements and make heavy use of asynchronous communication tools to keep everyone in the loop, regardless of location or time zone. Meetings and workflows are structured to be inclusive, and every voice on the team is valued.

Respect, trust, and transparency guide how we work with each other and with clients. We believe that psychological safety is crucial: team members should feel comfortable speaking up about risks, asking for help, or admitting mistakes. This creates an environment where problems are addressed openly and solved collectively, rather than hidden. 

Ultimately, we know that building great software is as much about people as it is about technology. By investing in a positive engineering culture and collaborative practices, teams are motivated, knowledge is shared, and clients are involved and informed at every step. 



Now that you understand our engineering philosophy, how we blend people, tools, and processes to solve real client problems with modular, composable solutions, stay tuned for part two, which explores the programming languages and platforms we use to balance performance, flexibility and scalability.