Private Developer Workspaces: Where the Development Process Meets SCM Process

[article]
Summary:
Software configuration management supports the delivery of application code in a reliable, repeatable manner. Having a CM process in place does nothing for the success of your organization unless you have mechanisms in place to develop application code reliably. Proper private workspace are a key element linking your SCM and your Development processes. In this article we discuss why they are important and how you can set up private code workspaces to help your team to be more effective.

"I regard it a basic programmer's right that I should be able to, at any time, check out all the source code and build it."

-Caroline Foster on the Extreme Programming Yahoo Groups list, February 2003.

Introduction
Being able to reliably create a version of your application that is consistent, regarless of where you are creating it is a key success factor for a project. All code starts in a developer workspace, and the more attention you pay to setting up the workspace, the better you will be in the long run. Private Workspace is one of the central patterns in the SCM Pattern Language. This article also follows up on our promise to fill in some of the details from our article The Importance of Building Earnestly.

Effective private workspaces give you the following advantages:

  • Repeatability: Developers are building, testing and deploying many times a day. This gives you amble opportunity to find problems with the code and the deployment and install process before you unleash your code on customers (or Quality Assurance Teams). This repeatability leads to reproducibility
  • Productivity: By providing a way for developers to control how and when they start working with new code you allow them to focus on the task at hand and minimize interruptions in thought (and enabling flow). This helps the individual. Likewise by providing build and test processes that developers run pre-commit, you catch integration issues before they make it into the repository, and improve the productivity of the team
  • Progress: By enabling frequent integration and testing, you give developers more confidence in the codebase. This will enable them to feel more comfortable about integrating frequently, and moving forward in a regular fashion
  • Accountability: Developing build and integration processes at the beginning of the process allows you to get the application to a point where you can demonstrate it to stakeholders earlier

While it may not be trivial to create private workspaces, the benefits allow you gain make it well worth the effort.

What Is a Workspace?
Before we go forward, let's define what a workspace is. A workspace is:

  • Code and other files that you are working on
  • Any locally built components, which you create from the source code (or retrieved from a repository in a controlled fashion)
  • Third party components at the correct version for the project
  • Resources that you need to run and test the application. For example, if your application updates a database, you should have a private database schema, or if your application uses more than one schema, a private copy of the database
  • Any tools that you need. If the tools are the same for all versions of your app, they can be centrally installed, or they are be associated with a specific component

The key theme here is that you should have (in effect) a private copy of:

  • Any resource that you write to. This includes both "soft" entities such as source code and database space, as well as "hard entities" such as network devices or application servers
  • Any resource that might change over the course of the project so that you can control when to accept the change. This includes, among other things, code, libraries, and databases

You should be able to create a Private Workspace with a simple process not too different from:

  • Install a version management client
  • Check out the files for the appropriate version of the application
  • Execute a script to build, configure and deploy your application

There may be some extra steps, to be sure, but you want to automate as many steps as possible to ensure that the process is reproducible. Allowing developers to create Private workspaces easily is a core element of the Agile Cycle.

Pages

About the author

About the author

About the author

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!