Software Developer. Jill Clarke

Читать онлайн книгу.

Software Developer - Jill Clarke


Скачать книгу

      Of these, probably the most widely used is Scrum.

      Scrum

      Scrum is a product development methodology used to produce complex products (it is not just used for software). It has a ‘to do’ list (the product backlog) and it completes items from the list, in priority order, in short time-boxes (sprints). Each item in the sprint is done to completion. This could encompass design, building, testing, documenting, deploying or whatever is deemed necessary to complete that item.

      It has Roles (what you do) + Events/Ceremonies (when you do it) + Artefacts (what you produce).

      The roles are:

      Product owner – all about the product: the what and why. The product owner will identify stakeholders and create an overview of the product, what it is and who it is aimed at. They will also create and manage the product backlog so that the product is built in the best way possible.

      Development team member – all about the build; everything that is needed in order to complete the work selected for the sprint. The mix of people inside the development team can change from one sprint to another but does not change during a sprint. The team is multi-disciplined and self-organising.

      Scrum Master – all about the process (a Scrum expert and champion). This person is the enabler for the team; they ensure the Scrum process is understood and enacted and they help to sort out problems that may be hindering progress.

      The events/ceremonies are:

      The Sprint – this is a container for all other events in Scrum including (but not only) production; it lasts up to one month. It lets the Scrum team break the development work down into tasks ensuring the most important items are completed early on.

      Sprint planning – a meeting where the Scrum team decide what is to be done in the sprint, including estimates and planning. Various techniques are used for estimation, such as Planning Poker or Affinity Estimation.

      Planning Poker and Affinity Estimation are two of the most popular estimation techniques. They help developers estimate effort in ‘story points’, which indicate how difficult something is to build compared with other items they are building for the product. An example could be when building a website, a search feature would be more difficult to build than a paragraph of text which includes a picture, and therefore the search feature would have an estimate with a higher number of ‘story points’ than the paragraph of text with the image.

      Both techniques use number values (in the form of either paper or electronic ‘playing’ cards) to estimate a features value. The difference between the two styles is that Planning Poker gives a value to each feature, one at a time, whereas Affinity Estimation groups the features into ‘like difficulty’ first then decides on a value that will be applied to each of the features. (Affinity Estimation is a better technique to use if the team is new to Agile development or unfamiliar with Agile estimation techniques.)

      Daily Scrum (also known as a daily stand-up) – a 15-minute meeting where each member of the development team states what they have done in the previous day, what they will be doing on that day and any blockers (problems) they have that may hinder progress.

      Sprint review – a consideration (and possible demonstration) of the work completed during the sprint where the Scrum team can get feedback from any stakeholders that may be present. They can discuss what went well, what didn’t go well and revise the product backlog.

      Sprint retrospective – a consideration of how the Scrum process itself worked, where attendees consider possible improvements for the next sprint and create a plan for improvements. The Scrum Master may introduce and demonstrate new tools that have been identified for use in the next sprint in order to help the development team.

      The artefacts are:

      Product backlog – the to-do list, this is an ordered or prioritised list of product requirements, features, functions, dependency needs, enhancements (change requests) and bug fixes.

      Sprint backlog – the to-do list for the time-box, the product backlog items selected for the sprint, plus the plan for delivery.

      If multiple teams are working on the same product there is a shared product backlog but each team will have its own sprint backlog.

      Progress monitoring – Scrum prescribes that you should keep track of progress so that you know where the project is at any given time. This is often done via burn down charts (a diagramming method used to chart effort or time remaining; when done well they show at a glance whether you are on target to achieve your projected product development).

      For full details on the Scrum methodology see the Scrum guide: https://www.scrum.org/resources/scrum-guide

      To see the whole Scrum process summarised (by Neon Rain, 2019) see Figure 2.5.

      Agile advantages and disadvantages

      Advantages for the business of using an Agile approach are:

       Faster delivery of business benefit, by phased delivery or demonstrably working product early in the life cycle.

       Higher quality deliverables as each deliverable is completed (this could mean designed, built, tested and documented or whatever the team deems is ‘complete’ for the purpose of that project).

       Reduced risk – early detection of failing projects (due to earlier feedback). With work being done in small increments, if something is wrong you have only lost a small amount of time, relatively speaking.

       Increased flexibility, being able to adapt to changing business needs or requirements.

images

       Greater project visibility. I find this methodology helps people understand the development process better, as they are more involved in it.

       Improved teamwork and cooperation (which may lead to improved morale).

       Continuous improvement of the product.

       Iterative planning, as time is not spent up front gathering every detail about everything (some of which may not be implemented in the new system).

       Improved communication and collaboration.

      The benefits for a developer of using an Agile approach are as follows:

       Clear expectations set and communicated frequently for each sprint.

       Success is clearly defined and a clear definition of complete is provided (known as the definition of ‘Done’).

       Issues are raised early on (and escalated or dealt with by the Scrum Master).

       New skills for the team, broader skill base.

       Team support.

       Collaboration within the team and with the stakeholders.

       Project visibility, as one of the requirements of working in an Agile way is to make all the information relating to the build visible. One example of this are ‘Scrum boards’ (see Figure 2.6).

      Possible disadvantages of using an Agile approach include the following:

       It takes practice to do it well: some companies or teams give up too soon.

       It can seem chaotic to people outside the Agile/Scrum process.


Скачать книгу