7 Continuous Integration Ideas From CITCon

CITCon is the most intense event I know on the subject continuous integration, continuous deployment / delivery and DevOps. Discussion raged on throughout the day although we manage to keep it to minor scuffles when talking about feature branching…

With so many ideas to process after the event, here are my top 7 to start with.

Any practice that disallows refactoring is bad. So if you can’t feature branch and refactor, then don’t do it.” #citcon

@PaulJulius

1 - Understand the implications of DevOps

Patrick Debois first coined the term DevOps and it was great to have his insight at the conference.  There is still a gulf between developers, testers and server teams resulting in most software being very hard to deploy.  There is a broken feedback loop in many companies and even doing something as simple as talking to the server team about deployment can start you on the road to great improvements.

Patrick is currently working with Atlassian to help with their OnDemand SaaS offering, helping improve the deployment process by understanding how well we monitor and report on our systems.

2 - CI is more than just running Jenkins

Getting continuous integration working well for your company is still a challenge for most.  Whilst its pretty simple just to plug your builds into the CI server and get it to run your tests, that raises more challenges in itself:

  • How often should we run our builds?
  • What actions should be in our builds?
  • What information should our builds tell us?
  • What do the results mean?
  • How can we improve the way we do things?An important step is to work out what you want to get from CI, with in the context of your software development efforts and the wider business goals.

3 - If its painful, do it more often - if its fun, do it more often

Deployment is often a painful experience for teams and by delaying deployment and not doing deployment dry runs a vicious cycle forms.  As its painful, teams shy away from deployment - so when the time finaly comes there is much more to deploy and more opportunity for things to go wrong.

If its painful, do it more often so you learn how to manage and reduce the pain.  As with code tests, the more often you run them the more feedback you get and the quicker you can resolve issues.

Carrying out dry runs of the deployment in different environments is invaluable and less risky that production. Dry runs can be wiped and carried out again and again helping to ensure a smooth deployment and gather feedback to make the process more effective.

A nice addition to “if its painful, …” & “if its valuable, …” RT @patrickdebois: #citcon : if it’s fun, do it more often.

@jr0cket

4 - Understand what is important

Developers that understand the needs of the company they work for and the concequences of their actions are the ones that truely become invaluable and help a company be successful in a sustainable way.  Whilst some companies can survive Mortgage Driven Development for a little while, most will suffer badly.

When going beyond the basics of CI and moving to a continuous deployment / delivery approach, a solid understanding of the business is vital if you want to improve in a positive direction.

Great session with @benjaminm on what we can learn from CI @citcon ow.ly/7rqM2

@jr0cket

5 - Visualise everything

Understanding you system requires a good amount of monitoring and reporting on events.  There are a wide range of tools, such as Nagios that will produce detailed reports and real time warnings of issues.

Some issues can only be seen historically, so as you build up monitoring information you can identify patterns of behaviour and discover ways to avoid issues and improve the way the system works.

Also visualise the way you work and the way teams work together using techniques like wallboards & kanban boards.

6 - Keep learning

I think the following tweets show the diversity of subjects covered @CITCon and the sheer enjoyment that can be had in the software development world.

Organisational anthropology is a mechanism to incite or suppress insurgency. Didn’t expect that at conversation at #citcon

@andrew

Great fun talking about BDD, Cloujre, CI Server build jobs, visualisation, wallboards and double loop learning @citcon

@jr0cket

7 - Robot testing is cool

Playing with robots is cool, watching robots automatically run tests on an Andriod phone playing Angry Birds was amazing.

Thank you to…

Thanks to @PaulJulius and @@jtf for organising @citcon, Squirel and TIMGroup for sponsoring such a successful event. Wendy and the rest of the SkillsMatter crew for hosting and filming the event.

Some final tweets for thought

Using Chuck Norris to discuss negative behaviour

@benjaminm

Legacy code is only a problem for successful products

@jtf

Are your [agile] stories boring you? Then write more interesting stories. Improve the language. Adjectives, adverbs…

@PaulJulius

Notion: both feature branches and feature toggles should be short lived and aggressively tested.

@PaulJulius

Cucumber is an assumed starting point at #citcon, interesting

@illicitonion

In Feature Branching discussion. Reminds me of the blog I wrote a while back

@PaulJulius

CD is about delivering confidence

@Steve_Boone

Thank you.
jr0cket


This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket
Creative Commons License