Software Development and Discipline

Seldom does anyone call on the use of a person’s skill because they were an experienced Marine Sergeant but my recent coding assignment experience demonstrates exactly what can happen when a project becomes bogged down and all the players are scrambling with no coordination.

I found there were really several problems in examining the current situation but they can be summed up in two Marine Corps fundamentals; team work and discipline.Oh sure you might say, use old examples of your past life on modern problems forced to fit your model.

Lets examine the problem. A software glitch exists which prevents a satisfactory processing of a credit card. Essentially there are two participants in the control of the flow of this information;(1) merchant credit card processor(2) end merchant providing customer transaction

Each one of them insists they are doing things correctly but the end result doesn’t agree with their assertion.

This is after all an everyday transactional process performed by thousands, perhaps millions of online merchants. Why is it so difficult for it to work here? Are the people running the organization incompetent? The programmers are unable to do their jobs? Is this a first time for everyone involved? The answer to all three questions is a resounding no! Then why does this problem exist for several months?

When I was asked to step in and help correct this specific problem I ran into several unnecessary roadblocks which were; finding the right people to ask questions, evasive answers or answers that didn’t match the questions, achieving routine communication with all of the participants.

How does this scenario stack up against real world successful development? Let’s step back and see what other successful methods are used in developing workable and maintainable code

.What is “Modern Software Development”? 

  1. Do you use source control? 
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?

If the answer to any or all of those questions is no, then a discipline problem exists. Steve McConnell described Software’s Ten Essentials in 1997, ten things that every software project should have:

  1. A product specification
  2. A detailed user interface prototype
  3. A realistic schedule
  4. Explicit priorities
  5. Active risk management
  6. A quality assurance plan
  7. Detailed activity lists
  8. Software configuration management
  9. Software architecture
  10. An integration plan

Perhaps added to those lists which always become important even if left unsaid:  Do you have buy in from stakeholder/sponsor?  Are your customer’s expectations managed?  Do you have the right people for the tasks?

Often management which routinely represent the stakeholder, focus most of their attention on meeting schedule and identifying the right people. If there is anything I learned from my military experience is, people can be a problem but they can through awareness and motivation be trained to improve to accomplish the work. Using people like cannon fodder only creates losses and doesn’t achieve your aim.

So the focus on just two areas of the software development Hydra may work against rather than for a timely solution.

Team / Project Management

It has been said but usually not found that synergy is found when the combined effort is greater than the individual sum of the components.

An ideal team works and functions that way. Sports teams attempt to achieve it, actors publicly pronounce their latest achieved it and politicians promise it when you vote for their side. In reality it is seldom found but something that reasonably emulates it will provide consistent positive results.

Books have been written on the topic ad nausea, but this is a simple overview excerpt from an Air Force manual ~ Disciplined Software Development by the Embedded Computer Resources Support Improvement Program (ESIP) April 1999.

The Team Software Process® are techniques to “guide engineering teams that are developing software-intensive products. Using TSP helps organizations establish a mature and disciplined engineering practice that produces secure, reliable software in less time and at lower costs.” TSP has been proven to work for teams both large and small.

Comparing Software Development to Football

Success Factor      Software Development American Football
Team Building Project Kickoff Spring Training, Weight Training, Practice Time
 Detailed Plans  Project Plan Plays (blocking schemes, pass routes, etc.)
 Team Work  Weekly Project Meetings Periodic Huddles (allow coordination) Game Plans (emphasize team strengths)
 Defined Processes Organizational Software Process Nomenclature, Weekly Practice Schedule, Running the Playbook

“An organization’s processes and a team’s detailed plan describe how the various team members interrelate. The organization’s process captures the high-level plan outlines, the organization’s standards, and mechanisms for capturing data about project performance. The team produces a detailed plan by tailoring the plan outlines in the organizational process to project specifics.”

A short summary of the above quote;

  1. Fail to plan, plan to fail.
  2. Failure to follow a plan gets you lost.
  3. Failure to revise a plan that isn’t working, guarantees incorrect results.

Last but not least if you fail all three of those concepts, you are broken, lost and don’t even understand how.

I have to admit, this latest venture into my recent coding assignment has resoundingly received a negative response on those last 3 items.

Maybe it’s time for a Marine Sergeant?

Related articles