This document discusses 38 "gotchas" or subtle issues in Verilog and SystemVerilog. It begins with an introduction that defines what a programming gotcha is and reasons why Verilog and SystemVerilog have gotchas. The rest of the document is divided into sections covering different types of gotchas related to design modeling, general programming, object oriented programming, constrained random verification, coverage, system verification, tool compatibility, and corrections to an earlier paper on the topic. Each section provides examples of gotchas and explanations of how to avoid them.