Sunday, June 22, 2008

Productivity, Efficiency with Quick Deployment and Testing Environments

Below are the question project team needs to ask:
1. Are you giving the release after release for the bugs?
2. Is your release cycle dragging or delay in delivering?
3. Is your bug list growing?

If your answer is yes for one or more questions, then below could be the candidate reasons:
· Deployment sucks, takes tooooo long
· Inaccessible Testing environment for developers due to any reasons.
· No Rigor by QA Team on testing the functionality and bugs.

Believe it or not , most of the productivity is lost due to above reasons.
For example if your team has 10 developers, developer is losing 1 hr per day due to deployment for testing, team will be loosing 10hrs per day.

Loss of productivity = No. of lost hrs * No. of Team members. (Worst Case Scenario)

Some other parameters can be added if you want :)

Reason could be many,but, we want the way out:
1. Testing environment should be easy i.e. :
Checkout the code from CVS/SVN ,run ANT or any build script and application is ready for testing.

Most of the projects have lengthy process of deployment.
1. Checkout from version control takes time, I have seen checkout takes upto 1 hr, specially in cases of Offshore/Onshore model projects.
Solutions: Expedite this process by moving the server to the place where developer checkin the most.
2. Build process, could take long.
This could be due to not well written ant tasks and dependencies
Solution: This could be avoided by dividing the complex ANT tasks to small tasks. i.e. There may be some code in the project that may not change regularly ,this is a candidate for moving to different ant task.
3. Configuration changes
a. This process is complicated by no. of variables that needs to be replaced in different config files
Solution : This could be done in 2 ways :
a. Deployment guide:
i. Create a deployment guide as the project is developed, Keep update for every change that requires the config file change.
ii. This has the drawback of human errors, below process avoids this drawback.
b. Automated Config Replacing scripts :
i. Given the config files and the Variables and its values in files , script should replace all the variables in the config file.

2. Simple Deployment guide :

Contents could be
a. List of files that needs to be changed with complete dir path
For each of the file, highlight the variables in colors which need to be changed
b. Any project notes to the deployer should be mentioned in this document.

Notes :To avoid the human errors while changing,automate the variable replacement in the config files

Deployment guide also requires testing.
i. This can be done by giving the deployment guide to any team member of other project and He should be able to deploy without any instructions from the project team.

Conclusion:
Invest time on Deployment process (version control, Build and Deployment) to reduce the time and easy deployment and access to various test environments. This leads to Productivity, Efficiency which leads to quick and ontime delivery.

What’s your deployment time?

No comments: