Scientists have exploited enzymes as catalysts for various chemical transformations for over 30 years. The benefits of using enzymes over other synthetic catalysts are numerous and include their specificity, selectivity, and stability. These strengths can also be weaknesses; enzymes are often only active for a few substrates, while synthetic catalysts can often be readily-tuned to increase substrate scope. The directed evolution of enzymes has been used to increase the substrate scope and/or change the selectivity of natural enzymes. However, the combinatorial explosion of possible enzymes resulting from only a few mutated sites can make this method time consuming and expensive. Additionally, little knowledge is gained by performing random mutations and then observing the results. To combat this, there has been a great deal of development of computational tools to explain and predict structure – function relationships of enzymes and even design novel enzymes. The ultimate goal of such methods is to start with a given targeted reaction as an input and output the sequence of an enzyme catalyst for that reaction. While this is still far in the future, many advancements, such as machine learning algorithms, have had measurable success. All of these successes have been made possible by the steady cooperation of theory and experiment, which will be the foundation of any successes of the future.