CTO 24/7 7660 Woodway Dr., Suite 583, Houston, Tx 77063 | Contact Us | RSS Feed | Sign In

Depending on the service level agreement, it could be a lot! Our mission is to control the risk around the cost, schedule, and quality of what we do. If we miss the target, we ensure you’re not left out in the cold. Learn how we prove it.

Learn More

Project success doesn’t just happen. It’s the result of planning, managing scope, resourcing, risk management, and fostering a commitment to project results. Learn what we can do increase the probability of your project’s success.

Learn More

We define what we’re going to do, when we’re going to do it, how we’re going to do it, and why we’re going to do it that way. Learn how we can provide a higher level of transparency and visibility than you may be used to.

Learn More

What does your current provider offer to reduce your financial risk? Schedule risk? Quality risk? Learn how to approach your technology needs in a different way.

Learn More

Imagine its late Sunday afternoon… you’re at the office, and have been all weekend.  You are diligently working to ensure that the Monday build deadline is met.   You have been testing your code, and all is looking good in your dev environment, so you decide it’s time to check in your code and run the build process.  But once you get the latest code from your repository the build no longer compiles!!! How frustrating!

Why did this happen… who is responsible… You could be here all night trying to track down the cause!  If you are working in a remote environment or on a multi-site team tracking down the problem will be even more difficult.

Now imagine that your development team uses a Continuous Integration (CI) process.  When anyone checks in code to the team’s source code repository the build is automatically run, and if there are any compile issues an email is sent out to the team.  Now you know exactly what code broke the build, and which team member was responsible.  Better yet, the issue can be addressed immediately.  But why stop at just compile issues?  Why not automate your suite of unit tests as well?  Throw in a code coverage tool and just imagine how confident you would be that not only your build will consistently compile, but that the new code you have introduced has not broken any existing functionality.

If your team does not employ any of the tactics mentioned above, you know these integration pains firsthand.  And while implementing a Continuous Integration process is not a change that will happen overnight, the time and effort spent in implementing such a plan will certainly be less than the amount of agonizing hours spent by team members tracking down such integration issues.

According to Martin Fowler:

The fundamental benefit of continuous integration is that it removes sessions where people spend time hunting bugs where one person's work has stepped on someone else's work without either person realizing what happened. These bugs are hard to find because the problem isn't in one person's area, it is in the interaction between two pieces of work. This problem is exacerbated by time. Often integration bugs can be inserted weeks or months before they first manifest themselves. As a result they take a lot of finding.

I recommend implementing your CI process in stages:

  1. Implement a Source Code Repository that meets the needs of your team.  For example, does it work well with remote teams (accessible from the internet)?, does it integrate well with other CI tools (auto-build tools, unit testing tools, etc.)?
  2. Document your build process and train all developers on this.  This should clearly layout items such as when you should check in your code, what structure you will use and what each folder is used for, under what circumstances to tag or branch the repository, how to version the build, etc.  The idea is to make sure everyone is familiar with and follows this consistent process.
  3. Once this is in place you should add the automated build component. There are a lot of good tools out there.  Finding one that integrates with your code repository is a must (this should not be hard).  Here is a feature matrix published by ThoughtWorks that is an excellent resource for evaluating which CI system is the best fit for your organization.
  4. Train your development team to effectively use test-driven development and strive to have the team write ‘self-testing code’.  This is the hardest and most time consuming step because this is not just a tool that needs to be learned and configured… this is a fundamental change in your approach to writing code.
  5. Automate the running of your unit tests.  Once the team is writing effective unit tests, you will want to have these run every time the build is compiled.  This adds an even greater level of assurance that everything is still ‘a-ok’ after introducing new code.
  6. And finally, use a code coverage tool to ensure maximum effectiveness of your unit tests.

Comments

Jason C Daniels

Wednesday, February 25, 2009 12:36 PM

Jason C Daniels

Good overview article. However, continuous piece of mind is a bit overstated.  Unless an entire set of Configuration Management are tackled your CI could prove bothersome... This happened aroudn my job, and I got to be the lucky duck to tackle the CM issues ... It was badly needed, but slapping CI in place *before* getting our CM issues figured out shied other internal development groups away from CI... Perhaps for the better as those products have yet to tackle some of the CM issues I had to. . . These issues get into where third party libraries are stored, how they are referenced for compilation, the over all directory structure from an enterprise level, how these things relate to source control, and how to keep the CI system in sync with changes to source control (i.e. trunk is always the latest in our SCC system, so when a release happens and the next rev becomes the trunk, we still need CI for those times we do maintenance releases... we had to set out a plan for how to keep the prior rev in CI , and when to enable and disable it within the CI software... an easy item to overlook...)

Jason Short

Wednesday, February 25, 2009 8:01 PM

I think that the CI peace of mind angle is underplayed most of the time.  I know that since we have instituted CI and TDD my peace of mind for each build has gone way, way up.

Is it perfect?  No.  Do you still have 3rd party integration issues?  Yes.  But it minimizes the risk in your code (the only part you can control anyway), and gives you the confidence to approach 3rd party vendors with specific scenarios of integration.  They will thank you many times over for quick, reproducible usage scenarios that you need in your product.


payday loans United States

Saturday, July 17, 2010 4:38 PM

payday loans

I have learned from experience that the greater part of our happiness or misery depends on our dispositions and not on our circumstances.

term papers online Canada

Sunday, August 29, 2010 7:16 PM

term papers online

In my think buy term papersafford primo aid to students at all levels. This site house has been exclusiveresource for me.  I have used this database to find sample papersfor all of the courses I have taken till, and what capitalpresence to see how otheracademicians have proceed all of these topics.  I have gotten dignifiedmarks on all my custom essay.What the main resource for all students!

Add comment




  Country flag