Die Sprache des Programmierers

Wirklich sehr vielen Leuten fällt es schwer, mit Programmierern zu sprechen. Glauben Sie mir, damit stehen Sie nicht alleine da! Missverständnisse sorgen oft für Frust und gegenseitige Beschuldigungen. Dadurch laufen Projekte schlecht und die Stimmung im Team ist vergiftet. Es scheint fast so, als würde man in unterschiedlichen Welten leben und unterschiedliche Realitäten wahrnehmen. Aber woher kommt das? Sprechen wir nicht alle Deutsch (bzw. Englisch)? Und wer missversteht eigentlich wen?

Sprache ist ein Werkzeug

Fakt ist, Software-Entwickler und Manager sprechen nicht die gleiche Sprache. Genau genommen sprechen wir alle kein normales Deutsch. Jeder Beruf bringt es mit sich, dass sich auch eine fachspezifische Ausdrucksweise entwickelt. Vertrieb und Marketing beispielsweise besitzen ihre Buzzwords und versuchen, selbstbewusst Wertigkeit und Emotionen zu erzeugen. Sie müssen ein Produkt verkaufen und brauchen dazu dehnbare Formulierungen, die oftmals Auslegungssache sind. Sprachlich sind sie sehr durchsetzungsfähig. Das alles ist nicht als Vorwurf gemeint, es gehört einfach zum Beruf dazu. Projektleiter hingegen brauchen Einfühlungsvermögen, denn sie müssen es allen Recht machen. Ihre Aufgabe ist es, die Wahrheit sachlich, aber so gut es geht zu verpacken – gegenüber Entwicklern, Testern, Vertrieb, Kunden und der Firmenleitung. Wichtig hierbei ist es, Perspektiven aufzuzeigen und das Team zu motivieren. Trotzdem müssen auch sie sich durchsetzen können und den Eindruck erzeugen, zu wissen wohin die Reise geht.

Der Programmierer spricht nicht, er sagt ein Skript auf

Auch der Informatiker hat so seine eigene Sprache. Der wichtige Unterschied ist aber, dass er mit Maschinen reden muss, nicht mit Leuten. Während zwischenmenschliche Kommunikation heutzutage wie selbstverständlich zur Ausbildung von Projekt-Managern, Verkäufern, Marketing, Supportlern und Personalern gehört, ist das beim Programmierer ganz und gar nicht der Fall. Sein Beruf ist offiziell darauf beschränkt, seine Gedanken nur Computern klar zu machen. Natürlich witzelt man, dass der Informatiker selber wie eine Maschine redet und keine Emotionen kennt, allerdings steckt nun einmal ein Körnchen Wahrheit darin. Man sollte es dem Programmierer jedoch auch nicht zum Vorwurf machen, denn er steckt einfach zu sehr drin – und das ist auch gut so! Programmierer bzw. Informatiker wird man nicht von Heute auf Morgen. Man muss sich jahrelang mit der Materie auseinander setzen. Viele fangen sogar schon in ihrer Kindheit an, zu coden. Dadurch verinnerlicht man Formulierungen der Programmiersprache. Es ist eben auch wichtig, dass man diese Form des Ausdrucks sauber und strikt beherrscht, denn eine Maschine versteht nun einmal keine Ironie, keinen Sarkasmus und keine freie Auslegung. Der Computer sagt nicht „Hm, das meint er sicher nicht ganz so wie er es schreibt. Ich mache das mal anders.“. Gerade beim Programmieren ist es entscheidend, dass der Rechner eins-zu-eins das macht, was man ihm hinwirft. Der Codierer braucht die volle Kontrolle und der Computer muss verlässlich sein. Mit der Zeit lernt der Software-Entwickler als Mensch die Vorteile des Codes als Alltagssprache kennen: Sie ist eindeutig und gerade deswegen eigentlich resistent gegen Missverständnisse. Außerdem kann man sich sehr kurz fassen und trotzdem viel sagen – das spart Zeit und Atem!

Wie ist denn jetzt die Sprache der Programmierer?

