I've been learning about continuous integration (CI) and continuous deployment (CD) from a number of people at Red Gate Software. As a company, we've embraced the concepts, pushing most, if not all, of our software through this process. We are using our Deployment Manager software internally for more and more of our web projects. Some of our tools, SQL Prompt, include "experimental features" pushed out rapidly to users, with the options for them to turn these features on or off as users desire. We update these tools often, releasing dozens of times a year. There are no shortage of challenges in working at this pace, but we are addressing the issues as best we can.
One of the big issues that I see in a CD environment is there is a bigger burden placed on developers to ensure the code is of very high quality. In this type of environment, there may be less QA work being done manually, and more automated testing. There is a quicker turnaround when you find issues that developers need to correct. Customers see changes sooner, and more often, and will expect corrections or new features to appear just as quickly. All of this adds up to more pressure on individual developers.
The question I wanted to ask this week is about how developers feel about this? You could take this question a number of ways, but let us know what you think.
Is Continuous Deployment good for developers?
Does this result in higher quality work from developers? Is it more stressful? Does it mean that developers get into a rut and not learn new techniques because they are working faster? Does a developer have less responsibility because automated test and customer feedback will allow them to quickly address issues?
I think this is a multi-edged sword for developers. It can be a burden or a blessing, but a lot of the way you view it probably depends the individual developer. No matter what the issues, if you use it to improve your skills, as well as your software, I think it's the best way to build software.