Whenever I take on a new project, I like to use a checklist to make sure I’m covering important aspects of the project implementation.
Obviously this is a bit generic, and usually gets modified depending on circumstances - this one is for a Rails project hosted on Heroku..
What’s the general background to the project?
- History of development
- Site and app functions
- Architecture overview - front end, admin pages, APIs..
- Current versions (Ruby, Rails, PostgreSQL, Heroku stacks..)
Does the development process currently follow a regular pattern?
- Workflow (e.g. trunk based development?)
- Code repos, PRs, issue tracking
- Environments (dev, test, staging)
- Docker, Vagrant
- Local database copies, asset storage, vimeo sandbox
- Dependencies & installs (e.g. image processing)
- Unit tests, integration tests, functional tests
- Frameworks (RSpec, Capybara, Cucumber..)
- Browser tests (Selenium, BrowserStack..)
- CI (CircleCI, Travis, GitLab..)
- Acceptance tests (human)
Supporting the codebase won’t be any use unless it can be deployed..
- Staging and Production environments
Where does it run?
- Heroku dyno types and add ons
- Load balancers
- Background jobs
- Cron jobs
There are usually some 3rd-party services to manage.
- User account management
- Search indexing
External services that the project relies on.
- Monitoring (uptime, performance, alerts)
- Penetration testing?
Accounts, logins, keys
Vital to make sure that I can get access..!
- Status monitoring, alerts, analytics
There may be some history (especially good if design decisions have been documented)
- Project plans
- Design guides
- Incident reporting & downtime analysis