SlideShare a Scribd company logo
Lightning Talks w/ Women of Scribd Engineering:
Migrations, Owning Quality, Instrumenting, and Finding
the Right Culture
@WomenWhoCodeTO
Network: WeWork Password: -
WWC Toronto Team
Steph Betty Stella
Rebecca Bhavana Aileen Nahrin
Our Sponsors
HAVE YOU JOINED OUR SLACK GROUP?
Get updates first! Special giveaways on Slack
bit.ly/WWCTOSlack
Words from our Host
Green Field Projects, Or How I
Learned to Love Migrations
@WomenWhoCodeTO
Paige Stone
Software Engineer, Notifications
Overview
Section One: CRM to CRM, Migration
Section Two: Flux, the Green field
Section Three: The big win!
Change is Inevitable
Continuous Improvement, Production
features, growth, economics
How we levered a Migration to green field
a new email/notification system
Paging Doctor Howard
On a legacy system, we tend to be surgical
in our fixes - the original system was
architected over 5 years ago, and we’ve
been patching it ever since.
● Overnight Updates
● Deep nested Triggers
● High message lag
● High dependency on Engineering
● Low Stability
● Low Velocity
Enter: the Marketing Platform
● SQL
● REST, SOAP, FTP
● List Segmentation
● Heavy use of timed queries
● Limited data per users
● Elasticsearch
● REST
● Personal users flows
● Real Time Event driven
● Unlimited data per user
● Full featured Webhooks and Data
Feeds
Help from an Unexpected Place
The Source of Truth
CRM -> Scribd
Scribd -> Iterable
The platforms are based on
different paradigms
The Flux-Capacitor
Inspired by Flux Architecture (Action -> Dispatch -> Store -> View)
Actions
Triggered Events
● New sign up
● Send a gift card
● Cancellation
● Unsubscribe from email/push
● Hard bounce
Triggered Sends
● User forgot their password
● Send a referral
● Admin Emails
● Dunning
Dispatcher
Sidekiq - Worker
Workflows
Call back via
- Webhooks
Store
Iterable acts as the Store
-Object-Oriented database.
-Levering Iterable’s System events and Webhooks as callbacks.
-Our store listens for events via System events
-Events can also be triggered as well
Views
Email as an extension of Frontend
-Treating email templates as components
● Realtime Updates
● Common Sense Triggers
● Time to get messages almost massively improved
● Reduced dependency on Engineering
● Improved Stability
● Improved Velocity
88 Miles Per Hour!
The Game of Marketing
Instead of doing User Segmentation, our marketers had to relearn how to develop
user flows, journeys, paths through the product. We can talk about gameplay, user
experience loops, and driving engagement.
Back to the Future
Because everything is centralized components, it is now easier to switch
components out. It’s more generic. We can switch out components (Sidekiq to
Kafka?) without reinventing the wheel.
Additional data is trivial, Additional Events and Triggers are trivial
Less maintenance, means more Features!
Push Notifications, Localization, Improved Testing, Brand-Refresh, Data Analysis
Don’t go chasing waterfalls: owning quality
as a whole team effort
@WomenWhoCodeTO
Nikki Hernandez
Web QA Engineer
- Tester / professional guinea pig
- Agile tester, Scrummaster certified
- Self taught techie
- Mother of CAT, Tyler Purrden
- Lots of risk at the end of the
cycle
- Rushed testing (or building)
inherently degrades quality
- “Feast or Famine” cycles of
work
- Being isolate/silo’d leads to
tunnel vision or feature
blindness
- Build in quality from day #1
- Break down work meaningfully - MVP,
“Shippable Pieces”
- Limit tasks to 1-2 days
- Write small user stories
- Storypoint for non-dev work, external
dependencies, third parties
- Write and agree on Acceptance Criteria
- Agile teams work *together*
- Pair test, Pair dev, Pair design
Quality means more than just “testing”
- State the intent clearly, concisely - not the full flow
- Good: “Copy is translated in all supported languages”
- Bad: “User can select Spanish, view new copy on Saved page”
- Include happy path, and any other important considerations
(accessibility, locale, geolocation, exclusions, application security,
etc)
- Not a replacement for full regression tests, unit tests, or other tests
but may include some aspect of it
- Eg: “Performance: Page load time remains the same”
- A ticket isn’t done until the AC is
- Keep changes as isolated as possible
- Anticipate shared code or dependencies
- Keep ‘em separated - separate branches
- Quality code is:
- Clear, concise, stable
- Minimal in change and scope
- Is manageable, easy to code review
- Can be easily reverted
- Is testable in some way
- Communicated clearly! (MRs, to team, in tickets, etc)
- Identify the happy/golden path
- What do we want users to do?
- Identify negative path testing
- What will users actually do?
- What?
- Real people with hopes and dreams (of
using our products)
- Everyone has a unique motivation for doing
things the way they do
- A way to “put yourself in $X shoes”
- How?
- Build a real person. Give them a name, a
job title, what’s up in their life right now?
What are their motivations for using Scribd?
What brings them value?
- https://personagenerator.com/
- Why?
- Because we have our own biases.
Utilizing personas allows us to
break out of that and try to
mimic real user behavior.
- As a tool to support ad-hoc,
exploratory, usability, happy
path, and edge case testing
- To see the site with new eyes
- To be able to test the full life
cycle of a user as they cycle
through our products
- Testing user stories:
- Work with QA to prepare
some generic test scenarios
- Setup staging environments,
sandboxes, etc
- Test against your acceptance
criteria
- Utilize personas to guide you
- Exploratory / ad-hoc tests
- Involve the whole team
Some generic testing considerations:
- Is it accessible
- Responsive
- Localized
- Check various platforms (desktop vs mobile,
mac vs windows, ios vs android)
- Check various browsers: FF, Chrome, IE,
Safari
- Check various user states (if applicable)
- Check various payment flows or methods
- Check the happy path
- Check for regressions where code was
touched
- Check metrics / analytic tracking events
- Owning quality means:
- Planning for it from day 1
- Work breakdown, sandboxes, how
to test, etc
- Writing quality specs, code, tests
- Writing acceptance criteria
- Communication / collaboration
- Working small pieces at a time
- Advocating for the customer
- Working together!
- Testing for quality means:
- Happy paths
- Unit tests
- Functional QA
- Design / spec review
- Pair testing
- Exploratory / Ad-hoc usability testing
- Personas
- Acceptance Criteria
- Identifying high risk areas and testing
against them
By baking in quality from the beginning
you’ll:
- Mitigate risk or deadline slippage
- Build quality products
- Ship stable code often
- Be a lot less stressed
- Avoid mini-waterfalls
- Stay agile, my friends!
Instrumenting your Code for Great
Justice
@WomenWhoCodeTO
Katerina Hanson
Software Development Manager
● Self-taught Software Engineer
● Previous career as a chemical
engineer
● Love going and getting the $$
● Old Millennial - my memes are
old-school
● Measurements
● Quantitative data points
● Track the operation of
complex systems
● Visibility into the Health of
your system
● Give you insight into
performance
● Easy to read and understand
● Alerts you to new problems
● Helps with diagnosing
● Prevents flying blind,
wasting time
1) Database reads / writes
2) Calls to 3rd Parties (and response types)
3) Any important changes of state
4) Anything that may run out of space
5) Cyclomatic Complexity (if / else)
Is this users-over-time?
Context is Important!
Or is potentially runaway queue?
Alerts
● Emergency
● Time-sensitive
● Actionable
● Demands Immediate
Attention
It’s Too Easy to set up Bad Alerts
● Limited Attention
● We get Desensitized, start
ignoring everything
● Lose the valuable alerts in
the Noise
BE PICKY
● #1 cause of Nuisance Alerts
● Outliers and drift will happen
over time.
● Alert only when the situation
is serious and actionable.
● Review periodically and
adjust
● SLA’s can be interpreted strictly
● Make sure they include
tolerances.
● These should be evaluated for
trends, and the work to address
scheduled and prioritize over the
long term, before it develops into
an emergency
● This is what an attack on an
endpoint looks like.
● Ideally, we’d have a circuit
breaker in the code that
would prevent this
● But a high level threshold
alert would be an ok backup
● Review your charts
regularly.
● View over different time
scales, see if you need
more info, or less.
● Make sure you have logs to
support deeper dives.
● Look for things you would
have liked to be warned /
alerted on, and consider
how to define your rules.
What you seek is seeking you : Find the
company and culture that is right for you
@WomenWhoCodeTO
Harini Iyer
Lead Software Engineer
LinkedIn: hariniiyer
Accidental Engineer
Point of No Direction
Self Image
Is being a good developer enough?
Turning Point
Should I quit?
The Magic Words : I don’t know (yet)!
Feedback
Culture can be influenced
But I don’t understand the product!
Scribd
Company values
People
Accountability and Ownership
Love of Reading
Engineering values
Refactor and Rebuild
Quality is everyone’s responsibility
Velocity
Building by Un-building
● AWS Migration
● MicroService Architecture
● Redesign systems
Scribd is Hiring!
Thank you
See you next time!
@WomenWhoCodeTO

