Good Programming Practice

From PhUSE Wiki
Jump to: navigation, search

NEW!! October 2015

  • GPP at PhUSE 2015

The following presentations from the team are at this years PhUSE conference

  • Paper PD09: Industry Standard for Good Programming Practice: Benefits and Implementation
  • GPP Board- Volunteers Needed

The GPP board are currently looking for volunteers. There are opportunities for getting involved in presenting, developing training material and to help steer our overall activities.

Please contact anyone on the GPP board if you are interested.

Please see the GPP guidance here http://phusewiki.org/wiki/index.php?title=Good_Programming_Practice_Guidance

and details and contacts for the GPP board here http://www.phusewiki.org/wiki/index.php?title=Good_Programming_Practice_Steering_Board


  • GPP at PhUSE 2014 London

Good Programming Practice returned to the PhUSE conference in London with an interactive discussion club. We invited to you come along and have your say. The general theme was implementation and adoption of GPP.

  • How can we ensure adoption of the PhUSE GPP guidance?
  • How do we implement GPP in programming teams ?
  • Review and discussion of examples of good and bad programming practice

Initial notes from the London Discussion club are here Discussion_Club:_Good_Programming_Practice_London_2014

  • AUGUST 2014: The updated GPP Guidance version 1.1 is available for use and further comments

Good_Programming_Practice_Guidance


Introduction

Good Programming Practice (GPP) is important within the life sciences and healthcare industries as an increased need for efficiency means that code that is clear, easy to maintain and efficient is more important than ever. Efficient code and best practices should not conflict with one another. It is essential to have various guidelines to govern and regulate code on clarity, efficiency, re-usability, adaptability and robustness.

Good Programming Practices :

  • Ensure the clarity of the code and facilitate code review;
  • Save time in case of maintenance, and ease the transfer of code among programmers or companies;
  • Minimize the need for code maintenance by robust programming;
  • Minimize the development effort by development and re-use of standard code and by use of dynamic (easily adaptable) code;
  • Minimize the resources needed at execution time (improve the efficiency of the code);
  • Reduce the risk of logical errors.
  • Meet regulatory requirements regarding validation and 21CFRPart11 compliance

What is GPP

Some examples of GPP from the above definition:

  • Clarity and ease of maintenance might be promoted by
  • Use of headers
  • Comments
  • Self documenting code
  • Style conventions (such as indenting, clear definition of datasteps and procedures)
  • Robust programming can be met by
  • Dynamic programming- writing programs to accommodate potential changes to data or specifications.
  • Test first design

The Steering Board for Good Programming Practice (GPP BOARD)

  • Good Programming Practice Steering Board was established in late 2008, for the purpose of promoting and publicizing good programming practices within the life sciences and the healthcare industries.
  • Currently there are eight active members worldwide in the GPP Steering Board with the common aim of driving the development and promotion of a uniform approach of GPP within the industry. The Practice encourages contributions from across companies, non-profit organizations and regulators through conference presentations at PharmaSUG, PhUSE, PSI, CDISC and collaborative contributions through the PhUSE wikis.
  • Most companies with programming personnel have a document or guideline where they describe their good practices for deriving syntax. This document usually contains aspect of programming techniques such as

design appropriate use of macros and level of macros hard coding policy naming convention conservative strategies etc….

A key aim of the GPP board is to achieve a consensus recommendations for a consolidated guideline which could potentially replace these documents.

Click on this link for more information on GPP Steering Board.


Several of the boards key objectives relate to the PhUSE wiki.

  1. We are looking to establish a formal set of guidelines for GPP
  2. We want to establish a collection of ideas, opinions and hints and tips for GPP

Good Programming Practice Guidance


The first stable version of the guideline has been published and is available as an MS Word document for adoption by organizations
File:GPP Guidance Document v1.docx

The guideline is open for public comment through the wiki
GPP Guidance Document Wiki

Articles on Good Programming Practice

Quick guide to GPP courtesy of Shafi Consultancy

* Useful Principles and Practices for Professional SAS Programmers 

Good Programming Practice conferences and discussions clubs

GPP discussion Club at PhUSE Conference Brussels 2013

GPP discussion Club at PhUSE Conference Budapest 2012

Study on Good Programming Practices in Health and Life Sciences

Through this first study on GPP in health and life sciences, we are looking to understand

  • Do you as Programmers or organisations use Good Programming Practices?

If so-

  • Is this use mandatory?
  • Which guidelines do you use?
  • Which do you think are important?


  • This study has two components, the first is to register and provide information on the good programming practices followed by your organization and the second is to participate in the SAS code review sub-study. The registration will establish a platform from which we can launch additional sub-studies to collect data on areas of interest based on input from study participants. The results of the study will be kept strictly confidential but will be presented in summary form at conferences, on discussion boards, and the GPP Board wiki on the PhUSE website. We look forward to opening a robust dialogue on good programming practices in health and life sciences so please join us on this exciting initiative.

Click on this link for more information about the study.

Or click on this link to go directly to the study registration https://www.surveymonkey.com/s/GPPSURVEY

How can you contribute?

  1. Add a new wiki page on a GPP topic. (Put the text [[Category:Good Programming Practice]] at the end of the article to enable searching for GPP)
  2. Make updates to existing pages
  3. If you have a brief comment or idea to contribute, please add to the talk page for the wiki.
  4. Get involved with the GPP board. We are currently welcoming new members.
  • Follow this link for other pages related to GPP [1]

This is the place to share your ideas and post your contributions. Feel free to comment. We need your input!


Bibliography

Some useful further reading on GPP

Kirk Lafler Shares 25 Coding Techniques! 25 Best Practice Coding Techniques for SAS Users
Programming Guidelines (Lewin, L)

Good Programming Practices in SAS (Ford, J 2009)

Good Programming Practice in R (Maechler, 2004)

What Makes a Good Program? (Grundy, D 2010)

Macro Programming Best Practices:
Programming for Job Security Revisited

Writing Test Aware Programs

The Joel Test: 12 Steps to Better Code