It is NOT a “how to” to writing code for a language.
It is NOT the only Development Methodology/Philosphy teams use.
It is NOT just Waterfall, XP, Coding Standards, or SCRUM alone, it is all of these (and more) methods, together.
What Agile Development is
It is considered both a Philosophy and a Method for building and releasing products.
It is intended for teams anywhere from 2 to 20 people (usually a max of 10 Developers).
It is a collection of many development methods combined into one (this presentation bases mainly on 2 methods – SCRUM and XP(Extreme Programming))
It is a Philosophy that aims to not only make you more organized and time aware, but more importantly aims to turn your “group” into a “team”
It is a philosophy that cannot be implemented unless you have total buy-in and commitment from both your team and management.
It is about enhancing your team’s collaboration – not only amongst itself, but outside entities as well.
It is about making your team a stronger and more dependable source.
Typical Agile Development Flow
Agile Development - Basics 1. Planning: Project Manager works with Team Lead and Client to determine requirements & scope. This helps us know what you’re building before you start! 2. Scrums: Daily 15 minute team meetings to discuss yesterday & today. Group communication keeps team on track so we know about road blocks right away and can help each other thru them! 3. Sprints: Each project is broken into chunks of manageable sets of tasks. Rather than one never-ending project – sprints break the project up and get it done quicker!
Typical XP Team Roles
Maintains and promotes the product vision.
Documents the vision and shares it with Stakeholders.
Obtains feedback on the product as it is built/tested.
Sets priorities for release planning.
Leads demos for clients.
Sometimes considered a VP or other high management position as they have the authority to say “no” to needs, can assign specific members to a product development, and can handle organizational politics.
Domain Experts (Subject Matter Experts )
The best resource for answers to questions about specific subjects
Figure out details to complex design decisions
Are experts in their field
Responsible for the perception of the UI
Help define the product UI
Understands customer needs and how they will interact with the product
Are who review prototypes with users and determine if it suits what they want.
Is usually a graphic designer, product manager or even a programmer.
Keep the products overall design in mind as it is developed
Determines if the direction the team is going with the design is going off course
Programmers Hopefully, an introduction is not necessary
Help the team work with the rest of the organization.
Usually double as customers.
Track the current progress and determine when a project will be finished.
Reports to the Developers’ Manager.
Sets up meetings, determines schedules
Also known as “Scrum Master”
Scrum in Under 10 Minutes http://www.youtube.com/watch?v=TWSXETDWGQ4 1. Daily 2. Subject-Matter Experts 3. Project Based
Project Life Cycle Client The client helps create the list of options. Big list of options then gets refined and becomes Product Backlog. The overall backlog is then broken down into high/med/low priority chunks. The high priority are put into the first release. These are then broken into Sprints/Tickets/Tasks. Tickets/Tasks are given time estimates so the Project Manager can establish a timeline. As the team progresses and thinks of new features – those are added back to the backlog for future releases. Then it all starts over again! After Release 1 – back to the backlog for Release 2!
Helpful Tips for Budgeting Time
Release Iteration (Release Backlog)
Communication Client Project Manager Project Lead Developers Project
Reinfoces good programming habits.
Positive peer pressure to perform crucial tasks.
Spreads coding knowledge and tips throughout the team.
Creates more focus on code.
You will become more resilient to interruptions.
The added brainpower will help you get past roadblocks more easily.
Encourages collaboration and team effort.
How to Pair
When you start working on a task, ask another programmer to work with you.
If another programmer asks for help, make yourself available.
Pairs are fluid and formed naturally, not assigned.
Over time, pair with everyone on the team.
Switch partners when you need a fresh perspective
Switch partners several times per day
Make sure you are physically comfortable.
Think out loud.
Talk about your assumptions, short-term goals, general direction and any
relevant history of the feature or project.
If you are confused about something, ask questions.
Driving and Navigating
Expect to feel clumsy at first as your drive.
You may feel that your navigator sees ideas and problems much more
quickly than you do. He does.
When navigating, expect to feel like you want to step in and take the
keyboard away from your partner.
Drivers communicate an idea with words and code.
Don't correct typos unless it is clear your partner has overlooked it.
Navigators help the driver be more productive by thinking about what's
going to happen next.
While navigating, take notes when you think of an issue.
Look up the issue on your own while the driver continues.
Switch roles frequently – at least every half hour (and take breaks!)
Pair on everything you need to maintain.
Pairs form fluidly rather than by assigning partners.
Switch partners when you need a fresh perspective.
Avoid pairing with the same person for more than a day at a time.
Sit comfortably, side by side.
Produce code through conversation. Collaborate, don't critique.
Switch driver and navigator roles frequently.
Key Pieces to Agile Development
Trust is essential for the team to thrive.
Sitting together leads to fast, accurate communication.
Customer involvement helps the team understand what to build.
Ubiquitous language (terminology that everyone can relate to) helps team members understand one another.
Coding Standards provide a template for seamlessly joining the team's
Iterations keep the team's efforts aligned with the stakeholder goals.
Reporting helps reassure the organization that the team is working well.