Hi(gh)!
Neulich beim Datenbankprogrammieren mit PHP... es ging darum, aus (teilweise fehlerhaften) Rohdaten eine in Jahrgänge aufgeteilte Liste von Radiosendungen (konkret: Winfrid Trenklers "Schwingungen" auf WDR, vielleicht kennt das hier noch jemand) mit ihren gespielten Titeln in chronologischer Reihenfolge zu erstellen. Die Listen enthalten drei Spalten: Interpret, Titel, Veröffentlichung (d. h. Titel des Albums oder der Single), darin in Klammern eventuell Angaben zum Veröffentlichungstyp, sofern es sich nicht um ein reguläres Album, sondern z. B. um eine Compilation, einen Sampler oder eine (Maxi-)Single handelt. Der physische Tonträger-Typ bleibt unberücksichtigt, ebenso die Unterscheidung nach Original- und Re-Release, ebenso das (Erst-)Veröffentlichungsjahr.
So weit, so gut (ha! So hieß auch während der längsten Zeit die Titelmelodie von "Schwingungen", ein Titel von Harald Grosskopf von seinem 1980er Album "Synthesist", aber das nur am Rande...)... nun kommen einige Komplikationen hinzu. Der Sammler der Rohdaten hat bei vielen (etwa der Hälfte von insgesamt 470) Sendungen vor, zwischen und nach den regulären Zeilen "Sonderzeilen" mit zusätzlichen Informationen hinzugefügt, für Interviews, Sendungen unter einem besonderen Motto und für die am Ende jedes Jahres (außer 1995, das war das letzte Sendejahr) gesendeten Ergebnisse der alljährlichen Schwingungen-Wahlen.
Prinzipiell sind diese Schwingungen-Wahl-Auswertungssendungen nach folgendem Schema aufgebaut:
Sonderzeile: Schwingungen-Wahlen [Jahr], Auswertung
Bester Titel des Jahres:
3. [Interpret] [Titel] [Veröffentlichung]
2. [Interpret] [Titel] [Veröffentlichung]
1. [Interpret] [Titel] [Veröffentlichung]
Bestes Album des Jahres:
3. [Interpret] [Titel] [Veröffentlichung]
2. [Interpret] [Titel] [Veröffentlichung]
1. [Interpret] [Titel] [Veröffentlichung]
Bester Interpret des Jahres:
3. [Interpret] [Titel] [Veröffentlichung]
2. [Interpret] [Titel] [Veröffentlichung]
1. [Interpret] [Titel] [Veröffentlichung]
Bester Neuling des Jahres
3. [Interpret] [Titel] [Veröffentlichung]
2. [Interpret] [Titel] [Veröffentlichung]
1. [Interpret] [Titel] [Veröffentlichung]
[anschließend eventuell weitere regulär gesendete Titel]
Nun wich Winfrid Trenkler im Laufe der Zeit öfters von diesem Schema ab, die Reihenfolge der Auswertungs-Rubriken änderte sich, es wurden zusätzliche Titel vor Beginn oder mitten in der eigentlichen Auswertung gespielt, es fanden Interviews statt. Bis 1994 war das für mich programmiertechnisch kein Problem, ich konnte den Code des PHP-Ausgabeskripts immer so modifizieren, dass die Abweichungen berücksichtigt wurden, auch wenn das Ergebnis mit seinen vielen if-, else- und switch-Verzweigungen nicht wirklich elegant aussieht.
Bei der Schwingungen-Wahl-Auswertung vom 26.1.1995 war ich dann aber mit meinem Latein am Ende: es wurde zusätzlich während der Wortbeiträge Hintergrundmusik gespielt, und egal, was ich anstellte, die Rückwärts-Zählschleife für die Bestplatzierten brach immer in der dritten Rubrik ab. Ich wusste mir schließlich nicht anders zu helfen, als für diesen einen Tag eine Sonderregelung zu programmieren, die dann nichts anderes enthält als statischen HTML-Code, ohne dass überhaupt auf die Datenbank zugegriffen wird.
Mein Programmiererstolz war ob dieser Primitiv-Lösung zutiefst gekränkt... sollte es nicht Ziel jedes ernsthaften Programmierers sein, die eleganteste (will heißen: logisch konsequenteste) und/oder pflegeleichteste und/oder zur Laufzeit schnellste Lösung zu finden? Statischer HTML-Code in einer Datenbankanwendung erfüllt keine dieser drei Kriterien...
Nun war bzw. ist dieses Schwingungen-Projekt keine kommerzielle Geschichte mit definitiver Deadline (auch wenn ich Stephan Schelle vom Musikzirkus-Magazin versprochen hatte, bis zum 20. Januar 2014 damit fertig zu sein - diesen Termin konnte ich immerhin einhalten), außer einer Konzert-DVD von Klaus Schulze gab es auch keine materielle Belohnung dafür (die Initiative war von mir ausgegangen, da zwar schon 2007 auf musikzirkus-magazin.de eine vollständige Übersicht über alle Sendungen angekündigt war, die Arbeit daran aber nie über die erste Pilotsendung von 1981 hinausgekommen war...).
Trotzdem fühle ich mich mit derart simpel zusammengehauenem "Holzfäller-Code" nicht wohl... wie geht es euch in solchen Fällen? Passiert so etwas professionellen Programmierern überhaupt? Ich stelle mir immer vor, dass Profis selbst unter brutalstem Zeitdruck in 99,9 % aller Fälle die perfekte Lösung hinbekommen, und sei es nach 72 Stunden nonstop und Kokain für mehrere tausend Euro... musste jemand hier schon einmal definitiv vor einem Programmierproblem kapitulieren?
Bis bald im Khyberspace!
Yadgar
P. S. Ach übrigens, die fertigen Listen gibt es auf besagter Seite unter der Rubrik "Schwingungen" (ist leider in Frames programmiert, so dass ich keinen Direktlink angeben kann)...