Software Development Process
We follow the Agile Model of Software Development in FuGenX
What is Scrum?
Scrum is process of implementing Agile, where features are delivered in fixed number of days called sprints. A sprint is the process of stopping play, then vigorously playing until the sprint ends and a new one begins. The same idea applies here, where we define the requirements for a sprint and work on them without being sidetracked by other things or having things re-prioritized. A specific feature is not recognized as being completed until it is analyzed, designed, coded, tested, re-factored and documented. At the end of the sprint, most features defined in the sprint is completed. If some did not get finished (because of being underestimated), the uncompleted features can be moved to a later sprint. A sprint is considered successful if all the completed features have high quality and can be put into production (or beta) upon ending the sprint.
Every one is clear about their responsibilities. Customer knows what is going on in development. No surprise at the end of the release. Best quality product is delivered.
Team in our Scrum Model:
With Scrum, we have just 3 team roles and they are normally limited to 7 or less individuals (however, we can have multiple Scrum teams in sets of 7 or less):
- Product Owner - This is the person that identifies and prioritizes the features that will appear in a sprint. This is normally the CEO, CTO, or some other high level stakeholder that ultimately is responsible for shaping the roadmap of their product (Usually this role is played by our Customer)
- ScrumMaster - The ScrumMaster is the Project Manager, but does not manage the team deliverables at a micro level. Instead, this person is responsible for ensuring that the deliverables are completed in every sprint, no new features are added to the sprint, code inspection, and ensuring everyone plays by the rules.
- The Team - Each team member is empowered and expected to self-manage themselves and to participate in all duties needed to deliver a feature. This includes analysis, design, coding, testing and documentation.
How do we Work on a Day-by-Day Basis in Scrum Model?
Scrum begins with an 2-4 hour Scrum Kickoff Meeting. The Scrum Kickoff meeting is divided into 2 segments, where we first determine what features are desired for the upcoming sprint. The next hours are used to provide rough estimates for the items identified for the sprint. If the estimates exceed the available resources, the features are prioritized and less important features are dropped from the sprint. An important component of Scrum is using a time-box approach, where meetings and events have a definite time period (e.g. no more than 4 hours for the kickoff meeting) and this time-box is strictly enforced. Once the features are locked in for the sprint, no changes are allowed (new features can not be introduced until the next sprint). When estimating features for a sprint, the estimates includes time for analysis, design, coding, testing, re-factoring, and documentation. A feature is not considered complete until all those things are done.
Each day, a Daily Scrum Meeting is held to determine how the features are progressing. The meeting is no longer than 15 minutes, and each team member is asked 3 questions:
- What have you accomplished since the last Daily Scrum Meeting?
- What will you do before the next Daily Scrum Meeting?
- Is there anything that is impeding your progress (and remedies are discussed)?
Our Programmer’s follow specific rules:
- Code is only checked out for the duration needed to complete a feature. No exceptions. Most code is checked in daily, as most features are broken down into small feature sets.
- Time must be entered daily. For each feature, we have estimated hours, actual hours and hours remaining to complete the feature. This information is updated at the end of every day so that the ScrumMaster can determine if the release progress is trending as required.
- Programmers are not allowed to be pulled off on tangent projects, they must stick to the features they have been assigned for the sprint.
- All team members are mandatory to attend the Daily Scrum Meeting and are present on time.
- Code is compiled and deployed to a test server daily. Teams use automated build tools to speed up this process. Automated tests may run against the daily releases to discover any issues introduced by the release.
Once a sprint is completed, all features that were completed are then moved to a beta or production environment. Following the sprint is a Retrospective (post mortem), where team members discuss and document things that went well and things that can be improved upon in the next sprint.
Once all sprints are over then it goes for QA and followed by user acceptance Testing.