How I was taught to work. Second day

    Day One

    On the second day, we had a seminar on SCRUM and the Agile project. It talked about the practical application of the Agile project in software development.

    Pig and rooster

    Apparently, the lecturer's favorite story, because the slide met her in the presentation 7 times :)

    And so, the pig and the rooster met. The rooster suggested opening his own restaurant and calling it “Pork and Eggs”. To which the pig refused: "You will only participate, and I will give myself entirely."

    In SCRUM terms, pigs are developers, cock is a project manager. The essence of the story: a pig is more important than a rooster. The essence of SCRUM: developers are more important than a manager, you can not neglect the opinion of the first.

    How it all began

    The leaders of large software companies decided to develop a common work style, which they later called Agile.
    The main document, one might say, a set of commandments, is the manifesto “Manifesto for Agile Software Development”.
    It reads:
    People and relationships above processes and tools
    A working product is better than detailed documentation
    Customer relationships are more important than signed contracts
    Readiness for change is more important than following plans

    In English
    Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan

    People are at the forefront because it is he who produces the product. If the process causes irritation - it should be changed. If the tool is inconvenient - it must be abandoned.
    The customer pays for the working draft, not for its description.
    It is also important to be prepared for changes in the project. The team should be flexible in terms of opportunities.

    Agile Development Principles

    The main principles are:
    • Deliveries of new versions of the product should be regular, and done as early as possible.
    • If the customer wants to change something in the product, you need to do this at any stage of development (if this is of course possible)
    • It is important to release a working product as often as possible. Desired period from 2 weeks to 2 months
    • Developers and businessmen (those who are responsible for working with the customer) must work together.
    • Good working conditions. The developer should be comfortable working
    • More personal meetings

    I will explain a little. Agile is customer oriented. But this does not mean that any of his whims should be carried out implicitly. It is necessary to ensure a dialogue between business people, the customer and the programmer.
    The product should be released often enough - it's like with a blog - the more often you write useful posts, the more people read you and do not remove them from friends. The customer does not need a product that is updated once every half a year and increases functionality by a couple of features. There is still need to remember about competition.
    Well, a satisfied and motivated programmer will write code better than if he were sitting in a damp basement and malnourished.

    There are two more important points. They are technical.
    1. Each new version of the product should do more than the previous one.
    2. The code must initially be written well, so that you do not rewrite it later, and maintain its quality. If you need to refactor.

    Tayot's success or Lean thinking

    An example of Tayota is illustrative: she bought a loss-making production of one American company (sorry, I forgot the name) along with workers and equipment, and brought this production to a plus. The key to success was Lean Production.

    His principles:
    • Get rid of everything superfluous
    • Keep track of quality
    • Respect people
    • Enhance experience
    • Set aside the decision for the last moment
    • Deliver the product fast
    • Streamline the process

    Why put off the decision and how to deliver the product on time? Everything is simple: the solution must be deliberate and coordinated, this will help to avoid problems in production and speed up the time of product release.

    Perhaps the key is to get rid of everything superfluous.
    Any extra process or procedure adds value to the product. Each area has its own list of superfluous. For software development, these are:
    • Unfinished work. Remember that nobody needs an unfinished feature. We must try to bring everything to the end
    • Extra processes. These are those that are done "for show".
    • Additional features. If the customer only asks for the ability to open the text, you do not have to make it possible to edit it.
    • Switch between tasks. The programmer should not rush between two projects.
    • Product transfer. Because it takes extra resources.
    • Expectation. If the project needs something, it should not wait and sit idle.
    • Defects. This is bad everywhere :)

    A little bit about SCRUM

    It is part of the Agile & Lean software project development. As I wrote, it is part of tactical planning.

    SCRUM cycle consists of:
    1. Actually software development. The process in 1-4 weeks with daily rallies.
    2. The end of the sprint. Again, a rally in which developers show everyone what they did.
    3. Retrospective rally - analysis of errors and problems, successes and improvements.

    PS: this week all training meetings have ended. Monday to fight. In general, we are ready. The fight will show :)

    Also popular now: