agility via software engineering practices - agile tour montreal 2015
TRANSCRIPT
![Page 1: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/1.jpg)
Agility via Software Engineering Practices
Agile Tour Montréal - November 2015
Steve Mercier
![Page 2: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/2.jpg)
Who am I?
I participated in multiple software development projects:
• from very small (<10 person) to large (~400 persons) • from a long time ago (>20 years) up to now • from different angles/roles: Developer, Architect, PM, DevOps/
BuildMaster, Software Release Manager • I have seen software methods/processes come and go: Waterfall,
RUP, OpenUP, XP, Scrum, Scaled Agile, etc.
But the essential remains: I believe that to produce good software, it takes good people +
resources AND discipline/professionalism/focus!
![Page 3: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/3.jpg)
But enough about me
![Page 4: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/4.jpg)
What about you?
![Page 5: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/5.jpg)
Are You Agile?Agile is not easy… and is not only about ceremonies + tools!
![Page 6: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/6.jpg)
A few questions• Raise your hand, if you participate in:
• Daily stand-up meetings
• Sprint planning meetings
• Sprint reviews and demos
• Sprint retrospectives and lessons learned
• Regular backlog grooming sessions
![Page 7: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/7.jpg)
Now THE question• By raising your hand
• Who believes that he/she works in an Agile environment?
![Page 8: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/8.jpg)
What would be a good measure of Agility
anyway?
We will come back to this at the end
![Page 9: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/9.jpg)
What is your (real) release frequency?
• At what frequency are you delivering software updates that add value to your clients?
• Once a year?
• Once a quarter?
• Once a month?
• Once a sprint?
• Once a day?
Without breaking any previously delivered business value that you want to retain…?
![Page 10: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/10.jpg)
Scrum Overview
![Page 11: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/11.jpg)
Agile Simplified Overview
How can we ensure this loop works smoothly and fast?
Client
PO
Team
Delivery
![Page 12: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/12.jpg)
What are the typical Agile issues?
Elements preventing Agility that could be fixed by a specific software development practice?
![Page 13: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/13.jpg)
Agile Issue #1: Communication Issues
![Page 14: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/14.jpg)
Dozens of ways to communicateWith more and more possibilities, growing!
![Page 15: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/15.jpg)
Communication Issue Example“But, I published my design document on SharePoint!”
![Page 16: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/16.jpg)
Communication Issue Example“But, I sent you an email!”
![Page 17: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/17.jpg)
Communication Issue PropositionOnly one truly Agile communication technique: Dialog!
![Page 18: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/18.jpg)
What technique can improve dialog?
You could consider BDD to close the communication gap between business people and technical people
![Page 19: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/19.jpg)
Agile Issue #2: Manual Interventions
![Page 20: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/20.jpg)
Everything not automated reduces your Agility
![Page 21: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/21.jpg)
Manual triggers can take a long timeManual = Time++;
![Page 22: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/22.jpg)
As your manager might sayTime == Money();
![Page 23: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/23.jpg)
What techniques can reduce manual steps?
You could consider using DevOps: CI server, CD server, Infrastructure as Code to automate
as mush as possible your release process
DevOps
Client
PO
Team
Delivery
![Page 24: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/24.jpg)
What techniques can reduce manual steps?
Continuous Integration
![Page 25: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/25.jpg)
What techniques can reduce manual steps?
Continuous Delivery/Deployment
![Page 26: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/26.jpg)
What techniques can reduce manual steps?
Infrastructure As Code
![Page 27: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/27.jpg)
Agile Issue #3: Customers not really validating increments
![Page 28: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/28.jpg)
Not fully involved customer…
![Page 29: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/29.jpg)
Customer not validating increments Proposition
You should again consider using BDD to involve your customers as much as possible; this would ensure a
relationship between the needs and the demo
• Various things could contribute to this issue (cumulative!):
• Specifications created without customer’s involvement
• Specifications not properly handed over to teams for execution
• Specifications not validated automatically or systematically every sprint
• Customers not involved in sprint demos or not giving feedback during demos
• Not delivering produced software regularly to customers for evaluation
![Page 30: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/30.jpg)
Remember, you want this
![Page 31: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/31.jpg)
Not that!
![Page 32: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/32.jpg)
Agile Issue #4: PO wants it all (aka priority
management issue)
![Page 33: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/33.jpg)
Be careful about scope creep and
absence of prioritization!
![Page 34: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/34.jpg)
PO wanting it allI do not really have a specific technique
for this one…
I suggest selecting the right PO in the first place AND
then to use proper backlog grooming techniques
(Buy him the book 50 quick ideas to improve your user stories by Gojko Adzic)
![Page 35: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/35.jpg)
Agile Issue #5: Demos done from
unreleased software
(aka Works at my desk)
![Page 36: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/36.jpg)
Your software must have it!
![Page 37: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/37.jpg)
Demos from unreleased software / Difficulty to release in production
Involve Ops people in sprints Releasing in prod should be doable by anyone, anytime, using a single click
(rollback is obviously a feature you will want!)
![Page 38: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/38.jpg)
Agile practices to overcome the presented
Agile issues
Intro to a few + associated tools
![Page 39: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/39.jpg)
BDD—Behaviour Driven Development
![Page 40: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/40.jpg)
BDD—Behaviour Driven DevelopmentBridges the gap between customers/business people
and teams1-An
technology agnostic
feature file developed with your
users
This is somehow an executable
specification
![Page 41: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/41.jpg)
2-A technology specific code
generator (SpecFlow/C#, JBehave/Java, Behave/Python,
etc.)
BDD—Behaviour Driven Development
![Page 42: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/42.jpg)
3-Complete cycle with inner TDD
BDD—Behaviour Driven Development
![Page 43: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/43.jpg)
CI—Continuous Integration
![Page 44: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/44.jpg)
Continuous IntegrationContinuous Builds, Continuous Testing, Continuous
Inspections
![Page 45: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/45.jpg)
Continuous Integration
Not only build on commit by the continuous integration server, but also:
• Systematic unit tests (e.g. NUnit, JUnit) • Aim at 70-90% code coverage • Measure your coverage (e.g. dotCover, NCover)
• Code inspections (static analysis, linter, code complexity)
![Page 46: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/46.jpg)
Continuous Integration
cont’d:
• Publish built artifacts on artifacts server (e.g. Artifactory) • Deploy into staging environments
• Run integration/functional testing • Run performance testing
• Publish reports of selected metrics for the above elements (e.g. SonarQube)
![Page 47: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/47.jpg)
CD—Continuous Delivery/Deployment
![Page 48: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/48.jpg)
Continuous Delivery/DeploymentAlways have a shippable version available for your customers
Ex: GO CD (from Thoughtworks - now Open Source) You can integrate your CI servers (Jenkins) with a CD server
![Page 49: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/49.jpg)
Continuous Delivery/DeploymentA good practice to deploy gradually using cascaded environments:
• (Development)
• Test • Less resources, used mostly to validate business logic
• Staging/Pre-Production • More representative of the production environment. Can be
used for load/performance testing. Typically uses a data set that is a copy of the Production data set.
• Production
![Page 50: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/50.jpg)
IaC—Infrastructure as Code
![Page 51: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/51.jpg)
Infrastructure as CodeYour code is under CM, but your
infrastructure is typically not! It also needs to be versioned, tracked and automated!
![Page 52: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/52.jpg)
There are so many tools available. But essentially, keep ALL under source control, including what it takes to reproduce your production environment from ZERO
Infrastructure as Code
• How to restart a hardware environment/virtual machines
• How to install the platform on the machines
• How to install the applications on the platforms
• How to configure the whole stack
• The databases schemas and content
• Everything!
![Page 53: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/53.jpg)
If you are not convinced, think about your disaster recovery plan (you have one, right?)
Infrastructure as Code
What if your server room is destroyed by water/fire? (or the one from your cheap cloud provider…)
With IaC at least, the software part is covered in case of disaster
![Page 54: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/54.jpg)
DevOps
![Page 55: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/55.jpg)
DevOps• A Good app without an infrastructure to run it is useless…
• A superb, scalable infrastructure without an app adding business value to a customer is also useless…
• You need both!
• DevOps should not be a separate team! It serves to bridge the gap between development and operations teams.
• And if you are not convinced that DevOps cannot typically be a single person’s responsibility…
![Page 56: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/56.jpg)
DevOps related tools
![Page 57: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/57.jpg)
Agile Values vs. Agile Practices
![Page 58: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/58.jpg)
Agility is more than Agile values and ceremonies
It is acting as per the Agile values and producing software with related best practices
![Page 59: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/59.jpg)
But where to start?Every Agile cycle, try to improve on those issues, trying
to automate everything you can, while having the conversation with your key stakeholders
![Page 60: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/60.jpg)
What would be a good measure of Agility
anyway?
![Page 61: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/61.jpg)
Suggestion #1:
The frequency at which you are delivering software updates
that add business value to your clients without breaking any previously
delivered business value that you want to retain
(aka The capability to release)
![Page 62: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/62.jpg)
Suggestion #2:
The time it takes you to deliver the smallest change/fix to your
software in production (aka The time to release)
![Page 63: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/63.jpg)
Engineering requirements to attain Agility:
Good people with good tools, applying proven software
development best practices consistently with discipline
using continuous improvement principles
![Page 64: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/64.jpg)
Questions or comments?
© Pyxis Technologies inc.
![Page 65: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/65.jpg)
Thanks!
© Pyxis Technologies inc.
![Page 66: Agility via Software Engineering Practices - Agile Tour Montreal 2015](https://reader033.vdocuments.net/reader033/viewer/2022052606/58766b5c1a28abd0018b5387/html5/thumbnails/66.jpg)
Titre sur mesure
POINTS FORTS 1
Thank&you !
Quest ions
pyxis&tech.com