SlideShare a Scribd company logo
© 2017 FileMaker, Inc.
FILEMAKER DEVCON 2017
JULY 24 - 27, 2017 | PHOENIX, AZ
What Works: Strategies for
Increasing Code Quality while
Staying Lean
BUS004
John Sindelar
SeedCode, Inc. | DayBack Calendar
#FileMakerDevCon© 2017 FileMaker, Inc.
Who am I?
John Sindelar
Developer since FileMaker 3
CEO of SeedCode
- A few couple large custom projects each year
- Lots of small mods for map and calendar customers
Author of the early SeedCode Calendars (now DayBack)
Surfer, trail runner, kayaker
#FileMakerDevCon© 2017 FileMaker, Inc.
No Time for Quality?
We don’t have time for this because…
- All our projects and late already
- Everyone is already super stressed
- We don’t have time.
Humans don’t “have” time, we “make” time
- Literally
Think of what follows as Techniques for Making Time
#FileMakerDevCon© 2017 FileMaker, Inc.
Where these technuiques came from
“Our new team members are going to
learn more from what we do than
from what we say….”
“…So let’s make sure we’re actually
doing the things that have worked for
us.”
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Having an internal blog works”
- A living handbook for policy questions
- A place for employees to draft (and comment on) public posts
- Document what’s working for you
#FileMakerDevCon© 2017 FileMaker, Inc.
Where do these strategies apply?
Project Size
- Large, multi-year projects (over 6,000 hours)
- Smaller mods (4-10 hours)
- We use almost the same strategies for both
Small teams or solo developers
Using FileMaker Pro
#FileMakerDevCon© 2017 FileMaker, Inc.
What do we mean by “quality”?
Quality is often used as a synonym for “good”
- In code, comments are “good” because they serve a value
- Like “transparency”
- But transparency serves a value like “portability”
- “Quality code is highly portable” links a presumed good to a value
So what are the values by which we judge quality?
#FileMakerDevCon© 2017 FileMaker, Inc.
What do we mean by “quality”?
Money, $$, €
Money, and time.
Money, time, and freedom.
“But money, of course, is never just money. It's always something else, and it's always
something more, and it always has the last word.” - Paul Auster
#FileMakerDevCon© 2017 FileMaker, Inc.
What do we mean by “quality”?
Only interested in code quality in terms of money and time.
In this context quality means:
- Less rework
- Increasing delivery velocity
- Role portability in your team
- Speedy project restarts
#FileMakerDevCon© 2017 FileMaker, Inc.
What do we mean by “lean”?
Strategies that don’t require hiring people, or
- Subscribing to apps
- Buying gear
- Adopting dev conventions
- Putting your kids to work
- Giving up sleep and weekends
#FileMakerDevCon© 2017 FileMaker, Inc.
P.S. What Works?
“Defining your terms works”
- It’s tough to make decisions among “good” options without clearly stated values
- “I like option A because it’s more clear”
- vs
- “Option A adheres to the principle of least astonishment”
https://en.wikipedia.org/wiki/Principle_of_least_astonishment
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works: Strategies for Increasing
Code Quality while Staying Lean
What we do
Problems solved
Tips
#FileMakerDevCon© 2017 FileMaker, Inc.
1. Video
Demo is the new testing.
#FileMakerDevCon© 2017 FileMaker, Inc.
1. Video: What we do
Every small delivery is accompanied by a 3-5min video
For large projects/products, every case is closed with a video
We demonstrate the “whole feature”
Using the customer’s data
Mac/Win: http://screencast-o-matic.com https://www.monosnap.com/welcome
#FileMakerDevCon© 2017 FileMaker, Inc.
1. Video: Problems solved
The act of demoing swaps developer mode for user mode
- You will catch mistakes this way
- Which means less rework
Customers can’t evaluate our work if we just drop it off
- They can’t make sample data & won’t experiment with real data
- They don’t know how to reproduce initial conditions
- They don’t have time
#FileMakerDevCon© 2017 FileMaker, Inc.
1. Video: More problems solved
Anyone in your team can come up to speed
- Instead of finding the file, logging in, …..
- Watch a video and you’re caught up
- Portability and restart speed
Videos are a reminder to everyone that it worked when we delivered it
#FileMakerDevCon© 2017 FileMaker, Inc.
1. Video: Tips
Record as if you were showing it off to an interested friend
- You’re not selling or pitching
Open questions should be transcribed into emails or cases
- You can’t search video narration
Close with suggestions & next steps
- A suggestion of what we could do next to increase the software’s value
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Video Works”
- Probably the most important thing we’ve done to reduce mistakes
- Role portability has increased for custom work
- Delivered work gets validated by customers (not just accepted)
#FileMakerDevCon© 2017 FileMaker, Inc.
P.S. Close every case with a video
If you’re asking, “What’s a case?”…
…You need a bug tracking database
- FogBugz, Jira, ZenDesk, GitHub, etc.
- Try to pass as much of the Joel Test as you can
https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Breaking Things into Small Chunks
We do not listen to a client for 4 hours
then head into the desert for 4 months to
build their software
…hoping they like it when we return.
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Small Chunks: What we do
Deliver every 5 or 10 hours of code (small projects)
For large projects or products, deliver every week.
Deliver means deploy
- Deliveries are put into production (data migration and everything)
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Small Chunks: Problems solved
We don’t outrun our understanding of the client’s issue
- You also speak with the client more often.
Work actually gets validated
- Deliveries are small enough for the customer to digest
- Deployments are seen by ALL users (not just informants)
- You get feedback now not months from now
“The only real risk is to build the wrong thing” - SeedCode
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Small Chunks: More problems solved
No more half done features
- It sucks to restart something that was never finished.
- When we finish something we put it to bed by deploying it.
Redefines “Bugs”
- making a distinction between “mistake” and “undone”
Reduced cognitive load
- Undone tasks take up much more mental energy than things that are put to bed.
http://www.spring.org.uk/2011/02/the-zeigarnik-effect.php
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Small Chunks: Tips
Cases should be binary
- Something that is either done or not
The more friction, the smaller the chunk
- Subcontractor cases should be no more than 5 hours
- Project restarts: 3 hours
#FileMakerDevCon© 2017 FileMaker, Inc.
2. Small Chunks: More Tips
Use timeboxing to keep things small…
…and “Ship anyway”
- Create new cases for the gaps or edge cases.
- Those are just more small chunks.
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Breaking things into small chunks works”
- Small chunks are more portable,
- They reduce risk,
- And increase everyone’s sense of success (even the client’s).
- Most importantly, we don’t outrun our understanding of the subject matter.
#FileMakerDevCon© 2017 FileMaker, Inc.
3. Documenting our Decisions
We’re coding for our future selves.
#FileMakerDevCon© 2017 FileMaker, Inc.
3. Documenting: What we do
We write comments make links.
Case numbers create links: finding them in code is gold.
When we decide between competing alternatives…
…we write about that in the case or in the product docs.
Competing alternatives, see “Why Make this a Switch” -
http://www.seedcode.com/pmwiki/index.php?n=DayBackForFileMaker.PerformScriptOnServer)
#FileMakerDevCon© 2017 FileMaker, Inc.
3. Documenting: Problems solved
Creating a path from the customer’s case (or feature specs) to the code
that addresses them
A path that our future selves can follow.
- Reduces restart time
- Increase role portability
“One definition of fragility: the original developer is the only one who
can help this customer” - SeedCode
#FileMakerDevCon© 2017 FileMaker, Inc.
3. Documenting our Decisions: Tips
Start the docs, email, blog post before the code
- It’s much easier to jot down these details as we’re building vs to reconstruct them later
Include the case #s in the code and commits
- In comments when code is commented out or added.
- In script headers
- In GIT commits
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Documenting our decisions works”
- We write code once but we support it forever
- Increases role portability…
- …which reduces developer distraction / gear switching
- Removes Fear Uncertainty and Doubt: the “spooky music” that slows us down
#FileMakerDevCon© 2017 FileMaker, Inc.
4. Recording Technical Debt
Document the path not taken.
#FileMakerDevCon© 2017 FileMaker, Inc.
4. Recording Technical Debt: What we do
Defer hardening until our work is validated by the customer.
- Keep scripts simple as long as possible
We create a case for what’s undone
Create cases for any bugs we see that aren’t going to be fixed IN the
video
https://en.wikipedia.org/wiki/Technical_debt
#FileMakerDevCon© 2017 FileMaker, Inc.
4. Recording Tech Debt: Problems solved
“Recording instead of coding” avoids premature optimization
Capturing what’s undone
- It takes less time to get back to work because I know just where to pick up
- Increases role portability as others can pickup where I left off
Recording let’s me “observe” without pressure to fix
- We’re more attuned to what’s happening when we’re not also trying to weigh its consequences
Premature optimization / generalization:
https://dev.to/wrschneider/balancing-early-and-later-project-risks
#FileMakerDevCon© 2017 FileMaker, Inc.
4. Recording Technical Debt: Tips
Have a place to record debt
- Bug tracking database
- Inside scripts document your intention not your method
Get used to making lots of small cases
- Anything surprising or unexpected gets a case.
- When you find yourself pausing while recording a video
- Schedule “hardening” sprints to bring down debt
Again: https://en.wikipedia.org/wiki/Principle_of_least_astonishment
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Recording technical debt works”
- Technical debt taken on intentionally can help us get there faster,
- Just like debt financing can help a company grow faster.
- Debt taken on invisibly is like a variable rate loan—not good.
- And in both cases, it’s the unknown that makes all the difference.
#FileMakerDevCon© 2017 FileMaker, Inc.
5. Cut to the Chase
Remove unnecessary back and forth by
proposing closing actions first.
#FileMakerDevCon© 2017 FileMaker, Inc.
5. Cut to the Chase: What we do
Close by suggesing an action
- Instead of suggesting more communication or asking open ended questions
Close by asking “binary quesions”
- Questions that can be quickly answered with Yes or No
- Or can be answered by clicking a link or making a purchase
When we have to discuss schedules, we use “time words”
Time Words: https://dayback.com/time-words/
#FileMakerDevCon© 2017 FileMaker, Inc.
5. Cut to the Chase: Problems solved
Get paid sooner
Agree to schedules in fewer emails
Correspondence becomes much easier to read in retrospect
#FileMakerDevCon© 2017 FileMaker, Inc.
5. Cut to the Chase: Tips
Put revenue first: you can discuss everything else later
Add decision links instead of asking for a decision
- GoToMeeting invitation
- Purchase hours, pay the invoice, approve the mockup
Video is great way to shorten the email loop
- “Bias for video”
Bias for action: https://www.amazon.jobs/principles
#FileMakerDevCon© 2017 FileMaker, Inc.
What Works?
“Cutting to the chase works”
- You get paid faster, get the OK faster, get replies faster,
- With less miscommunication.
- And you reply faster, because shorter emails are easier to write.
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking
How to run fast in the dark
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking: What we do
When we’re checking on on a sprint, we ask:
- What’s done vs undone
- And for what’s undone, what of that is unknown.
For the unknown, we ask if it’s a blocker.
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking: What we do
The Feature
Done Undone
Known Unknown
Not Blocking Blocking
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking: What we do
The Feature
Done Undone
Known Unknown
Not Blocking Blocking
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking: Problems solved
Surface unknowns early and ask for help
- Customer, stack overflow, API author, etc.
- Help is often asynchronous
- Catch them early and they don’t become blockers
Good technique for reducing fear and paralysis
#FileMakerDevCon© 2017 FileMaker, Inc.
6. Unknown vs Blocking: Tips
Easier to see unknowns if they are expressed as cases
- vs running into “the wall” when you’re coding
Creates two definitions of “blocking”
- blocking my work, blocking shipment
- hint: it’s almost never blocking shipment
#FileMakerDevCon© 2017 FileMaker, Inc.
Thank You!
Please remember to fill out the session evaluation at:
www.filemaker.com/devcon/evaluations
FILEMAKER DEVCON 2017
JULY 24 - 27, 2017 | PHOENIX, AZ