Die Informatik ist ein Teilbereich der Mathematik. Moment, bitte nicht abschalten, es wird nicht so trocken, versprochen! Der Kern besteht also nicht aus der Technik wie Prozessoren, Festplatten und Strom und so weiter, sondern aus der Daten- und Informationsverarbeitung. Für viele scheint sehr gewöhnungsbedürftig zu sein, dass der Informatiker theoretisch auch mit Stift und Papier arbeiten könnte. Darum ist er auch nicht der „Computer-Fritze“, sondern der „Daten-Fritze“. Der Rechner (Ha, da ist wieder so ein mathematisches Wort!) ist einfach nur ein Mittel zum Zweck – ein Werkzeug. Dieses Werkzeug rechnet die Aufgaben des Informatikers einfach nur sehr viel schneller als er es selber könnte. Die Datenverarbeitung geschieht dabei selten mit der Mathematik, die wir aus der Schule kennen (Stichwort „4x – 2y = 14“), sondern eher mit Hilfe der Logik, einem anderen Teilbereich der Mathematik. Jetzt werden Sie vielleicht denken, dass Logik nichts exotisches ist und sie eigentlich jeder beherrscht. Lassen Sie sich gesagt sein, dass Logik eine eigene Vorlesung im Informatik-Studium ist und genug Unterrichtsstoff mit sich bringt. So einfach ist das alles nämlich nicht und wer denkt, etwas über Logik zu wissen, wird gleich eines Besseren belehrt!

Beispiele aus der Logik

Es gibt natürlich auch in der Logik sehr viele Unterteilungen, aber ich will Sie lieber damit verschonen. Belassen wir es bei einfachen, jedoch nicht minder beeindruckenden Beispielen.

Was ist das Gegenteil von „groß“?

„Klein“ wäre hier die falsche Antwort. Der Logiker würde selbstverständlich antworten „Nicht groß“. Immer, wenn man das Gegenteil von etwas möchte, macht man ein „nicht“ davor. Und wenn man etwas darüber nachdenkt, dann ist es… logisch. Denn ein Mensch kann zum Beispiel weder groß noch klein sein, sondern so mittel. Wenn er also „nicht groß“ ist, bedeutet es nicht gleich, dass er „klein“ ist.

Welche gegenteilige Aussage kann man aus „Es hat geregnet, also ist die Straße nass.“ ableiten?

Jetzt wird es schon etwas knackiger: Implikationen. Gerade beim Programmieren haben wir oft Wann-Dann-Formulierungen. „Wenn eine Datei im Ordner ist, dann soll sie geöffnet werden.“ Schauen wir uns mal obige Implikation an. Die gegenteilige Aussage lautet jedoch nicht „Es hat nicht geregnet, also ist die Straße ist nicht nass.“ Na klar, denn wenn ich mit dem Gartenschlauch hantiere, wird die Straße trotzdem nass – logisch. Man muss die Satzteile noch zusätzlich umstellen und verneinen: „Wenn die Straße nicht nass ist, dann hat es also nicht geregnet.“ Jetzt wird ein Schuh draus!

Wenn der Kunde anruft, dann hilf ihm bitte!

Ihr Programmierer wird dem Kunden nicht mehr als einmal helfen. Warum? Nun, er hat Ihren Wunsch erfüllt. Versuchen wir es noch einmal:

Immer wenn der Kunde anruft, dann hilfst du ihm!

Jetzt lässt sich der Programmierer ewig Zeit. Solange er irgendwann hilft, erfüllt er immer noch Ihren Wunsch. Der Befehl muss noch genauer werden:

Immer wenn der Kunde bei dir anruft, dann hilfst du ihm sofort bei seinem Problem!

Ok, wir haben dazugelernt. Wir haben gleich eine viel präzisere Formulierung verwendet. Aber was müssen wir da mit ansehen? Unser Programmierer ruft auch unaufgefordert beim Kunden an, auch wenn dieser keine Probleme hat. Warum? Das haben wir ihm doch gar nicht so gesagt! Tja, genau da liegt der Hase mit dem roten Punkt im Pfeffer oder so. Sie haben eine Option völlig frei gelassen und dem Programmierer damit unerwünschten Spielraum gegeben. Wo andere Menschen zwischen den Zeilen lesen, bleibt der Codierer stets auf dieser. Es gibt aber eine Lösung dafür:

Genau dann, wenn der Kunde bei dir anruft, hilfst du ihm sofort bei seinem Problem.

Ich hoffe, dass dadurch deutlich wird, wie ungenau unsere Alltagssprache eigentlich ist. Es ist – aus der Sicht des Informatikers – ein Wunder, dass wir mit der normalen Sprache überhaupt so gut kommunizieren können. Ein weiteres gutes Beispiel ist das kleine Wort „oder“.

Möchtest du Schoko- oder Vanille-Eis?

Ein Programmierer, der es darauf anlegt, wird Ihnen mit „Ja!“ antworten. In der Logik bedeutet „oder“ stets „und/oder“ (auf Englisch „or“). Wenn er also Schokoeis, Vanilleeis oder sogar beides möchte, dann ist die Aussage erfüllt, der Programmierer kann mit „ja“ bzw. „wahr“ (auf Englisch „true“) antworten. Möchten Sie ihn vor die Wahl stellen, dann brauchen Sie ein „entweder/oder“ (auf Englisch „exclusive or“, kurz „xor“). Sie müssen also fragen:

