Understanding how #modern-software is developed and how #agile methodologies are applied in Microsoft to #deliver #great-products MICROSOFT + AGILE Andrea Tino (Software Development Engineer) AGILE TEAM SCRUM What are we going to learn about? We are going to talk about how Modern Software Development is carried out in Software Industry. Special focus on Microsoft’s own way of developing great products. Great software is built by many When you are in a team of people, you can do amazing things! Many brains with many ideas, and you also have people you can rely on. A single programmer can’t do it When building great software, you need more than just a programmer. Alone, you struggle with a lot of work to do. Also, you make many mistakes, and alone, you cannot learn much. How to coordinate many developers? Development Methodology by means of a... A disciplined process upon software development with the aim of making software development more predictable and more efficient Martin Fowler - The New Methodology (2005) To plan or not to plan? There are many development methodologies out there. One of the most important distinguishing factors is how they treat time and planning of tasks. Intensive planning High cost, lack of flexibility, cannot keep up with changes of modern business Light planning Easy to handle, flexible, allows fast adjustments to keep up with modern business Murphy’s law Anything that can go wrong, will go wrong! Capt. Edward A. Murphy (1949) On planning Everybody has a plan... Until they get punched in the face Mike Tyson What is Agile Agile is a development methodology adopted today in the software industry. Agile promotes teamwork, flexible procedures, and sle-organizing teams. What is SCRUM SCRUM is a subset of Agile, a framework for developing software. SCRUM takes advantage of different techniques to achieve goals in Agile. SCRUM explained Every methodology can be broken down into 3 important parts which define critical aspects of the software development process software devcycle How software development is organized time-wise work breakdown How work-items are defined and how they are distributed across team members roles & responsibilities How team members relate to each other with respect to work-items Development cycle SCRUM promotes an iterative model where the planning is performed on a very short term. 1 = 2 weeks SPRINT The basic time working unit is the sprint. SCRUM teams always reason in sprints and their planning is limited to sprints. It depends on the software but, typically, 1 year is split into 23 sprints and teams will work inside them. Planning is done per sprint! Events in one sprint During a sprint, teams have important events that help them work better and coordinate. Sprint planning Morning meeting Morning meeting Morning meeting Morning meeting Morning meeting Morning meeting Morning meeting Morning meeting Sprint review SPRINTS WEEKS DAYS Occurs at the beginning of each sprint Sprint planning The team starts the sprint with a meeting which can last from 1h to 2h at most. The purpose is planning the work to do in the sprint. If some task from the previous sprint has not been completed, it might be necessary to continue in this sprint and move some other task to the next sprint. Occurs at the start of the day, each day Morning meeting Each day of the sprint, the team meet and discuss about the day. This happens before starting working. Each member, during his turn to talk, tells about what he did the day before and what he is going to do that day. This meeting allows all members to stay in sync. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ergo ita: non posse honeste vivi, nisi honeste vivatur? Utinam quidem dicerent alium alio beatiorem! Iam ruinas videres. Esse enim, nisi eris, non potes. Occurs at the end of each sprint Sprint review At the end of the sprint, it is time to show the managers what the team has achieved during the sprint. The teams gives a presentation and a demo about the latest work it has done. The demo is necessary because managers are not developers. Work breakdown SCRUM recognizes 2 types of work-item for a team. BUG A bug is an anomaly in the software. The program is not behaving as expected and this needs to be fixed! DELIVERABLE A deliverable is something new that must be added to the software like a new feature or functionality. The backlog All the work a team needs to do is in the backlog. Work items are thrown inside it and removed from it to be assigned to team members. Deliverables and bugs are the elements that can be found in the backlog. BUG DLVBE Bugs, bugs, bugs! Fixing bugs is one of the certain things that team members must focus on. No software is bug free, and when reported, bugs need to be fixed. Part of the methodology is ZBB (Zero Bug Bounce) which forces teams not to neglet bugs. 0 5 10 15 20 ZBB threshold ZBB Roles & responsibilities SCRUM recognizes, in teams, 2 groups of members. CHICKENS In this group you find managers, stakeholders, and everybody who is in charge of organizational and management aspects of projects. PIGS In this group you find developers, programmers, designers, reviewers, and everybody who is in charge of actual development and code writing. Meet all members of the family At Microsoft we have customized roles. So here are the characters you can find in our teams. Developer UX Designer Architect Writer Manager Program Manager Lead