Pragmatic Agile Development - PAD Best Practices
 
  June 2007 - Pragmatic Software Newsletters 
 
 

Newsletter Sponsors

Software Planner is an award winning  web-based solution for managing the software life cycle.  Tracks customer requirements, defects, test cases and allows document sharing.  Provides project management, with importing/exporting from Microsoft Project®, customizable dashboards and Microsoft Outlook® Synchronization. 
Software Planner Awards:
::
Best ALM/QA Tool
::
Best Project Management Solution
::
Best Bug and Defect Tracking Tool
::
SD Times Top 100

Pragmatic Agile Development - PAD Best Practices

In March, our newsletter explored the differences between Agile and the Waterfall methodology for software development.  In April, our newsletter introduced a blended approach to Agile development called Pragmatic Agile Development (PAD), and explained that PAD is designed to encompass all of the measurement and oversight of the Waterfall methodology (similar to approaches used by PMI / CMMI) with the nimbleness of Agile development, providing a methodology that yields the best of both worlds.  In May, we discussed the PAD Roadmap, the bible for PAD. 

This month, we discuss PAD Best Practices.  Below are the prior newsletters published on this topic: 

March newsletter: Exploring Agile Development
April newsletter:
Pragmatic Agile Development - The Lifecycle Phases
May newsletter:
Pragmatic Agile Development - The PAD Roadmap

PAD Best Practices
By following PAD best practices, your software development efforts will become productive, reliable and repeatable.  Best practices span several areas:

  • Workflow - To ensure that everyone understands how items move from one status to another and to ensure that critical information is collected as statuses change, it is imperative to define your workflow and state transitions.  This should be done for each area of your software lifecycle:
    » Requirements Mgt - http://www.pragmaticsw.com/Newsletters/newsletter_2006_06_SP.htm
    » Project Mgt - http://www.pragmaticsw.com/Newsletters/newsletter_2006_09_SP.htm
    » Defect Mgt - http://www.pragmaticsw.com/Newsletters/newsletter_2006_08_SP.htm
    » Test Case Mgt - http://www.pragmaticsw.com/Newsletters/newsletter_2006_07_SP.htm 
     
  • Requirements - When defining requirements, consider these best practices:
    » Use A Requirements Template -
    http://www.PragmaticSW.com/Pragmatic/Templates/FunctionalSpec.rtf
    » Scrub Your Requirements - http://www.pragmaticsw.com/Newsletters/newsletter_2004_03_SP.htm
    » Create Prototypes - http://www.pragmaticsw.com/Newsletters/newsletter_2004_02_SP.htm 
    » Provide Solid Naming Conventions
    - Prior to defining requirements, it is important to define your naming conventions.  For example, you may define your requirements with a client identifier (e.g. IBM-0001 may be the first requirement for IBM). 
     
  • Project Management - When managing project tasks, consider these best practices:
    » Setup Holidays / Vacations - By establishing holidays and vacations up front, team members are agreeing in advance to their time off.  This can greatly reduce unexpected task slippage.
    » Review Resource Utilization - Review tasks assigned to each person to ensure that they are not over allocated. Remember that some team members work on multiple projects simultaneously, so you must coordinate tasks across projects.
    » Require Consistent Time Entry
    - Require that team members enter their time daily (or weekly).  Each team member should attach time to actual work done so that you can later evaluate estimate vs. actual time variances.  This process can greatly improve your estimating ability.
    » Record Objective Percentage Completes - As team members are recording percentage complete on tasks, force them to be objective (e.g. 0% means nothing has be done, 10% means that the person has reviewed the specification, 20% means that the person fully understands the specification, etc.).  By taking the subjective nature out of percentage complete, you will get a more accurate picture of how close a person is to being done with their tasks.  Another approach is to have them estimate remaining effort.  This is take from Agile's Scrum methodology and provides another way to more objectively ascertain percentage complete.
    » Review PAD Road Map Daily - The PAD Road Map specifies milestones, deliverables and measurements.  Review the PAD Road Map daily to ensure all items are being properly tracked.
    » Provide Customer Status Reports -
    http://www.PragmaticSW.com/Pragmatic/Templates/WeeklyStatusRpt.rtf  
     
  • Test Cases - When defining test cases, create a traceability matrix where you can ensure that you have proper test coverage for each requirement.  Failed test cases should be matrixed back to the defect that was generated so that you can understand which test cases generated the most defects.  When defining test cases, remember to create positive tests (tests that exercise documented features), negative tests (tests that exercise actions that are illogical or designed to break the software: e.g. entering an invalid date, entering data outside specified ranges, etc), and regression tests (tests that ensure existing features are not broken with the new release).
     
  • Defects - When entering defects, enter solid steps to reproduce the error, provide screen shots of errors, and have objective severities.  For example, a severity 1 may mean that it crashes the software, severity 2 may mean that it is a defect without a workaround, severity 3 may mean it is a defect that does have a workaround, severity 4 may mean it is a trivial defect (like colors, grammar issues, etc).  By defining objective severities, it is easy to agree on how severe a defect really is.
     
  • Post Mortems - It is important to learn from prior releases.  By holding post mortems, you identify the things you did right and the things you need to work on in the next release.  Here is a sample post mortem report:
    http://www.PragmaticSW.com/Pragmatic/Templates/PostMortem.rtf  
     
  • Support / Customer Management - Implement an easy to use support ticket system so that your clients can send support issues to your team and check the status of those tickets online.  Consider building a knowledge base so that your team can quickly identify frequently asked questions and solutions, make this knowledge base accessible by your internal team and external customers.  Implement surveys that provide feedback on how well your support and customer service are being implemented. 

Learning More About PAD
If you wish to learn more about PAD, here are some helpful links:

Helpful Templates

Below are some helpful templates to aid you in developing software solutions on-time and on-budget:

About the Author
Steve Miller is the President of Pragmatic Software (
http://www.PragmaticSW.com).  With over 21 years of experience, Steve has extensive knowledge in project management, software architecture and test design. Steve publishes a monthly newsletter for companies that design and develop software.  You can read other newsletters at http://www.PragmaticSW.com/Newsletters.asp.  Steve's email is steve.miller@PragmaticSW.com.


 

Pragmatic Software Co., Inc.
383 Inverness Parkway
Suite 280
Englewood, CO 80112

 

Phone: 303.768.7480
Fax: 303.768.7481
Web site:
http://www.PragmaticSW.com
E-mail:
info@PragmaticSW.com