Skip to main content

What would Rules do?

"Mit der Maus programmieren" hört man oft, meist möglichst abfällig intoniert, wenn das Gesprächsthema Views, Panels, Rules oder Drupal im Allgemeinen streift. Denn wahre Neckbeards programmieren alles von Hand! Oder?

Wozu Views? Ich kann SQL!

Es ist der Job von uns Entwicklern Abstraktionen zu erschaffen, die das Leben und Arbeiten im Informationszeitalter erleichtern. Interessant ist dabei aber, dass sich viele von uns sehr selektiv dagegen sträuben. Wieso implementiert man nicht für jede Website einen Service auf Maschinenebene, der auf Port 80 horcht, Requests entgegen nimmt und Webseiten zurückliefert? Das wäre doch viel performanter, und man müsste sich nicht mit Apache-Bugs herumschlagen. Vermutlich weil Apache, NGINX und Kumpanen garantiert um Welten besser funktionieren als alles was man selbst auf die Beine stellt!

Dasselbe Prinzip ist auf jeder Ebene anwendbar. Warum also Linux, dem HTTP Server und dem Datenbanksystem vertrauen, aber vorsichtig werden, wenn es darum geht zum Beispiel das Modul Views einzusetzen, obwohl dieses laut Statistik auf über 600.000 Seiten erfolgreich im Einsatz ist? Ich, als selbsternannter Doktor der Laienpsychologie, denke es liegt daran:

Entwickler operieren meistens auf einer Abstraktionsebene. Alles was "darunter" liegt (in unserem Fall HTTP- und/oder Datenbankserver) ist eine Blackbox, die Baustelle von jemand anderem, und vor allem interessant wenn es darum geht Fehler vorteilhaft zu positionieren ("Das muss ein MySQL Bug sein!). Auf unserer eigenen Ebene und darüber sind wir aber die Platzhirsche. Und wenn man selbst SQL Abfragen schreiben kann, wie soll ein Modul, welches dasselbe tut, besser sein können? Praktisch, mathematisch beweisbar unmöglich. Und vielleicht macht es dann auch noch etwas, was man nicht auf Anhieb versteht? Das entspricht dann der Definition von fehlerhaft.

Ich habe im Laufe der Jahre alle Phasen durchlebt.

  1. Ich habe "mein eigenes" CMS entwickelt - weil ich der Meinung war es besser zu können als alle anderen.
  2. Ich habe (nach Überwinden von Phase 1 und dem Ankommen bei Drupal) jede Abfrage von Hand geschrieben. Weil ich der Meinung war, es besser zu können als Views.
  3. Ich habe alle Templates from scratch implementiert, und im Nachhinein unter Zeitdruck mit Logik vollgestopft. Weil ich der Meinung war, es besser zu können als Panels.
  4. Ich habe hook_init() für alles mögliche missbraucht. Denn wozu gibt es Rules eigentlich?
  5. Und dann hat es zu dämmern begonnen …

On the shoulders of giants

Irgendwann begann ich zu verstehen, dass diese Abstraktionsebenen nicht als "Black boxes" zu betrachten sind und erlernt sie wirklich zu nutzen. Die grafische und mit der Maus bedienbare Oberfläche ("benutzerfreundlich" spare ich bewusst aus) von Views, Panels und Rules sind nur die Spitze des Eisberges. Die wahre Macht entfaltet sich. wenn man lernt an der Basis zu arbeiten. Ich habe mir inzwischen angewöhnt jede Problemstellung, zumindest zu Beginn, als Plugin eines dieser Module zu betrachten.

  • Statt eigener SQL-Abfragen lieber hook_views_data.
  • Statt langen if und else Blöcken lieber Events, Conditions und Actions für Rules.
  • Statt Nobelpreisverdächtiger Logik in page.tpl.php dann doch lieber Condition Plugins für Panels.

Ja, man muss dafür eventuell etwas Neues lernen. Aber das ist es Wert. Das Ergebnis ist fast sicher stabiler, wartbarer und flexibler, als man überhaupt geplant hatte. Denn anstatt jedes Mal die Architektur neu zu erfinden, nutzt man eine, die schon eine Menge anderer Leute durchdacht haben. Unser Berufsstand hat die optimalen Voraussetzungen auf die Erfahrungswerte anderer zu bauen. Und die Chance, dass diese höher sind als die eigenen ist hoch.

A little respect …

Eine der wichtigsten Lektionen die man als Entwickler zu lernen hat, ist die Arbeit anderer zu respektieren und bereit zu sein daraus zu lernen. Das klingt nach einem Aufruf dem Open Buffet Syndrome zum Opfer zu fallen, aber das Gegenteil ist der Fall. Man sollte nicht blind alle möglichen Module installieren bis die Spezifikation erfüllt oder das php_memory_limit erreicht ist, sondern gezielt auswählen und verstehen. Und wenn man dann noch immer der Meinung ist es besser zu können, dann sollte man das tun und der Community zurückgeben. Denn nur so funktioniert das System.

Wird nicht veröffentlicht