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

Steve Berczuk's picture Steve Berczuk

Steve Berczuk is a Principal Engineer and Scrum Master at Fitbit. The author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, he is a recognized expert in software configuration management and agile software development. Steve is passionate about helping teams work effectively to produce quality software. He has an M.S. in operations research from Stanford University and an S.B. in Electrical Engineering from MIT, and is a certified, practicing ScrumMaster. Contact Steve at steve@berczuk.com or visit berczuk.com and follow his blog at blog.berczuk.com.

About the author

Brad Appleton's picture Brad Appleton

Brad Appleton is a software CM/ALM solution architect and lean/agile development champion at a large telecommunications company. Currently he helps projects and teams adopt and apply lean/agile development and CM/ALM practices and tools. He is coauthor of the book Software Configuration Management Patterns, a columnist for the CMCrossroads and AgileConnection communities at Techwell.com,  and a former section editor for The C++ Report. You can read Brad's blog at blog.bradapp.net.

About the author

Robert Cowham's picture Robert Cowham

Robert Cowham has long been interested in software configuration management while retaining the attitude of a generalist with experience and skills in many aspects of software development. A regular presenter at conferences, he authored the Agile SCM column within the CM Journal together with Brad Appleton and Steve Berczuk. His day job is as Services Director for Square Mile Systems whose main focus is on skills and techniques for infrastructure configuration management and DCIM (Data Center Infrastructure Management) - applying configuration management principles to hardware documentation and implementation as well as mapping ITIL services to the underlying layers.

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!

Upcoming Events

Oct 12
Oct 15
Nov 09
Nov 09