Agile = Fast ?
Have you ever experienced to deliver software fast? But the requirements are often changed based on needs. What will your team do? Change on plan isn’t one of the solution if you’ve already planned it as a long-term plan. Of course, in this situation, Agile is the solution.
It was started in 2000, when a group of Software Developers (they include Martin Fowler, Jim Highsmith, Jon Kern, Jeff Sutherland, Ken Schwaber, and Bob Martin) discuss on how they could speed up the development process to deliver software faster in the market. They realized that development time and getting feedback from user quickly are the important parts to deliver software quickly. Their next meeting, in less then a year, the group produced Agile Manifesto.
What is Agile? Agile is an iterative software development methodology to deliver software faster. Agile team works in small, but consumable, increments. Instead of big launch, Agile promotes small launch in short-period of development cycles called Sprints. Each sprint resulting in potentially shippable functionality delivered.
Agile Manifesto itself has 4 core values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That’s Agile Manifesto for you, even there is value on the right, we value the left more. Since then, Agile is widely-used in Software Development to deliver software faster in the market.
There are 12 principles based on Agile Manifesto, 5 of them are:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
It’s important that our priority is to satisfy the customer. It doesn’t matter if you can’t deliver the fully-completed software, but make sure that in short period of time, there is any deliverable function in the software you’ve developed.
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
In Agile, we need to adapt with changes or requirements. In agile, we support our customers to adapt and surpass their competitors. I think this one is the most challenging for the developers. Adapting to changes isn’t easy as flip coin, but we need to adjust our codes and deliverables to our customer needs.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Agile is fast, so we only have short-period of time to build the software. Make sure at the end of one cycle (couple of weeks, couple of months, etc), we have something to be delivered functionally.
Business people and developers must work together daily throughout the project.
We work with our customer, we involve our customer in our development process. Our customer is our comrade in this development, don’t think like you’re something like ‘contracted’ to your customer.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Each individual in our development process is the key to the software’ success. We have to do our job, and trust the other to another individuals, support each other, and you’ll see the result at the end.
Scrum and Agile are different things, Scrum is part of Agile. Scrum is a framework for getting work done, where agile is a mindset. Scrum used to manage, develop, and complete complex projects by working on iterative development. Scrum methodology helps consider clients’ requirements, by working step by step and ensuring the client is taking part in our development process.
Scrum in Software Engineering Course Project 2021 Fasilkom UI
My team — Magic People — uses Scrum in developing and delivering our client’s product: iAksesoris.
The product backlog is a list of new features, enhancements, bug fixes, tasks, or work requirements needed to build a product. In my team, we use product backlog to define features and requirements.
The sprint backlog is a set of product backlog tasks created by the development teams to plan deliverables and as a detail of the work for one increment (one sprint).
Scrum project’s management team consists of three roles, which are: Product Owner, Scrum Master, and Development Team.
Product Owner represents the business, ensures the team is delivering the most value, and guide the development team what is important to deliver. In my team — Magic People, this role is handled by a teaching assistant in Software Development Project Course, Kak Shais.
The scrum master ensures the scrum is being done well. Scrum master helps Product Owner define value, and ensures the need of development team. They make sure that development team can deliver without being interrupted from external interferences. In my team — Magic People, this role is handled by a teaching assistant in Software Development Project Course, Kak Vincent.
The development team is the main core of the scrum team. The team ensures that the product is delivered. They are the people who build and implement the product. In my team — Magic People, Evando Wihalim, Jonathan, Alwan Harrits Surya Ihsan, Ryo Axtonlie, and me (Michael Susanto) are in the development team.
In this event, the development team creates sprint backlog tasks from product backlog, which is created for one development cycle (sprint).
We can call this as a one development cycle in Scrum. This one cycle event runs from Sprint Planning — Daily Standup Meetings — Sprint Review — Sprint Retrospective, usually about 1 or 2 weeks.
Daily Standup Meeting
Daily Standup Meetings are daily short-meetings to report daily progress, what did you do yesterday, and what will you do.
This is where the development team presents the potentially shippable functionality delivered in one sprint to the Client and Product Owner. After that, the Client or Product Owner can accept or reject all or some functionality. The rejected functionality will be continued and fixed in the next sprint.
This event is where our team evaluate, what are going well, what are not going well, and what will the team do to improve the development process in the next sprint.
Our team also applies Agile Manifesto in development process.
Individuals and interactions over processes and tools
This first manifesto tells us that to build something we need people, not the processes and tools. This means that communication in the team is important. Our team created a LINE group to discuss and arranging scrum event meetings, also any difficulties that we might encounter during the sprint.
Working software over comprehensive documentation
Our team prioritizes working software over comprehensive documentation. Thus, we are focussing to implement the products first with TDD principle, and doing Merge Request as soon as possible to get code reviewed by other teammates.
Customer collaboration over contract negotiation
Don’t forget that collaboration and communication with our stakeholders is vital. In this manifesto, we engage and ensure the client is taking part in our development process.
The simplest example is at the beginning of our project, the client decide the registration mechanism to decide whether the Distributor has his/her Business Identification Number. We thought of how do we get the information. By the time we asked our client, the client said that he will provide the information.
Responding to change over following a plan
Our team also responds to change over following a plan. For example, when there is any backlog which is not clear yet, we asked the client and responding to change according the client.
I personally think Scrum is a nice development framework to adapt with changes, although it is not easy to adapt with changes. But, if we follow the Agile Manifesto, Scrum Framework, and all the goods, we will find that we can deliver the software faster and get reviewed quickly. Hence, we can create product faster without reducing the product’s quality.
Thank you for reading and Happy Scrum-ing!