In this talk I describe three modes of Stata programming: authoring do-files, ado-files and Mata subroutines for ado-file programming. I discuss the advantages of developing skills in Stata programming that will help you become more efficient in your use of Stata and produce fully reproducible research output.