Recently Oren posted about how Tools Matter. I agree completely (110%!). I remember a time when we didn't have automated builds and most assuredly didn't have automated deployments either. I remember how long it took to get an environment set up. Our testers would ask us to put the latest code in an environment and it would literally take over an hour sometimes to get the environment updated because we would deploy first to a DEV environment and then a TEST environment for them. Then we would have to test it to make sure we didn't forget something. Then we would bless it off to the testers.
It was a very manual process and the builds were done with F5. We had environment files that had to be set to be the one for each environment. Most people have these with multiple configuration files for each environment (we don't anymore, but that is a future post). And then because you were copying from your local workstation, you might forget a file or include files with permissions you should not have.
Now when our testers ask for a build it takes less than three minutes. Run the candidate build with our automated build tool. When that is completed, open the area where the code dropped on the build machine, find the deployment file and run it (double click it). Wait for the deployment script to finish. Inform the tester that it is done. Done. Like dinner. I can deploy to four environments within this 3 minute time frame.
Soon we will have it where you click just one button and it runs the candidate build and deploys it when it completes (and sends an email after it is done to the team because sometimes I forget to tell my tester that I am done deploying).
Blindingly fast. Something that used to take hours. Why? Because we didn't use to have the right tools. Now we do. I smile every time I use it now because I remember how bad it used to be (and I am an automation addict, but that is another story). Now our testers have come to depend on how fast it is. They can now get many, many deployments per day when they used to only get one or two a day. That leads to a faster feedback cycle and better quality code. Which in the end leads to a faster release cycle with more features.
Another area we have tackled is speeding up our testers with automation. And we have refined it as we have learned more about what we are doing. We constantly look at ways to improve our environment with tools.
Tools matter. Look for your pain points. Then look to what can help solve that. Automation or other tools to help you speed your process up. Always remember that any new tool comes with a learning curve, but with the right tools the ROI is much higher in the end.