More Related Content

Similar to 2019-12-WWC-Toronto.pdf

KARPAGAMBIKAI - TESTING PROFILE
KARPAGAMBIKAI - TESTING PROFILEKARPAGAMBIKAI - TESTING PROFILE
KARPAGAMBIKAI - TESTING PROFILE
Karpagambikai .G
 
Introduction to continuous delivery
Introduction to continuous deliveryIntroduction to continuous delivery
Introduction to continuous delivery
OlympicSoftware
 
Pay pal paypal continuous performance as a self-service with fully-automated...
Pay pal  paypal continuous performance as a self-service with fully-automated...Pay pal  paypal continuous performance as a self-service with fully-automated...
Pay pal paypal continuous performance as a self-service with fully-automated...
Dynatrace
 

Similar to 2019-12-WWC-Toronto.pdf (20)

ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)
 
Software Characterization & Performance Testing - Beat Your Software with a S...
Software Characterization & Performance Testing - Beat Your Software with a S...Software Characterization & Performance Testing - Beat Your Software with a S...
Software Characterization & Performance Testing - Beat Your Software with a S...
 
Isec
IsecIsec
Isec
 
Enterprise Agile - Hybrid of Methods
Enterprise Agile - Hybrid of MethodsEnterprise Agile - Hybrid of Methods
Enterprise Agile - Hybrid of Methods
 