Möchtest du entweder Schoko- oder Vanille-Eis?

Und wenn der Programmierer mit „Ja!“ antwortet muss eine zweite Frage hinterher:

Möchtest du Schoko-Eis?

Wenn jetzt ein „Ja!“ kommt, dann ist die Sache klar. Falls ein „Nein!“ kommt, dann muss er ein Vanilleeis haben wollen, weil er ja genau eine der beiden Sorten möchte und wenn es nicht Schokolade ist…

Was kann ich jetzt machen, damit der Programmierer mich besser versteht?

Bestimmt werden Sie nicht auf die Schnelle lernen, so richtig logisch zu sprechen. Das bedarf leider viel Übung und Erfahrung. Versuchen Sie für den Anfang genau zu spezifizieren, was sie wollen. Sie können auch mit – aus Ihren Augen – übertrieben genauen Formulierungen arbeiten, das ist besser als nichts. Wichtig ist, dass sie auch ganz genau erklären, was Sie nicht möchten. Keine auch nur so kleine Möglichkeit soll unberücksichtigt bleiben und kein Bereich des Themas darf verborgen oder undefiniert sein. Erinnern Sie sich daran wie kleine Kinder sprachliche Spitzfindigkeiten für sich nutzen, um Erwachsene zu ärgern. Bei Codierern ist das hingegen nicht als Provokation gemeint, sondern schlichtweg Hilflosigkeit, weil Ihr Wille unklar ist. Der Programmierer interpretiert nämlich nicht, sondern sieht einfach nur die Fülle an Möglichkeiten und ist überfordert, weil er nicht weiß, welchen Weg er gehen soll. Mit der Zeit werden Sie sich bestimmt an das Formulieren sauberer Sätze gewöhnen – na logisch!

