Teorija programiranja tjestenine ima veze sa složenošću različitih programskih struktura. Baš kao što tjestenina dolazi u mnogo različitih veličina i oblika, isto vrijedi i za programski kod. U teoriji tjestenine, određena vrsta tjestenine koristi se kao šarena ilustracija za identificiranje nekih aspekata povezanih s određenim skupom programskih protokola.
Jedan izvrstan primjer teorije programiranja tjestenine je kod za špagete. Kuhani špageti često se poslužuju kao kolekcija niti koji se križaju i isprepliću jedan s drugim. Praktički je nemoguće izvući jedan pramen špageta, a da ne izazovete određeni stupanj poremećaja drugim nitima.
Uz ovu vrstu teorije tjestenine, podrazumijeva se da je programski napor donekle slučajan i kaotičan. Postoji malo ili nimalo stvarne strukture programskog koda. Krajnji rezultat je da pokušaj izmjene koda povezanog s jednim dijelom sekvence često stvara neočekivane probleme s drugim dijelom koda. Kao rezultat toga, špageti kod je iznimno teško razumjeti u smislu logičke progresije i jednako ga je teško modificirati bez stvaranja novih problema.
Nasuprot tome, teorija programiranja tjestenine također se može odnositi na programiranje koje je visoko strukturirano. Jedan primjer ove vrste teorije poznat je kao kod za lazanje. Lazanje je slojevito jelo od tjestenine, sa sastojcima koji se namjerno i dosljedno stavljaju između slojeva rezanaca za lazanje. Krajnji rezultat je jelo od tjestenine koje je ujednačeno u cijelom i lako se rastavlja na prepoznatljive komponente.
Kada teorija ili programiranje tjestenine koristi pojam koda za lazanje za označavanje programskog napora, to naglašava logiku i red koji se čini da upravljaju cjelokupnom strukturom uključenog koda. Moguće je modificirati dijelove koda bez stvaranja neočekivane reakcije negdje kasnije u obradi koda. Logično napredovanje i slijed obilježja su koda za lazanje, što ga čini suprotnošću od kaotičnijeg koda za špagete.
Koncept teorije programiranja tjestenine obično se pripisuje Raymondu Rubeyu. U pismu koje je napisao trgovačkom časopisu 1992., Rubey je koristio terminologiju koja se odnosi na raviole i špagete kako bi ukazao na strategije i situacije programiranja. Opća ideja teorije programiranja tjestenine uhvaćena je i ubrzo su mnogi programeri počeli označavati različite metode programiranja koji su koristili različite vrste tjestenine. U nekim slučajevima, odabir naziva tjestenine ukazivao je na korisne atribute pristupa danog programskog koda, dok su se drugi odnosili na metode programiranja za koje se smatralo da su manje učinkovite i strukturirane.