How we work

Accelerate delivery by orders of magnitude

Our Narrative Driven methodology increases delivery velocity by 400% compared to typical agile teams.

Combining visual requirements facilitation, time-tested software quality best practices, and future-proof, malleable architecture patterns, the Narrative Driven methodology enables rapid, scalable delivery. As a result, we are able to quadruple speed of delivery when compared to typical agile teams.

Iterate to scale with the delivery flywheel

As an SDLC practice, the Narrative Driven Design methodology encompasses all stages of delivery, allowing for continuous iterations on valuable, scalable, high-quality software. Each of the four phases of the delivery flywheel results in the corresponding output that feeds into the next stage. While the four phases are represented here in a linear progression, the Narrative Driven flywheel is non-linear and thrives on feedback between the activities inside and across the phases.

Discover phase - New Rive Example!

In this collaborative phase we work closely with your team to arrive at what’s valuable for you, that is, what you need to achieve through the project. This phase is broken down into three activities, which are Ideate, Research, and Conceptualize. The resulting output is Domain Behavior. This is where a shared understanding is created, which is essential for delivering products that meet their purpose.

Discover phase

In this collaborative phase we work closely with your team to arrive at what’s valuable for you, that is, what you need to achieve through the project. This phase is broken down into three activities, which are Ideate, Research, and Conceptualize. The resulting output is Domain Behavior. This is where a shared understanding is created, which is essential for delivering products that meet their purpose.

Design Phase

Where the activities in the Discover phase are concerned with product concept, the Design phase is what needs to be done to create that product. This phase consists in three activities, which are Domain Modelling, Interface Design, and Architecture/Blueprinting. The respective outputs of these activities are broken down into manageable deliverable components, which also require specifications for their behavior. That way we create a clear and shared understanding through unambiguous specifications for the implementation to be swift.

Actualize Phase

The Deliver phase takes the Domain & Component Behavior specifications as inputs and produces tangible software that can be used by its intended users. This phase has three main activities which are Build, Deploy, and Verify. The resulting output is not only a software product, but also a production system. The latter is the culmination of all the phases and activities carried out so far, and includes the organization of people that work together, the processes and tools that they used, and any other resources that contributed to the delivered product.

Learn Phase

This phase takes into consideration everything that can be learned from across the entire stack in order to learn and act. There are three main areas to learn from and their respectively named activities are Product, System and Process. Through these activities we arrive at insights that allow the product, system and the process to be improved. These actionable insights are then taken into future iterations of the various phases and activities for continuous product improvement.
LEARNING THROUGH OSMOSIS

Transformation by team augmentation

By working with Xolvio, you will not only get a high-quality, scalable software product but also the delivery system needed to continue iterating on it. We can further enable you to do so by onboarding your staff to the Quality Faster methodology in a leading by example, hands-on approach as part of delivery work.
OUR PROCESSES, TECHNIQUES & PRACTICES

Precision & accuracy via time-tested best practices

Domain-Driven Design

DDD is an approach to software development that focuses on creating a solution model based on the particular business domain and the domain logic it’s designed for. The creative collaboration between domain and technical experts results in formulating a shared understanding of the business challenges and the requirements to address them, which provides us with a solid foundation for software design & development. DDD is highly effective for complex domains, where attending to problem complexity is a must in order to design the right solution.

Test-Driven Development

TDD is a development practice that tightly interweaves design, coding, and testing. This results in a better understanding of the product requirements and puts focus on software quality first. Such an approach increases development confidence and productivity, while significantly decreasing the cost of change over time. This is due to the fact that, when a piece of code fails a test, the developer can proceed to fixing it right on the spot, as opposed to excessively debugging at later stages.

Behavior-Driven Development

BDD encourages close collaboration between developers, QAs, and business representatives (domain experts). The goal of this collaboration is formulating a shared understanding of how the software is going to behave. BDD puts the business in the driving seat to produce software that lives up to the expectations of its stakeholders. Focused on building highest-value capability first, Behavior-Driven Development reduces the risk of budget overrun, while ensuring the application meets all requirements and is stable in production from the get-go.

Spec-Driven

Xolvio’s original approach to software development, Spec-Driven puts specifications at the center of the product development life cycle. Specs are the communication of design that leads to a shared understanding, which in turn leads to speed and quality. Spec-Driven encompasses each phase of the SDLC, starting from discovery and architecture, through infrastructure and development, all the way to testing, quality assurance, and deployment. Spec-Driven builds upon both BDD and TDD practices, but also includes UX design, project management & facilitation techniques.

Targeted Quality Assurance

Our great focus on software architecture and specifications gives us laser-sharp tools not only to build high-quality software products, but also to verify them. The fact that we always write and gather specs with utmost care means we can test for those specs being met far quicker and with more confidence. In addition, we use a powerful blend of automated and manual testing, so that we lock in the value not just for the present, but also for the future. Finally, we leverage a combination of advanced techniques like visual regression testing, integration testing, and contract testing, as well as deploying to dynamic QA environments that facilitate a faster workflow. All of this makes your solution a flawlessly polished diamond, way before you’d expect it to be perfect.

Pragmatic Agility

In each and every project we work on, we manage our workflow through a Kanban-style system that allows us to continuously respond to your needs and change requests. This is possible thanks to the emphasis we put on creating flexible software architecture. By employing progressive and evolutionary design methods, we make sure that your solution’s architecture is as malleable as possible and can be easily adapted when needed. Last but not least, we constantly improve software through Kaizen practices as part of our continuous improvement mindset.
OUR TOOLBOX

Technologies we use

JavaScript

Javascript has become a cornerstone of the World Wide Web. We use it to run frontends, backends, as well as infrastructure, making the most out of its lightning speed compilation times, thriving ecosystem, and interoperability.

TypeScript

A superset of JavaScript, Typescript expands on JS with powerful features that allow us to develop high-complexity, enterprise-class software. It also helps us maintain high software quality and manage systems better over time.

Node.js

From dynamic web content to backend domains, we use Node.js as the runtime for our microservices. Node.js’ event-driven architecture allows us to scale and optimize throughput, as well as create rich, high-performance web applications.

React

We use React because of its massive ecosystem that gives us everything we need to build components quickly. Due to React’s code stability and high performance, we like to use it not only for web design systems, but also for back office applications.

Serverless architecture

We make things easier for you and reduce costs by offloading server responsibilities to the cloud. Cost-effectiveness aside, serverless architecture allows us unprecedented scalability and flexibility, while also increasing productivity through faster delivery cycles.

AWS Cloud Development Kit

AWS CDK allows us to remove the human error aspect of IT operations and increase infrastructure reliability. We use it as part of our ‘automate everything’ culture, as well as for highly advanced Quality Assurance practices.

Apollo GraphQL Federation

While we value decoupling teams so that they have full autonomy and ownership of business domains, we want to ensure that they can integrate seamlessly. Apollo GraphQL helps us do that by providing an API platform for microservices which facilitates user experience innovation.

Headless technology

Going headless allows for maximum agility and flexibility, as it enables us to deliver digital experiences across multiple channels quickly and easily. We leverage the best headless CMS solution, Contentful, and we also design and deliver bespoke, modular e-commerce software.

Event-sourced systems

Having successfully built and deployed event sourced systems for our clients, we can vouch for their increasing popularity in the industry. Event-sourced systems are highly reliable, flexible, scalable, and future-proof, as well as allow for unprecedented business intelligence, making this pattern the perfect choice for high-complexity software design & development.