How we work
Software Development Lifecycle (SDLC)
The above graph depicts a small iteration out of many in our development process. This is meant to show that we work in small, iterative deployments to allow for you and your team to get working software that delivers immediate business value. We strive for minimal “up-front design” and work more towards understanding you or your customers to deliver that value.
Requirements
During this stage of the project we will work with you to gather known requirements to help drive the design session of our work. This is not meant to be exhaustive and as we stated will be a continuous process for requirement gathering after we’ve received feedback from users.
Design
During the design phase we look to build lightweight/low-cost artifacts to gain initial feedback from users. This portion of our SDLC is centered around keeping development costs low and avoiding continuous re-development. Possible artifacts during this phase include:
Hand-drawn sketches
Wire-frames
Systems Diagrams
Entity Relationship Diagrams (ERDs)
Clickable Prototypes
Development
The development phase is broken down into three major categories and processes. We tend to spend the majority of our time in the development phase as it is when we get the most valuable feedback from our users. That doesn’t mean we won’t revisit the earlier phases of the SDLC to try and reset or if we are implementing very disconnected/new features.
Build
In build, we work utilizing some core Extreme Programming (XP) values and principles. We are focused on decreasing the time it takes to release software, increase the quality, increase open communication, obtaining rapid feedback, and simplifying architecture. We take a Test Driven Development approach which allows us to create living documentation and confidence in our ability to move quickly without breaking things
Deploy
In our deploy section, we focus quite simply on shipping fast and often. This can be accomplished through many means/tools. In XP we leverage things like
● Trunk-based development (always pushing to the main branch)
Working off the main encourages teams to test and verify beforehand so as to not break the main
Encourages smaller commits to not create large conflicts
● CI/CD at lower envs to production release
Lower, testable environments that include automated test suites
● Domain decoupling
Decoupled work allows for independent workflow
Learn
The final cycle in development is to ask questions and improve. We look at this phase to iterate on what we’ve deployed. In your world, this will look like a weekly, bi-weekly or monthly demo to showcase work and get feedback. This can include any and all stakeholders as we try and position for the best possible outcomes for our customers.