This is the fourth in a series of blogs setting out how we work with our clients, with earlier posts covering our approach to Architecture, Delivery and Testing.
For twenty years, Scott Logic has been building business-critical systems for some of the world’s largest organisations, from capital markets to public services. Our consultants have tackled a wide array of complex problems for many clients over that time – across a diverse set of technologies.
We tailor our engagement model to fit our clients and the context of the work. Sometimes this means we provide self-directed, multidisciplinary teams to deliver an outcome. At other times, our engineers are working collaboratively alongside our clients’ own people. Sometimes the work is more advisory, where we’re helping a client determine a way forward or overcome a particular challenge.
There’s a lot that changes based on the sector we’re working in, the technology stack we’re using, the nature of the engagement or the specifics of each piece of work. But across it all, we’ve found there’s a consistent underlying approach.
Based on our experience, we’ve distilled the following principles for software development to communicate how we work and help guide our teams.
1) Build quality in
Doing good work is our default – it motivates our teams, delivers great results, and maintains our ability to deliver at pace. We establish high expectations throughout the team, take code reviews seriously, and intentionally manage technical debt.
We understand that some criteria for ‘high quality’ vary with context, and we need to account for the big picture. We take a holistic view of software design, delivering outstanding experiences for users underpinned by robust, reliable technology, and with future maintenance and extensibility in mind.
We write clean, clear code, prioritising readability, consistency and following established idioms. We make sure our work is both testable and well tested. We build software that we – or our clients – can maintain long term.
2) Make pragmatic technology choices
In a fast-evolving tech landscape, we look beyond the hype of current trends to focus on technologies and practices that deliver real value.
Our practical approach means we build up a strong understanding of our clients’ unique circumstances before recommending tools, technologies and approaches, keeping their requirements top of mind. We use our experience to ensure that our technology choices support innovation but will also be practical, reliable and integrate well into what’s already in place.
Scott Logic is technology-agnostic and vendor-independent. We pride ourselves on giving unbiased advice to best serve our clients’ long-term needs.
3) Embrace open source, open standards and cloud
Building on existing foundations allows teams to innovate faster and focus on meeting their own specific requirements rather than reinventing the wheel.
We favour open source, and actively contribute to open source projects and the community – including through our work with FINOS.
Open standards allow us to harness collective industry expertise, supporting seamless integration and preventing vendor lock-in.
Cloud services provide rapid deployment, scalability, flexibility, and cost-efficiency—offering instant access to cutting-edge tools without the overhead of managing complex infrastructure. We believe cloud is a value driver, providing a platform for change and a foundation for business agility.
4) Move safely at pace with tools and automation
We maximise team productivity with the right tools and automation – and know how to use them effectively. Efficient CI/CD pipelines reduce manual work while increasing repeatability, meaning reliable delivery at pace – allowing us to put our work in the hands of users quickly. Continuous integration, code analysis, and automated testing provide fast feedback. We recognise the benefits that AI coding assistants can provide, but use them thoughtfully.
5) Embed security from the outset
We design and implement appropriate controls, grounded in a good understanding of potential threats and the risks associated with technologies we’re using.
Automated pipelines safeguard software integrity, typically shifting security checks left and supporting a proactive approach to vulnerability management, in line with DevSecOps practices.
6) Demonstrate incremental progress
Our approach is practical, pragmatic, and genuinely agile. We do just enough up-front analysis to understand the current state and anticipate future direction, while focusing on incremental next steps to make measurable progress. Design is intentional but starts small and evolves over time.
We demonstrate value early and often with releasable, working software. We learn from feedback – we’re not afraid to experiment and fail fast where it’s safe to do so. Frequent, smaller releases reduce risk and accelerate delivery of changes to meet our users’ evolving needs.
7) Stay focused on the outcome
We don’t lose sight of the desired outcome. Our teams demonstrate high levels of ownership, proactively driving progress, exploring requirements and overcoming challenges.
We embrace multidisciplinary work, taking an interest in all aspects of the solution. We understand the importance of relationships and collaboration with our stakeholders, involving them early and getting feedback often.
Recognising that our success involves more than simply writing good code, we challenge assumptions and deliver what’s truly needed for the business and our users, even when it requires difficult conversations.
These principles in context
There is, of course, more to developing good software (and being a genuine long-term partner for our clients) than what’s covered here – including how our multidisciplinary teams are formed and work together to deliver value. You can read more about our approach to Architecture, Delivery and Testing, and there’s more to follow around our broader approach to software consultancy.
How can we help you?
If this approach resonates with you, find out more about What we do and how we can help your organisation.