Book Read Free

Lean Mastery Collection

Page 20

by Jeffrey Ries


  The partnership of customer over contract negotiation

  Negotiation refers to the point when a customer and product manager sit down to come up with the project details. In a software model such as the Waterfall model, customers discuss in detail the requirements of a product in the early stages. In this case, the customer acts as a participant in the development.

  However, they don’t take part in the product creation. The Agile Manifesto provides a platform for a customer to collaborate in the whole process of product development. Therefore, it is easy for the team to meet the needs of the customer. The Agile methods may involve the customer during different periods of the demos, but still, it can involve the end user in the daily development. This ensures that all the requirements are achieved.

  4. Response to change over a subsequent plan

  The traditional software development methodology considers changes in software as an extra expense. As a result, it does not embrace changes. The goal is to create a comprehensive plan that has a collection of features. In this plan, all the features are marked with the highest priority. Also, there is an extensive level of dependency to help a team work on a puzzle. However, with Agile methodology, because of a short iteration, it is possible to transform priorities from one iteration to another. Additionally, new features are integrated into the next iteration.

  And so, Agile provides a positive response to change. A popular example is the Method Tailoring technique. This method involves human beings determining the development approach of a system through different changes. Agile allows a team to change the process and ensure that it mirrors the needs of the user.

  The 12 Agile Manifesto Principles

  These principles describe a culture where change is accepted and the customer is the center of focus. These 12 principles include:

  Satisfying the customer through frequent software delivery. This means that customers should feel happy when they see the progress of their projects instead of waiting for the time of release.

  Withstand changes to requirements in the entire process of development.

  Constant delivery of software that is working.

  A partnership between developers and business owners in the whole project.

  Provision of trust, support, and motivation for all the people involved.

  Provide face-to-face interactions.

  Working software is the basis of measurement of the progress attained.

  Agile processes to promote subsequent speed in the development.

  Focus on the technical specs and design to improve agility.

  Deliver simplicity. Create products in the right way to ensure everything runs well.

  Self-organizing groups should promote better architectures, designs, and requirements.

  A follow-up meeting to ensure that the right product is created.

  The purpose of Agile is to make sure both development and business needs are at par. Agile projects are customer-friendly and motivate the customer to participate in the development. Therefore, Agile has turned out to be the game changer in software development.

  Chapter 7: Techniques of Agile Software Development

  So far, there is a lot that has been discussed about Agile and the reasons why owners of companies and organizations should embrace Agile development in their organization or company. Also, the internet has a lot of content about Agile. Thus, new players that want to adopt Agile may get confused about what is the right thing to do.

  Agile is an excellent methodology to use to build a product or software. It is a flexible approach that empowers individuals who want to achieve success in software development and product development. Below are important features that should be present to make sure that Agile approaches succeed.

  • A common agreement on process and goals

  • Dedication

  • Collaboration among all stakeholders

  • Openness

  • Willingness to share knowledge

  Agile Software Development Techniques

  Nonstop Integration

  This technique consists of team members working on a product. The members then combine their smaller development with the rest of the team. Each integration is evaluated to determine whether there is a problem with the integration process. If a problem is found, appropriate action is taken to fix the problem.

  Test Driven Development

  It is a coding process that has multiple repetitions of a short development cycle. The first thing a developer does is to create an automated tested case which measures a new function. Then, a shortcode is produced to pass a defined test, before the new code is refactored to accept new standards.

  Pair Programming

  In this technique, there are two programmers who work at one station. The first one is the programmer and the other one is the driver whose work is to review each line of code entered.

  Design Patterns

  In software engineering, a reusable solution is an important aspect of the design process. A design pattern is not complete until it is translated into a code. It is a procedure of how one can solve a given problem that can be used in many different situations. Patterns are a formal practice that a programmer can execute in the application. Object-oriented patterns show relationships and interactions between objects and classes. They do so without describing the object classes and applications used.

  Domain-driven design

  The idea behind this technique is as follows:

  • Align complex designs on a given model.

  • Put the project’s primary focus on the domain logic

  • Start a creative collaboration process between domain experts and technical team to reduce the conceptual heart problem

  Domain-driven techniques are not a methodology. It simply provides a collection of practices which help determine the design and speed up the software projects that deal with complex domains.

  Code refactoring

  This is a process of modifying the software system without affecting the external features. The most important thing is that the changes improve the internal structure of the software system.

  Chapter 8: Challenges of Implementing Agile

  Problems are likely to occur, especially for those who will be using it for the first time. This chapter looks at some of the challenges that can be encountered in the process of implementing Agile.

  It is critical to understand that it takes time to convince a whole organization to abandon the traditional model and embrace Agile practices. However, once that is done, there are a lot of benefits that come on the way after going Agile. When adopting Agile practices, the right tool to have is a complex one that will help facilitate a successful implementation. Know that Agile requires a few changes to the corporate culture and a system change in the company or organization.

  You find Scrum as a great interference to the real work

  To be efficient, a Scrum Master and all team members should be experienced in handling team projects. It will help deal with issues such as delays and so on. An experience of six months is enough to handle most of the issues that arise. However, an individual with more than six months’ experience is at a better chance to deal with all the problems. Great experience provides value and purpose in the development of Agile projects. A person who has worked on several Waterfall projects and gone through a lot of frustration on how projects are managed is the right fit.

  Lacking this kind of experience can prove it hard to deal with the Scrum Master. Remember that CSM training does not have enough weight, and the Scrum Master will not direct the team to make the daily decisions. Scrum and Agile are practical frameworks that have unique details about each project and need to be carefully considered. Hence, experience is an important thing. Most experienced developers complain that Scrum and Agile are ineffective because of having a limited exposure. All in all, a team that has all the relevant people present can be sure to realize success in the implementation of Agile.

  Dev
