Thursday, September 5, 2013

Where does the time go?

From Chapter 2: The Mythical Man-Month

Excerpt
Since software construction is inherently a systems effort—an exercise in complex interrelationships—communication effort is great, and it quickly dominates the decrease in individual task time brought about by partitioning. (page 19)

Gantt Chart of Typical 16-week schedule
Brooks is wrapping up his discussion of the second 'fallacious thought mode' with a zinger. Think of it; communication "dominates the decrease in individual task time." How does that happen? Who knows where the time goes?1

Only a wee bit of wistful contemplation is needed to find a culprit: meetings. Just to put things in perspective, I genned-up a little table of the meetings that made up the routine part of the our lives as NASA software developers. Perhaps it's of interest.


Meeting TypePurposeFrequencyTimePrep Needed
Development-related Meetings
Development Team TagupsDevelopment status, plans and technical issuesDaily/Weekly15->30mNo
Project Team MeetingsProject-level coordination across development teamsWeekly1hOccasional
Technical Interchange meetingsTwo or more development teams meet to coordinate effortsAd hoc1hr->3dYes
Task Technical Reviews
Requirement reviewDiscuss and approve documented requirements. Focus: Process compliance, selected requirementsBuild Lifecycle2->4hYes
Architecture reviewDiscuss and approve documented architecture. Focus: Process compliance, selected topicsBuild Lifecycle2->4hYes
Design ReviewDiscussion and approve documented design. Focus: Process compliance, selected design considerationsBuild Lifecycle2->4hYes
Development kickoff reviewsReview the viability of the plan for a build cycle. Focus: Process compliance, development readinessBuild Lifecycle2->4hYes
Test readiness reviewDiscuss and approve readiness of product for testing. Focus: Process complianceBuild Lifecycle1->2hYes
Delivery and Deployment reviewDiscuss and approve product delivery. Focus: Process complianceBuild Lifecycle1->2hYes
Programmatic-related meetings
Monthly Management ReviewsStatus report Monthly3hYes
Budget MeetingsDiscuss and defend development and maintenance budgetsSeasonal1hYes
Change Board (CCB)Approve requirement and/or design changesWeekly1hYes
Risk BoardDiscuss and diposition risksMonthly1hYes
Programmatic Staff MeetingsWeekly update on Insitutional mandates, budgets, and status.Weekly1hNo
Quiet hoursIndividual meeting with managementMonthlyOccasional
All Hands MeetingsSenior management addresses entire staffAd hoc1hNo
Software-related Project Lifecycle Reviews
Preliminary Design ReviewsDiscussion of requirements and initial design. Approval to proceed to full designProject Lifecycle1dYes
Critical Design ReviewDiscussion of design. Approval to proceed start developmentProject Lifecycle1dYes
Test readiness reviewDiscuss and approve readiness of product for testing. Focus: Process complianceBuild Lifecycle4hYes
Delivery reviewDiscuss and approve product deliveryBuild Lifecycle2hYes
Institutionally-related Meetings
Group MeetingsLine organization meetings (think homeroom)Monthly1hNo
Section Staff MeetingsCarefully crafted commentsWeekly2hNo
Quiet hoursIndividual meeting with managementMonthly1hNo
All Hands MeetingsSenior management addresses entire staffAd hoc1hNo

Bear in mind that a single team may support multiple tasks and multiple projects. Team members often present the same material in different meetings. Also, note all the required preparation; it's significant.

By the way, the developers who support these meetings are also supposed to program. Daunting eh?! There are no ivory towers on the NASA grounds, and precious little time to think deep thoughts. Bear in mind that not everyone goes to every meeting. However, the more senior the engineer, the more meetings must be attended, the less time there is for careful thought.2

Are all those meetings necessary? I believe so. Here's a few reasons why:
  • Meetings can be an efficient way to exchange information and coordinate activities.
  • In a matrix managed organization, every developer has several managers. At a minimum there's a line manager and a program manager.2 More than likely, there are multiple line managers and program managers with skin in the game.
  • Every manager must meet with the team. Even on the face of it, to do otherwise would be considered negligent.
  • Management perception of status is capricious. Misinformation is readily spread. If it crops ups, it must be guarded against.
  • Failure is not an Option. Delegation is risk. The culture-of-consensus is a meeting culture.
Even if no one is added to meet the 'unmeetable' milestone, communication in a large organization will quickly soak up development time. The build-in communication aides and high-level of integration in the new breed of software process tools (e.g. IBM Rational Jazz, or the plethora of agile support tools) should help, but only for a while. If the past is any indicator, the added automation will become a liability as additional artifacts become the stuff of meetings. Efficiency is elusive; culture forces are resistant.

Is there hope? Yes, but only with leadership that has a stomach for risk. Regrettably survival usual means a stomach ectomy.

1. Who Knows Where the Time Goes is an 60's anthem written by Sandy Denny of Fairport Convention.   Here's a link to a beautifully performed cover song by Judy Collins.

2. For a top-notch engineer, I estimate that as much a 50% to 75% of work week can be taken up with meetings.

3. Line refers to institutional organization. e.g. business unit, division, section and group. Line managers are responsible for hiring the staff projects need and ensures that staff complies with institutional rules. Program management refers to management of funds. Program managers are responsible for delivering products on time and on schedule.

No comments:

Post a Comment