Hey! What’s up? I’m Keita. I work as a beginner C# programmer.
If you’re an engineer, you’ve probably heard the word “Agile” a lot. I often hear it too. However, when asked to explain it, many people may be at a loss. I am one of them.
So this time, I would like to share what I have learned from reading Agile books. The book I read is below…
What's Agile?
Agile is a software development methodology that aims to be fast and flexible. The basic tenets of Agile are based on the following four values.
1. Individuals and dialogue
Empaasizes communication among team members rather than processes and tools.
2. Software that works
We value software that actually works over comprehensive documentation.
3. Collaborating with customers
We value collaboration with customers over contract negotiation.
4. Adaptability to change
We value flexibility to change over following a plan.
It also introduces the concept of the "Iron Cross". This refers to the restriction that only three of the four elements of "quality","cost","speed" and "completion"can be cosen in project management.
Specifically,the following options are available below.
・A project with high quality, low cost, and high velocity is not completed.
・Projects that are high quality, low cost, and complete are slow.
・Projects that are high quality, fast, and complete are expensive.
・Projects that cost less, are completed faster, and are completed with lower quality.
The idea is that one of these must be given up. Agile development requires flexibility while understanding this constraint.
Benefits of Agile
There are many benefits to adopting Agile.
1. Rapid feedback
Agile development allows for rapid feedback from users and stakeholders through short iterations. This alows for early revisions to the direction of the project.
2. Flecibility
Because Agile is flexible to change, it can respond quickly to changing requirements and new demands. This increases project success.
3. High quality software
Agile development maintains code quality through continuous testing and refactoring. This results in high quality software with fewer bugs.
4. Team engagement
Agile encourages active engagement and collaboration among team members, which increases team motivation and productivity.
5. Transparency and visibility
Agile development increases project transparency by making progress and issues visible at all times. This facilitates communication with stakeholders.
Business practices
The Business Practices of Agile Development focus on the business aspects of project planning, progress management, and release management.
1. Plans and stories
In Agile development, project plans are designed to be flexible and responsive to change.
Stories and points
User stories are created and points are assigned to each to estimate the work to be done.
Story estimation
The entire team estimates stories and prioritizes work.
2. Iteration management
Agile development involves working in short iterations (typically 2-4 weeks).
Demonstration
At the end of each iteration, the team demonstrates the completed functionality.
Velocity
The team's work rate is measured and used to help plan the next iteration.
Small releases
Frequent small releases to quickly incorporate customer feedback.
Velocity
The team's work rate is measured and used to help plan the next iteration.
3. Source code management
Source code management is also important in agile development.
Version control system
Use a version control system such as Git or Subversion to keep track of code changes.
Acceptance testing
Perform testing to ensure that the code works correctly.
4. Whole-Team Communication
Communication throughout the team is important in Agile development.
Full participation
All team members are involved in the project and work together.
Collaboration
Team members work together to solve problems efficiently.
Team practices
Team practices in agile development are practices that define the relationships among team members and how they interact with the product.
1.Metaphors
Metaphors are tools that help teams have a common understanding. They provide a concise representation of the overall project and key concepts so that everyone on the team is working in the same direction.
2.Sustainable pace
In agile development, it is important to work at a sustainable pace. Excessive overtime and unreasonable schedules are avoided, and the goal is to maintain high productivity over the long term.
3.Collective ownership
Collective ownership means that everyone on the team is responsible for the code and the project as a whole. This allows the entire team to solve problems and maintain quality without relying on specific team members.
4.Continuous integration
Continuous Integration is the process of integrating and testing code changes frequently. This allows for early detection and correction of problems. It also ensures that the entire team's code base is always up-to-date.
5.Stand-Up meetings
Stand-up meetings are meetings where the entire team gathers briefly each day to share progress and problems. This facilitates communication among the entire team and allows for quick responses.
Technical practices
The Technical Practices chapter details the technical practices in agile development.
1.Test Driven Development (TDD)
TDD is a methodology in which tests are created before code is written and code is developed to pass those tests. This improves code quality and prevents bugs from occurring.
2.Refactoring
Refactoring is a technique for improving existing code to make it more maintainable and readable. This maintains code quality and facilitates future changes.
3.Simple design
Simple Design is a methodology that aims for a simple design with the minimum necessary functionality. This avoids complexity and makes code easier to understand and maintain.
4.Pair programming
Pair programming is a technique in which two programmers share a computer and write code together. This improves code quality and promotes knowledge sharing.
5.Continuous integration
Continuous Integration is the process of integrating and testing code changes frequently. This allows for early detection and correction of problems. It also ensures that the entire team's code base is always up-to-date.
summary
I have summarized Agile as described above.
At the beginner level, there are still many points that don't make sense to me, but I think just keeping it in mind will make the difference between me and those who don't know about it.