Databases, an introduction to fundamentals
Today we will talk about databases, which are often the backbone of modern computer systems, …
read moreAgile methodologies were developed to provide a mechanism that facilitates adaptation to change in the development and creation of projects. In today’s fast-paced world, it’s essential to be ready for these changes to ensure the final quality of the project or product. Hence, the choice between an agile methodology over a predictive one can set us apart from our competitors.
Initially, every project was planned using predictive methodologies. These processes dictated every step from start to finish, leaving little room for flexibility. Any small deviation or unforeseen obstacle was a significant issue. Moreover, error detection usually came late when rectifying them became even more challenging. In contrast, Agile methodologies, focused on functionalities, enable early error detection, swift incorporation of changes, and immediate reactions to unpredicted challenges.
“Inhabitants of the Red Queen’s country have to run as fast as they can, just to stay where they are, as the country moves with them.” - Alice Through the Looking-Glass, Lewis Carroll
In the 80s, Takeuchi Hirotaka and Nonaka Ikujiro from Japan first introduced SCRUM’s application in product development. They implemented this methodology in companies like Epson, Honda, Hewlett Packard, among others. SCRUM, named after the rugby formation, was seen to have strategies applicable in businesses (and other domains) for product development.
It was only in 1995 at the OOPSA (Object-Oriented Programming Systems And Applications conference) that Ken Schwaber first associated SCRUM with software development.
Come 2001 in Utah, 17 critics summoned by Kent Beck coined the term “Agile Methods” to offer an alternative to predictive methodologies. They drafted the Agile Manifesto, summarizing the principles of the so-called agile methods.
SCRUM is anchored in four core values extracted from the Agile Manifesto:
Our main objective is to meet customer needs by delivering valuable software early and consistently. Addressing changing requirements is pivotal. It’s not about minimizing changes but managing them. They are inherent to product development. Frequent deliveries (every 2-8 weeks) of functional software enable early error detection and efficient problem-solving.
Both the business and development teams must collaborate daily. They should synchronize to ensure accurate project estimations. Significant misalignment can lead to frustrations, affecting both the process quality and product outcome.
Projects should be built around motivated individuals. They should be provided with all necessary resources. Communication should be direct and face-to-face, minimizing misunderstandings. While remote communication tools can be utilized, in-person meetings remain crucial.
The primary focus should be on delivering working software. But this shouldn’t come at the expense of overburdening the team. Sustained work pace, technical excellence, and daily improvements foster agility. Simplicity is key. Basics should be solid, reliable, and error-free.
Without a leader, the team should still function. Team self-organization should be emphasized from the outset. This approach results in the best architectures, designs, and requirements.
This is based on three primary pillars:
The basic SCRUM cycle comprises the Product Backlog, which organizes features in order of priority. This backlog is dynamic. The Sprint Backlog contains the current sprint’s tasks and is static. Features chosen for the sprint transition between these backlogs through a process known as grooming. After the sprint concludes, we have what’s known as the increment, representing the delivery of the developed features.
Agility stems not just from practices but also values:
There are three fundamental principles:
SCRUM distinguishes three main roles:
Product Owner: Must be thoroughly familiar with the client’s business environment. They have the product vision and establish the objective, knowing what they want and determining the product’s value through the increment. There can only be one product owner, who provides the product backlog with all well-defined functionalities, sets priorities for each one, and acts upon them. Ideally, this role should be filled by the client or even better, the end user.
SCRUM Master: They are not part of the team but ensure the team has the necessary tools to do their work. They act as a facilitator, offering servant leadership, ensuring the team meets its objectives, and advising them on self-organization. They are also responsible for explaining the rules, providing information, advising the product owner, reviewing and validating the product backlog, and moderating meetings.
Development Team: Should consist of no less than 3 and no more than 9 members. The team should be multifunctional, multidisciplinary, and versatile, allowing any member to perform another member’s task. They are responsible as a group and work cohesively and self-organized. All members participate in decision-making, respecting each other’s opinions and contributions.
The roles of stakeholders or interested parties are also worth mentioning. While they are not typically integrated as a role, they represent all third parties involved in the project that aren’t part of the roles above. Within these roles, we can distinguish two groups:
Committed: Those who commit to the product development process. This includes the product owner and the team.
Involved: They are not part of the process but indirectly intervene in it. This group includes the SCRUM master and the stakeholders (management, sales, marketing, etc.).
Sprint: The name given to each iteration of the development process. It’s the core that generates progress at a set pace with a minimum of 2 weeks, 3 as recommended, 4 weeks as the maximum recommendation, and 6 as the absolute maximum. The manifesto mentions up to 8 weeks, but this isn’t practical in reality.
Sprint Planning Meeting: Marks the beginning of each sprint, where the objective and necessary tasks to achieve it are determined. It’s led by the SCRUM Master, and both the team and the product owner, as well as any stakeholders, attend. It’s divided into three parts:
Daily SCRUM: It should not last more than 15-20 minutes. In this meeting, team members should report what they accomplished the previous day, the tasks they will undertake on the current day, and any problems or obstacles they faced, whether resolved or not. These issues should be explained so the entire team can benefit from this knowledge, and this explanation should not exceed two minutes. Ideally, this meeting should be conducted with the SCRUM board present. The team leads this meeting, and within it, two subgroups are established:
Sprint Review: The generated increment is analyzed and adjusted to the Product Backlog if necessary. The focus is on what is being built. It’s an informative meeting, not meant for decision-making or critiquing the increment. Those in attendance include the Product Owner, the SCRUM Master, the entire development team, and any other stakeholders who wish to participate. The completed increment is presented, and feedback should be directed towards the Product Owner—not the other way around. The subsequent sprint’s meeting is also scheduled during this time. The Product Owner should provide information to enhance the product’s vision value.
Sprint Retrospective: This meeting is to review what occurred during the sprint. The team and the SCRUM Master discuss how they’re working and devise an improvement plan for the following sprint. It should be held in a constructive and positive manner. Sharing information and gathering data for process enhancement is crucial.
Within the artifacts, several elements can be identified:
The process demands obtaining information on measurable values and numbers that determine performance, customer satisfaction, and efficiency. Additionally, there are various indicators related to the project itself, including effort, cost, size, development, defect density, design complexity, and availability.
Indicators should be few in number and practical. Any that are not useful for the process should be discarded. Often, the Product Owner requests indicators that provide the necessary information to understand the project’s status and evolution.
One of the most significant indicators contrasts the estimated time with the actual time, essentially comparing the anticipated duration of a task to the actual time it takes to complete it.
That may interest you
Today we will talk about databases, which are often the backbone of modern computer systems, …
read moreWe have seen the basic functionalities to manage our data that GraphQL offers us. Operations like …
read morePublishing an application on Apple’s App Store may seem like a complicated process, but with …
read moreConcept to value