Back-end Development

Discovery Questions

Here are some questions I find helpful to think about to discovery requirements or dependencies in the process of building new back-end features or services.

These questions should be asked as early as possible as to minimize re-work.

  • Does it require database changes?
  • Does it require backfilling data that didn’t exist prior to a certain date that the feature depends on?
  • Does it require a new API endpoint or the modification of an existing one?
  • Is there a rough idea of the API request payload? Required or optional attributes?
  • Is there a rough idea of the API response payload?
  • Performance concerns (slow queries, external service calls, payload size)
  • Any inter-service calls expected?
  • Any external service calls expected?
  • Are there dependencies or pre-requisites that can be identified now? (e.g. data sources, API plumbing, account establishment)
  • Can a trial or test account be used for a vetting process?

Pull Request Template

Here are some checkboxes to help evaluate my own changes before requesting a code review from others.

  • This PR has Security and Privacy Concerns or Personally-identifying information I’ve addressed
  • I have updated corresponding API documentation
  • My changes do not generate new warnings (Rails: boot app with $VERBOSE = true somewhere, e.g. config/application.rb)
  • I have added corresponding test code that demonstrates that my feature or fix works as intended
  • I have added required environment variables to all environments
  • I explained why this change is happening in the PR desc or associated ticket

Development Flow

  • Write some code on a feature branch
  • Write positive and negative test cases for the code to confirm it’s working as expected
  • Plan for any backwards compatibility, add more code and tests
  • When the CI suite passes, ship the code to a pre-production environment for further integration testing
  • When integration testing is complete, ship to production. Integrate main branch changes into feature branch frequently.
  • Repeat