This document discusses when to use shell scripts versus programming languages for writing programs and scripts. It defines shell scripts and programming languages. While shell scripts are quick to write and use familiar commands, the document outlines several issues with shell scripts such as confusing syntax, being untyped, slow performance, lack of portability, and no exception handling. It recommends using shell scripts for short command line tasks and programming languages for anything more complicated, fast, portable, or that needs testing.