Architecture By Baseball: Spring Training
This is the eleventh in a series of articles about how we can learn about software architecture by studying and comparing it to the sport of Baseball. This series was inspired by the book Management by Baseball.
As a baseball fan, some of the sweetest words that you can hear are “Pitchers and Catchers report today”. The pitchers and catchers are the first players to report to Spring Training, so when you hear that you know that baseball is on its way. Spring Training is a chance for the players to get back into shape for the season. It is also a time when young players get a chance to “make the big team”. Managers will also use Spring Training to try players at a new position, make changes in the batting order and integrate new players into the team. Spring Training also involves exhibition games that give the players a chance to experience game play before the official season starts.
The benefits of Spring Training for a baseball team can be lumped into one of three categories:
- Getting back into “game shape”
- Learning new skills / positions
- Jelling together as a team
Spring Training for architects and developers
Typical software development projects usually have a ramp up period before the project is at full stride. As a matter of fact I cannot recall any project that I have ever been on that did not have a quite protracted period of less than full productivity. Requirements are still being gathered, environments (servers and desktops) are still being configured, software is still being procured, etc. This can be quite a frustrating time for the developers, but especially the architects on the project. You don’t have enough of the facts to design and build the real business application, but the clock is ticking on the project so the need to get started is pressing upon you. I propose that you use the time to do some Spring Training. The software development team should spend some time focusing on the same type of activities that you see listed above.
Get back into “game shape” – If you are starting a new release of an application chances are that you spent your past few week not writing new code, but stabilizing the previous release for shipment or doing post deployment activities. The “new code” muscle has probably not been stretched out for a few weeks. Practice writing new code from scratch, even if you don’t know if it will be used in the application. Get those skills sharpened up so that when the rest of the project comes together you will be ready. Don’t do this in the “prototype” throw away fashion, you may throw away the code in the end, but don’t write it as throw away code. Write real code with unit tests, error handling, documentation, etc.
Learning new skills / positions – If you are working on a new application or if you are new to the application there is a good chance that you will be working with unfamiliar technology. You may be a fantastic ASP.NET Developer, but this may be your first project with ASP.NET MVC Framework. Use this time to become familiar with the new technologies. It also may not even be a new technology, but rather a new style or technique that you are applying. Use the projects Spring Training time to become really familiar with the new stuff.
Jell as a team – Like baseball, software architecture and development is a team sport. You have to be effective as a team in order to succeed. Use the Spring Training time to get to know the new team members (if there are any) and to get accustomed to working well together. As a quick aside you should be open to ideas that new players bring to the team, you should always be open to hearing best practices.