How to deliver software: Difference between revisions

From YM2149.org
Jump to navigationJump to search
No edit summary
 
Line 19: Line 19:
* eat the frog, within reason
* eat the frog, within reason
** not eating the frog risks development that may need to be partially undone
** not eating the frog risks development that may need to be partially undone
** another way of looking at this is taking opportunities to get ahead of the curve e.g. not treating deployment as an afterthought
** whereas picking too hard an option is at risk of delaying delivery due to too many surprises
** whereas picking too hard an option is at risk of delaying delivery due to too many surprises
*** when migrating a dozen services for example, do the easiest one first to find out what the baseline surprises are
** you are never going to find a roman road between A and B so it's not a big deal, focus on deliverables of value even if they're not the ones originally planned
** you are never going to find a roman road between A and B so it's not a big deal, focus on deliverables of value even if they're not the ones originally planned



Latest revision as of 08:54, 23 February 2025

Guidance

Process

  • default branch should always be releasable
    • any developer starting a feature branch can be confident of a stable base
    • also merging a feature branch into the default branch does not build upon questionable code
  • a ticket is done when the changes are in production
    • do not deploy on friday, allow 24 hours for unforeseen errors
  • split work feature-by-feature, not layer-by-layer
    • descope tasks that can later be fixed forward
  • squash merge makes the history less useful for investigations or revert
    • in particular when a story results in a refactor commit followed by a feature commit, combining those throws away a ton of information and may make refactoring less attractive to developers
    • they should not be in separate pull requests as refactoring needs context or may be negative work, and benefits from a free round of testing
  • merge your own pull requests, own that responsibility
  • keep your own tickets up to date
    • in particular, only the assignee knows when it can really be moved to done e.g. experimental cloud resources may need to be tidied up