Utrzymanie takiego kodu źródłowego było utrudnione ze względu na trudność w zrozumieniu głównej struktury przepływu sterowania kodu.
Programowanie strukturalne wprowadziło uporządkowanie w procesie tworzenia programów, dzięki dzieleniu zadania do wykonania na mniejsze podzadania, aż do uzyskania wystarczająco prostych do realizacji fragmentów (zgodnie z zasadą dziel i zwyciężaj). Ułatwiło to implementację w poszczególnych modułach procedur, które w całości dadzą pożądany efekt. We współczesnej praktyce zazwyczaj dzieli się program na funkcje, z których każda realizuje określony cel i może być wywoływana wielokrotnie.
W 1968 roku Edsger W. Dijkstra uznał, że instrukcje GOTO powinny zostać całkowicie zakazane w językach programowania wyższego poziomu, aby unikać powstawania kodu spaghetti. Dijkstra argumentował, że obecność instrukcji skoku komplikuje ludzkiemu czytelnikowi zadanie analizy i weryfikacji poprawności programu.
Przykład 10 INPUT count 20 LET steps = count 30 LET bbk = 0 40 LET bk = 1 50 IF count < 1 THEN GOTO 100 60 LET k = bbk + bk 70 LET bbk = bk 80 LET bk = k 90 LET count = count - 1 100 PRINT "Wyraz nr "; steps - count; "ciagu Fibonacciego wynosi: ";