In this paper, Hoare mainly discusses key points to avoid while designing a programming language. Though there are several important properties to account for, like machine independence, stability, Hoare considers program design, documentation and debugging as the major ones.While designing a program, deciding what the program should do, how to do it and formulating the solution is of utmost importance. A good programming language should be documented properly, so that it could be improved and adapted to meet changing requirements. Upon debugging a program, guarantee should be provided that coding errors can be detected by compiler and the compiler should be fast, reliable, secure and compact.According to Hoare, a programmer who fully understands his language can handle complex tasks well. Therefore, a programming language should adhere to provide simplicity, security, fast translation, efficient object code and readability. A fast compiler should be developed that incorporates prescan, precompile and dump necessary data input to reduce compilation time. Programming language must be sufficiently expressive, clear, simple, regular and free from side effects. It should also be extensible to avoid syntatic extension and automatic type transfer coercion, or default conversion. Programmer should be given the freedom to implement his own representation of data and determine operations upon it.Hoare introduced his first programming language invention case construction, as the switch statement provided by ALGOL was not efficient. Variables must be disjoint, updating one of them should not effect the others. References are bad example of design as they cause decrease in performance. Programmer must be allowed to declare units of a number. During design process, designer should concentrate on one feature at a time. These enumerate the suggestions made by Hoare to improve programming language design.