Programmers are constrained not just by conscious application of rules and procedures, but also by taboos that they have acquired as part of their formal education or informally from colleagues. These taboos usually embody perceived sound advice and have generally been concerned with the breaking of abstraction boundaries. However their effect can be to needlessly restrict the range of solutions to design problems that programmers consider. This paper examines a set of common programming taboos, and addresses both social aspects and technical reasons as to why programming taboos have arisen.