Software Construction & Design 1
The University of Sydney Page 1
Agile Software
Development Practices
SOF2412 / COMP9412
Team Dynamics; Tools and
Technologies for Teamwork
School Computer Science
Dr. Basem Suleiman
The University of Sydney Page 2
Agenda
– Teams in Software Development Models
– Teams in Agile Development
– Team Dynamics
– Effective Teams and Teamwork
– Issue Tracking
– Tools for Issue Tracking and Teamwork
The University of Sydney Page 3
Software Development Models – Teams
Waterfall model
plan-driven development
Agile model
Incremental & iterative development
Agile Vs Waterfall: Showdown For Software Development Domination
Do software development models influence team structure and interactions in software
development?
Agile Vs Waterfall: Showdown For Software Development Domination
The University of Sydney Page 4
Waterfall Model – Teams
Development activities Teams
Divide the work into stages A separate team of specialists for each
stage
At each stage, the work is passed from one
team to another
Some coordination is required for the
handoff from team to team – using
“documents”
At the end of all of the stages, you have a
software product ready to ship
As each team finishes, they are assigned to
a new product
The University of Sydney Page 5
Teams under different SDLC models
– In a traditional structure how do teams work?
– As work is planned and allocated, it can be divided into pieces that should
be more-or-less independent
• Specialist teams
• Project management and resource reallocation
• Clear authority lines, so disagreements can be resolved
– Problems?
• Single points of failure
• Inflexibility
• Lack of feedback
– And in Agile teams?
The University of Sydney Page 6
Agile Manifesto – Revisit
– Individuals and interactions over processes and tools
– Working software over comprehensive documentation
– Customer collaboration over contract negotiation
– Responding to change over following a plan
The University of Sydney Page 7
Agile Manifesto –
– Individuals and interactions over processes and tools
– Why Agile values individuals and interactions over processes
and tools? Discuss
The University of Sydney Page 8
Agile Manifesto – Why Individuals and Interactions?
– Why Agile values individuals and interactions over processes
and tools?
– People tend to follow processes blindly, and make mistakes
– “A great tool can sometimes help people to do the wrong thing faster”
– Tools or best practices are not enough – people who need to use it
should buy into it to realize its benefits
– People needs to see the value of following certain practices
– It is important to recognize that you are working with a group of people
who have different motivations, ideas and preferences
The University of Sydney Page 9
Agile Principles 1 – People
– Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done
– The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation
– At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly
The University of Sydney Page 10
Agile Principles 1 – People
– Group Discussion:
– Briefly discuss how the following agile principles perceive teams and
teamwork in agile development?
– Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done
– The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation
– At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly
The University of Sydney Page 11
Agile Principles 2 – People
– Business people and developers must work together daily throughout the
project
– The best architectures, requirements, and designs emerge from self-
organizing teams
– Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software
The University of Sydney Page 12
Agile Principles 2 – People
– Group discussion
– briefly discuss how the following agile principles perceive teams and
teamwork in agile development?
– Business people and developers must work together daily throughout the project
– The best architectures, requirements, and designs emerge from self-organizing teams
– Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software
The University of Sydney Page 13
Teams – Individuals and Collaboration
– Common problem experienced in software development teams “throw it over
the wall”
– Team members are busy thinking about their own project work and problems
• Different views/perspectives
– Teams are divided, and collaboration is killed
The University of Sydney Page 14
Agile Practices – The Agile Elephant
– The agile elephant is made up of many practices
*Agile practices and Scrum method (most of these presented in this figure) will be discussed in more details in future lectures. The focus
of the discussion here is on teams and the adoption of Agile practice
The University of Sydney Page 15
Agile Teams – Individual Practices
– When adopting agile practices, team members may adopt practices
individually:
– Each person uses only the practices that impact their work; developers
focus on automated tests and build, team leads on task boards, project
velocity and burn-down charts, business users on user stories
– Adopting practices individually will improve things, but this may lead to
a self-contradictory effect
The University of Sydney Page 16
Teams – Individual Practices
– When adopting agile practices, team members may follow the same
thinking:
– Each person uses only the practices that impact their work; developers focus on
automated tests and build, team leads on task boards, project velocity and
burn-down charts, business users on user stories
– Adopting practices individually will improve things, but this may lead to a self-
contradictory effect
• Each person sees the part of agile that affects their specific work –
(attitudes: “see! I was right all along”)
• Agile is made up of day-to-day practices, but it’s much bigger than those
practices
The University of Sydney Page 17
Understanding the Agile Elephant
– If you only sees the practices that
directly affect your project work,
then you will see the one small
piece of agile
The University of Sydney Page 18
Team Dynamics
The University of Sydney Page 19
Team Dynamics
– “Team dynamics are the unconscious, psychological forces that influence the
direction of a team’s behaviour and performance”
– Factors that lead to team dynamics:
– Personalities and work styles
– Knowledge and skills
– Organization culture and structure
– Cultural differences, background
S. P. Myers, 2013 https://www.teamtechnology.co.uk/team/dynamics/definition/
The University of Sydney Page 20
Team Dynamics – Good or Bad?
In Agile development, is team dynamics a good or bad thing?
Discuss
The University of Sydney Page 21
Team Dynamics – Pros and Cons
– Can be good
– E.g., Improve overall team performance (productive conflict, different
perspectives)
– Can be bad
– Can lead to unproductive conflict can demotivate and prevent team from
achieving its goals
S. P. Myers, 2013 https://www.teamtechnology.co.uk/team/dynamics/definition/
The University of Sydney Page 23
Team Dynamics – Tuckman Team Development Model
Image: https://www.atlassian.com/agile/teams
Tuckman’s stages of group development – https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development
https://www.atlassian.com/agile/teams
https://en.wikipedia.org/wiki/Tuckman’s_stages_of_group_development
The University of Sydney Page 24
Team Dynamics – Identification and Resolution
– Result from the interaction of many factors
– E.g., Personalities, work style, roles, culture, organizational structure
– Investigate the root causes of conflict or poor team performance
– Structured interviews or informal chats in a private and confidential
– Identify potential improvements
– E.g., change in office layout, team development workshops (practices,
personality dynamics, cultural change programs)
Source: https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams
The University of Sydney Page 27
Agile Teams – Skills
– It’s claimed that agile teams work with the best developers. However,
this is not necessary the case;
– Every project needs at least one experienced and competent lead person
(Critical Success Factor)
– Each experienced and competent person on the team permits the presence
of 4-5 “average” or learning people
– With that skill mix, agile techniques have been shown to work many times
The University of Sydney Page 29
Teams Culture
– Consider the following scenarios:
– Developer: “It works in our environments, it’s operations responsibility to make it
work in production”
– Tester: ”Listen, it worked in User Acceptance Testing, it must be a configuration
issue, or a missing firewall hole and nothing I could have spotted during
testing…”
– Customer: “Hello! Nothing works here…”
– Are these statements signs of team dynamics?
– Should this kind of culture exist in agile teams?
Source: https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams
The University of Sydney Page 30
Effective Teamwork
– Teamwork comprises of the right tools, the right people ad the right
practices
– Effective teamwork is everyone’s shared responsibility
– Large software organizations, teams involve many roles across different
departments (engineering, design, sales/marking, legal)
– Use team building activities to build effective teams
The University of Sydney Page 31
Team Building
– “Various types of activities used to enhance social relations and define
roles within teams, often involving collaborative tasks”
– There is an evidence how team building affect positively team effectiveness
https://en.wikipedia.org/wiki/Team_building
The University of Sydney Page 32
Team Building Activities
– Goal setting: emphasizes the importance of clear objectives and individual
and team goals
– E.g., objectives and key results (Atlassian)
– Interpersonal relations: focus on teamwork skills such as giving and
receiving support, communication and sharing information
– Standup meetings
– Roles and responsibilities (Atlassian)
https://en.wikipedia.org/wiki/Team_building
The University of Sydney Page 33
Team Building – Roles and Responsibilities
– Define the roles and responsibilities that will make your team successful
– Clarify expectations as a team
– Helps to move a team from “storming” to “norming”, or help “performing”
teams to get back on track
The University of Sydney Page 34
Roles and Responsibilities – How?
– Create a table of roles and responsibilities
– Responsibilities from own perspective
– Responsibilities from team member’s perspective
Name Role Responsibility (own) Responsibility (other’s)
The University of Sydney Page 35
Roles and Responsibilities – How?
– Identify roles
– E.g., team lead, developers, designers
– Coarse-grained
– Add to the role’s column
– Clarify own responsibility
– Think of top 3-5 tasks in priority order
– Write on sticky notes
– Think of teammate’s responsibilities
– Write 1-2 responsibilities for each role from your perspective
– Write responsibilities you may think that don’t have a clear owner
The University of Sydney Page 36
Roles and Responsibilities – How?
– Refine and consolidate (optional)
– Talk teammates with similar roles and refine responsibilities
– Discuss all roles
– Role owner(s) describe their role and place their sticky notes in own
responsibility column
– Other teammate’s role description in the other column
– Owner to accept/decline the responsibilities by other teammates (suggest role
to own it). Define primary owner for overlapping roles
– Add “unassigned responsibilities” to
– Summarize roles and responsibilities
– All to agree
– Owner to document it and how to fill skill gaps
The University of Sydney Page 38
High-Performing Agile Teams
– Cross-functional; engineers, designers, architects, sales
– Mutual respect and mutual responsibility
– Not blaming culture, and/or “throw it over the wall”
– Sound engineering practices (tools and automation)
– Value and belief of agile practices and principles
– Apply agile practices effectively as individuals and as a team
– Receive continuous training (technical and non-technical) and team
monitoring/coaching
The University of Sydney Page 39
How much can you find out?
– Search for:
– Team effectiveness
– Self-managed teams
– Group conflict
– Team efficacy…
– Learn about the theory of teams!
The University of Sydney Page 40
Tools and Technologies
for Teamwork
The University of Sydney Page 41
Issue Tracking Systems
– A software that manages and maintains lists of issues
– Used to create, update and resolve reported issues internally or externally
– Bug (defect) Tracking System: keeps track of reported software bugs in software
development projects
– Centralized overview of development requests and their states
– May assigned a priority, status, severity and/or complexity
– Prioritized list of pending items (Backlog)
– Typically integrated with other tools or software management systems
https://en.wikipedia.org/wiki/Issue_tracking_system
https://en.wikipedia.org/wiki/Bug_tracking_system
The University of Sydney Page 42
Bug/Issue Tracking Part of other Systems
– Part of integrated project/software development management systems
– It helps integrating issue/bug tracking with other activities
– Distributed bug tracking tools are designed to be used with distributed revision
control software
The University of Sydney Page 43
Bugzilla – Bug Tracking Tool
– Open-source web-based bug tracker and testing tool by Mozilla project
– Bug (or feature) requests can be submitted by anyone and will be assigned to a
particular developer
– Various status updates for each bug
– E.g., Bugzilla itself allows the public to file bugs – it assigns all bugs to a
gatekeeper whose job is to assign responsibility and priority level
https://en.wikipedia.org/wiki/Bugzilla
https://en.wikipedia.org/wiki/Bugzilla
The University of Sydney Page 44
Bugzilla – Bug Lifecycle
By Nyco [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)], from Wikimedia Commons
The University of Sydney Page 45
Issue Tracking – GitHub
The University of Sydney Page 46
GitHub Issue Tracking – Edit Labels
The University of Sydney Page 47
GitHub Issue Tracking – Project Management
The University of Sydney Page 48
Version Control Systems – GitHub Revisit
– GitHub allows groups of people to collaborate across many projects at
the same time in organizations account
– Organization’s members can be:
– Owner: complete administrative access to the organization
– Member: default role for everyone else
– Owners can manage members’ access to the organization’s repos. and
projects with fine-grained permission controls
– Can add collaborators from outside of the organization (consultant) to have access
to one or more organization repos. without bring a member of the organization
The University of Sydney Page 49
GitHub – Organization Access Control (Revisit)
https://help.github.com/enterprise/2.13/user/articles/permission-levels-for-an-organization/
– Examples of access permissions for organization’s owners and members
https://help.github.com/enterprise/2.13/user/articles/permission-levels-for-an-organization/
The University of Sydney Page 50
GitHub – Creating Organization (Revisit)
– .
Organizational accounts have a namespace where all their projects exist
The University of Sydney Page 51
GitHub – Add Members to Organization (Revisit)
– Note: when you create a new repo you can
create them under your personal account or
under any of the organizations that you’re
owner in
The University of Sydney Page 52
GitHub Organization – Manage Repos. (Revisit)
– .
The University of Sydney Page 53
GitHub Organization – Manage People (Revisit)
– .
The University of Sydney Page 54
GitHub Organization – Manage Teams (Revisit)
– .
You may have 3 repos; Designs, Front-end and Back-
end. You want FrontEndDeve to work on the Front-end
and Designs repos, Designers team to work on Designs
repo and BackEndDeve to work on Back-end repo
The University of Sydney Page 55
GitHub Organization – Manage Projects (Revisit)
– .
The University of Sydney Page 56
GitHub Organization – Audit Log (Revisit)
– Audit log records all events that
have happened at the
organization level, who did them
and where in the world they
were done
The University of Sydney Page 57
Jenkins
The University of Sydney Page 58
Jenkins – CI / CD
– “Jenkins is a self-contained, open source automation server which can be
used to automate all sorts of tasks related to building, testing, and delivering
or deploying software.”
– Jenkins pipeline is a suite of plugins which supports implementing and
integrating continuous delivery pipelines into Jenkins
– A continuous delivery pipeline is an automated expression of your process for
getting software from version control right through to end users/customers
– Typically written in Jenkinsfile which is checked in a project’s source code
repository
https://jenkins.io/
https://jenkins.io/
The University of Sydney Page 59
Jenkins – Integration with GitHub (1)
The University of Sydney Page 60
Jenkins – Integration with GitHub (2)
The University of Sydney Page 61
Jenkins – Integration with GitHub (3)
• Webhooks to set up GitHub applications to
subscribe to certain events on GitHub
• Events is triggered, HTTP POST payload will
be sent to the webhook’s configured URL
• Webhooks can be used to update an
external issue tracker, trigger CI builds,
update a backup mirror
https://developer.github.com/webhooks/
The University of Sydney Page 62
Teamwork Collaboration Tools
– What tools would you use to help support your team?
– Examples:
– Dropbox
– Google Docs
– Skype
– Trello
– Slack
– Basecamp
– Asana
– … other
The University of Sydney Page 63
Other Tools – Asana – Project Management
The University of Sydney Page 64
References
– Andrew Stellman, Margaret C. L. Greene 2014. Learning Agile: Understanding
Scrum, XP, Lean and Kanban (1st Edition). O’Reilly, CA, USA.
– S. P. Myers, 2013. [https://www.teamtechnology.co.uk/team/dynamics/definition/]
– Cross Dysfunctional Teams.
[https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams]
– Atlassian, Agile Teams. [https://www.atlassian.com/agile/teams]
– Tuckman’s stages of group development.
https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development
– Atlassian, Teamwork. [https://www.atlassian.com/teamwork]
– Team building. [https://en.wikipedia.org/wiki/Team_building]
– Issue tracking system. [https://en.wikipedia.org/wiki/Issue_tracking_system]
– Bug tracking system. [https://en.wikipedia.org/wiki/Bug_tracking_system]
https://www.atlassian.com/agile/teams
https://en.wikipedia.org/wiki/Tuckman’s_stages_of_group_development
https://www.atlassian.com/teamwork
https://en.wikipedia.org/wiki/Issue_tracking_system
https://en.wikipedia.org/wiki/Bug_tracking_system
The University of Sydney Page 65
References
– Further Readings:
– Hackman J. R., “Leading Teams: Setting the stage for great performances”,
Harvard Business Press 2002
– Hackman J. R., Katz N. “Group behavior and performance”. In Fiske ST, Gilbert
DT, Lindzey G Handbook of social psychology (5th ed.) New York: Wiley; 2010.
pp. 1208-1251. DOI: 10.1002/9780470561119.socpsy002032
The University of Sydney Page 66
Tutorial: Continuous Integration with
Jenkins / Docker
Team Dynamics – Team Building
Activities
Lecture: Agile Methods, Scrum