At Terrific Minds, the development process is considered as a segment of the whole delivery train, and not looked at in isolation. We use many frameworks and technologies at work, but the process is kept largely agnostic. Though the bulk of the development stage falls in between the Design and Business Analysis stages and before the QA stage, since we use Agile methodologies for development, so many of the above stages’ timelines overlap.
THE DEVELOPMENT PROCESS CAN BE ROUGHLY DIVIDED INTO THE FOLLOWING PARTS
- System design: Here we decide on the technology to be used and the architecture of the system. This phase typically happens early on in the project, much before the actual development starts.
- Devops design: The devops (Development-operations) processes get defined in this stage. Setting up of test environment, planning of code deployment, etc. happens here.
- Development/Coding: This is where the bulk of the work happens. During this stage, code, configuration etc. is created by a team of developers. In Agile methodology, the whole development is chunked into multiple segments called “Sprints”. Each sprint has a predetermined amount of work involved, and at the end of each sprint, the work has to represent a logical block of the entire application that can be showcased to the client after Quality Assurance.
- Unit testing: Each developer is supposed to unit test his/her code. This is the first stage of Quality Assurance and it involves testing of each functionality in isolation, before it reaches the QA team.
- Code review: The source code created by a developer is often susceptible to functional and non-functional issues. The aim of code review is to quickly identify red flags such as poor application of design patterns, not following standards or performance considerations. The review process followed is often peer-review.
At Terrific Minds, we use Git for source control. Each developer usually works on a branch specific to the current feature and then uses merge requests to merge code to the mainline, paired with a review and approval process. We also try to automate our devops cycle as much as possible with the use of Continuous Integration tools such as Jenkins, so that deployment to test environments are automated.