elopers who are used to autonomous working might find Scrum unnecessary and it slows them down.

  There is no question that Scrum creates some overhead in the process of development compared to other development processes that have no formal methodology. A scrum is a tool used to control Agile projects. It helps create useful insights in the management of the project status.

  Certain projects are better done by a smaller number of developers who work autonomously. For example, the Personal Kanban. This is a good project management tool to use for such projects. But if you want to narrow down into a team made of product owners and developers, it is important to clearly specify the collaboration among the members of the team. This is the time when Scrum is the right solution to use.

  Whether you are going to use a collaborative approach or an individual-based technique, everything should depend on the characteristics of the project. Similarly, in a project that depends on the existing solution where subject experts are present, one is advised to use a collaborative approach such as Scrum. Again, one can change the Agile approach if the number of parties used for communication is more than three.

  Some efforts in development aren’t fit for a time-boxed Sprint.

  This is yet another problem. Some types of development aren’t used in normal-size prints. Below is a partial list:

  • A new complex user interface design.

  • New architecture system.

  • Database ETL that needs transformation, cleaning, etc.

  Some of these may involve different trials so that it can get something to work. They all face the same problem of conforming to a given sprint-sized effort.

  The purpose of a sprint is to facilitate testing and prove that a backlog item can work properly. Additionally, a sprint supports the creation of the correct functionality. Teamwork, discipline, and attention are required so that no one can extend the delivery of a sprint on the set date. One of the major problems is related to the term “to the end user.” If end users are defined as consumers of the application, then certain development tasks may take longer. However, there are some things that one can do to ensure that these tasks are completed using the right Agile framework. Below are the three problem areas to focus.

  • New Architecture system: This has different hardware parts, software applications, a different organization’s IT layers, and administrative staff. It is important to buy hardware, install, and ensure that it works. Applying for third-party hardware requires that in-house applications are accessible to the application. Security should be improved depending on the existing infrastructure of the organization.

  • Complex UI Design: This can take different trials before getting it right. Both the development team and SMEs should do a lot of trials and check for errors. The trials and errors should lead to a release of different mockups, wireframes, and graphics.

  • Database ETL: This may require a lot of layers to facilitate cleaning, data extraction, and data transformation. Finally, the data is presented based on the project requirements. A presentation allows the user to see the work output.

  Chapter 9: Agile Methodology

  Nowadays, most software firms use Agile software development methodology in the best possible ways that they can. Whether it is the first time in the era of application development or not, these days, most development methods depend on the Agile methodology.

  Well, what is Agile methodology? How can it be used in the software development? This chapter looks at several Agile methodologies.

  Scrum

  It is a popular method used in many organizations. Scrum has a highly iterative approach that concentrates on determining the major features and objectives before a sprint. The purpose of Scrum is to reduce risk and add value.

  Scrum applies a storytelling tool that defines the way certain features should perform and get tested. The Scrum team then goes through a sequence of sprints to deliver small provisions. To facilitate the proper working of a scrum team, it is good to address the answers to questions that might arise early.

  Scrum is different from the Waterfall Model because of its iterative and collaborative approach. One key difference is that the Waterfall approach requires a comprehensive documentation. This type of documentation makes it difficult for one to change certain features that may be unsuitable in a specific environment. When working with Scrum methodology, there should be a regular collaboration between developers and testers in the form of sprint retrospectives. These meetings ensure proper communication and emphasis on something that may not be clear. Besides that, a Scrum Master will always be present to check on how the project goes.

  Therefore, the fast iterations make this methodology the best for teams working on a project where customers and stakeholders expect an early release of the working product. This kind of participation helps the team make any necessary changes that may be pointed out by the stakeholders or product owners.

  2. Kanban

  This Agile methodology is focused on manufacturing. At its core, Kanban may be considered as an extensive to-do list. Not different to Scrum, the requirements of the Kanban methodology are monitored based on their current stage during the process.

  However, Kanban is not time-sensitive, but it is dependent on priority. This means that anytime a developer wants to jump into the next task, he or she can do that very fast. This approach has a few meetings to help with the planning. It is not like Scrum. As for that reason, it is important that team members should be careful. In this type of methodology, if the developers’ rate of working is faster than those testing, there will be several bottlenecks that would arise. In this case, any individual on the team can join and help in the different parts.

  Kanban has a simple transition for the ideal teams. To ensure that the transition to Kanban is efficient and smooth, developers, business analysts, stakeholders, and testers have to meet regularly and discuss. While shifting to Kanban, one should remember that this type of methodology would provide you with the fastest means of productivity in your code. However, chances are that the code might have some errors.

  Kanban is the best for small teams or those teams that don’t build features that should be released to the public. Besides that, it is a topnotch methodology used in different types of product or teams whose major goal is to maintain bugs in a system.

  Extreme Programming (XP)

  Kent Beck is considered as the creator of XP. It is a popular and controversial Agile methodology. It focuses on the provision of high-quality software in a short period. It builds on customer participation, rapid feedback, subsequent planning, and testing.

  The initial recipe of the XP was based on four simple values. Those values include feedback, simplicity, communication, and courage. In the Extreme Programming, the customer works closely with the team vested with development. The role of the customer is to define and prioritize smaller units of functionality called “User Stories.” The development team creates an approximation to plan and deliver the best priority user stories. These user stories are presented as working and tested software. To ensure that it optimizes productivity, the practices deliver a supportive framework that will help offer guidance to the team.

  Crystal

  This is by far the most lightweight and easy-going approach. The crystal consists of a collection of Agile methodologies, some of which include Crystal orange, Crystal yellow, Crystal clear, and many more. This Crystal family embraces the fact that every project may require a different customized set of practices, policies, and processes. These differences help fulfill the goal of the project.

  A few metrics of Crystal include communication, teamwork, and simplicity. Like other Agile methodologies, Crystal embraces early and regular delivery of a working product. In addition, it promotes adaptability, user participation, and elimination of bureaucracy.

  Dynamic Systems Development Methodology

  This methodology is based on nine principles that rotate around the business needs, active participation of the
user, empowerment of teams, and constant delivery. DSDM champions for fitness in the business as the major focus in the delivery and acceptance of a given system.

  In this methodology, requirements are listed early in the project. Processes are refined to improve them. Requirements, often called iterations, are defined and delivered within a short time. All important tasks must be done in DSDM project. In addition, not every requirement is highly prioritized. The DSDM framework is independent and has to be implemented in relation to other iterative methodologies such as XP.

  Chapter 10: Keys to Successful Implementation of Agile

  It is not easy to implement Agile methodologies such as Kanban, Scrum, and many others. There are a lot of challenges experienced as an organization, project manager, and team of developers. Despite these challenges, the benefits of using Agile methodology surpass the challenges experienced in the implementation. Below are some things to consider to help implement an Agile methodology successfully.

 

‹ Prev