Each phase of a job is represented by a step. A step is an atomic part of a job. It can fail, usually failing the whole job. It can be an arbitrary task, executing a piece of program and returning a return code, but most of the time it is a Read-Process-Write task.