|
|
@ -0,0 +1,74 @@ |
|
|
|
|
|
--- |
|
|
|
|
|
title: Microcommits |
|
|
|
|
|
author: brett |
|
|
|
|
|
date: 2015-06-24 |
|
|
|
|
|
template: article.jade |
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
A look into the new development methodology of microcommitting. |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
Lately everyone has been talking a lot about |
|
|
|
|
|
[microservices](https://en.wikipedia.org/wiki/Microservices), or the idea of |
|
|
|
|
|
making services as small as possible. Making things smaller seems to be the |
|
|
|
|
|
trend in development, making development cycles smaller with |
|
|
|
|
|
[agile](https://en.wikipedia.org/wiki/Agile_software_development), making |
|
|
|
|
|
test cycles smaller with |
|
|
|
|
|
[continuous integration](https://en.wikipedia.org/wiki/Continuous_integration), |
|
|
|
|
|
making release cycles smaller with |
|
|
|
|
|
[continuous deployment](https://en.wikipedia.org/wiki/Continuous_delivery), |
|
|
|
|
|
making applications smaller with |
|
|
|
|
|
[service oriented architecture](https://en.wikipedia.org/wiki/Service-oriented_architecture), |
|
|
|
|
|
and then again making applications smaller with microservices. It would only |
|
|
|
|
|
make sense then that the methodology of `microcommits` will yet again make |
|
|
|
|
|
things smaller, in this case our commits. |
|
|
|
|
|
|
|
|
|
|
|
As we all know developers easily lose their train of thought due to many things, |
|
|
|
|
|
like, noise in the office or just the presence of other human beings or sites like |
|
|
|
|
|
[hacker news](https://news.ycombinator.com/). These distractions mean that |
|
|
|
|
|
sometimes they have unfinished code changes just sitting around locally. In this |
|
|
|
|
|
day and age, that code is a new feature or bug fix, having it just sit around on |
|
|
|
|
|
a developers machine will cost you money! You need those bug fixes as soon as |
|
|
|
|
|
possible to keep your users from rioting and moving to a competitor and you need |
|
|
|
|
|
those new features to attract new users and happy and/or new users means more |
|
|
|
|
|
money for your company. |
|
|
|
|
|
|
|
|
|
|
|
So, how do we solve this problem? Just like these other methodology changes, |
|
|
|
|
|
microcommitting is a fairly simple idea: make a part of our development process |
|
|
|
|
|
smaller/shorter, in this case our commits and our pushes to the main git repo. The |
|
|
|
|
|
idea is to try and shorten your commit/push cycle for each developer down to as |
|
|
|
|
|
short as possible. Meaning that every developer must be committing and pushing the |
|
|
|
|
|
changes that they have locally at least once within this time frame. I have |
|
|
|
|
|
found that a good time frame to start with is 5 minutes. It may seem like a very |
|
|
|
|
|
long time to start with, but you shouldn't expect developers to be able to just |
|
|
|
|
|
change their workflows over night, you should start with a high interval like 5 |
|
|
|
|
|
minutes and then slowly you can work them down to about 1 minute, maybe even |
|
|
|
|
|
less if your team is diligent enough. |
|
|
|
|
|
|
|
|
|
|
|
Microcommitting is only a small piece of the puzzle, however if you pair it |
|
|
|
|
|
together with continuous integration and continuous delivery, then BAM! you have |
|
|
|
|
|
new features and bug fixes going out to your users at least 100 times per |
|
|
|
|
|
day... per developer! Now, how do you like that? |
|
|
|
|
|
|
|
|
|
|
|
Some may point out a crucial "issue" with microcommitting, which is, if a |
|
|
|
|
|
developer is suppose to be committing/pushing code every minute (or less) how |
|
|
|
|
|
are they going to have time to actually write the code? This is true, if they |
|
|
|
|
|
are manually writing commit messages and running git commands by |
|
|
|
|
|
themselves. However, I have found that microcomitting is most effective with |
|
|
|
|
|
automated commits. If we have automated continuous integration and continuous |
|
|
|
|
|
deployment, why can't we have automated continuous commits? The easiest way to go |
|
|
|
|
|
about continuous committing is to setup a service or cron on the developers |
|
|
|
|
|
machines which will automatically add all their local changes, commit and push |
|
|
|
|
|
their code. You can use something like the following: |
|
|
|
|
|
|
|
|
|
|
|
```shell |
|
|
|
|
|
git add . && git commit -m "`whoami` - commit - `date`" && git push |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
There you have it, the new concept of microcommits. It may take a few hours, |
|
|
|
|
|
maybe a day or two to get your development team up to speed, but once they have |
|
|
|
|
|
their commits down to the minute or sub-minute, you will know be able to notice |
|
|
|
|
|
a huge change in not only user satisfaction, but developer satisfaction as well. |
|
|
|
|
|
|
|
|
|
|
|
Enjoy. |