One major direction in synthetic biology involves the redesign of biological systems and components to acquire new properties and abilities. The last two decades have seen numerous computational tools that have been created and deployed to aid this effort. Some focus on optimizing constructs for manufacturability, such as oligonucleotide assembly. Others enable the design of genetic circuits by putting together components aided by sets of rules. In this review, we will examine a class of tools that facilitate the redesign of protein-coding genes for improved expression and other gene properties. These tools do not alter the protein itself, but rather its RNA encoding. Here we examine objectives for optimizing genes as well as available tools for gene design, assessing their individual features, strengths, and limitations.