Discussion Club: Good Programming Practice Budapest 2012
- 1 Comments please!!
- 2 Good Programming Practice Discussion Club at PhUSE conference 2012
If you attended the discussion club and want to clarify or add to anything here, we would welcome your comments- either on the Discussion tab of this page or by directly editing content. Even if you did not attend and wish to add comments or ask questions, this is the place to contribute.
Mark Foxwell for GPP steering board.
Good Programming Practice Discussion Club at PhUSE conference 2012
With the Good Programming Practice (GPP) Discussion Club we tried to take a next step to bring us closer to a 21st century approach on the topic. We focussed on sharing experience related to coding standards during the conference, but also afterwards via this Wiki. With a vision of sharing code across multiple organizations more freely in the future, a common approach to GPP is an essential building block. Around 50 people (programmers and managers from Pharma and CROs) attended our discussion around technical as well as management aspects of Good Programming Practice at this year's conference. The interest in GPP and the discussion club was very encouraging. The summary of the 3 discussions groups can be found below:
Discussion Group 1: Macros – a powerful tool to use and abuse
- For what tasks do you commonly use macros?
- repetitive tasks
- generic macros (dynamic)
- specific functions (across programs)
- ensure consistency
- replacement of using arrays
- reduces maintainability
- What criteria do you use when deciding that a task or problem is worth putting into a macro?
- same code to be used in several studies
- How do you ensure that macros meet GPP?
- explicit parameters
- good parameter names (clear and identifiable)
- properly clean environment
- do not use same or similar macro names
- define local macro variables
- Do you think that many macros meet good programming guidance in your experience?
- add-on macros sometimes don't
- standard and validated macros do
- Any example of good and bad practise?
- good header + documentation + comments (example call)
Discussion Group 2: GPP applied in daily routine
- Almost everyone has got some kind of GPP guidance within their company which is usually not mandatory.
- Code review is usually part of the validation process, i.e. reviewer might reject code due to lack of GPP adherence.
- Main rationales for applying GPP were agreed upon
- Enhance readability to facilitate maintenance and re-use of code
- Facilitate code sharing between companies
- Some recommendations were put together:
- Guidance should not be too detailed but detailed enough
- Core principles are usually available but examples are missing
- Lack of training should be compensated by providing priorities between SOPs/Guidelines as well as by providing F2F or taped training material and together with examples
- Usage of shortcuts for SAS programming was considered beneficial
- GPP should be applicable for all programming languages used within the pharmaceutical environment (as an example it needs to be kept in mind that in Java a standard is available together with the programming language)
Discussion Group 3: Management view on GPP: what we give and will get in return
- Almost everyone has got some kind of GPP guidance within their company, usually not a SOP. Nevertheless, the guideline might be referenced from other SOPs.
- Monthly review of code during group meetings - more for junior programmers but might be difficult due to "bad" habits of experienced programmers.
- Code review and discussions as part of the QC process - how much?
- The vast majority of people confirmed that they would be willing to withdraw their company specific guidelines in favour of an industry-wide standard.
General comments and agreements
- The majority of attendees did express an interest in applying a standard GPP guidance once available. Some participants should an interest in getting actively involved in developing an industry-standard GPP guidance.
- As FDA/PhUSE CSS Working Group 5 is working on "Development of Standard Scripts for Analysis and Programming" it was agreed to liase with the working group to identify possible overlaps and common topics.