This document describes a genetic algorithm approach for solving job shop scheduling problems. It proposes new crossover and mutation operators designed based on the characteristics of job shop problems. The crossover operator combines operation orders from different machines in the parents. The mutation operator permutes successive operations on the same machine if they are on the critical path, to potentially reduce makespan. Experimental results using the new operators show improved convergence speed over a simple genetic algorithm.