We recently covered our process for estimating custom software projects and how we set a solid foundation for projects with analysis phases. Now it’s time to dive into what we’re most well-known for: development.
Now when we say development, we mean so much more than just writing code. Our development process includes business analysis (BA) work to continue refining features and their priority, design and user experience (UX), quality assurance testing, and yes, actual development.
When we start a project and jump into the analysis phase, clients often ask us, “When do we get to start development?” Sure, development seems like the “fun part,” but we stress the importance of the analysis phase to set a solid foundation for what we do in the development phase.
During this phase, we develop features, test functionality, review the system with you, and deploy on an iterative basis, using the Agile Scrum framework to plan, prioritize, and implement our work.
We’ve talked a lot about agile scrum methodologies and how we use them to develop software. The core tenants we use are:
- Ceremonies – We strategically use a variety of purposeful internal and client meetings to plan, refine, and prioritize work. These ceremonies help us be more effective in everything we do.
- Continuous Improvement – Scrum is about defining and refining processes and products. We’re always on the hunt for tweaks we can make to help us build better software.
- Iterative Deployments – Unlike the old days of software development, we don’t build an entire system before we put it out for the client (and end users) to see. We build and deploy features and functionality in a way that allows us to consistently push updated working software out to clients and users so they can interact with it and ensure it meets identified goals.
- Teamwork – Scrum is heavily reliant on a team mentality. The team works together to define, build, test, iterate, and deploy working software. While there are roles on the team, members often jump in to help in other areas to help the greater good of the team and project.
A Peek Inside a Sprint
We work in two-week sprints, or iterations. During active projects, the following activities take place throughout the cycle of a sprint to ensure top-notch software is being built:
During the development phase, the project team—usually the product owner (PO) and lead developer at a minimum—meets with the client to review the latest deployments, upcoming work, progress toward goals, financial updates, and anything else that needs discussed. These meetings are vital for keeping projects on track.
Grooming a project backlog is a tag team effort between the PO, lead developer, and client. This process happens throughout the project as needed, and consists of prioritizing features and user stories, defining acceptance criteria, estimating stories, and more. Backlog grooming is critical to ensuring the team has what it needs to do the work the right way the first time.
In our case, sprint planning is typically an internal activity with the Far Reach team. In this ceremony, we review what’s planned for the upcoming sprint, both at an overarching level as well as at a project level. Often, we need to add or remove planned work based on our capacity for the sprint. This process can seem tedious, but by planning ahead before a sprint, we’re able to focus on working through the sprint in priority order instead of deciding what to work on as we go.
Design / UX
While some UX work is done in the analysis phase, there’s plenty left to do once development starts. Some sprints are full of design and user experience (UX) activities (wireframes, high-fidelity designs, user testing, information architecture, etc.), while other sprints are light (maybe just some UX review on development that’s been done).
This single component is what most people think of when they think of software development. It’s the actual coding that happens during a project. Developers work on user stories in priority order to meet the sprint and project goals.
Quality assurance (QA) testing is a critical part of building quality software systems. Bugs are an inevitable part of development, and while our developers test as they code, testing conducted by someone who didn’t write the code is important for catching as many issues as possible. QA is a second line of defense in minimizing the number of bugs that make it to production and improving the overall quality of the software.
During the development phase, we usually deploy to our internal test environment, and then, once the code has passed QA testing, to a user acceptance testing (UAT) environment so the client can get in and use the system. If the project involves an existing system, we may also deploy to the production environment as we go.
As you can see, sprints are full of activity, and the development phase moves at a really fast pace.
Do you have questions about our development process? Reach out