26
AGILE METHODOLOGY Amri Hidayat Senior Technology Analyst [email protected]

Scrum Refresher

Embed Size (px)

Citation preview

Page 1: Scrum Refresher

AGILE METHODOLOGY Amri HidayatSenior Technology [email protected]

Page 2: Scrum Refresher
Page 3: Scrum Refresher

SCRUM ROLES

Page 4: Scrum Refresher

Scrum Team

Taken from:http://en.wikipedia.org/wiki/Dragon_boat

Page 5: Scrum Refresher

SCRUM CEREMONIES

Page 6: Scrum Refresher

Sprint PlanningDaily Standup

Showcase (Review)Retrospective

Page 7: Scrum Refresher

SCRUM VALUES

Page 8: Scrum Refresher

FocusCourage

OpennessCommitment

Respect

Page 9: Scrum Refresher

Commitment

Page 10: Scrum Refresher

ENGINEERING BEST PRACTICES

Page 11: Scrum Refresher

Scrum• Topless meetings

• No distractions (Scrum Values: Focus, Commitment, Respect)• No phones / tablet / chatting while other team member is contributing in

a conversation• Generate more discussions

• Ad-hoc & frequent communications• Scrum values: Courage, Openness• Face2Face > Skype > Phone > Chat > Nothing

Page 12: Scrum Refresher

Scrum (cont.)• Smaller handoffs

• Scrum value: Focus

Page 13: Scrum Refresher

Scrum (cont.)• Smaller handoffs (cont.)

Page 14: Scrum Refresher

Scrum (cont.)• Estimates & Commitments

• Trade-off between commitment & estimation• Scrum Values: Courage, Openness, Commitment

Page 15: Scrum Refresher

Scrum (cont.)• Sprint Showcase

• Tell, don’t show (describe what the user story is about)• Describe the impact of the functionality being presented• Show the tests (if running it doesn’t work) [ Hint: Recorded Coded UI ]

Page 16: Scrum Refresher

Swarming• Pair Programming

• Helps on knowledge sharing between team member• Also helps reducing communication between team member <> product

owner.• Boost confident of the team on taking/conquering more complex

problem (mission critical applications)• Collective Ownership of the whole application

• Anyone can: Change any line of code, Fix bugs, Improve architecture• No one: Becomes a bottle neck for changes (i.e. leaves, holiday, etc)

• Scrum Values: Focus, Openness, Respect, Courage, Commitment• Real world example of swarming ?

Page 17: Scrum Refresher

Taken from: http://www.navy.mil/view_image.asp?id=20537

Page 18: Scrum Refresher

http://www.navy.mil/view_image.asp?id=3239

Page 19: Scrum Refresher

Design Patterns• Data Layer: Nhibernate, Entity Framework, Active Record

• Methods: • Repository, • Data Transfer Object, • Object Relational Mapping

• Support for Agile Database Design:• Migrating (brining UP & bringing DOWN)• Reverting• Seeding

• Dependency Injection: StructureMap, Unity, Ninject• Methods:

• Constructor Injection• Method Injection• Property (Setter Injection)

Page 20: Scrum Refresher

Test Driven Development• Unit Testing

• Methods: • Red, Green, Refactor• Arrange, Act, Assert

• Mocking: Moq, NMock, Mox, Rspec• Hand-in-hand with Dependency Injection• Helps tester with complex (unrelevant) dependency

• Example: • Assert method which requires a user to be authenticated first (e.g. Oauth) • Assert method which retrieved data from a backend database (time

consuming and prone for error)

Page 21: Scrum Refresher

Test Driven Development• Demo (MoqExample.zip)

• TDD• Mocking• Dependency Injection

Page 22: Scrum Refresher

Test Driven Development (cont.)• Automated Regression Test (CodedUI, Selenium, Robotium)

• Note: Use the same programming language (or technology stack) as the main application being tested.

• The developer will have the knowledge on both developing the main application and creating the test scripts for test it.• Example:

• Test .NET desktop/ASP.NET application with CodedUI• Test Android app with Robotium

• Framework for Integrated Testing (FIT)• Customer provide examples of how their software should work• Test data (expected values) provided by product owners/customers.

They now best what to expect for the outcome

Page 23: Scrum Refresher

Branching & Merging Strategy• Traditional (One development branch)

• Pros:• Easy to maintain• Fast & easy commits

• Cons:• High risk on a big team working on different features (user stories)• Messy Forward Integration

Page 24: Scrum Refresher

Branching & Merging Strategy (cont.)• Feature-based (One branch per feature/user story)

• Pros:• Scrum Values: Focus, Commitment• Work on 1 (or 2) user story at one time. It encourage team to swarm on a feature• Reduces/Eliminates unrelated (other user stories) bugs introduced in QA release

• Traditional:• Iteration almost ended, showcase about to start (3 user stories in 1 sprint)

• Only 2 user stories completed (DONE DONE), What happens to the last user story which has already being checked in but not yet tested ? Revert back ? Delete files ?

• Feature-based:• Iteration almost ended, showcase about to start (3 user stories in 1 sprint)

• Only 2 user stories completed (DONE DONE), What happens to the last user story which has already being checked in but not yet tested (remember: in different branch) ?• Do Nothing!. Let work on it next sprint.

• Cons:• High maintenance

• Could end up with a lot of branches being created.

Page 25: Scrum Refresher

Feature-based Branching

Page 26: Scrum Refresher

Branching & Merging Strategy (cont.)• Feature-based

• Day 1 - Iteration Starts (Tuesday) – Team decides to take “US 510 – a very complicated feature” with ItemID: 21422• Create a branch (called “21422” or “US510”)

• Day 2 to 3 – Team work on US 510 (perform add, change, delete, commit)• Add/Change/Delete/Commit on branch “US510”

• Day 4 – Team completed with the development of US 510 (Development DoD)• Merge back to QA branch. At this point, developer starts manual testing (or trigger

automated ui testing). Product owner starts user acceptance test.• Day 5 – Product owner accepts US 510 (User Story DoD)

• Merge back to Main branch. Close “US510” branch.• Day 6 – Team decides to take “US 511 – also a very complicated feature”

• Create a branch (called “US511”)• Day 10 – SHOWCASE, bug found!

• Create a branch (called “Bug – button is not big enough”)