Characterizing the genetic basis, fitness effects, and predictability of adaptive evolution