Hypothesis-Driven Development & How to Fail-Fast Hacking Growth
Hypothesis-Driven Development & How to Fail-Fast Hacking GrowthHypothesis-Driven Development & How to Fail-Fast Hacking Growth
Hypothesis-Driven Development & How to Fail-Fast Hacking Growth
 
Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)
 
Outsourcing With Agile
Outsourcing With AgileOutsourcing With Agile
Outsourcing With Agile
 
Eric Proegler Early Performance Testing from CAST2014
Eric Proegler Early Performance Testing from CAST2014Eric Proegler Early Performance Testing from CAST2014
Eric Proegler Early Performance Testing from CAST2014
 
KARPAGAMBIKAI - TESTING PROFILE
KARPAGAMBIKAI - TESTING PROFILEKARPAGAMBIKAI - TESTING PROFILE
KARPAGAMBIKAI - TESTING PROFILE
 
L10 Architecture Considerations
L10 Architecture ConsiderationsL10 Architecture Considerations
L10 Architecture Considerations
 
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
 
Tune Agile Test Strategies to Project and Product Maturity
Tune Agile Test Strategies to Project and Product MaturityTune Agile Test Strategies to Project and Product Maturity
Tune Agile Test Strategies to Project and Product Maturity
 
Introduction to continuous delivery
Introduction to continuous deliveryIntroduction to continuous delivery
Introduction to continuous delivery
 
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
 
Pay pal paypal continuous performance as a self-service with fully-automated...
Pay pal  paypal continuous performance as a self-service with fully-automated...Pay pal  paypal continuous performance as a self-service with fully-automated...
Pay pal paypal continuous performance as a self-service with fully-automated...
 
