Posts Tagged ‘feedback’

Continuous Integration- Like a Perfectly Functioning Toaster Oven

July 12th, 2010 by clucca

Where would we be in the world if we didn’t have feedback loops? Whether you know it or not, feedback loops are everywhere and you probably use them every day. Your toaster oven, your car, and the computer you’re using right now to read this blog post- feedback loops are everywhere.  Heck, even most biological organisms including humans and animals are constructed out of feedback loops. (Don’t believe me?) It’s the basis of all life!

A classic example of a feedback loop is the temperature control on your toaster oven. Toaster 300x300 Continuous Integration  Like a Perfectly Functioning Toaster Oven

Let’s imagine that we set the temperature to 300 degrees.

Here is the loop in which your toaster oven sets its temperature to 300 degrees:

1. Check thermostat for temperature

2. If greater than or equal to 300 degrees, stop heating coils

3. If less than 300 degrees, heat coils

4.  Goto step #1

“So what?” You’re probably saying to yourself, that’s easy.  Provide feedback to a device and it’s behavior will change. Why is this a big deal?

Continuous integration is the feedback loop for your development organization. It’s a feedback loop for people. It allows your developers to rapidly change course at a moment’s notice.

The Continuous Integration Feedback Loop

Let’s run through the continuous integration feedback loop, which is remarkably similar to the toaster oven.

Here is the feedback loop for a developer while using continuous integration:

1. Checkin code

2. Receive e-mail of build results

3. If build/test is success, enjoy the fruits of your labor

4.  If build/test is broken, fix and Goto step #1

If you don’t believe a feedback loop is necessary, if you’re thinking everything is working fine, you’re fooling yourself!  The reason? If there is a problem, you’re just not aware of it. In the same sense, would you just turn off the thermostat in your toaster?

Here’s how the toaster works without the feedback loop:

1. Heat coils

2.  Burn down house

And that’s what NOT doing continuous integration is like… playing with fire.

A lot of times I hear from customers who aren’t doing continuous integration that it’s just too hard to implement CI in their organization. The reasons vary, but usually come down to not being able to afford rewriting manual processes already in place in order to gain a rapid, consistent build running. To this I say, you are using the wrong tools, and bad practices to boot. The amount of rework and frustration you will save will be worth your effort. It’s a fools game not to expose your integration problems to the rest of the organization.

When I talk to customers who HAVE implemented a CI solution, I’m astonished at what I hear. They say “We never know we had so many issues until the QA cycle” or “We can’t’ believe we ever lived without this.”

Changing course is one of the key principles of Agile; inspecting and adapting is what allows your team to avoid disasters. It gives visibility into what’s happening with your current processes. Continuous integration is the tool that you need to allow your teams to function like a perfectly functioning toaster oven.

So what does a world look like without feedback? Houses on fire, cars crashing, development organizations failing and developers blindly making disastrous coding changes. Do yourself a favor, and think about feedback.