(Note: this post is still in beta.)
It’s great how easy these days is to have a work environment that supports agile process (continuous integration/delivery, [B|T]DD) almost for free.
The fact alone that all this stuff is running on someone else machine is great. But, most important, there’s no need to spend a penny or spend very little compared to having your own infrastructure and people maintaining it (even if people means just you).
Continuous Integration & Delivery
High standard and accessible production environment is becoming more and more available for developers and small companies too: Heroku is an example. I have Travis CI configured to automatically deploy one of my apps to the production environment as soon as I push any change to the branch master.
The Maven Release Plugin helps to automate many boring, time-consuming and easy-to-forget (indeed, especially because they are boring and time-consuming) tasks, from “checking that there are no SNAPSHOT dependencies” to “tag the code in
the SCM [Github] with a version name”.
TDD (better yet, BDD) & Specs
Another example, when I’m modifying the grammar the parser I’m implementing supports, I:
- improve the spec/test accordingly,
- implement the requirements, and
- push the changes to GitHub, which triggers Travis CI, which, in its turn, updates the project’s page hosted with GitHub Pages.
(Have a look here if you are interesting on publishing to pages automatically from Travis CI)
Why automating tasks is so important? For many reasons, being the most important the fact that this is The most important thing you need in order to continually delivery your app in production. The easier the release process, the more often a new version will be delivered.
Consider: a) It takes 3 days best case scenario vs. b) I just need to push a button. In which case are you more likely to release (or not) a new version of your product?
A Few Notes…
Here, I mentioned:
- Travis CI
Technologies are really just a mean to an end, though. You can replace Maven by Gradle, Travis CI by Jenkins, Heroku by one of the many PaaS available out there. Pick the ones that suit you better, release often! and make your
boss customer happy.