Job performance analysis

Hello, we want to do some performance analysis on jobs, and we are trying to compare the job created timestamp with job updated timestamp. I noticed that in some cases, the latter is smaller (earlier) than the latter. How could this happen? Also, when querying a step detail, there is also a step update time, which differs from either the job create or update time. What do these timestamp represent? What are the proper fields to use for job start/end time, and is there API for querying such info?