How are we agile?
Agile approach in Software Development refers to an iterative approach which helps teams to deliver value to their customer (What Is Agile?,n.d.). At Qubisoft, we break tasks into smaller pieces and deliver them iteratively on every sprint rather than trying to deliver everything at once. Each team define agile differently based on their needs and culture (What Is Agile?,n.d.), we define agile as not just a specific way of development but a process that adhere to continuous feedback and improvement cycle.
At Qubisoft, we ask question like how clients can know if we are delivering the product that has value to them and answer it by giving them demo. We believe the best way for the clients to know if the product is of value to them or not is by seeing the actual working software. So, we schedule a meeting every week or two with clients to give the demo of tasks that are done so far. We also take this as an opportunity to get feedbacks from the clients. We plan and prioritise the tasks for next sprint and remove any roadblocks together with the clients. Some of the advantages that we are getting from following the discipline every sprint is:
- Planning tasks: It is helping us to concentrate on the important stuff that has an actual value to the clients.
- Giving demo: It is not just helping clients to see the progress but also helping us to make sure the quality of the software is maintained, and the system is bug free.
- Getting feedbacks: It is giving us the opportunity to improve our products early as per the need of our clients. This fits in with our agile definition as the process of continuous feedback and improvement.
As we are never done capturing all the requirements at once in agile methodology the cycle of running sprint on a regular interval gives us the opportunity to re-evaluate and change the requirements and course if required. This, way we respond quickly to the change and continuously improve our product.
The traditional “Waterfall” approach has one person to contribute, then once his contribution is complete pass it to next contributor, but agile calls for collaboration among team members (What Is Agile?). At Qubisoft, we encourage and support open communication, call for help and collaboration which are the heart of any agile team. We analyse, develop and test a software together as a team.
It is very hard to handle and track changes if we only have a heavy requirement document, so we capture the requirements in the form of user story. A user story is an informal, general explanation of feature which describes how a task will deliver value back to the customer (REHKOPF,n.d.). We break a big feature into smaller tasks and treat each task as a user story. We create the user story in Github’s kanban board with all the information required to complete that task. Client can track the status, notes and comments of the user story anytime by navigating to the project board.
Further, we use Github as a version control repository for our codebase. Github has given us the freedom to experiment locally and publish the changes only when we have done enough testings and is ready for distribution (DALY,n.d.). Further, we create a separate branch for each user stories in the repository. Creating separate branch means that we have our own isolated version of codebase for each branch. Breaking a feature into task, then into user story and finally branches means that we can work on each task individually and more efficiently on the same code but in different repositories without doubling up of work. Also, we increase the speed of development process as we are focusing on a small chunk of work in a repository separate from main repository (DALY,n.d.).
We try to implement the technical solution in such a way that each component of system is independent with the other component. This helps to reduce the amount of change to the overall system when a requirement changes. We use various features like dependency injection, interfaces etc. which helps to reduce the tight coupling in the system and makes it change friendly.
We are experimenting and learning more about technologies like Automated testings, Continuous integration and Unit Tests which will speed up the development and release process. These technologies will speed up the development process and help us to improve the quality of product. Thus, we are an agile company that takes an iterative approach to complete any project with focusing on continuous release and customer feedback while testing, experimenting and implementing new and latest technologies.
- DALY, L. D. (n.d.). Git makes software development, well, easier. Atlassian Agile Coach. Retrieved February 9, 2021, from https://www.atlassian.com/agile/software-development/git
- REHKOPF, M. R. (n.d.). User Stories with Examples and Template. Atlassian Agile Coach. Retrieved February 9, 2021, from https://www.atlassian.com/agile/project-management/user-stories
- What is Agile? (2020). Atlassian Agile Coach. https://www.atlassian.com/agile