Article 1 (of 4)
With the increasing integration of AI into our daily lives, it’s essential for coding instructors to shift from purely teaching coding to emphasizing problem-solving using code as the medium. Programmers with jobs in the most sought-after companies are those who devise innovative solutions to emerging problems. Tech educators can employ code reviews, debugging challenges, and pre-mortems to bolster their students’ critical and creative thinking abilities while teaching industry skills. In this article series, we’ll learn more about these three industry practices, and how to use each effectively in the classroom.
A code review is a peer-feedback process where one engineer checks another engineer’s code to find mistakes and suggest improvements. Code reviews are part of the daily work of a software engineer. Code reviews are not limited to peers who work at the same level; junior engineers are encouraged to review (or do a pair review) of the code of senior engineers, and senior engineers review code by engineers at all levels. Some of the reasons that engineers do code reviews are to increase code quality, get different perspectives on how the code is solving the problem, and keep code styles consistent, even though many people are contributing to the final outcome of the code (which is often a very large application).
Bringing the industry skill of code reviews to the classroom allows students to think critically about their work and the work of their peers, to develop effective communication skills, and to learn how another person has approached the same problem. Code reviews can be implemented in many ways, and can be useful as formative or even summative assessment opportunities in the code classroom. We’ll investigate methods to implement and assess code reviews in the second article of this series.
Debugging is a process where programmers find (and then fix) problems (bugs) in their code. Debugging is a very common activity for software developers at all levels of their career, because software is made by people, and people make mistakes. When programmers debug, they usually start with an issue that they have encountered after they have written their code, or that someone has reported about their code. Once the programmer is aware of the problem, they then try to find the reason the problem is happening. This can take quite a lot of time, depending on the kind of error.
Debugging challenges can help students think critically about their own or someone else’s code to identify errors and their causes. Learning to think through a debugging lens also helps students to predict potential errors in their code and work to prevent those errors. In the third article in this series, we’ll discover how to implement debugging challenges and assess the critical thinking and programming skills needed to solve those challenges.
When a company wants to create a new product, they use a process that involves many members of the development organization. When a company has decided on what they want to build, engineers will figure out exactly how to build the product in a specific timeframe. When there is a highly important feature to build, engineers want to make sure they consider all of the possible ways a feature could fail, as well as any improvements they might make to reduce or eliminate the possibility of failure. This process is called a pre-mortem.
In the classroom, asking students to do a pre-mortem on a project will encourages them to think about different potential solutions to a programming problem, from the lens of the consequences of implementing some solutions over others. The fourth article in this series will explore how to conduct guided pre-mortems in your classroom, and to assess critical thinking skills.
Use industry skills to enhance critical thinking
Code reviews, debugging, and pre-mortems are important skills for any programmer who wants to get a top job in a major tech company. Each of these skills is used on a regular basis by programmers in every tech company, and they provide students with insights into how their code works, how the code can break, and how the code can fail and potentially cause harm. In the next articles of this series, we’ll dive into each of these important skills, and how they can be implemented in the classroom.