Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Say you have a traditional dev > test > production process say on a monthly release cycle.

What are some of the steps you need to take and put into place to move towards a model of continuous delivery with frequent releases per day.

Please make one suggestion per response. I would be interested in using voting to indicate which steps the community feel are most important.

share|improve this question

closed as not constructive by Michael K, ChrisF Apr 26 '12 at 14:14

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
Given your developers have put together the actual program(s) that need to go to the customer, what then needs to be done to actually do a full delivery? –  user1249 Apr 26 '12 at 10:46
5  
I am not sure, if list like answers are on topic. And voting may not reflect importance, but quality of answer. –  thorsten müller Apr 26 '12 at 10:46
3  
the first paragraph of that wikipedia link tells you a number of things you should do to achieve this - automated testing, continuous integration and automated deployments. –  Ozz Apr 26 '12 at 10:55
    
What environment is this for? That would help direct you to specific resources. –  Joshua Drake Apr 26 '12 at 12:09
add comment

6 Answers

Setup version control (if not already) and define a branching model/strategy to follow.

The shorter your release cycles are, the more important branching will become and every developer must rely on certain branches to be in defined states.

share|improve this answer
add comment

I'll kick this off to get us started....

Automated Testing

Having automated unit tests, integration tests and acceptance tests are vitally important if we're going to allow everything to flow straight through to production.

Even the best and most thorough manual testing process in the world would simply take too long if the application has any degree of complexity.

share|improve this answer
add comment

I would suggest to have communication transparency between your
Development team <-> Testing team <-> Clients.
Cause most of the problems arise because of miscommunication.
Probably setup a sharepoint site to display the current status of development so everyone is aware of whats going on.

Update: Try also to plan a project status review meeting (every week possibly).

share|improve this answer
    
I think and want to notice: it's important to do it as often as possible. –  OZ_ Apr 26 '12 at 11:25
add comment

You need to automate the complete delivery cycle, so one feature you will need is

automatic deployment

For web applications, this often seems to be trivial, for desktop applications this depends a lot on how your production environment looks like and may be far from trivial.

share|improve this answer
add comment

Rollbacks

A fast and reliable rollback is going to be massively important if you are going to open the gates to continuous delivery.

In the case of issues, you want to be able to switch back to the previous known version of the software at the first sign of problems.

Closely related to this would be good monitoring tools that quickly alert you to odd states or errors that are occuring in your application.

share|improve this answer
add comment

I find that the quickest and biggest improvement to get folks moving down the path is to set up a build machine and integrate it to kick off builds when code is checked in to version control. Even if the boss doesn't let us move any further down the CI/CD path, having builds ready all the time saves on stress and eliminates the "only Bob has the right stuff on his machine to make the build and he went home hours ago" stress.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.