More Related Content

Similar to Increasing Code Quality While Staying Lean

The principles of agile development
The principles of agile developmentThe principles of agile development
The principles of agile developmentRajat Samal
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingAndy Melichar
 
Continuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceContinuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceShawn Button
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressmtoppa
 
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTION
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTIONLESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTION
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTIONHuman Capital Media
 
Custom mobile application development
Custom mobile application developmentCustom mobile application development
Custom mobile application developmentKeven Thibeault
 
Cisco webex zend con2010 presentation
Cisco webex zend con2010 presentationCisco webex zend con2010 presentation
Cisco webex zend con2010 presentationEnterprise PHP Center
 
Cisco webex zend con2010 presentation
Cisco webex zend con2010 presentationCisco webex zend con2010 presentation
Cisco webex zend con2010 presentationEnterprise PHP Center
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysAndreas Grabner
 
How to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsHow to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsDynatrace
 
Berry 10 years_of_dita
Berry 10 years_of_ditaBerry 10 years_of_dita
Berry 10 years_of_ditaMysti Berry
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuousMichele Orselli
 
How to Best Develop a Product by PlateRate Founder
How to Best Develop a Product by PlateRate FounderHow to Best Develop a Product by PlateRate Founder
How to Best Develop a Product by PlateRate FounderProduct School
 
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011Mediacurrent
 

