In information technology, a kludge (pronounced KLOOdzh) is an awkward or clumsy (but at least temporarily effective) solution to a programming or hardware design or implementation problem. According to Eric Raymond, the term is indirectly derived from the German klug meaning clever. Raymond considers "kludge" an incorrect spelling of kluge, a term of the 1940s with the same general meaning and possibly inspired by the Kluge paper feeder, a "fiendishly complex assortment of cams, belts, and linkages...devilishly difficult to repair...but oh, so clever!"
A kludge originates because another, more elegant or appropriate solution is not currently possible (perhaps because of time constraints). Hardware and software products are sometimes the result of adding a new and basically incompatible design to the original design rather than redesigning the product completely. What is a kludge can be a matter of opinion. Users often have a different opinion than the designers, who understand the problems that had to be overcome. To the extent that information technology products are combinations of elements originating from a variety of design philosophies and constraints, almost any product is bound to contain some element of kludginess.
A kludge could be considered a type of workaround.