3 Antworten auf „Die Sprache des Programmierers“

  1. Kleiner Exkurs 🙂

    Die Welt aus der Sicht des Programmierers hat nichts mit der Realität zu tun. Ein besserer Blog als „wie muss ich mit dem Programmierer sprechen“ wäre, dem Programmierer zu erklären, wie er mit dem Rest der Welt kommunizieren soll.

    Wenn man jedoch dieses Thema anspricht, werden aus Programmierer sofort Extremisten. Es wird einem sofort enormer Widerstand entgegen geschriehen, mit einer Wehemenz, die sich darauf zurückführen lässt, wie unflexibel viele Programmierer im Grunde sind.

    Jahre und Jahrzente haben sie sich in ihrer IT-Welt vergraben, oftmals sogar um der echten Welt mit echten Menschen und Situationen des Alltags zu entkommen. Da ist es nicht weiter verwunderlich, dass sie hoch gehen, wenn man sie auffordert ihre Wohlfühlzone zu verlassen und sich mit Etwas intensiv auseinander zu setzen, das eben nicht in Maschinensprache vorgekaut ist.

    An dieser Stelle möchte ich nochmal daran erinnern, dass die Programmiersprache nicht erfunden wurde, um Soziopathen einen Lebensraum zu geben, sondern um den dummen Maschinen zu erklären, was wir von ihnen wollen. Programmiersprache hat keinen Anspruch darauf sich als „bessere“ oder „richtigere“ Sprache darzustellen.

    Von Maschinen dürfen wir (noch) nicht erwarten, dass sie unsere „normale“ Sprache verstehen. Von Menschen jedoch dürfen wir das sehr wohl erwarten. Ausgenommen sind Menschen mit Behinderung und Ausländer (und nein, Programmierer sind nicht automatisch Ausländer).

    Sprache ist eine Schnittstelle. Zu einer Schnittstelle gehören immer 2 Seiten. Oft findet das „Mapping“ direkt in der Schnittstelle statt. Es kann natürlich auch sein, dass ein Mapping „vor“ oder „nach“ einer Schnittstelle bei einem der beiden Kommunikationsteilnehmer stattfindet. In diesem Fall ist es jedoch nicht sinnvoll (und nicht logisch), dass sich „viele“ an „wenige“ anpassen.

    Wir sollten nicht lernen, wie wir mit Programmierern sprechen müssen. Programmierer sollten sich bemühen den Rest der Welt zu verstehen. Und dann können Programmierer die Transferleistung erbringen, zu erkennen wo noch Lücken sind, die den Kommunikationspartnern vermutlich nicht bewusst sind und diese Lücken separat klären.

    Die „normale“ Sprache ist nicht gut. Aber sie ist wie sie ist, weil sie „ausreichend“ ist. Nicht ausreichend für Maschinen, aber ausreichend, um mit Programmierern zu sprechen.

    Und…
    Wenn jemand behauptet, das Gegenteil von „groß“ wäre „nicht groß“, dann kann man sich 100% sicher sein, nicht mit einem Logiker zu sprechen, sondern mit einem Programmierer. Das Gegenteil von „groß“ ist auch nicht „mittel“ oder beliebige andere Größenangaben. Die Frage nach „dem Gegenteil“ ist absolut eindeutig.

    Ja, es stimmt, wenn etwas nicht „groß“ ist, dann ist es „nicht groß“. Das ist logisch. Das hat nur nicht das Geringste mit dem Begriff „Gegenteil“ zu tun. Und das ist ebenfalls logisch.

    1. Hallo,

      vielen Dank für Ihren Beitrag. Ich persönlich finde es sehr schade, dass Sie meinen Beitrag missverstanden haben. Es ging nie darum, allen Menschen zu befehlen, sich an die Sprechweise mancher Informatiker anzupassen. Ziel war es lediglich zu vermitteln, in welcher Sprachwelt sich Programmierer befinden und deutlich zu machen, woher Missverständnisse im Alltag herkommen.
      Ich kann es nicht gut heißen, dass Sie Programmierern jegliche Menschlichkeit absprechen und sie alle zusammen in eine Schublade stecken. Außerdem finde ich persönlich es ignorant, nur von einer Seite zu verlangen, sich anzupassen (was ebenfalls nicht Aussage meines Beitrags ist). Des Weiteren gehört ein Kurs in Sachen Kommunikation ebenso zur Ausbildung eines Informatikers wie es zur Ausbildung eines Metzgers oder eines Herzchirurgen gehört – nämlich gar nicht. Es gibt auch nicht DIE EINE Sprachwelt, also Programmierer vs. Nicht-Programmierer, denn Germanisten haben sicherlich noch eine andere Wortwahl als Bauarbeiter oder Kleinkinder. Daher ist keine Wortwahl per se legitimer als die andere. Jede Sprachwelt ist gleichermaßen legitim und deshalb bleibt am Ende nichts anderes übrig als dass sich alle Seiten im Alltag aufeinander zubewegen. Das kann beispielsweise dadurch geschehen, indem zuerst jede Seite mitteilt, wie ihre Sprachwelt aussieht. Genau das wollte ich für die Seite der Programmierung machen. Ich lade Sie ganz herzlich ein, uns die Sprachwelt einer anderen Seite zu vermitteln!

      Mit freundlichen Grüßen
      Philipp

  2. Sehr diplomatische Antwort Herr Philipp,
    🙂
    natürlich habe ich mir in meinem Kommentar einiges von der Seele geschrieben (da ich beruflich eng mit Programmierern zusammen arbeite und heftige negative Erfahrungen gemacht habe). Das ist eine Art Krieg, den ich nicht begonnen habe.

    Wie so oft, wenn ich einen Kommentar im Internet schreibe, möchte ich mich entschuldigen, für den Fall irgend jemanden direkt beleidigt zu haben. Dies ist nicht meine Absicht.

    Es liegt auch mir fern alle Programmierer über einen Kamm zu scheren.

    Es ist nur ebenfalls so, dass diese Kommunikationsschnittstelle im Entwicklungsalltag laufend ein Thema ist und meiner Erfahrung nach von Seiten (erschreckend vieler) Enwickler eine nicht genau spezifizierte Anforderung als Ausrede verwendet wird (auch sich selbst gegenüber), um sich selbst keine Gedanken zu einer Umsetzung machen zu müssen.

    Natürlich gibt es auch andere Programmierer/Entwickler, die bereit und befähigt sind über den Horizont des Programmcodes hinaus zu denken. Und die Reaktion hier auf meinen Kommentar zeigt auch ganz deutlich, dass diese Webseite gerade nicht von solchen „IT-lern“ betrieben wird, vor denen ich in meinem kritischen Kommentar gewarnt habe.

    Als gebrandmarktes Kind habe ich den Artikel hier zwangsläufig etwas in den falschen Hals bekommen.

    Ich unterstütze unbedingt die Absicht das Wissen darüber zu verbreiten, wie die digitale Welt funktioniert. Es schadet niemandem, besser zu verstehen, warum Programmierer so sprechen und denken, wie sie es nunmal tun.

    Und eine Schnittstelle, wie unsere Sprache, ist ja (wie ich im ersten Kommentar auch schon geschrieben habe) natürlich immer ein Thema, in das zwei Seiten involviert sind.

    Es lag mir unbedingt am Herzen mit meinem Kommentar thematisch zu ergänzen, wie dieses Thema NICHT verstanden werden darf (aber gerne so von Programmierern verbreitet wird).

    Nichts für ungut. 🙂 Alles immer nur zum Wohle aller.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.