Computational thinking (CT) uses concepts that are essential to computing and information science to solve problems, design and evaluate complex systems, and understand human reasoning and behavior. This way of thinking has important implications in computer sciences as well as in almost every other field. Therefore, we contend that CT should be taught in elementary schools and included in every university's educational curriculum. Several studies that measure the impact of teaching programming, analytical thinking, and CT have been conducted. In this review, we analyze and discuss findings from these studies and highlight the importance of learning programming with a focus on the development of CT skills at a young age. We also describe the tools that are available to improve the teaching of CT and provide a state-of-the-art overview of how programming is being taught at schools and universities in Colombia and around the world.