Similar to Increasing Code Quality While Staying Lean (20)

Scrum For Developers
Scrum For DevelopersScrum For Developers
Scrum For Developers
 
The principles of agile development
The principles of agile developmentThe principles of agile development
The principles of agile development
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair Programming
 
Continuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceContinuous Deployment Through Technical Excellence
Continuous Deployment Through Technical Excellence
 
Ten Years of DITA: Are We There Yet?
Ten Years of DITA: Are We There Yet?Ten Years of DITA: Are We There Yet?
Ten Years of DITA: Are We There Yet?
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTION
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTIONLESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTION
LESSONS LEARNED FROM ADOBE’S PERFORMANCE MANAGEMENT REVOLUTION
 
Custom mobile application development
Custom mobile application developmentCustom mobile application development
Custom mobile application development
 
Cisco webex zend con2010 presentation
Cisco webex zend con2010 presentationCisco webex zend con2010 presentation
Cisco webex zend con2010 presentation
 
Cisco webex zend con2010 presentation
Cisco webex zend con2010 presentationCisco webex zend con2010 presentation
Cisco webex zend con2010 presentation
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
 
How to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsHow to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOps
 
Session slides
Session slidesSession slides
Session slides
 
Session slides
Session slidesSession slides
Session slides
 
Session slides
Session slidesSession slides
Session slides
 
