Skip to content

Instantly share code, notes, and snippets.

@dantleech
Last active May 28, 2018 07:07
Show Gist options
  • Save dantleech/4be354f517c23ae59c488e6b6c9a75cf to your computer and use it in GitHub Desktop.
Save dantleech/4be354f517c23ae59c488e6b6c9a75cf to your computer and use it in GitHub Desktop.
Project checklist

Testing

  • Facility to write and execute E2E tests,
  • Facility to write and execute Integration (e.g. repository) tests.
  • Facility to control DB state effectively (e.g. fixtures for dev setup + tests)
  • Ability to test emails
  • Test reports (e.g. monitor test results over time)
  • Performance / load tests (e.g. Jmeter, Gatling, PHPBench)
  • Smoke tests (e.g. CMS pages) on local / int / live

Continuous Integration

  • Run all tests on every push
  • Feature builds
  • Static analysis (e.g. PHPStan)
  • CS sniff / fixing: (e.g. phpcs / phpcsfixer)
  • Database Migrations (e.g. Doctrine Migrations)
  • Ability to publish assets (e.g. test reports)
  • Automated deployment

Development Process

  • Pairing
  • Avoid knowledge silos
  • Be prepared to talk / video call
  • BDD: All new features should start with a feature file
  • BDD: Feature files to be named / annotated with JIRA ticket #
  • TDD: Tests before writing business code
  • Use of ADRs

Development Policy

  • Do NOT use git flow prefix.
  • Do NOT enforce HTTPS for dev (complications with certificates)
  • Host-independent application (should be able to run on e.g. localhost:8080)
  • Consistent naming everywhere (e.g. GH repo, Confluence)
  • Facility to employ feature flags
  • Clean code
  • Mandatory code reviews before merge
  • Branch protection: disallow merging to master
  • Pull requests must be merged by somebody else

Dev Environment

  • Easy, consistent, credentials: for database and application users (e.g. root/root, admin/admin)
  • No SQL dumps - project should be independent of production site
  • Mail catcher or similar
  • If required: Docker compose or equivilent (if we can run on bare-metal, then all the better)
  • XDebug
  • Profiler (e.g. Tideways / Blackfire / XDebug)
  • Development toolbar where applicable (e.g. Symfony profiler)
  • Fully decoupled from production

JIRA

  • Gherkin integration (link scenarios/features to tickets)
  • No pointless subtasks
  • No pointless workflow stages
  • Customize!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment