03 Jul Why I Favour Our Development Process
There are always several ways a person can approach the same job and work in software development is no different. At Frankli, we use Git for our source control using the Gitflow framework in conjunction with the Atlassian suite of products for our development process. I am a huge fan of this particular approach and operation, and here’s why. Let’s start with what it includes. It has Jira which is used for bug and issue tracking as well as for tracking story points, Bitbucket stores our git repositories and is for our continuous deployment and Confluence is for our internal Wiki. Then there is our Git repository which consists of the following branches:
The Master branch is the version of our product which is currently live and is in use by our customers.
This is the latest most up to date version of Frankli waiting to go live to our customers. Develop is always live in our staging environment for QA and testing. It should always be in a fully functioning state, and any breaking changes should occur on a feature branch. Develop is merged into Master on a fortnightly release cycle provided everything is up to standard.
3. Feature Branch
If a significant change needs to be made, such as the addition of a brand new feature or the reworking of an old one, a feature branch is created. The naming scheme for a feature branch is as follows; feat/FDS-001-New-Feature where FDS-001 is the Jira issue ID (Or epic ID in the case of a whole new feature) and New-Feature is a short description of the feature. This naming scheme allows us to refer back to which Jira issue the branch is related to with ease. Bitbucket will also make the branch name clickable and link back to the Jira issue which is quite handy when used for things like code reviews etc.
If there is an issue on the live version of Frankli, a hotfix branch is made as a fork Master. Once the changes are reviewed, the branch is pulled into both Master and develop. Hotfixes are created with the naming scheme hotfix/FDS-001-Fix-Description. Prefixing branches in this way helps to make it clear what the purpose of a branch is.
Automated continuous deployment is key to our development process as it allows for consistency regarding deployments and saves a considerable amount of developer time. Whenever a push is made to master or develop, this kicks off a build in Bitbucket using “Bitbucket Pipelines”. Our automated test suite runs and, provided there are no failing tests, the branch is pushed live. This ensures we do not deploy a version with any (major) issues.
Having a powerful suite of tools in your development process that all work together with ease is crucial. Having such tools allows for consistency, clarity and accountability. This overall leads to the creation of a high-quality code base and subsequently results in high quality and reliable product.
By using this process, we save massive amounts of time and energy when it comes to managing our development and deployments. Any developer can deploy their code to production with little to no assistance, and due to the process being automated, to do so with consistency, empowers our developers to have more quality impact on our product. Tools such as these are crucial in a fast moving work environment where product iteration is quick and constant, and without a proper process, valuable time and resources would be wasted.