Maintenance Programmers – Skills and Training

What  are the skills that a good AS/400 – iSeries RPG maintenance programmer should have?  I have done a lot of research on software maintenance and I have to admit I have yet to see anyone attempt to define this as a particular skilllset.  So I’m gonna try.  Shown below is a beginning outline.  I don’t intend this as an RPG technical knowledge inventory, rather as a skillset surrounding the practice of software maintenance.

This draft may have major and minor sections missing, or it may need some reorganization, but it is a start.  The first couple of sections are a little fuzzy as to how exactly they fit into a maintenance programmer’s skillset, but I wanted to get in some mention of them.  I will be filling in details going forward.

Methodology

  • Understanding of the overall maintenance process and methodology being used

Specifications

  • Defining specifications that are designed for software maintenance
    • Specifications that are provided to the programmer
    • Specifications that are created or updated by the programmer

Research, Analysis and Program Comprehension

  • Cross program, application level research and analysis
  • Static program analysis (of source code)
    • Concept mapping
    • Feature Location
    • Control and data flow modeling
    • Program slicing – forward and backward
    • Impact Analysis
    • Frequency analysis
  • Dynamic program analysis (of trace data)
    • Basic dynamic trace analysis
    • Simultaneous dynamic trace analysis
    • Conditional dynamic trace analysis
    • Frequency analysis

Unit testing

  • Defining appropriate tests
  • Assembling appropriate test data
  • Capturing and reviewing test results
  • Techniques for unit testing
    • Tools
    • Creating test harnesses

Tools

  • IBM tools
  • 3rd party tools
  • Internal tools

Debugging

  • Techniques for locating and isolating bugs

 

Maintainability

  • Maintaining or enhancing system maintainability

Refactoring

  • When to do it
  • How to do it

Use of other company resources

  • People
    • IT people
    • Business people
  • Documentation
  • Source docs

Domain knowledge

  • Industry
  • Business
  • Application
    • Database
    • Programming standards
    • Doc resources
    • People resources
    • Historical knowledge
  • Beacons