- Smaller commits = Less code complexity = easier to understand = easier to test and debug
- Smaller commits = faster code reviews = quicker feedback from reviewers
- Quicker feedback from reviewers = less (mental) context switching for the developer
As Jeff says -
In a continuous integration environment, the speed at which commits are tested, added to the build, and possibly reverted is paramount. Builds are also faster for small commits because they are, by nature, smaller. Faster and more frequent builds translates into getting the product out faster and getting feedback more quickly. And because the commit is small, if you need to revert back to an earlier version of a build, that is also easier to do. An added benefit is that if you need to remove a commit that has a small scope of functionality, only that piece needs to be removed from the build, which leaves other features intact.
You can check out how Shippable can help you #shipcodefaster!
"How long would it take your organization to deploy a change that involves just one single line of code? Do you do this on a repeatable, reliable basis?"
You can also ask the very same question in a different way - how many engineers does it take to deploy a single line of code change? (and how much time will it take them?)
Just a sample of the questions you need to ask before coming up with an answer to that question -
How much testing will you be required to perform?
How much supporting documentation will you be required to produce?
How long will you have to wait for a test environment?
How many dependent systems will you need to test?
How long will it take to approve the change?
And, last but not least, how many of those activities add value, and how many waste time?
As Martin Fowler tweets -
- Continuous delivery makes releases routine, every day (even several times a day) occurrences - for instance, Etsy says that a new engineer deploys on their very first day(even before they finish all their new employee paperwork).
- Deploying more frequently improves the stability of web services allowing companies toship code faster, to have fewer failed deployments and even if the deployment fails, to restore service faster.
- By automating the build-deploy-test-release process, continuous delivery lets teams perform these on-demand and both reduces the cost of development AND increases number of programs under development.
A webhook is basically the way a GitHub repository "talks" to a web server whenever the repository is pushed to.
As the webhook guide explains - These “webhooks” can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
Webhooks can now be configured directly as part of the repository settings (no API needed!). And webhooks are now easier to debug and even re-send. Webhooks are already one of the most widely adapted GitHub integrations and now that they are even simpler to use, will surely continue to be so!