A comparison of software development management servers and power station monitoring systems: The idea of cross-functional software development servers appeals to me because we want to encourage collaboration across disciplines in agile teams. In my opinion, each discipline using a different user interface to access their data in a different server discourages this.
Talking with an old colleague about software project measurements and software project management dashboards, I was reminded strongly of my very first professional software development project almost twenty years ago.
It seems that if you work in the software development industry for any length of time, you find yourself solving the same sort of problem over and over again. In fact, the whole premise behind the idea of analysis and design patterns requires that you do. A key skill is the ability to abstract lessons learnt solving a problem in one context and apply them to a similar problem in a different context.
My very first project was a management system for an oil-fired, electricity generation station in the UK. Each of three servers was connected to a massive turbine by hundreds of i/o devices. These devices monitored all sorts of temperatures, pressures, revolutions per second, switch positions and indicator levels. Each server collected, processed and presented this raw ‘real-time’ information in different forms on workstation screens in an operations room. The three turbine servers also pumped information into a database on another central server for post-event analysis, maintenance and operations planning, efficiency level monitoring, cost predictions, and all sorts of other engineering and business analysis.
In comparison, most software development projects will have ‘management’ servers such as a:
These servers are constantly collecting, updating, retrieving and deleting data about software development projects. Like the power station monitoring system, each software development server presents both ‘raw’ and processed information to users interested in what is happening in one project or across a set of projects at the current time. Also, like the power station monitoring system, there is a often some sort of management server collecting data from these various operational servers for more sophisticated management reporting, dashboarding, and time and event based analysis.
We could go on and on about the similarities between the software management servers and the power station system, comparing things like:
However, the initial thing that grabbed my attention was the obvious big conceptual difference between the two architectures. The difference is the cross-functional nature of the servers in the power station system in comparison to the generally single function nature of the software development servers. The servers in power station system collected data about all aspects of one and only one turbine. There was not one server for temperatures in all three turbines, another for pressures, another for speed, etc. In other words, the servers in the power station system were cross-functional. The servers in a typical software development enviornment are typically dedicted to a single function.
The obvious benefits of cross-functional servers are:
The idea of cross-functional software development servers appeals to me because we want to encourage collaboration across disciplines in agile, cross-functional teams. In my opinion, each discipline using a different user interface to access their data in a different server discourages this. This is probably why during my five years at Borland, StarTeam was my personal favorite server-based product because it does span more than one discipline. More recently, Microsoft's Team Foundation System (TFS) also seems to be a move in this direction.
An old colleague, Phil Bradley, used to talk about cross-functional servers as a ‘Project in a Box’. As I understood it, his vision was of a project manager walking into a new project area with a Unix server containing all the software he/she needed to run that software development project. Power it up, enter details of the team, their roles, configure the key characteristics of the project, and you were up and running. Even better if, once running, the server could also automatically locate the project management ‘warehouse’ server and start to communicating measurements to it for higher-level analysis and project portfolio management.
Obviously, there would be certain logistic problems caused by the use of physical servers but with server virtualization most of the problems with physical boxes no longer exist … and maybe the idea of cross-functional servers for software development projects is not as difficult as it might once have sounded.