Berry 10 years_of_dita
Berry 10 years_of_ditaBerry 10 years_of_dita
Berry 10 years_of_dita
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
How to Best Develop a Product by PlateRate Founder
How to Best Develop a Product by PlateRate FounderHow to Best Develop a Product by PlateRate Founder
How to Best Develop a Product by PlateRate Founder
 
Why agile?
Why agile?Why agile?
Why agile?
 
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011
Happiness is an Organized Case Queue - Drupalcamp Atlanta 2011
 

Recently uploaded

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»QADay
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
 

Recently uploaded (20)

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 

Increasing Code Quality While Staying Lean

  • 1. © 2017 FileMaker, Inc. FILEMAKER DEVCON 2017 JULY 24 - 27, 2017 | PHOENIX, AZ What Works: Strategies for Increasing Code Quality while Staying Lean BUS004 John Sindelar SeedCode, Inc. | DayBack Calendar
  • 2. #FileMakerDevCon© 2017 FileMaker, Inc. Who am I? John Sindelar Developer since FileMaker 3 CEO of SeedCode - A few couple large custom projects each year - Lots of small mods for map and calendar customers Author of the early SeedCode Calendars (now DayBack) Surfer, trail runner, kayaker
  • 3. #FileMakerDevCon© 2017 FileMaker, Inc. No Time for Quality? We don’t have time for this because… - All our projects and late already - Everyone is already super stressed - We don’t have time. Humans don’t “have” time, we “make” time - Literally Think of what follows as Techniques for Making Time
  • 4. #FileMakerDevCon© 2017 FileMaker, Inc. Where these technuiques came from “Our new team members are going to learn more from what we do than from what we say….” “…So let’s make sure we’re actually doing the things that have worked for us.”
  • 5. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Having an internal blog works” - A living handbook for policy questions - A place for employees to draft (and comment on) public posts - Document what’s working for you
  • 6. #FileMakerDevCon© 2017 FileMaker, Inc. Where do these strategies apply? Project Size - Large, multi-year projects (over 6,000 hours) - Smaller mods (4-10 hours) - We use almost the same strategies for both Small teams or solo developers Using FileMaker Pro
  • 7. #FileMakerDevCon© 2017 FileMaker, Inc. What do we mean by “quality”? Quality is often used as a synonym for “good” - In code, comments are “good” because they serve a value - Like “transparency” - But transparency serves a value like “portability” - “Quality code is highly portable” links a presumed good to a value So what are the values by which we judge quality?
  • 8. #FileMakerDevCon© 2017 FileMaker, Inc. What do we mean by “quality”? Money, $$, € Money, and time. Money, time, and freedom. “But money, of course, is never just money. It's always something else, and it's always something more, and it always has the last word.” - Paul Auster
  • 9. #FileMakerDevCon© 2017 FileMaker, Inc. What do we mean by “quality”? Only interested in code quality in terms of money and time. In this context quality means: - Less rework - Increasing delivery velocity - Role portability in your team - Speedy project restarts
  • 10. #FileMakerDevCon© 2017 FileMaker, Inc. What do we mean by “lean”? Strategies that don’t require hiring people, or - Subscribing to apps - Buying gear - Adopting dev conventions - Putting your kids to work - Giving up sleep and weekends
  • 11. #FileMakerDevCon© 2017 FileMaker, Inc. P.S. What Works? “Defining your terms works” - It’s tough to make decisions among “good” options without clearly stated values - “I like option A because it’s more clear” - vs - “Option A adheres to the principle of least astonishment” https://en.wikipedia.org/wiki/Principle_of_least_astonishment
  • 12. #FileMakerDevCon© 2017 FileMaker, Inc. What Works: Strategies for Increasing Code Quality while Staying Lean What we do Problems solved Tips
  • 13. #FileMakerDevCon© 2017 FileMaker, Inc. 1. Video Demo is the new testing.
  • 14. #FileMakerDevCon© 2017 FileMaker, Inc. 1. Video: What we do Every small delivery is accompanied by a 3-5min video For large projects/products, every case is closed with a video We demonstrate the “whole feature” Using the customer’s data Mac/Win: http://screencast-o-matic.com https://www.monosnap.com/welcome
  • 15. #FileMakerDevCon© 2017 FileMaker, Inc. 1. Video: Problems solved The act of demoing swaps developer mode for user mode - You will catch mistakes this way - Which means less rework Customers can’t evaluate our work if we just drop it off - They can’t make sample data & won’t experiment with real data - They don’t know how to reproduce initial conditions - They don’t have time
  • 16. #FileMakerDevCon© 2017 FileMaker, Inc. 1. Video: More problems solved Anyone in your team can come up to speed - Instead of finding the file, logging in, ….. - Watch a video and you’re caught up - Portability and restart speed Videos are a reminder to everyone that it worked when we delivered it
  • 17. #FileMakerDevCon© 2017 FileMaker, Inc. 1. Video: Tips Record as if you were showing it off to an interested friend - You’re not selling or pitching Open questions should be transcribed into emails or cases - You can’t search video narration Close with suggestions & next steps - A suggestion of what we could do next to increase the software’s value
  • 18. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Video Works” - Probably the most important thing we’ve done to reduce mistakes - Role portability has increased for custom work - Delivered work gets validated by customers (not just accepted)
  • 19. #FileMakerDevCon© 2017 FileMaker, Inc. P.S. Close every case with a video If you’re asking, “What’s a case?”… …You need a bug tracking database - FogBugz, Jira, ZenDesk, GitHub, etc. - Try to pass as much of the Joel Test as you can https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/
  • 20. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Breaking Things into Small Chunks We do not listen to a client for 4 hours then head into the desert for 4 months to build their software …hoping they like it when we return.
  • 21. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Small Chunks: What we do Deliver every 5 or 10 hours of code (small projects) For large projects or products, deliver every week. Deliver means deploy - Deliveries are put into production (data migration and everything)
  • 22. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Small Chunks: Problems solved We don’t outrun our understanding of the client’s issue - You also speak with the client more often. Work actually gets validated - Deliveries are small enough for the customer to digest - Deployments are seen by ALL users (not just informants) - You get feedback now not months from now “The only real risk is to build the wrong thing” - SeedCode
  • 23. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Small Chunks: More problems solved No more half done features - It sucks to restart something that was never finished. - When we finish something we put it to bed by deploying it. Redefines “Bugs” - making a distinction between “mistake” and “undone” Reduced cognitive load - Undone tasks take up much more mental energy than things that are put to bed. http://www.spring.org.uk/2011/02/the-zeigarnik-effect.php
  • 24. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Small Chunks: Tips Cases should be binary - Something that is either done or not The more friction, the smaller the chunk - Subcontractor cases should be no more than 5 hours - Project restarts: 3 hours
  • 25. #FileMakerDevCon© 2017 FileMaker, Inc. 2. Small Chunks: More Tips Use timeboxing to keep things small… …and “Ship anyway” - Create new cases for the gaps or edge cases. - Those are just more small chunks.
  • 26. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Breaking things into small chunks works” - Small chunks are more portable, - They reduce risk, - And increase everyone’s sense of success (even the client’s). - Most importantly, we don’t outrun our understanding of the subject matter.
  • 27. #FileMakerDevCon© 2017 FileMaker, Inc. 3. Documenting our Decisions We’re coding for our future selves.
  • 28. #FileMakerDevCon© 2017 FileMaker, Inc. 3. Documenting: What we do We write comments make links. Case numbers create links: finding them in code is gold. When we decide between competing alternatives… …we write about that in the case or in the product docs. Competing alternatives, see “Why Make this a Switch” - http://www.seedcode.com/pmwiki/index.php?n=DayBackForFileMaker.PerformScriptOnServer)
  • 29. #FileMakerDevCon© 2017 FileMaker, Inc. 3. Documenting: Problems solved Creating a path from the customer’s case (or feature specs) to the code that addresses them A path that our future selves can follow. - Reduces restart time - Increase role portability “One definition of fragility: the original developer is the only one who can help this customer” - SeedCode
  • 30. #FileMakerDevCon© 2017 FileMaker, Inc. 3. Documenting our Decisions: Tips Start the docs, email, blog post before the code - It’s much easier to jot down these details as we’re building vs to reconstruct them later Include the case #s in the code and commits - In comments when code is commented out or added. - In script headers - In GIT commits
  • 31. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Documenting our decisions works” - We write code once but we support it forever - Increases role portability… - …which reduces developer distraction / gear switching - Removes Fear Uncertainty and Doubt: the “spooky music” that slows us down
  • 32. #FileMakerDevCon© 2017 FileMaker, Inc. 4. Recording Technical Debt Document the path not taken.
  • 33. #FileMakerDevCon© 2017 FileMaker, Inc. 4. Recording Technical Debt: What we do Defer hardening until our work is validated by the customer. - Keep scripts simple as long as possible We create a case for what’s undone Create cases for any bugs we see that aren’t going to be fixed IN the video https://en.wikipedia.org/wiki/Technical_debt
  • 34. #FileMakerDevCon© 2017 FileMaker, Inc. 4. Recording Tech Debt: Problems solved “Recording instead of coding” avoids premature optimization Capturing what’s undone - It takes less time to get back to work because I know just where to pick up - Increases role portability as others can pickup where I left off Recording let’s me “observe” without pressure to fix - We’re more attuned to what’s happening when we’re not also trying to weigh its consequences Premature optimization / generalization: https://dev.to/wrschneider/balancing-early-and-later-project-risks
  • 35. #FileMakerDevCon© 2017 FileMaker, Inc. 4. Recording Technical Debt: Tips Have a place to record debt - Bug tracking database - Inside scripts document your intention not your method Get used to making lots of small cases - Anything surprising or unexpected gets a case. - When you find yourself pausing while recording a video - Schedule “hardening” sprints to bring down debt Again: https://en.wikipedia.org/wiki/Principle_of_least_astonishment
  • 36. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Recording technical debt works” - Technical debt taken on intentionally can help us get there faster, - Just like debt financing can help a company grow faster. - Debt taken on invisibly is like a variable rate loan—not good. - And in both cases, it’s the unknown that makes all the difference.
  • 37. #FileMakerDevCon© 2017 FileMaker, Inc. 5. Cut to the Chase Remove unnecessary back and forth by proposing closing actions first.
  • 38. #FileMakerDevCon© 2017 FileMaker, Inc. 5. Cut to the Chase: What we do Close by suggesing an action - Instead of suggesting more communication or asking open ended questions Close by asking “binary quesions” - Questions that can be quickly answered with Yes or No - Or can be answered by clicking a link or making a purchase When we have to discuss schedules, we use “time words” Time Words: https://dayback.com/time-words/
  • 39. #FileMakerDevCon© 2017 FileMaker, Inc. 5. Cut to the Chase: Problems solved Get paid sooner Agree to schedules in fewer emails Correspondence becomes much easier to read in retrospect
  • 40. #FileMakerDevCon© 2017 FileMaker, Inc. 5. Cut to the Chase: Tips Put revenue first: you can discuss everything else later Add decision links instead of asking for a decision - GoToMeeting invitation - Purchase hours, pay the invoice, approve the mockup Video is great way to shorten the email loop - “Bias for video” Bias for action: https://www.amazon.jobs/principles
  • 41. #FileMakerDevCon© 2017 FileMaker, Inc. What Works? “Cutting to the chase works” - You get paid faster, get the OK faster, get replies faster, - With less miscommunication. - And you reply faster, because shorter emails are easier to write.
  • 42. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking How to run fast in the dark
  • 43. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking: What we do When we’re checking on on a sprint, we ask: - What’s done vs undone - And for what’s undone, what of that is unknown. For the unknown, we ask if it’s a blocker.
  • 44. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking: What we do The Feature Done Undone Known Unknown Not Blocking Blocking
  • 45. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking: What we do The Feature Done Undone Known Unknown Not Blocking Blocking
  • 46. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking: Problems solved Surface unknowns early and ask for help - Customer, stack overflow, API author, etc. - Help is often asynchronous - Catch them early and they don’t become blockers Good technique for reducing fear and paralysis
  • 47. #FileMakerDevCon© 2017 FileMaker, Inc. 6. Unknown vs Blocking: Tips Easier to see unknowns if they are expressed as cases - vs running into “the wall” when you’re coding Creates two definitions of “blocking” - blocking my work, blocking shipment - hint: it’s almost never blocking shipment
  • 48. #FileMakerDevCon© 2017 FileMaker, Inc. Thank You! Please remember to fill out the session evaluation at: www.filemaker.com/devcon/evaluations FILEMAKER DEVCON 2017 JULY 24 - 27, 2017 | PHOENIX, AZ

Editor's Notes

  1. Please do not delete or change this slide.