Одно из самых лучших изображений сущности программирования выглядит так (в ироничной форме отображающее бытие разработчика ПО):
На этом изображении мы можем видеть:
Костыли -- это неудобные, но работающие решения той или иной проблемы в коде программы.
Неудобные обычно в смысле трудности дальнейшего развития системы и относящиеся к плохому стилю.
Работают они как-то так: