Programavimo makaronų teorija yra susijusi su įvairių programavimo struktūrų sudėtingumu. Kaip makaronai būna įvairių dydžių ir formų, taip ir su programavimo kodu. Taikant makaronų teoriją, tam tikros rūšies makaronai naudojami kaip spalvinga iliustracija, siekiant nustatyti kai kuriuos aspektus, susijusius su tam tikru programavimo protokolų rinkiniu.
Puikus makaronų programavimo teorijos pavyzdys yra spagečių kodas. Virti spagečiai dažnai patiekiami kaip sruogelių, kurios susikerta ir persipina viena su kita, rinkinys. Praktiškai neįmanoma išgauti vienos spagečių gijos, nesukeliant tam tikro kitų sruogų trikdymo.
Su tokio tipo makaronų teorija suprantama, kad programavimo pastangos yra šiek tiek atsitiktinės ir chaotiškos. Programavimo kode yra mažai arba visai nėra tikros struktūros. Galutinis rezultatas yra tas, kad bandymas modifikuoti kodą, susietą su viena sekos dalimi, dažnai sukelia nenumatytų problemų su kita kodo dalimi. Dėl to spagečių kodą labai sunku suprasti loginės eigos požiūriu ir taip pat sunku pakeisti nesukuriant naujų problemų.
Priešingai, makaronų programavimo teorija taip pat gali reikšti programavimą, kuris yra labai struktūrizuotas. Vienas tokio tipo teorijos pavyzdžių yra žinomas kaip lazanijos kodas. Lazanija yra sluoksniuotas makaronų patiekalas, kurio ingredientai apgalvotai ir nuosekliai dedami tarp lazanijos makaronų sluoksnių. Galutinis rezultatas yra makaronų patiekalas, kuris yra vienodas ir lengvai suskaidomas į atpažįstamus komponentus.
Kai makaronų teorija ar programavimas naudoja terminą lazanijos kodas, nurodant programavimo pastangas, tai yra logikos ir tvarkos, kuri, atrodo, valdo visą susijusio kodo struktūrą. Galima modifikuoti kodo dalis nesukeliant nenumatytos reakcijos kažkur vėliau apdorojant kodą. Loginė eiga ir seka yra lazanijos kodo bruožai, todėl jis yra priešingas chaotiškesniam spagečių kodui.
Programavimo makaronų teorijos koncepcija paprastai priskiriama Raymondui Rubey. Laiške, kurį jis parašė prekybos žurnalui 1992 m., Rubey vartojo terminiją, susijusią su ravioliais ir spagečiais, nurodydamas programavimo strategijas ir situacijas. Bendra makaronų programavimo teorijos idėja prigijo ir netrukus įvairius programavimo metodus pradėjo žymėti daugelis programuotojų, naudojančių įvairias makaronų rūšis. Kai kuriais atvejais makaronų pavadinimų parinkimas rodė naudingus tam tikro programavimo kodo metodo požymius, o kiti nurodė programavimo metodus, kurie buvo laikomi mažiau efektyviais ir struktūriškais.