This is an often repeated lesson and one that I’ve personally realized lately is extremely important. It’s like unit testing, until you either do it or suffer from not doing it, it’s hard to realize the importance of. Two recent projects I’ve been working on have suffered greatly from not having the sever environments and build scripts worked out initially and used daily. Here’s a quick list of reasons to make deployment/configuration your first task and to deploy on at least a daily basis…
- Client management doesn’t exist without the ability to show progress. Progress can’t be just checkmarks on a project plan, clients need to see the application. Only way for them to see it is to have it up.
- Environments are rarely the same across developer’s local workstations to dev/qa/production environments. Working out those issues initially and as they arise (i.e. as features are added that require libraries/setup) is much easier to deal with – sometimes you find out too late that a library isn’t even available outside of the developer’s sandbox.
- Cross developer integration issues are worked out earlier.
- All stakeholders always have a way to see system progress. Some developers are scared of this, and sometimes for good reason. Most concerns about that can be resolved by having multiple deployment environments, so what non-developers have access to is more stable.
I dropped the ball in this area on two current projects and it’s taken weeks to recover from it. Never again will I let a project get far into development without having the deployment worked out and exercised on a daily basis.