JDD2014: QA to AQ: shifting from quality assurance to agile quality - Joseph ...
JDD2014: QA to AQ: shifting from quality assurance to agile quality - Joseph ...JDD2014: QA to AQ: shifting from quality assurance to agile quality - Joseph ...
JDD2014: QA to AQ: shifting from quality assurance to agile quality - Joseph ...
 
How to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot EnvironmentsHow to Manage the Risk of your Polyglot Environments
How to Manage the Risk of your Polyglot Environments
 
Stamp Out Agile and DevOps Bottlenecks
Stamp Out Agile and DevOps BottlenecksStamp Out Agile and DevOps Bottlenecks
Stamp Out Agile and DevOps Bottlenecks
 
Sunetra banerjee-sr-qa-engineer-project-lead resume
Sunetra banerjee-sr-qa-engineer-project-lead resumeSunetra banerjee-sr-qa-engineer-project-lead resume
Sunetra banerjee-sr-qa-engineer-project-lead resume
 
Troubleshooting: A High-Value Asset For The Service-Provider Discipline
Troubleshooting: A High-Value Asset For The Service-Provider DisciplineTroubleshooting: A High-Value Asset For The Service-Provider Discipline
Troubleshooting: A High-Value Asset For The Service-Provider Discipline
 

Recently uploaded

Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
Kamal Acharya
 
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical SolutionsRS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
Atif Razi
 
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdfONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
Kamal Acharya
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 

Recently uploaded (20)

Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientist
 
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical SolutionsRS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
RS Khurmi Machine Design Clutch and Brake Exercise Numerical Solutions
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
 
Online resume builder management system project report.pdf
Online resume builder management system project report.pdfOnline resume builder management system project report.pdf
Online resume builder management system project report.pdf
 
Scaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltageScaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltage
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
 
A case study of cinema management system project report..pdf
A case study of cinema management system project report..pdfA case study of cinema management system project report..pdf
A case study of cinema management system project report..pdf
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
İTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering WorkshopİTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering Workshop
 
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdfONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
ONLINE VEHICLE RENTAL SYSTEM PROJECT REPORT.pdf
 
KIT-601 Lecture Notes-UNIT-4.pdf Frequent Itemsets and Clustering
KIT-601 Lecture Notes-UNIT-4.pdf Frequent Itemsets and ClusteringKIT-601 Lecture Notes-UNIT-4.pdf Frequent Itemsets and Clustering
KIT-601 Lecture Notes-UNIT-4.pdf Frequent Itemsets and Clustering
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
Courier management system project report.pdf
Courier management system project report.pdfCourier management system project report.pdf
Courier management system project report.pdf
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
Natalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in KrakówNatalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in Kraków
 
fundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionfundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projection
 
Construction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptxConstruction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptx
 
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptxCloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
Cloud-Computing_CSE311_Computer-Networking CSE GUB BD - Shahidul.pptx
 

2019-12-WWC-Toronto.pdf

  • 1. Lightning Talks w/ Women of Scribd Engineering: Migrations, Owning Quality, Instrumenting, and Finding the Right Culture @WomenWhoCodeTO Network: WeWork Password: -
  • 2.
  • 3. WWC Toronto Team Steph Betty Stella Rebecca Bhavana Aileen Nahrin
  • 5. HAVE YOU JOINED OUR SLACK GROUP? Get updates first! Special giveaways on Slack bit.ly/WWCTOSlack
  • 7. Green Field Projects, Or How I Learned to Love Migrations @WomenWhoCodeTO
  • 9. Overview Section One: CRM to CRM, Migration Section Two: Flux, the Green field Section Three: The big win!
  • 10. Change is Inevitable Continuous Improvement, Production features, growth, economics How we levered a Migration to green field a new email/notification system
  • 11. Paging Doctor Howard On a legacy system, we tend to be surgical in our fixes - the original system was architected over 5 years ago, and we’ve been patching it ever since. ● Overnight Updates ● Deep nested Triggers ● High message lag ● High dependency on Engineering ● Low Stability ● Low Velocity
  • 12. Enter: the Marketing Platform ● SQL ● REST, SOAP, FTP ● List Segmentation ● Heavy use of timed queries ● Limited data per users ● Elasticsearch ● REST ● Personal users flows ● Real Time Event driven ● Unlimited data per user ● Full featured Webhooks and Data Feeds
  • 13. Help from an Unexpected Place
  • 14. The Source of Truth CRM -> Scribd Scribd -> Iterable The platforms are based on different paradigms
  • 15. The Flux-Capacitor Inspired by Flux Architecture (Action -> Dispatch -> Store -> View)
  • 16. Actions Triggered Events ● New sign up ● Send a gift card ● Cancellation ● Unsubscribe from email/push ● Hard bounce Triggered Sends ● User forgot their password ● Send a referral ● Admin Emails ● Dunning
  • 18. Store Iterable acts as the Store -Object-Oriented database. -Levering Iterable’s System events and Webhooks as callbacks. -Our store listens for events via System events -Events can also be triggered as well
  • 19. Views Email as an extension of Frontend -Treating email templates as components
  • 20. ● Realtime Updates ● Common Sense Triggers ● Time to get messages almost massively improved ● Reduced dependency on Engineering ● Improved Stability ● Improved Velocity 88 Miles Per Hour!
  • 21. The Game of Marketing Instead of doing User Segmentation, our marketers had to relearn how to develop user flows, journeys, paths through the product. We can talk about gameplay, user experience loops, and driving engagement.
  • 22. Back to the Future Because everything is centralized components, it is now easier to switch components out. It’s more generic. We can switch out components (Sidekiq to Kafka?) without reinventing the wheel. Additional data is trivial, Additional Events and Triggers are trivial Less maintenance, means more Features! Push Notifications, Localization, Improved Testing, Brand-Refresh, Data Analysis
  • 23. Don’t go chasing waterfalls: owning quality as a whole team effort @WomenWhoCodeTO
  • 25. - Tester / professional guinea pig - Agile tester, Scrummaster certified - Self taught techie - Mother of CAT, Tyler Purrden
  • 26.
  • 27.
  • 28.
  • 29. - Lots of risk at the end of the cycle - Rushed testing (or building) inherently degrades quality - “Feast or Famine” cycles of work - Being isolate/silo’d leads to tunnel vision or feature blindness
  • 30.
  • 31. - Build in quality from day #1 - Break down work meaningfully - MVP, “Shippable Pieces” - Limit tasks to 1-2 days - Write small user stories - Storypoint for non-dev work, external dependencies, third parties - Write and agree on Acceptance Criteria - Agile teams work *together* - Pair test, Pair dev, Pair design
  • 32. Quality means more than just “testing”
  • 33.
  • 34. - State the intent clearly, concisely - not the full flow - Good: “Copy is translated in all supported languages” - Bad: “User can select Spanish, view new copy on Saved page” - Include happy path, and any other important considerations (accessibility, locale, geolocation, exclusions, application security, etc) - Not a replacement for full regression tests, unit tests, or other tests but may include some aspect of it - Eg: “Performance: Page load time remains the same” - A ticket isn’t done until the AC is
  • 35. - Keep changes as isolated as possible - Anticipate shared code or dependencies - Keep ‘em separated - separate branches - Quality code is: - Clear, concise, stable - Minimal in change and scope - Is manageable, easy to code review - Can be easily reverted - Is testable in some way - Communicated clearly! (MRs, to team, in tickets, etc)
  • 36. - Identify the happy/golden path - What do we want users to do? - Identify negative path testing - What will users actually do?
  • 37. - What? - Real people with hopes and dreams (of using our products) - Everyone has a unique motivation for doing things the way they do - A way to “put yourself in $X shoes” - How? - Build a real person. Give them a name, a job title, what’s up in their life right now? What are their motivations for using Scribd? What brings them value? - https://personagenerator.com/ - Why? - Because we have our own biases. Utilizing personas allows us to break out of that and try to mimic real user behavior. - As a tool to support ad-hoc, exploratory, usability, happy path, and edge case testing - To see the site with new eyes - To be able to test the full life cycle of a user as they cycle through our products
  • 38. - Testing user stories: - Work with QA to prepare some generic test scenarios - Setup staging environments, sandboxes, etc - Test against your acceptance criteria - Utilize personas to guide you - Exploratory / ad-hoc tests - Involve the whole team Some generic testing considerations: - Is it accessible - Responsive - Localized - Check various platforms (desktop vs mobile, mac vs windows, ios vs android) - Check various browsers: FF, Chrome, IE, Safari - Check various user states (if applicable) - Check various payment flows or methods - Check the happy path - Check for regressions where code was touched - Check metrics / analytic tracking events
  • 39. - Owning quality means: - Planning for it from day 1 - Work breakdown, sandboxes, how to test, etc - Writing quality specs, code, tests - Writing acceptance criteria - Communication / collaboration - Working small pieces at a time - Advocating for the customer - Working together! - Testing for quality means: - Happy paths - Unit tests - Functional QA - Design / spec review - Pair testing - Exploratory / Ad-hoc usability testing - Personas - Acceptance Criteria - Identifying high risk areas and testing against them
  • 40. By baking in quality from the beginning you’ll: - Mitigate risk or deadline slippage - Build quality products - Ship stable code often - Be a lot less stressed - Avoid mini-waterfalls - Stay agile, my friends!
  • 41. Instrumenting your Code for Great Justice @WomenWhoCodeTO
  • 43. ● Self-taught Software Engineer ● Previous career as a chemical engineer ● Love going and getting the $$ ● Old Millennial - my memes are old-school
  • 44. ● Measurements ● Quantitative data points ● Track the operation of complex systems
  • 45. ● Visibility into the Health of your system ● Give you insight into performance ● Easy to read and understand ● Alerts you to new problems ● Helps with diagnosing ● Prevents flying blind, wasting time
  • 46.
  • 47.
  • 48.
  • 49.
  • 50. 1) Database reads / writes 2) Calls to 3rd Parties (and response types) 3) Any important changes of state 4) Anything that may run out of space 5) Cyclomatic Complexity (if / else)
  • 51. Is this users-over-time? Context is Important! Or is potentially runaway queue?
  • 53. ● Emergency ● Time-sensitive ● Actionable ● Demands Immediate Attention
  • 54. It’s Too Easy to set up Bad Alerts
  • 55. ● Limited Attention ● We get Desensitized, start ignoring everything ● Lose the valuable alerts in the Noise BE PICKY
  • 56. ● #1 cause of Nuisance Alerts ● Outliers and drift will happen over time. ● Alert only when the situation is serious and actionable. ● Review periodically and adjust
  • 57. ● SLA’s can be interpreted strictly ● Make sure they include tolerances. ● These should be evaluated for trends, and the work to address scheduled and prioritize over the long term, before it develops into an emergency
  • 58. ● This is what an attack on an endpoint looks like. ● Ideally, we’d have a circuit breaker in the code that would prevent this ● But a high level threshold alert would be an ok backup
  • 59. ● Review your charts regularly. ● View over different time scales, see if you need more info, or less. ● Make sure you have logs to support deeper dives. ● Look for things you would have liked to be warned / alerted on, and consider how to define your rules.
  • 60. What you seek is seeking you : Find the company and culture that is right for you @WomenWhoCodeTO
  • 61. Harini Iyer Lead Software Engineer LinkedIn: hariniiyer
  • 63. Point of No Direction
  • 65. Is being a good developer enough?
  • 68. The Magic Words : I don’t know (yet)!
  • 70. Culture can be influenced
  • 71. But I don’t understand the product!
  • 73. Company values People Accountability and Ownership Love of Reading
  • 74. Engineering values Refactor and Rebuild Quality is everyone’s responsibility Velocity
  • 76. ● AWS Migration ● MicroService Architecture ● Redesign systems
  • 78.
  • 80. See you next time! @WomenWhoCodeTO