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