A guide to the AgentBright development workflow.
Our roots: How We Work - Big Binary
For specifics, see the list below:
For development, we use a version of the Github Flow pattern:
- For each issue/feature, create feature branch
- Write code and commit
- Open pull request
- Upon approval, merge feature branch into the master
-
For each issue, create a feature branch
-
The branch name should start with the Github issue number
git checkout -b 1344-show-recurring-events-on-dashboard
We prefer to follow the red-green-refactor pattern of TDD:
- Write a failing test
- Write the minimum amount of code to get the test to pass
- Refactor the code to bring it inline with best practices
Commits should be descriptive, and encapsulate logicals chunks of the issue you are working on.
-
The commit message should end with
- #<issue number>
Add recurrings to events service - #1344
-
The additional description should outline the work the additions or changes that you made.
-
Use specificity of language and describe include the purpose or reasoning behind your code if it is not obvious.
Resource: 5 Tips for Writing a Better Commit Message
-
If the branch becomes out of date with the master, rebase:
git rebase origin/master # When the rebase is complete: git push -f origin 1344-show-recurring-events-on-dashboard
-
Squash your commits into a few main self-contained commits:
git rebase -i HEAD~5 # When squashing is complete git push -f origin 1344-show-recurring-events-on-dashboard
We use Instapusher to deploy our feature branches to Heroku.
- All commits made to a pull request will automatically trigger Instapusher to run on that branch
- To manually trigger an Instapusher job, push to remote, then
sit in your feature branch and run
instapusher
When you are ready for code review and testing, convert your issue into a pull request
-
Use hub to convert your issue to a pull request:
hub pull-request -i 1344 # replace '1344' with your issue number
-
Ensure the tests pass on CircleCI
-
Fix style corrections suggested by Hound
-
Ensure that the Instapusher job is successful
-
Assign the PR to the team member responsible for testing or code review
-
Write a comment to the assignee to let them know that the PR is ready for their feedback
Code review checks the following:
- Does the new feature work correctly?
- Is there appropriate test coverage?
- Was the implementation consistent with the requirements?
- Are there any requirements that need to be added or clarified?
- Does the code meet our style and best practices standards?
- Are there dependency, upstream or scaling concerns?
Things to remember:
- As a reviewer, be critical, but be fair, civil, and do not be overly stingy with praise.
- As the author, appreciate that anyone who reviews your code is giving you the opportunity to improve your craft.
- Defending perfect code is still an opportunity to improve how well you articulate your choices and your reasoning.
- Seize the chances you get to learn, and to teach.
- When the issue has been approved, assign it to the team lead
- The team lead will merge it into the master branch, and push to staging, beta, or production environments if necessary.