A programmer who uses, but does not implement or modify, a library, class, or database. A term popularized by BruceEckel, who attributes it to ScottMeyers. It should be understood that this does not describe a type of programmer, as it may at first seem, but a relationship between a programmer and a given tool. Unless they are writing a completely new system from the ground up, any programmer is going to be a ClientProgrammer of someone else's work on some level. Examples of this would be: * A programmer who uses a STL class to hold a objects of a class he has written: he is a ClientProgrammer for the STL collection, but a DevelopmentProgrammer for the class being stored in the collection. * A programmer who is using an assembler to write a new driver: she is a ClientProgrammer for the assembler, but a DevelopmentProgrammer for the driver. * A programmer who is using a compiler to compile a new version of the same compiler, which he has modified personally: he is both a ClientProgrammer and a DevelopmentProgrammer of the compiler.