Building great software is more than just writing code. Here are a collection of tools and best practices specifically drawn from my experience developing ruby applications for the last 15 years.
This is a draft cheat sheet. It is a work in progress and is not finished yet.
Code Quality : Static Analyzers
PRs should be as small and incremental as possible
Include screenshots / animations when appropriate
All CI tests should pass prior to assigning reviewers
Don't take feedback personally! Receiving and learning from criticism is one of the best ways to become a better software developer.
Unit Tests : test the output of a single given state
Functional Tests : test the output of changes to state
: test the results of cross-service interactions from the user's perspective. Use Cypress
Implement continuous integration, which runs all tests, performs static analysis, and automates security audits.
Ensure that test coverage is over 95%.
Identify and eliminate N+1 queries. bullet
Ensure that GZIP / HTTP Deflate are enabled and properly configured.
Use Rails caching
. It includes easy-to-implement patterns for lots of different types of caching.
README.md must include these sections: Summary, Prerequisites, Infrastructure, ENV Variables, Cron, Gotchas
Provide well-formatted and sensical seed data.
Diagram complex processes
is great for this.
APIs should have comprehensive Swagger
Frontends should have wireframes prior to writing code.
Pivotal / Jira stories document application evolution.
Always consider the perspective of a developer who has never touched this project, but needs to rescue it because you’re on vacation.