Featured Whitepapers
- Peer Code Review: An Agile Process
- Learn Ways to Keep Schedules and Costs in Line With Requirements Change Management
- Java Deployments in an Enterprise Environment
- Challenges & Characteristics of Enterprise Continuous Integration
- Build Release Plans That Deliver Customer Value!
- Improving Traceability and Auditability Across the Development Lifecycle
Upcoming & Recent Webcasts
|
This is the first of a four part series on Small Teams and SCM. The parts are (1) Small Standalone Teams, (2) Small Teams in a Large Organization, (3) When Small Teams Grow and (4) When Large Teams Shrink. All of these leverage an earlier article, Small Team Essentials: An SCM Perspective, previously published in the July, 2008 CM Journal.What is a Small Team? There is no hard and fast definition of a Small Team, but for practical purposes it is from 1 person up to the number that can no longer get together casually for blue sky discussions, hashing out problems, reviewing requirements and design decisions, etc. From past experience, I have found that the typical range is from 1 through 10 with 3-7 being the norm. I have seen as many as 15, but that was a special case. If you find you need to document things because everyone cannot get together, then see the third article in this series – you are no longer “small.” Finally, for the purposes of this first article, you are the only software team in your organization. This means that you have no one to fall back on, no one to go to internally for advice or help. In most cases it also means that you get to do your own tool administration as well. Advantages of a Small Team
In a typical small team, everyone wears multiple hats and everyone plays to their strengths. If someone is good at determining what the product needs to do, then they are the one to do the job. The same goes for overall testing (functional, system, etc.). Most of the time, everyone on the team is a developer – though what parts of the product they work on do tend to shake out and stabilize early on. Most of the time the development model is one of the iterative ones, including the less formal Agile ones. Methodologies (models) such as SCRUM tend to be avoided since they tend to add unnecessary overhead. It often depends on what prior experience the team members have as to whether they practice Feature Driven Development, Test-First Development, etc. The languages chosen, the IDE(s) used, and even the SCM tools selected also tend to be selected based on team member prior experience. A small team can work on a single “large” product or several “small” products, but splitting their effort on a daily basis causes more problems than the parallelization of the schedule tends to reflect. Context switching causes overhead for people as well as computers. What happens once a product is “done” needs to be decided early on. Some possible options are:
Version Control (VC) and Defect, Issue and Enhancement Tracking (DIET) are two areas that should be addressed. DIET can be performed simply with 3x5 cards, a spread sheet or a simple shared document; but there are both FOSS and low-cost commercial tools that can be used with minimal setup and maintenance that provide additional capabilities. DIET tools such as Bugzilla, JIRA (up to 10 users) and MantisBT. How sophisticated a team gets with these tools is largely dependent on the formality of the development effort (contracted development is often follows a more formal pattern) and the desires of the team members themselves. What is required from an SCM perspective is that this function is performed in some way and that the time doing so be kept to a minimum. It is rarely necessary to be as picky in how tracking is done (for example, one issue, one set of changes and nothing else is probably too fine a level of detail, though “implement subsystem X” is probably too coarse a level of detail). VC, using tools and not just date-stamped filesystem hierarchies, is a must for any long term success. Which one depends on several criteria other than member experience. Some of these criteria are:
For both VC and DIET tools, the idea is to set up something that is low maintenance, integrates with the other development tools/IDEs being used and will remain available throughout the products development life. There are other tools that can make small team development easier in the long run, tools that support Requirements Management and sophisticated Build and Release Management efforts, but for most small teams they are only worth it if they have a reasonable Return on Investment (ROI) in terms of either schedule, quality or competitive advantage. Summary In this first article, the advantages and disadvantages of small teams, especially where a team is working alone, have been discussed. The actual SCM requirements for these teams are modest and the tools to satisfy them should be set up to be as self-administering as possible. Integration between the SCM tools, project metrics, data mining, etc. are all nice things to have, but only those that are either very easy to set up or that have a hefty ROI should be considered. Using the classical productivity numbers of a team of 5 developers producing 10 lines of working code per day per person and a working calendar of 250 days, a team produces only12,500 lines of code per year. This means that small teams must work smart so that those 12,500 lines of code satisfy the majority of the requirements (remember the old 80/20 rule?) In the next article in this series, we will address the differences when there are multiple small teams in a larger organization. Ben Weatherall is currently based in Fort Worth, Texas where he practices Practical CM on a daily basis supporting a modified Agile-SCRUM development methodology. He uses a combination of AccuRev, CVS, Bugzilla and AnthillPro (as well as custom tools). He is a member of IEEE, ASEE (Association of Software Engineering Excellence – The SEI’s Dallas based SPIN Affiliate), FWLUG (Fort Worth Linux Users Group), NTLUG (North Texas Linux Users Group) and PLUG (Phoenix Linux Users Group).
Set as favorite
Bookmark
Email this
Hits: 2001 Trackback(0)Comments (0)
|


This is the first of a four part series on Small Teams and SCM. The parts are (1) Small Standalone Teams, (2) Small Teams in a Large Organization, (3) When Small Teams Grow and (4) When Large Teams Shrink. All of these leverage an earlier article, 
