Hi, Mandi here! This post is a fun one for me because I love talking about how we do our work. When the newest addition to our team volunteered to describe Agathon’s software development process, I was excited to see how much he had internalized during his first nine months with us. Turns out, quite a bit! Without further ado, here is Jay Giang…
Every development project looks different, but our overall process—the Agathon approach, if you will—remains the same across every project. Whether you’re embarking on your first development project ever or considering working with Agathon on the redesign of an existing website or app, the following describes our big-picture process.
All Agathon projects follow an Agile approach. We tackle projects using the core essence of Agile as a way to respond to change. This approach enables our clients to respond to the needs of their stakeholders and users. It also allows our developers to respond to unforeseeable technical considerations. We can adjust course as needed, ensuring we build software that truly delivers value.
Here’s what that means at a practical level:
The importance of discovery
Before development can begin, we must first go through discovery. This phase of the project involves researching, planning, and analyzing. It’s when our team works with the client to hash out unknowns, define the scope and goals of the application, and better understand the user experience.
Discovery also includes conversations about design and the technical needs of the proposed website or app. These conversations ensure we’re all on the same page with clear expectations. Discovery is an essential part of our process; without it there’s a greater chance of wasted time and resources during development.
Getting started with a kick-off
After discovery, the project manager, designer, and developers will map out a plan for bringing the website or app to fruition. We consider all aspects of the project. This includes breaking down costs, settling on main technical requirements, and creating a high-level timeline of deliverables. This allows our team to present a statement of work (SOW) to the client.
If the client accepts the SOW, we move to kick-off, which involves another meeting between our team and the client. (All development projects include regular meetings. Communication is essential and something we stand by at Agathon.) During this meeting, we introduce the team members from both organizations. We also go over project management tools, modes of communication, next steps, and any questions.
Tracking progress and setting deadlines
Once we’ve kicked off the project, we use the Jira project management tool to help our developers track user stories. A user story is simply a task representing a feature for the website or application from the perspective of the end-user. Each developer is assigned stories in two-week work increments (known as Sprints). This cadence allows for frequent reviews and feedback, which enables us to quickly address any issues that arise.
At the end of every two-week Sprint, the development team will go over what did or didn’t go well with their assigned stories. The information shared during this meeting is crucial because it dictates which stories we work on next. It also keeps the client updated on the development progress.
Communication throughout the project
As mentioned earlier, communication is key. We practice this by meeting with the client via a video call after each sprint. During these meetings, we review the progress we’ve made as well as any issues that have come up during the recent Sprint.
In addition, we use Confluence to organize meeting notes, ongoing discussions, open questions, and project updates. Regardless of whether there’s a lot or a little going on during a given week, we’ll post regular updates to share what was accomplished and what’s next. This way, clients have a predictable pulse-check on the project they can share with other stakeholders.
Code reviews, internal testing, and beta testing
All applications go through regular testing at several stages to ensure they’re ready for release. Throughout development, at least two developers from our team will review any newly written code. Once the development team completes the initial scope of work, we send a test version of the application to internal users from the client’s organization. If this stage of testing runs smoothly, we then invite volunteer/beta testers to download the app. Throughout the testing phase, users will be looking out for bugs, missing features, incorrect formatting, etc. Our goal is to have users review the app across a variety of platforms and use cases so we can catch as many of those before launch as possible.
Launching the new site or app
After the testing stage, the launch process looks different for a website and a mobile application. Once a website is ready to go, we release it to the public. We closely monitor the launch phase to watch for errors during this time. By looking at logs and analyzing issues in the code, we can make and deploy adjustments immediately to the live website.
Because the update process takes longer for mobile apps, we test a bit more cautiously. For most apps, we recommend an incremental release over a seven-day timeframe. If we begin to receive error reports, we can pause the release, make adjustments, and then re-release a new version.
Looking back at the software development process
At the end of each project, we hold several retrospectives that allow our team and the client to look back on the project. Our internal project retrospective allows team members to review how the process went, learn what went well, and reflect on what didn’t go well. During the client retrospective, we focus specifically on communication and the overall process. Both help us continually improve our processes to better serve clients.
While we have a standard approach to the way we work, every project has unique needs, and we adapt our development process to meet those needs. Above all, our project managers facilitate collaboration between our team and the client team to create a website or app that serves end users well while helping the organization meet its goals.