Pull Requests
Quality + Speed
Quality + Speed
- Quality = of the code/solution
- Speed = of delivery/deploy
Quality vs Speed
- find a balance between both
- Buddha: truth lies in the middle way
Quality factors
- QA
- Acceptance Criteria
- Coding Style Guidelines
- Pattern Guidelines
- Tests
- Documentation
- Code maintainability, simplicity, etc
Quality
at jobs we rock at Quality!!! :-)
Quality + Speed
- Quality = of the code/solution
- Speed = of delivery
Quality vs Speed
too much of one == less of the other
find a balance between both
Buddha: truth lies in the middle way
Quality factors
- QA
- Acceptance Criteria
- Coding Style
- Pattern Guidelines
- Tests
- Documentation
- Code maintainability, simplicity, etc
Quality at jobs
at jobs we rock at Quality!!! :-)
Speed?
let's balance it with Quality
Speed enemies
- changes to PR
- conflicts of opinions
Why no Changes?
-
Require time (Time vs Speed)
-
produce Context Switching
Greatest Trick for speed
-
Accept PR as is: do changes in another PR/ticket
-
delay changes as much as posible (Divide and Conquer)
PR nature
- 1 requester (did the job)
- n reviewers (check code, QA)
if there's a problem between parts
it can become a 1:n problem ;-)
1:n problem
A conflict is solved faster when
reviewers (n) help the requester (1)
so: try to side with the requester (1) ;-)
PR psychology
- at the moment of PR, lots of work is already done
- We all love to see our code in production ... fast
Speed : the mindframe
reviewers should:
-
have a helpful mind/approach
-
always review with speed in mind
-
devise tricks to speed up delivery
Type of Conflicts in PRs
-
the Broken
-
the Slow
-
the Ugly
their importance is in that order
1. Broken e.g.
- Tests don't pass
- Acceptance Criteria not met
- Corner cases break
Broken nature
several degrees of Broken
some are stoppers, some not
Trick: the more 'not stoppers' => more speed
so: aim for no stoppers
Broken : not stopper, how to
Broken When? : corner cases of slow % usage
trick: relax Acceptance Criteria, talk to PO
Talk and Agree: deploy now, fix it later
2. Slow
prove your point: provide a benchmark
Trick: the right questions:
- Slow when?
- Should this code perform fast?
can the change be delayed, i.e. done in another ticket?
3. Ugly
Style guidelines help here
Talk, agree, delay changes when posible
Recommendation: try to avoid this argument ;-)
Main Proposal: in Conflicts
Always talk!!!
Proposal: conflict solved
comment it in PR so others know
YES: Delay changes to PR
- Deploy now, do fix/change in another PR
speed goes up +1
YES: when asking for changes
- offer your help/time
- Pair Programming is +1 :-)
- keep a helpful spirit (speed in mind)
YES: offer your time
-
changes take time
it feels lots nicer if you offer help -
Pair programming is Awesome :-)
YES: Namespaces save time
Tricks
- other teams code (namespaces) in jobs should get relaxed reviews
- main thing: jobs does not get broken
NO: long threads
- PRs focus gets lost, other reviewers are discouraged, etc...
- 1:n problem can become unmanageable
- remember the psychological part ;-)
Proposal: PR deadlines
- after 2 days a PR passes to QA
- 2 thumbs make it shorter than 2 days
Thanks
Pull Requests: Quality + Speed
By Joaquin Rivera Padron
Pull Requests: Quality + Speed
some thoughts about the Pull Request process and how to achieve for Speed and Quality at them
- 1,588