Introduction
Software development methodologies describe structured approaches that guide the process of building software systems. These methodologies provide frameworks, practices, and principles to manage the complexities of software development projects efficiently. At Sinara, we recognise the importance of flexibility in project approaches and adopting the methodology most suitable to a particular project and client goals.
Making the Right Choice
In general, any choice of methodology hinges on project specifics, team dynamics, client and other stakeholder involvement, risk tolerance, and of course budgets and timelines. By weighing these considerations, a project team needs to aim to optimise productivity, manage resources effectively, and deliver high-quality software in alignment with project goals.
Two prominent categories are ‘traditional’ and ‘Agile’ methodologies. Traditional methods, like the waterfall model, emphasise sequential phases with distinct deliverables, suitable for projects with well-defined requirements. In contrast, Agile methodologies, such as Scrum or Kanban, promote iterative, collaborative development, accommodating changing requirements and prioritising early customer feedback.
In practice, certainly at Sinara, many real-world projects will have elements of each; internal component development, such as for our SinaraTLC framework, is essentially a continuous agile project, whereas a client-specific implementation will by necessity be far more constrained and timeboxed.
Using ‘Agile’ Principles
Over the years, at Sinara, we have regularly honed our project management methods and techniques, and many projects reflect Agile practices and principles, regardless of whether they are fully agile in the classic sense or using a more structured waterfall approach. The goal is always to have a flexible project framework promoting collaboration, adaptability, and minimisation of risks as we run the project.
Epics: Large bodies of work that encapsulate major features or themes, aiding in high-level planning and prioritisation. For example, a trading platform project might include ‘Market data’, or ‘Complex order entry’ as epics.
User Stories: Brief, user-focused feature descriptions that guide development priorities. Building on the trading platform example, we might have ‘Entering a limit order’ or ‘Viewing the audit trail of an order’ as stories. Each epic will consist of multiple user stories.
Estimation: Techniques like story points aid in planning and prioritising work.
Sprints: Time-boxed iterations, typically of 2- or 3-week duration, ensure focused development and regular adaptation. Each sprint will have multiple stories assigned to it, so it is clear what the team is trying to achieve in each sprint. A sprint will generally have a goal, such as ‘Work on the new features for back-office users’.
Phases: Organising projects into phases aligns development with overall goals. Each phase will have a fixed number of sprints with an overall high-level goal, e.g. ‘Deliver new analytics and other front-end functionality’.
Backlog: Prioritised lists guide sprint planning and development efforts. All stories and tasks go into the backlog, and will be brought into a sprint during string planning.
Daily Stand-ups: Brief daily meetings enhance communication and issue resolution.
Retrospectives: Regular reflections promote continuous improvement. This is critical to ensuring constant learning, especially in large or long-running projects.
Getting the Right Team Structure
Regardless of the methodology used, our teams follow a collaborative and cross-functional structure, with roles and responsibilities distributed among team members. A typical SinaraTLC-based client project team typically contains the following key roles:
Project Manager: Coordinates the overall team, is responsible for delivery, and interfaces with the client and other external stakeholders.
Product Owner: Represents stakeholders, defines priorities, and ensures value delivery.
Development Team: Cross-functional group responsible for delivering the software solution. The number of developers in any given team will vary over the course of the project, typically starting with a relatively small number involved in specification, design and architecture, and rising as implementation accelerates.
Testers/QA: Ensures product quality through testing and collaboration with developers. To provide high quality of support when systems are running in production, the Sinara support team are involved from the early stages of projects with members rotating throughout sprints to provide testing support while gaining knowledge and familiarisation.
Project Board: Typically members of the senior management team who provide input and review progress, providing governance for the overall project on the Sinara side.
Our team structures promote collaboration, shared ownership of tasks, and flexibility. Regular ‘ceremonies’, such as sprint planning, daily stand-ups, and sprint reviews, facilitate communication and alignment among team members.
Development Tools
Strategic use of development tools and infrastructure also plays a crucial role in streamlining and enhancing the software development process, regardless of the methodology used. At Sinara, Crucible, AutoReviewer and Jenkins are just some of the many tools and frameworks we use to help foster collaboration and ensure the efficiency of coding processes.
Crucible facilitates effective code review processes by providing a collaborative platform for team members to review, comment, and approve code changes.
AutoReviewer, a code review tool which contributes to code quality by helping with routine checks and ensuring adherence to coding standards.
Jenkins, with its build and deploy job capabilities, enables continuous integration and continuous deployment (CI/CD), automating the building, testing, and deployment of software, accelerating the development cycle.
Together, these tools, amongst many others, create a comprehensive development infrastructure that promotes collaboration, maintains code quality, and facilitates the timely and dependable delivery of software solutions.
Summary
Project management and software development methodologies are not set in stone but need to be constantly refined and adapted in line with changing client and industry needs. Sinara’s extensive experience allows us to run modern, efficient projects to deliver the demanding requirements of our clients across the financial markets.