Autonome Landfahrzeuge

Googles_Lexus_RX_450h_Self-Driving_CarEs wird zwar schon länger versucht, Autos, die selbstständig fahren können, zu entwickeln, realistisch wurde das Ganze aber erst durch den Fortschritt in der Leistungsfähigkeit von Computerhardware und der Künstlichen-Intelligenz-Forschung in den letzten Jahren. Google hatte daran einen besonders großen Anteil. Folgendes bekanntes Video zeigt, wie gut das schon funktioniert: https://www.youtube.com/watch?v=cdgQpa1pUUE

In den Testfahrten war die Unfallquote deutlich besser (also niedriger) als die von menschlichen Fahrern, und die Unfälle, die passiert sind, waren wohl jeweils nicht die Schuld der Steuerung des autonomen Fahrzeugs sondern von anderen menschlichen Verkehrsteilnehmern, die beispielsweise einfach an der Ampel von hinten auf das stehende Fahrzeug aufgefahren sind. ^_^

Zugelassen sind diese Autos in einigen USBundesstaten und England sogar schon. Große Fahrzeughersteller wie beispielsweise Mercedes arbeiten auch schon daran, soetwas bald in Serien produzieren zu können.

Abgesehen davon, dass die Technik (gerade für mich als Softwareentwickler) ziemlich interessant ist, finde ich die Frage, inwiefern das Ganze unser Leben und die Gesellschaft verändern könnte, mindestens genauso spannend. Klar, als erstes fällt einem vielleicht ein, dass man dann bald auf dem Weg zur Arbeit ein Buch lesen oder schlafen kann. Es würde aber auch bedeuten, dass Menschen, die z.B. auf Grund von Behinderungen eigentlich nicht mehr in der Lage sind, Auto zu fahren, so doch wieder ein gutes Stück Selbstständigkeit zurückgewinnen würden.

Aber auch logistisch könnte sich einiges ändern. Wenn Autos selbst fahren können, warum sollte meins 8 Stunden auf dem Parkplatz vor der Firma stehen während ich arbeite? Es könnte doch etwas Sinnvolles tun anstatt dort vor sich hin zu rosten und an Wert zu verlieren. 🙂 Andere Leute, die kein Auto haben, könnten sich davon (kostenpflichtig *g*) durch die Gegend fahren lassen. Yeah, Doppelverdienst für mich. 😀 Verallgemeinert bedeutet das aber auch, dass man eventuell gar kein eigenes Auto mehr benötigt, sondern einfach über sein Smartphone oder sonstwie eins einer gewissen Klasse anfordert, und das kommt dann angefahren, einen abzuholen.

kitt-watchDas würde auch bedeuten, dass die Menge an Personentransporten, die momentan auf den Strassen stattfinden, mit insgesamt viel weniger individuellen Fahrzeugen stattfinden könnte. Man bräuchte also auch viel weniger Parkplätze, was die Städteplanung ziemlich verändern würde, und hoffentlich einen für die meisten beteiligten entspannteren Alltag ermöglichen würde.

Selbst von den offensichtlichen Vorteilen im Energiebedarf durch nun möglich gewordenes unfallfreies enges Windschattenfahren und der verringerten Zahl von Unfallopfern (Jährlich sterben momentan ca. 1/2 Millionen Menschen weltweit im Verkehr.) mal abgesehen, sehe ich das Ganze also grundsätzlich recht positiv, und freue mich drauf mitzuerleben, wie diese Zukunftsvision Wirklichkeit wird.

Kritisch könnten allerdings Situationen werden, in denen die automatische Steuerung moralische Entscheidungen treffen muss. Gerade wenn noch Mischverkehr (automatischer und manueller) vorherrscht, könnten Situationen entstehen, in denen ein Fahrer (und somit auch ein Computer) sich entscheiden muss, ob er sich selbst (bzw. seine Insassen) oder den Schulbus auf der Gegenfahrbahn rettet/opfert. Im Idealfall (vorausgesetzt, die Steuerung klappt wirklich so super, wie die Tests versprechen) könnte sich jedoch schnell eine Kultur entwickeln, in der manuelles Fahren nicht nur als nostalgisch/niedlich sondern als rücksichts- und verantwortungslos empfunden wird, und der komplette Umstieg deshalb nicht all zu lange dauert, auch wenn ich mir das teilweise nicht ganz so einfach vorstellen kann, denn der „Auto=Rasen=Freiheit“-Kram wirkt auf mich doch kulturell recht tief verankert. Aber wenn es sich auch wirtschaftlich lohnt (und man den Hobby-Rasern genug Möglichkeiten zum Austoben außerhalb des regulären Straßenverkehrs bietet), bin ich guter Dinge, dass meine Enkelkinder mich mal fragen werden: „Du Opa, wie war das eigentlich damals, als ihr die Autos noch selbst steuern musstet?“ 🙂

Ein paar Tipps zur Softwareentwicklung

Im Artikel „Was machen Informatiker (bzw. Softwareentwickler im Speziellen) eigentlich so?“ habe ich abstrakt-grob beschrieben, was wir Softwareentwickler so machen. Dabei habe ich angedeutet, dass es sich dabei nicht nur um eine mathematisch-theoretische Wissenschaft handelt, sondern es auch eine Art Ingenieurdisziplin mit handwerklichen, (manche sagen auch künstlerischen) Komponenten, die man ganz praktisch erlernen muss, ist. In diesem Artikel geht es nun um Vorgehensweisen und Werkzeuge, die man nutzen kann, um sich und anderen (also Kunden, Kollegen, Nachfolgern usw.) bei größeren Projekten das Leben langfristig leichter und spaßiger zu machen, und in weniger Zeit ein besseres (fehlerfreier, wartbarer, benutzbarer, erweiterbarer, sauberer, schöner, erfolgreicher) Endprodukt hervorbringen kann, unter das man dann auch gerne seinen Namen schreibt. Das Folgende ist vermutlich also nur für Leute, die selbst programmieren, interessant, aber ich habe Lust, das mal alles irgendwo hinzuschreiben.

software_developmentDie Nützlichkeit der Ratschläge in diesem Artikel sind größtenteils nicht empirisch belegt sondern mehr Gefühl, subjektive Erfahrung und von anderen gelernt. Trotzdem haben sie sich natürlich meines unheimlich kritischen persönlichen Urteils zu unterziehen gehabt. 😉
Ebenfalls sind sie weder vollständig noch allgemeingültig oder ausführlich (dafür aber oft weiterführend verlinkt). Es sind nur Hinweise, die man im Informatik-Studium nicht unbedingt mitbekommt, und Dinge, die man sich mal genauer angucken kann, und die einem dann unter Umständen helfen könnten. Mir tun sie es zumindest oft, auch wenn ich mich selbst noch zu häufig nicht daran halte. Aber ich lerne ja auch noch dazu; hoffe ich zumindest. 😀

Ich habe den Eindruck, dass man normalerweise in Tätigkeiten (Beruf, Hobby, was auch immer) nur wirklich gut werden kann, wenn man sie auch gerne macht. Vielleicht funktioniert es aber auch umgekehrt, also dass man sie lieber macht wenn man merkt, dass man sich stetig verbessert und dadurch Schönheit in den Ergebnissen seiner Arbeit sieht. Also, benutz deine Metakognition und erkenne deine Stärken und Schwächen und arbeite an beidem. Werde dabei zum Hansdampf in allen Gassen. Dabei hilft nicht nur reines Nachdenken, sondern auch (Hör-)Bücher, Vorlesungen, Diskussionen etc., denn obwohl man zwar viele gute Ideen selbst haben kann, kann man doch nicht alle alleine haben. Man muss keine haushohen Zeitschriftenstapel haben, die man alle gelesen hat. Oft ist ein Buch über Grundlagen (die bleiben nämlich) wirklich verstanden zu haben eh viel besser als von tausend verschiedenen Trends oberflächlich gehört zu haben.

Wizards-of-SICPAber auch hier sollte man beim Lesen kritisch bleiben. Manche Bücher (und auch Blogs ^_-) sind einfach Mist, und es gibt keinen Grund, sich dann zu zwingen, die trotzdem zuende zu lesen.
Wenn man sich aber jahrelang regelmäßig mit unterschiedlichen Themen beschäftigt, kann da schon einiges zusammen kommen. Die Regelmäßigkeit kann man unter anderem gut hinbekommen, wenn man beispielsweise die Zeit im Auto/Zug für Hörbücher oder Tonspuren von Vorlesungen nutzt. Ansonsten kann man aber auch einfach mal herumprobieren, welche Lernform einem liegt (Vorlesungen beim Crosstrainern gucken anyone? :-))

Zusätzlich ist es aber gut, auch etwas von der aktiven Kultur mitzubekommen. Dafür gibt es sicher viele gute Anlaufstellen. Ich persönlich mag momentan /r/programming gerne. Auch finde ich es nett, aktiv in einer Community mitzumachen, also auch selbst Fragen zu beantworten wenn man etwas weiß. Hier bietet sich beispielsweise stackoverflow an. Aus den sich ergebenden Diskussionen kann man ebenfalls lernen. Achja, falls es dich abschreckt, dass die Links auf englischsprachige Webseiten zeigen, ändere das, also nicht die Links sondern die Tatsache, dass sie dich gruseln. Um Englisch (zumindest lesen können) kommt man eigentlich eh nicht wirklich herum.

communication-skillsOK, also erstmal ein paar allgemeine, teilweise banale, und nicht nur für Softwareentwickler relevante Tipps:

Wenn du eine Frage hast, google sie; auch wenn du denkst, dass das Problem eigentlich t zu den andezu spezifisch ist. Man ist manchmal überrascht wieviele Leute, doch schon das gleiche Problem hatten. Und ich bin überrascht, wie oft trotzdem nicht einfach mal im Netz gesucht wird.

Ebenfalls gucke ich manchmal vermutlich ziemlich doof wenn ich sehe, was für ein Chaos Entwickler auf ihrem Rechner haben. Ich bin alles andere als ein Ordnungsfanatiker, aber wenn die Produktivität (und man selbst, und irgendwann bestimmt auch ein anderer) leidet, nur weil man zu faul ist, mal eben ein Bischen aufzuräumen, finde ich das schon schade. (Ja, man kann Emails tatsächlich automatisch filtern und sortieren lassen. Achja, und schalte die Thread-Ansicht deines Clients an! ;-))

Wenn sich eine Aufgabe ergibt, die du irgendwann erledigen willst, schreib sie (elektronisch) auf. (Für Bugs usw. bietet sich Issue-Tracking an.) Egal ob sie dir gerade in einem Meeting zugekommen ist oder bei irgendwas anderem selbst eingefallen ist. Halte dir den Kopf für das Suchen nach innovativen Lösungen frei, und müll ihn nicht mit dem Auswendiglernen irgendwelcher temporären Daten zu. Und denk beim Sortieren deiner Todo-Liste daran, dass Dringlichkeit und Wichtigkeit zwei verschiedene Dinge sind.

to-do-list-nothingFalls man Teil eines Prozesses ist, der sich irgendwie ineffizient anfühlt, kann man auch ruhig mal nachfragen, warum das so ist. Dabei sollte man aber nicht das Gefühl vermitteln, dass alle anderen doof sind, und man selbst der große Erlöser ist, sondern erstmal wirklich nur verstehen wollen, wie das ganze zu Stande kommt. Über Möglichkeiten, wie man soetwas geschickter formulieren kann, gibt es ebenfalls viel Literatur.
Wenn man dann irgendwann mit einem Verbesserungsvorschlag (oder sonstigem) daherkommt, gilt es auch immer zu beachten, welche Aspekte für die jeweilige Zielperson wichtig sind. Ein BWLer interessiert sich vermutlich mehr für finanzielle Zahlen, der Techniker für gute Wartbarkeit und der Theoretiker für abstrakte Schönheit, wobei es aber nicht nur auf die firmeninterne Position sondern auch auf die Persönlichkeit usw. ankommt.

In jedem Fall gilt es, den richtigen Moment abzuwarten. Im Zweifelsfall kann man auch einfach fragen, ob der andere gerade Zeit hat oder lieber ein anderes Mal (Termin ausmachen) darüber reden möchte.
Wer möchte, dass ihm zugehört wird, sollte aber ebenfalls mal seine Kollegen (gerne auch aus anderen Bereichen) die Chance geben, zu erzählen, was sie beschäftigt, und dabei aktiv zuhören.
Wenn es im (Großraum-) Büro allerdings mal zu laut wird, kann man sich zwischendurch immernoch mit (gut isolierenden) Kopfhörern und netter (eventuell instrumentaler) Musik vor zu vielen Unterbrechungen schützen; aber auch nicht 24/7, weil man ja schon manchmal noch mitbekommen sollte, was so um einen rum abgeht.
Oh, und nicht zu viel multitasken (also im Kopf, nicht im Computer), und auch mal ein kreatives Päuschen einlegen.

330px-Pair_programming_1Man ist ja erwachsen und für sich selbst verantwortlich (wie eventuell für das Backup seiner Daten). Und wenn man mal etwas falsch gemacht hat kann man das normalerweise ruhig eingestehen. Die Hauptsache ist, dass man es korrigiert und etwas daraus lernt und das möglicherweise auch nach außen hin signalisiert. Oft kommt das nämlich sogar gut an. „Hey Chef, müsste ich jetzt nicht mehr Geld bekommen, nachdem ich hierdrin besser geworden bin? ;-)“

Ein unbeliebtes Thema bei vielen Entwicklern sind Aufwandsschätzungen. Softwareentwicklung ist ein kreativer Prozess, dessen Verlauf sich nicht einfach vorhersagen lässt. Es sollte auch zwischen zwei verschiedenen Arten der Schätzung unterschieden werden. Wenn festgelegt werden muss, wann ein Projekt spätestens abgeschlossen ist (Deadline), muss man natürlich so Planen, dass das auch sicher klappt. Wenn aber nur eine Entscheidung getroffen werden muss, ob es sich lohnt, ein Projekt überhaupt anzugehen, sollte man seine Ehre beiseite lassen können, und sich nicht bemühen, immer länger zu schätzen als man vermutlich tatsächlich braucht, sondern im Durchschnitt richtig zu liegen. Ja, das bedeutet, dass man dann auch mal länger braucht als gedacht. Das lässt sich bei kleinen Projekten (auch wenn es da nicht gefordert ist) gut üben. Zusätzliche Unsicherheitsfaktoren können ruhig mit angegeben werden, und wenn man nach einer Schätzung gefragt wird, braucht man sich nicht genötigt fühlen, sofort eine Zahl in Manntagen/wochen/monaten anzugeben, sondern sollte darum bitten, etwas Zeit zum Analysieren zu bekommen, um dann nachher besser antworten zu können.

Binary codeSo, nun zu den spezifischeren Punkten. Zunächst einmal sollte man sich damit abfinden, dass man keine perfekte/fehlerfreie Software schreibt. Fehler sind zwar ärgerlich, aber bei größeren Projekten zwangsläufig vorhanden. Je nach Aufgabe sind die Anforderungen auch unterschiedlich. Schreibe ich Software, mit der Astronauten ins All befördert werden sollen, oder geht es um ein Weltraumballerspiel, oder nur um einen Einmal-Wegwerf-Parser für irgendwelche speziellen Logs? Risiko, Nutzen und Aufwand müssen abgewogen werden. Wenn du dazu neigst, eher zu viel vorm Handeln nachzudenken, sieh zu, dass dich das nicht davon abhält, überhaupt irgendwann loszulegen. Wenn du eher einfach wild drauflos (und dann gegen Wände) rennst, denk zunächst etwas mehr nach. Hierfür muss man lernen, sich selbst einzuschätzen. Als grobe Richtlinie kann man sich merken: Mache dir Gedanken, aus welchen Subsystemen der Prozess, den du darstellen willst, besteht, und welche Daten von zwischen ihnen fließen, aber häng dich nicht an den Funktionssignaturen einzelner Methoden und ähnlichem auf. Die tatsächliche Implementierung macht man im Zweifelsfall dann aber meistens besser direkt ordentlich, denn oft ist man überrascht, wie oft man den Code dann später doch tatsächlich nochmal benutzen oder verändern will, und dann beißt die Frickelei einen schnell man in den Hintern.

Die IT-Welt entwickelt sich schnell weiter, und manche Dinge/Software benutzt man nur, weil man zufällig als erstes mit dieser in Kontakt kam. Deshalb sollte man ruhig zwischendurch neue Sachen (zb. Betriebssysteme) ausprobieren. Damit man seinen Arbeitsrechner damit nicht zumüllt bietet sich zb. Virtualbox an. Falls Windows dir auf den Nerv geht, probier ruhig mal Linux aus. 😉

Leistungsfähige Hardware zu haben ist wichtig. Es muss kein wassergekühlter high-end-gaming-PC sein, aber wenn man ständig darauf wartet, dass irgendwelche Programme starten oder der Compiler ewig braucht, nervt das nicht nur, sondern kostet auch Zeit, und für viele von uns somit auch Geld. Ebenfalls kann ein zweiter Monitor hilfreich sein.

homeoffice03-450x300Das praktischte Datenformat ist immernoch plain text. Einige der Vorteile davon sind, dass man die Unix-Tools (gibt es auch für Windoof) benutzen, und beliebig mit regulären Ausdrücken (lernen!) drauf herumwuseln kann, gerne auch mit batch/bash-scipts. Oft ist man in der Konsole mit sowas wesentlich schneller als mit GUI-Rumgeklicke.Ein wichtiges Werkzeug ist natürlich ein guter Texteditor (Nein, das normale Windows-Notepad zählt nicht dazu. ;)). Also probiere verschiedene Editoren aus, such dir einen aus, und lerne ihn gut zu bedienen. Für mich ist das momentan Sublime, aber auch Notepad++ (Windows only) und viele andere sind gut. Leute, deren Bärte lang genug sind, kommen vielleicht sogar mit Vim oder Emacs super klar. 😉

480px-Richard-stallmanAber auch für die „normalen“ Editoren gilt: Lern die Tastenkombinationen (und generell Tippen ohne Hingucken, sowie Text nur mit Tastenkombinationen umzuformen). Jedes mal wenn du die Maus anfasst, verschenkst du Zeit, machst Fehler, nimmst eine schlechte Körperhaltung an und siehst uncool aus. Aber auch außerhalb deines Editor / deiner IDE solltest du mit möglichst wenig Mauskontakt klarkommen. Das zu lernen ist zwar anfangs anstregend, aber es lohnt sich, denn nicht nur die Geschwindigkeit deiner Arbeit, sondern sogar die Qualität kann dadurch steigen, weil du durch „kürzere Wege“ andere/bessere Mikroentscheidungen triffst.

Wenn man an einem Projekt arbeitet, sollte man sich einen Style (Einrückung, Namenskonventionen usw.) innerhalb dieses Projekts beibehalten.

Superhilfreich sind Versionsverwaltungssysteme wie zB. Git. Etwas in dieser Art sollte man in jedem Fall benutzen, nicht nur weil man beliebig „undo“ sagen kann, sondern auch weil man Code nicht auskommentieren muss sondern einfach rauswerfen kann (alte Versionen sind ja weiterhin verfügbar), und weil man aber gute Tutorials im Netz, einfach googeln. Man kann alles undo-en, muss keinen auskommentierten Code mitrumschleppen, und kann immer gucken, in welcher Version was (und was fürn Bug) reingekommen ist, und bei Teams wers war und warum.

Es gibt seehr viele verschiedene Programmiersprachen. Man muss aber nichtmal alle sprechen können, die auf LangPop oder TIOBE auftauchen. Allerdings ist es meistens eine gute Idee, über den Tellerrand hinauszuschauen. Wenn man aber beispielsweise schon Ruby kann, muss man sich nicht noch (außer natürlich ein Projekt verlangt es) mit Python, Lua oder anderen interpretierten, dynamisch typisierten garbadge-collectenden Sprachen beschäftigen, sondern lieber mit Sprachen, die andere Paradigmen benutzen oder auf anderen Abstraktionsebenen arbeiten. Für den erwähnten Ruby-Fall wäre vielleicht etwas statisch typisiertes, compiliertes wie C oder C++ und etwas möglichst rein funktionales wie Haskell oder Scheme toll. Gerade letzte Kategorie kann Programmierern, die es gewöhnt sind imperativ zu denken, zunächst sehr schwer fallen. Das Umdenken lohnt sich aber, auch wenn man die Sprache nie produktiv einsetzt, da es das generelle Verständnis für Algorithmen verbessert und auch den Programmierstil in imperativen Sprachen positiv beeinflussen kann. Statt Spaghetti produziert man dann vielleicht wirklich mal Ravioli. 😉 Wenn man normalerweise eher low-level programmiert, kann es eine gute Erfahrung sein, sich mal mit Webzeugs zu beschäftigen. Je größer das persönliche Repertoire ist, desto geringer ist die Chance, dass man eine Sprache wählt, die für das jeweilige Projekt vielleicht eigentlich eher ungeeignet ist. Eventuell kombiniert man auch mehrere Sprachen miteinander und implementiert die wenigen performancekritischen Ecken eines Python-Programms dann in C. Sprachen sind Werkzeuge und je nach Problemstellung unterschiedlich geeignet. Es sollte einem also nicht passieren, dass alles wie ein Nagel aussieht, nur weil man nichts als einen Hammer zur Verfügung hat. 🙂

ist2_5443998-hammer-and-screwPrograms must be written for people to read, and only incidentally for machines to execute.
– Structure and Interpretation of Computer Programs

Etwas, dass es grundsätzlich zu beachten gibt, ist, dass man sich nicht wiederholen (DRY) sollte. Wenn eine eigentlich einfache Systemänderung nämlich fordert, dass man direkt an mehreren Stellen etwas tun muss, ist die Frage nicht, ob man das jemals vergisst, sondern wann man das vergisst. Bei Backups ist Redundanz toll, in der Softwareentwicklung hingegen tötlich. Falls Duplikation sich gar nicht vermeiden lässt, sollte man diesen Vorgang im Build-Prozess automatisieren. Nur in ganz seltenen Fällen, wie zb. in C++ bei den Funktionssignaturen in den Deklararionen einer .hpp-Datei und den Definitionen in der zugehören .cpp-Datei lässt es sich nicht vermeiden. Aber hier macht einen der Compiler glücklicherweise auf die meisten Fehler aufmerksam.

Dass falsche bzw. veraltete Informationen schlimmer sind als gar keine, gilt selbstverständlich auch für Kommentare. Da man meistens mehr Zeit damit verbringt, Code zu lesen, zu verstehen und zu verbessern, als damit, neuen zu schreiben, können Kommentare wichtig sein. Jedoch sollten sie nicht so sehr erklären was oder wie der Code etwas tut, sondern mehr warum er etwas tut. Wenn er so klar geschrieben werden kann, dass Kommentare überflüssig sind, ist das aber natürlich noch besser. Für Interfaces-Dokus bieten sich Doxygen, Docstring usw. an. Wenn die Klasse oder das Modul oder was auch immer man gerade kommentiert, nicht thread-safe ist (warum eigentlich), sollte man das auch irgendwo angeben, ebenso wie eventuell geworfene Exceptions. Generell sollte sie den Benutzer, also den Entwickler einer aufrufenden Funktion, oft auch man selbst, mit ihrem Verhalten nicht überraschen. Falls die gewählte Programmiersprache Design by contract unterstützt (oder es sich wie in Python mit decorators umsetzen lässt), kann es auch helfen, das zu nutzen. Ansonsten sollte man preconditions einer Funktion zumindest mit Assertions absichern, um eventuelles undefiniertes Verhalten auf jeden Fall zu verhindern. Wenn die Funktion nicht gerade performancekritisch ist (was nur die wenigsten sind), kann man die Assertions auch ruhig im Release aktiviert lassen (crash ist besser als trash).

orthogonalityOrthogonalität ist ein wichtiges Konzept. Eine Komponente sollte nur eine Sache ordentlich machen (unix philosophy), sodass man bei einer veränderten Anforderung auch möglichst nur diese eine Komponente verändern und nicht an tausend Ecken dran muss. Wenn man Angst hat, etwas zu ändern, weil das System dadurch irgendwo ganz anders scheppern könnte, ist etwas faul. Daraus ergibt sich, dass man Gemeinsamkeiten von Klassen/Funktionen heraus-refactoren sollte. Wenn man die Chance hat, eine Funktion pure functional zu schreiben, also dass ihr Ergebnis nur von den übergebenen Parametern und nicht von irgendwelchem externen state abhängt, sollte man das ebenso tun. Das vermeidet Fehler und macht das Testen einfacher.

Arbeitskollegen sollten zwar voneinander wissen, was der andere tut. Für Software-Komponenten gilt das aber nicht. Jedes Teil sollte nur mit seinen direkten Nachbarn reden, und da auch nur so viel wie nötig, wobei immer nur die abstrakte Schnittstelle interessiert und Implementationsdetails egal sind. So macht man sich seine Abstraktionslayer auch nicht kaputt und hält die Kopplung lose.. Manchmal bekommt man auf der höchsten Ebene dann fast automatisch soetwas wie eine DSL geschenkt, was den Vorteil hat, dass man business errors schnell von Fehlern „weiter unten“ unterscheiden kann. Speziell bei der objektorientierten Programmierung sollte man dann noch mit soetwas wie Kapselung, „Tell, don’t ask.“ und das Liskov substitution principle kennen. So bleibt die Software einfach und offen für Erweiterungen ohne dass man schon von Anfang an Sachen schreiben muss, die man vermutlich eh nie brauchen wird. Manche Dinge sind nämlich nicht perfekt wenn man nichts mehr hinzufügen kann, sondern wenn man nichts mehr weglassen kann. 🙂

Design patterns, MVC usw. sollte man kennen und anwenden können, aber nicht darauf beharren wenn sie unpraktisch sind. Ähnlich wie UML sind sie Möglichkeiten, seinen Code besser Kommunizieren zu können, aber nicht dafür, ihn vollkommen zu bestimmen, denn die Implementierung ist einfach kein komplett im Voraus planbarer mechanischer Prozess, sondern ein Vorgang, bei dem man fast minütlich kleine Entscheidungen treffen muss. Einige Methoden berücksichtigen das auch.

Mit der Zeit entwickelt man ein Gefühl dafür, ob an einem Code irgendetwas faul ist und man nochmal kritisch drübergucken sollte. Ein Beispiel für solche code smells sind hardcodierte Werte. Sowas sollte man stattdessen vernünftig benennen und von außen konfigurierbar machen. Und wenn man gerade schonmal da ist, kann man versuchen, ganz in alter Pfadfindermanier, den Code sauberer zu hinterlassen als man ihn vorgefunden hat. Denn wenn man Mist hinterlässt, stellt sich schnell der Broken-window-Effekt ein.

cheese460Eine gewisse Art Faulheit ist allerdings gut, denn wenn man stupide Tätigkeiten dadurch lieber automatisiert, spart man sich viel Zeit. Tests sind hierfür ein gutes Beispiel. Diese kann man oft gut mit make, bash, oder Scriptsprachen wie Perl oder Python automatisieren und eventuell sogar schon welche schreiben, bevor man anfängt, das eigentliche Produkt, dass man testen möchte, zu entwickeln. Aber auch wenn dann alle Tests bestanden werden, bedeutet, das nicht, dass die Software fehlerfrei ist, denn man deckt fast nie alle Fälle ab. Wenn dann ein Bug gemeldet wird, und man ihn reproduzieren konnte, muss man halt klassisch Debuggen. Dafür sollte man lernen, einen Debugger zu benutzen. Damit kommt man besser voran als durch wildes Einstreuen vieler Print-Statements. Wenn der Bug dann behoben ist, kann ein entsprechender Testfall direkt zu den anderen aufgenommen werden.

Gnu_meditate_levitateFalls man selbst (incl. rubber duck debugging) bei der Fehlersuche nicht weiterkommt, kann man noch in einer entsprechenden Community nachfragen. Das Formulieren der Frage und vorallem das Reduzieren des Codes auf den problematischen Teil reicht manchmal dann schon, damit man doch selbst drauf kommt. Grundsätzlich gilt es dabei zu bedenken, dass der Fehler meistens im eigenen Code liegt und eher selten in viel benutzen Libraries und noch seltener im Compiler/Interpreter. Bei der Auswahl der Bibliotheken und sonstiger Tools ist es vorteilhaft, sich im Zweifelsfall aus bekannten Gründen auf freie Software zu konzentrieren, und möglichst schlanke Libs zu wählen. Das Rad hingegen selbst neu erfinden sollte man nur zu Übungszwecken, denn oft wird es zunächst nämlich eher quadratisch. 😉

LME_ww_031_webWenn irgendeine Funktionalität noch nicht vorhanden ist, oder man unabhängig von ihr testen können will, kann ein Mock dafür hilfreich sein. Auch für Präsentationen, zum Umgehen von blocking points und für Prototypen sind diese nützlich. Mit letzten kann man den Kunden schon in die Entwicklung einbinden und schnelles Feedback bekommen. Wenn es eh Wegwerfcode wird, kann man ihn auch in einer anderen Sprache als Endprodukt entwickeln, und muss nicht so viel error checking wie sonst machen. Apropos errors, Exceptions sollten wie der Name schon sagt nur für außergewöhnliche Fälle benutzt werden. Ansonsten kann eine Funktion auch einfach mal false zurückgeben und den Fehler loggen. Das erleichtert dann auch die Fehlersuche im Vergleich zum wortlosen abkacheln. Aber nochmal zurück zur User-Einbindung: Wenn die Benutzer schon im Voraus etwas testen können, erhöht sich die Chance, dass sie am Ende das bekommen, was sie wollen, und sie fühlen sich mit dem Produkt auch mehr verbunden, weil sie das Gefühl haben, dass sie daran beteiligt waren. Manchmal hilft es auch, sich einfach mal eine Zeit lang neben den Benutzer zu setzen, und zu gucken, wie er die Software bedient, denn hierbei erlebt man manchmal die ein oder andere Überraschung.

Zuletzt möchte ich noch gerne Donald Knuth zitieren:

Premature optimization is the root of all evil.

Also Performanceprobleme erst beheben wenn man sie mittels Profiler auch als solche identifiziert hat. Ansonsten kann man ruhig auch erstmal ein klein wenig mehr CPU-Zeit verbrauchen wenn man dafür sehr viel Entwicklungszeit einspart.

Und trotz all dieser Fähigkeiten und Hilfmittel sollte man ruhig mal out of the box denken. Manchmal ist die wirklich gute Lösung für ein vermeindliches Programmierproblem nämlich gar nicht in Software zu suchen, sondern viel eher in Hardwareänderungen oder sogar sozialen Dingen zu finden. 🙂

Was machen Informatiker (bzw. Softwareentwickler im Speziellen) eigentlich so?

InformatikerBannerFalls du die Frage in der Überschrift mit sowas wie „Öh, WLANs einrichten, Viren entfernen und Office-Kram machen, glaub ich.“ beantworten würdest und dich schonmal gewundert hast, warum manch Informatiker keine Lust hat, genau diese Sachen für dich zu tun, obwohl du ihn doch mit „Das ist doch das, was du gelernt hast und dir Spaß macht.“ motivieren wolltest, ist dieser Artikel wie für dich geschrieben. 😉

Informatiker haben von Computern nur so viel Ahnung wie Astrophysiker von Teleskopen, Tischler von Stichsägen, Köche von Backöfen, Biologen von Mikroskopen oder Mathematiker von Tafeln, Zirkeln, Papier und Bleistift. Es sind jeweils nur Werkzeuge, die zwar als Mittel zum Zweck dienen, mit denen man sich aber nicht notwendigerweise darüber hinaus beschäftigt.

Ursprünglich geht es in der Informatik nämlich um die Automatisierung der Verarbeitungen von Informationen und Berechnungen, und die Grundlagen dafür wurden schon lange bevor es elektronische Computer gab entwickelt.

Informatik ist zunächst wie die Mathematik eine Strukturwissenschaft. In der Praxis angewandt hilft sie oft dabei, langweilige Arbeit anzunehmen. Im mechanischem Umherschieben und Verrechnen von Daten sind Computer extrem schnell und zuverlässig, sodass viele Dinge in der Praxis ohne sie nicht möglich wären. Die Tatsache, dass Computer immer schneller werden, ist also Voraussetzung für die Umsetzung vieler Ideen.

ComputerhistoryEin Bit ist die kleinste Informationseinheit. Es kann nur die Werte 0 und 1 annehmen. Aus 8 Bits wird ein Byte zusammengesetzt, das eine Zahl repräsentiert. Buchstaben (und somit auch Wörter, Sätze, ganze Romane) werden ebenfalls intern als Zahlen dargestellt. Jedes Byte, dass beispielsweise beim Surfen über das Internet verschickt wird, könnte auch manuell per Brieftaubeneule auf Zetteln herumgeschickt werden, und alle weiteren Vorgänge könnten ebenfalls manuell durchgeführt werden. Man kann eine Turingmaschine auf diese Art bauen, es würde aber ziemlich lange dauern bis der hauseigene Zeichner einem die Website, die man sehen will, zusammengepinselt hätte. 😉

owl_internetAußerhalb der Forschung, also in der Anwendung, ist die Informatik nicht mehr so wissenschaftlich mathematisch rein. Als Softwareentwickler baut man Dinge, die irgendeinen Zweck erfüllen sollen. Unreinheit kann dabei durch abstruse Kundenwünsche, Deadlines, der Forderung nach Effizienz (Nutzen mit wenig Aufwand (auf Seite des Entwicklers und der Hardware!)) usw. entstehen. Manchmal weiß man gewisse Dinge auch einfach nicht sicher. Bei Schnittstellen zu closed source software muss man sich darauf verlassen, dass das Spezifizierte genau erfüllt wird. Man kann nicht alles selbst nachvollziehen, und wenn etwas fremdes fehlerhaft läuft, kann man nicht einfach reingucken, woran es liegt, und den Fehler beheben.

BlackboxAber unabhängig davon, ob die Software oder die Funktion, die man implementiert, mit fremder (freier oder unfreier) oder eigenen Software-Modulen zusammenarbeitet, hat man trotzdem meistens immer verschiedene Abstraktions-ebenen. Erst das macht es möglich, sehr komplexe Vorgänge zu überblicken. Wenn man gerade in einer dieser Ebenen denkt, muss man sich nicht darum kümmern, wie die Ebenen darunter, die man benutzt, funktionieren, solange sie das tun, was sie sollen. Teilweise werden die verschiedenen Ebenen sogar in unterschiedlichen Programmiersprachen realisiert.

Computerspiel_AbstraktionsebenenZusammen mit anderen Aspekten des zu lösenden Problems ergibt sich daraus übrigens, dass es nicht „die beste Programmiersprache“ gibt, sondern die Eignung einer solchen immer davon abhängt, was man mit ihr vor hat.

Doch unabhängig von Sprache und Ebene, in der man gerade denkt, lernt man schnell, dass wenn man etwas nur irgendwie ans Laufen bekommt ohne es verstanden zu haben, es einem meistens früher oder später um die Ohren fliegt. Auch wenn man Fehler versteht und drin lässt, weil man denkt, dass die entsprechende Situation eh nicht eintreten wird; also lieber direkt elegant (d.h. simpel) zuendedenken. 😉 Manchmal war etwas auch mal ordentlich, wurde dann oft geändert und braucht nun ein Redesign, da die Chance, dass es bei weiteren Änderungen in sich zusammenfällt, immer weiter steigt. Technologische Schulden zu machen muss nicht jeden mal die falsche Entscheidung sein. Man sollte sich ihrer aber zumindest bewusst sein.

jenga_fallingKlar ist Programmierung nicht jedermanns Sache, aber manchmal versteht man etwas erst wirklich wenn man es mal selbst gemacht hat. Falls du also wissen möchtest, wie soetwas praktisch ansatzweise aussieht, ist der folgende Abschnitt hoffentlich das Richtige für dich. Wir entwickeln zusammen ein Programm, dass das klassische Kinderspiel „Fizzbuzz„, anhand dessen Kinder Division üben können/sollen, (imperativ) umsetzt.
Es soll von 1 bis 100 hochgezählt werden, wobei alle Zahlen, die durch 3 teilbar sind, durch das Wort „Fizz“, alle durch 5 teilbare Zahlen durch „Buzz“ und Zahlen, die durch 3 und 5 teilbar sind, durch „FizzBuzz“ ersetzt werden:

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, 31, 32, Fizz, 34, Buzz, Fizz, ...

Es gibt verschiedene Möglichkeiten, einen Algorithmus zu entwickeln, der solch eine Ausgabe erzeugt, einer davon sieht im Pseudo-Code wie folgt aus:

Zähler = 1
Solange der Zähler nicht größer als 100 ist, mache folgendes:
    Wenn der Zähler durch 3 und durch 5 teilbar ist:
        Schreibe "FizzBuzz".
    ansonsten:
        Wenn der Zähler durch 3 teilbar ist:
            Schreibe "Fizz".
        Wenn der Zähler durch 5 teilbar ist:
            Schreibe "Buzz".
        Wenn der Zähler weder durch 3 noch durch 5 teilbar ist:
            Schreibe den Wert des Zählers
    Schreibe ", "
    erhöhe Zähler um 1

Hier sieht man auch gut, wie wir nur auf unserer speziellen Abstraktions-Ebene bleiben.
Wie der Computer Zahlen intern repräsentiert, wie er feststellt, ob eine Zahl durch eine andere teilbar ist, und wie er Dinge auf dem Bildschirm ausgibt, interessiert uns momentan gar nicht. Wir benutzen diese Funktionen einfach.

Zur Veranschaulichung hier das ganze nochmal als Programmablaufplan (Den Zähler habe ich „Z“ genannt, der senkrechte Strich „|“ steht für „ist Teiler von“, das auf dem Kopf gelandete U „∩“ bedeutet „und“ und die rosa Rauten sind verzweigende „wenn->dann“-Abfragen.):
Fizzbuzz_ProgrammablaufplanIn einer echten Programmiersprache (hier Python) könnte das ganze dann so aussehen:

import sys
for i in range(1, 101):
    if i % 15 == 0:
        sys.stdout.write('FizzBuzz')
    elif i % 3 == 0:
        sys.stdout.write('Fizz')
    elif i % 5 == 0:
        sys.stdout.write('Buzz')
    else:
        sys.stdout.write(str(i))
    sys.stdout.write(', ')

In Echt würde man das Ganze eventuell allgemeingültiger machen (andere Teiler, andere Ersetzungswörter usw.), aber vom Grundprinzip her funktionieren auch größere Projekte ähnlich. Ein Teil der Kunst dabei ist es, komplexe Aufgaben in kleine einfachere Teilprobleme zu zerlegen. Um das gut zu können, lernt man verschiedene design patterns, Idiome usw.

Interessant an dieser Tätigkeit finde ich persönlich unter anderem, dass man trotz Wiederverwendung bereits bestehender Algorithmen doch immer wieder auf Probleme stößt, für die es so noch keine fertige Lösung gibt, und über die man erstmal wieder nachdenken muss, bis einem dann (manchmal aus heiterem Himmel, z.B. unter der Dusche) plötzlich eine Idee kommt.

Und auch wenn die Suche nach Fehlern manchmal frustrierend sein kann, kann das Gefühl, in Quellcode durch Logik eine komplexe Welt erschaffen zu haben, die sich genau so verhält, wie man sich das vorgestellt hatte, schon recht erfreulich sein. 🙂

hannibal_planZusätzlich mag ich, dass die Arbeit als Entwickler Kreativität bei der Lösungssuche erfordert, und viel Abwechslung bieten kann. Man programmiert ja nicht nur, sondern hat auch noch genug andere Dinge zu tun (siehe Softwaretechnik). Und selbst sehr gute, erfahrene und vielseitige (Software-)Entwickler können bei Weitem nicht alles schon kennen und sind in vielen Bereichen immer noch Anfänger. Außerdem besteht der Alltag in diesem Beruf aus weitaus mehr als der eigentlichen Programmierung, die ich hier hauptsächlich beschrieben habe. Ebenfalls viel Zeit verbringt man mit Planung, Analyse, Kommunikation und anderem Management-Kram.

Ebenso wie andere Wissenschaften und Ingenieursdisziplienen, durchdringt auch die Informatik sehr viele Bereiche, in denen sie nicht direkt offensichtlich ist. Du kannst ja einfach mal über den Artikel „Computer science“ aus der englischen Wikipedia drüberscrollen und nur die Bildchen angucken. Schon allein das sollte eine Vorstellung der Vielfalt vermitteln. Die einzelnen Zweige sind wechselseitig voneinander abhängig und entwickeln sich gemeinsam.

Unser Umgang mit Informationen, die Art der Fähigkeiten, die gefragt sind, und die generellen Möglichkeiten, die wir haben, haben sich unter anderem durch die Informatik in den letzten Jahrzehnten sehr stark verändert. Ich freue mich darauf, zu sehen, was in der nächsten Zeit für weitere neue Ideen entstehen, denn kaum eine Branche entwickelt sich so rasant, wie die IT. Und ich hoffe auch, dass ich weiterhin Spaß daran haben werde als Softwareentwickler meinen (wenn auch infinitesimal kleinen) Teil dazu beizutragen. 🙂

Glücklichsein und andere Lebenssinne

The_Answer_to_Life_the_Universe_and_EverythingLeben als solches (Stoffwechsel, Homöostase, Fortpflanzung usw.) hat an sich wohl eher keinen inhärenten Sinn, sondern läuft als emergenter Prozess einfach im Rahmen der Naturgesetze (physikalisch, chemisch, biologisch) ab. Sinn ist ja eh etwas, das erst wir denkenden Lebewesen in Handlungen und Existenzen hineininterpretieren. Auch wenn wir der Evolution gern ein Ziel wie die Hervorbringung immer „höherer/besserer“ (Obacht, hochgradig subjektiv) Lebensformen zusprechen möchten, passiert auch sie einfach so. Alles hat eine Ursache, aber diese muss kein Grund im teleologischen Sinn sein oder haben. Frösche sind beispielsweise nicht dafür da, um Spinnen zu fressen, damit wir Menschen nicht so sehr von ihnen belagert werden, es geschah einfach so, dass sie es tun. Den Sinn sprechen erst wir ihnen zu, da sie jemandem (in dem Fall uns) nutzen.

frog-wideDa wir aber manchmal darauf (be)stehen, dass auch wir nicht sinnlos sind, suchen wir uns manchmal (wenn auch unbewusst) einen Zweck (und andere Grundsätze, ethisch oder sonstwie) für uns aus. Die Angebote sind ja zahlreich. Ich vermische hier gleich sicherlich kurzfristiges Glücklichsein öfters mal mit langfristiger Erfüllung, da mir die Grenzen dazwischen fließend vorkommen, denn oft ist es ein Abwägen (oder eher Tauziehen?) ähnlich wie beim Marshmallow-Test.

Na gut, was sucht man sich denn nun zur Erfüllung so aus? Für verschiedene Leute sind es wahrscheinlich unterschiedliche (auch stark kulturell geprägte) Mischungen aus teilweise diesen (oft auch wieder überlappenden) Sachen:

surfing-teahupoo-tahiti

  • Hedonismus in vielen Formen, also Genuss von Sex, Essen, Unterhaltung, Berieselung, Nervenkitzel, Musik, mit Freunden abhängen usw.
  • Selbstverwirklichung, sei sie sportlicher, beruflicher, intellektueller, finanzieller oder sonstiger Art. Man kann einfach auf einen hohen sozialen Status hinarbeiten oder fleissig trainieren, um irgendwann so gut Surfen zu können, dass Teahupoo einen nicht zerlegen würde, oder um andere krasse Sachen drauf zu haben.
  • Spiritualität. Diese muss nicht religiös sein. Das naturalistische Verstehen der Welt könnte man in diese Kategorie einorden sowie Mitgefühl und Hilfe (bis hin zur Aufopferung) für andere (z.B. ihnen in Foren beim Erwerb der Grammatik zur Seite stehen ;-)) oder was auch immer.

Je nach Persönlichkeit sagen einem diesbezüglich dann wahrscheinlich auch andere Philosophen zu. Für den *S*J könnten gesellschaftliche Pflichterfüllung und Tugenden ähnlich wie bei Aristoteles und Konfizius passen. Als *S*P mag man eventuell Aristipp lieber, liest ihn aber nicht, weil man lieber Party machen geht, als *NF* sagt einem möglicherweise Budda mit seinem Altruismus eher zu und als *NT* gefällt Platon und seinen Wunsch, die Struktur der Welt zu verstehen, vielleicht besser.

Verschiedene_Arten_Glueck_zu_empfindenNaja, tun wir mal einfach so, als würde man gerne glücklich sein. Wenn man es nicht ist, stolpert man eventuell über irgendwelche beratenden Bücher, die (überspitzt gesagt) mit „Du musst einfach nur …“ anfangen und mit sowas wie „… jeden Tag leben als wäre es dein letzter.“ weitermachen. Mal abgesehen davon, dass mein Morgen vermutlich ziemlich übel wäre wenn ich mein Heute nach dieser Devise gestalten würde (Wingsuit Basejumping anyone? :)), kommt dazu, dass solche Tipps gerne von Leuten gegeben werden, die selbst eh einfach schon ziemliche Dauergrinser sind. Damit will ich nicht ausschliessen, dass es nicht auch tatsächlich hilfreiche Techniken geben kann, sondern nur darauf hinaus, dass Glücklichsein genau wie viele andere Charakterzüge auch, unter anderem eine genetische Komponente hat. (Man kann nicht einfach abhaken, welche Punkte/Ebenen der Bedürfnispyramide bei einem Menschen erfüllt sind, und dadurch wissen, wie glücklich er sich fühlt.)

HerzSelbst so ein netter Ratschlag wie „Entscheide dich so, dass du es im Alter rückblickend nicht bereuen wirst.“, der meistens darauf abzielt, Chancen nicht zu verpassen sondern zu ergreifen, hat Schwächen, denn selbst innerhalb von 10 Jahren kann sich unser persönliches Wertesystem stark verändern, sodass wir dann praktisch wieder ein anderer Mensch sind, auch wenn wir in fast jedem Alter gerne meinen, dass unser jetziger Charakter schon vollendet sei.

Deshalb trage ich jetzt einfach ein paar Dinge, die mir bei meiner Recherche so über den Weg gelaufen sind, zusammen.

BaumUnser erlebendes Selbst und unser erinnerendes Selbst müssen sich nicht immer einig sein. Man erinnert sich manchmal nur an den besten oder den schlimmsten Teil einer Erfahrung bzw. das Ende, nicht aber an die Gesamtheit (vgl. Peak–end rule und Duration neglect). Die erinnerte Vergangenheit ist also nicht unbedingt ein perfekter Indikator dafür, was man mögen wird. Ebenso kann einen die vorausschauende Überlegung, was nun glücklich machen würde, in die Irre führen. Man überschätzt systematisch die Freude, die man aus neuem materiellem Besitz ziehen wird im Vergleich zu anderen Optionen, die sich für den gleichen Preis bieten würden. Einfachere Dinge, die man dafür mehr bewusst erlebt (Theaterbesuche, Musikunterricht, Zeit zum Spazieren) sind auf Dauer oft größere Glücksspender als teure Autos, die man sich in die Garage des teuren Hauses oder in den Stau stellt. Andersherum ist es jedoch genauso. Wir überschätzen auch die dauerhaften negativen Folgen, die eine dramatische Änderung auf unseren Gemütszustand haben könnte. Überraschenderweise sind Lottogewinner oft nach einigen Jahren wieder ähnlich zufrieden/unzufrieden wie zuvor (auch wenn sie ihr Geld nicht verplempert haben), und auch Menschen, die eine Querschnittslähnung erlitten, scheinen sich daran zu gewöhnen. Es sieht also so aus, als würden wir weniger vom absoluten Zustand, sondern eher von seinen Änderungen (erste zeitliche Ableitung) abhängen.

Abgesehen von den offensichtlichen Schwierigkeiten Glück zu messen, scheint es zumindest hilfreich zu sein, wenn der sozioökonomischen Unterschiede im persönlichen Umfeld nicht allzu groß ist, man das Gefühl von Kontrolle über sein Leben hat und sich für irgendwas nützlich vorkommt.

Necker_cube.svgAnsonsten sind viele Erlebnisse auch einfach sehr mehrdeutig interpretierbar, und ähnlich wie beim Necker cube liegt es am Betrachter, ob er das ganze nun positiv oder negativ sieht. Wir sind gar nicht mal so schlecht darin, im Nachhinein Glück in Erlebnisse reinzusynthetisieren.

Mal abgesehen von alle dem (um den Bogen zum Anfang wieder zu schliessen), hat die Natur nicht vorgesehen (sowas kann sie ja grundsätzlich nicht), dass wir zwangsläufig glücklich sein müssen, sein werden oder werden können. Auch gibt es schwerwiegendere Selektionskriterien als dieses. (Allerdings kann man es üben). Also: YOLO! ^_^

Happiness_Flussdiagramm

Talent oder Training, Nature or Nurture, Veranlagung oder Umwelteinflüsse?

michael_jordan_free_throw_dunkGerade wenn Leute in irgendwas besonders gut sind, sei es irgendeine spezielle Sportart, eine allgemeine athletische Fähigkeit (wie bspw. Explosivkraft), das Spielen eines Musikintruments oder einfach nur im logischen Denken, fragt man sich manchmal ganz gerne, wieviel von dieser Leistung wohl angeboren ist (Talent, Nature, Veranlagung) und wieviel erst im Laufe des Lebens (Training, Nurture, Umwelteinflüsse) dazugekommen ist. („This is ten percent luck, twenty percent skill, fifteen percent concentrated power of will…“)

Auf den ersten Blick scheint die Frage auch vernünftig zu sein, da das Ergebnis sich ja schon aus diesen zwei Komponenten zusammensetzt.

TalentTrainingAdditivBei genauerem Nachdenken, merkt man aber schnell, dass an dieser mathematischen Analogie etwas nicht stimmt, denn ohne die richtigen genetischen Voraussetzungen (Körpergröße, Hebel, Anteil an schnellzuckenden Fasern in der Skelettmuskulatur, Anzahl der Beine Oo) wird man auch mit dem besten Training kaum von der Freiwurflinie Dunken können. Wenn Michael Jordan allerdings niemals etwas mit Basketball (oder Sport allgemein) zu tun gehabt hätte, würden seine jump shots vielleicht ähnlich weit am Korb vorbeisegeln wie die deiner Oma. 😉

Es scheint also eher das Zusammenspiel (nicht die Summe) beider Faktoren zu sein, von dem das Ergebnis abhängt. Eine multiplikative Analogie beschreibt es für meinen Geschmack besser:

TalentTrainingMultiplikativEin gleichseitiges Rechteck kann noch so lang sein, die Fläche ist trotzdem Null wenn die Höhe Null ist.

Oder anders: Beim Vortrieb eines Schiffs kann man auch nicht sagen, ob die Schiffssraube oder die Stärke des angeschlossenen Motors wichtiger ist. Wenn eins kaputt ist, kann das andere noch so gut sein, es geht nix.

Falls man sich tatsächlich trauen würde, diese beiden facettenreichen Größen auf jeweils eine eindimensionale Skala, die dazu wohl noch recht willkürlich gewählt wäre, zu projizieren, könnte man beide trotzdem nicht (zumindest nicht ohne wie auch immer herbeiphantasierte Umwandlungsfunktion) miteinander vergleichen. Es wären nunmal unterschiedliche Einheiten. Zusätzlich ist es auch noch definitionsabhängig, was denn nun alles zur Veranlagung gezählt wird. Prinzipiell ist es auch veranlagt, dass man nicht unter Anenzephalie leidet und dass man keine Amöbe ist.

SchiffsschraubeBeim Hochleistungssport ist die Frage noch ziemlich harmlos und oft eher für Talentscouts interessant, wobei natürlich noch mehr an Komplexität dazukommt, da Lernkurven unterschiedlich verlaufen, und sich auch bei quasi gleichem Training verschieden überholen können. Talent ist halt doch keine eindimensionale Größe. Da viele Hochleistungssportler unter Umständen schon recht lange (incl. Frühförderung usw.) sehr optimiert trainieren, kann in solchen Fällen die Veranlagung dann aber den entscheidenen Unterschied machen. Wie sehr es sich dabei optisch Bemerkbar macht, dass man es teilweise mit ziemlich krassen Mutanten zu tun hat, hängt von der Sportart ab. 😉

Wenn es jedoch um alltägliche Dinge geht, kann es schon sein, dass auch wir wissen möchten, ob etwas eher angeboren oder eher nachträglich von Außen zugefügt (Erziehung, Lebensstil usw.) ist. Denken wir nur beispielsweise an Hyperaktivität bei Kindern, Herzinfarktrisiko, IQ, Gesundheit im Alter, Noten im Mathe-Unterricht, psychische Störungen usw. Auch bei all diesen Dingen lässt sich nicht wirklich sagen, was „mehr“ ausmacht, Veranlagung oder Umwelteinflüsse.

Klar, durch Analyse von Statistiken kann man beispielsweise herausfinden, um welchen Faktor das Risiko, bspw. an Multiple Sklerose zu erkranken, höher ist wenn ein Elternteil daran leidet, aber auch dann weiß man nichts genaues, denn Kinder teilen sich mit ihren Eltern meistens nicht nur die Gene, sondern auch die Umwelteinflüsse. Es gibt natürlich Kinder, die nicht bei ihren Eltern aufwachsen. Wenn man über genug solcher Fälle Zahlen bzgl. des zu untersuchenden Phänomens hat, kann man nur diese Auswerten, aber schon während der Zeit im Mutterleib werden sich auch Umwelteinflüsse, die sich viel später immernoch auffällig auswirken können, geteilt, weswegen auch hier eine kleine Restunsicherheit bleibt.

562px-Tubal_Pregnancy_with_embryoWenn dir demnächst also jemand erzählen will, irgendetwas sei „nur Veranlagung“ oder „nur Erziehung“ oder sonstwas, weißt du, dass die Zusammenhänge nicht so einfach sind.

Faustregel (nicht belegt, nur ein persönliches Gefühl): Wenn etwas sehr gut läuft, beispielsweise wenn Bodybuilderer/Pianisten/Physiker ziemlich krass gut sind, sagen sie über sich selbst gerne mal, dass sie gar keine „guten Gene“ hätten, sondern sich alles nur hart erarbeitet hätten. Wenn etwas schlecht läuft, beispielsweise wenn jemand Typ-2b-Diabetes hat, sagt er ganz gerne mal, dass er da nichts dafür kann, und alles angeboren sei. Beides scheint mir aber eine Form des self-serving bias zu sein. (Mehr über solche kognitiven Verzerrungen kann im Artikel „Zwei Systeme und nur ein Kopf“ nachgelesen werden.) Klar hat David Garrett auch extrem viel und gut geübt, und viele Leute, denen es gesundheitlich schlecht geht, haben auch einfach nur Pech gehabt, aber wenn man wirklich über Ursachen nachdenken will, kann es praktisch sein, solche „Schuld-Fragen“ wegzulassen.

krasser_RueckenIm Zweifelsfall kann man dem Anderen leicht vorführen, dass z.B. die Anzahl der Nasenlöcher auch durch Umwelteinflüsse verändert werden kann. Ähm, nein, lieber doch nicht. 😉

Dooooooooooooooooooof.

Früher hatte ich manchmal das Gefühl, dass die ganze Welt irgendwie Verarsche sein muss, so dämlich wie die Gesellschaft sich als Ganzes oft verhält. Mit etwas Spieltheorie kann die Entstehung einiger Muster jedoch ansatzweise erklärt werden.

Damit dieser Artikel Sinn ergibt, ist es nötig, dass du das prisoner’s dilemma, dass ich im Artikel „Rache ist ja soo selbstlos… 😉“ beschrieben habe, verstanden hast. Also, falls das gerade nicht präsent ist, kannst du eben nochmal kurz nachlesen. Ich warte hier auf dich. 🙂

Aus dem Artikel „Zwei Systeme und nur ein Kopf“ wissen wir ja, dass Menschen oft nicht rational entscheiden. Zusammen mit der Vorstellung der Linsensuppe im Kopf stellt sich die Frage, ob humanes Verhalten sich überhaupt spieltheoretisch (also mathematisch) sinnvoll und alltagsrelevant untersuchen lässt. Antwort: Ja, das tut es. Denn auch wenn Gefühlentscheidungen in vielen Kontexten unlogisch erscheinen, hat sich der genetisch kodierte Teil unseres Verhaltens über Millionen von Jahren durch Selektion, deren Funktionsweise sehr gut logisch zu ergründen ist, herausgebildet. Ein paar Beispiele dafür gibt es im Artikel „Evolution und Folgen des parental investments„. Dazu kommt, dass Selektion nicht nur auf genetischer Ebene stattfindet, sondern auch beispielsweise zwischen Unternehmen. Es sind natürlich alles nur genäherte Modelle, die jedoch nützlich sein können. So, aber nun genug des Vorgeplänkels; auf geht’s! 🙂

Adam Smith hat uns ja beigebracht, dass in einem freien Markt alle profitieren wenn jeder zu seinem eigenen Besten handelt. Ein Anbieter einer Ware will Profit machen, und gibt sich deshalb Mühe, mit einem guten Preis-/Leistungsverhältnis zu glänzen, denn nur dann kaufen die Kunden, die für sich selbst ja auch nur gutes wollen, auch bei ihm. Durch diese Konkurrenz zwischen den Anbietern haben die Kunden, also die Gesellschaft, es maximal schön. Der erwähnte Schottische Ökonom nannte diese Kraft, die Allen zu Gute kommt, die „unsichtbare Hand“ des Marktes.

Diese Hand langt manchmal aber auch voll daneben; besonders in Märkten mit asymetrischer Information, also in diesem Fall wenn der potentielle Kunde die Qualität der Produkte nicht so gut wie der Anbieter kennen kann. Ein klassisches Beispiel dafür ist der Gebrauchtwagenmarkt, aber viele andere Bereiche sind ebenso passend. Beispielsweise beim Schnitzelkauf im Supermarkt weiß man auch nicht unbedingt, wie es um die Qualität bestellt ist. Und schon haben wir ein prisoner’s dilemma! Ja wo das denn? Zwischen den Anbietern! Wenn alle gute Produkte auf den Markt werfen, reguliert sich der Preis auf ein bestimmtes Niveau ein (Marktgleichgewicht). Die PD-Spieler kooperieren. (Keiner der Anbieter schummelt, indem er getarnten Müll einbringt.) Wenn einer jetzt jedoch Schrott (wertloses Auto, extrem billig produziertes Fleisch usw.) hervorzaubert, kann er damit zunächst mehr Gewinn machen, da er es zum gleichen Preis verkaufen kann, jedoch weniger Herstellungskosten hatte. Im PD-Jargon defektiert er also. Den Kunden wird die sinkende Durchschnittsqualität (erhöhte Chance, Mist zu erwischen) bewusst, weswegen er nicht mehr bereit ist, so viel zu bezahlen. Der Gesamtpreis auf dem Markt (auch der, der qualitativ hochwertigen Produkte) sinkt. Die Defektion hat also ganz klassisch allen PD-Spielern geschadet. Um Kooperation zur evolutionär stabilen Strategie zu machen, ist Rache gut. Das ist hier aber nicht so einfach. Damit das ganze nicht total eskaliert, hilft leider nur Kontrolle und informierte Kunden, die irgendwie herausfinden, welche Anbieter ihnen die Montagsautos und das Gammelfleisch andrehen wollen (Screening). Die Spieler, die auf Qualität setzen, können das zwar durch Gütesiegel zeigen (Signaling), aber das klappt auch nicht immer. Self-Selection in Form von hochwertigen Verträgen (z.B. zwei-Jahres-Garantie für Gebrauchtwagen) bietet sich auch nicht immer an. Da „beschissen“ zunächst kurzfristig die dominante Strategie (die durch auf reinem Preisvergleich basierenden Kaufentscheidungen der Kunden auch noch gefördert wird) sein kann, lässt sich nicht vermeiden, dass sie auch gespielt wird. Eventuell pendelt sich das Nash-Gleichgewicht irgendwo bei „ein Bischen Mist, aber nicht zu viel“ ein. Je nach aktueller Phase im Kondratjew-Zyklus (falls es sowas tatsächlich geben sollte) könnte es auch schwanken. Ich stelle mir vor, dass während eines Aufschwungs mehr kooperiert wird als während eines Abschwungs.

Themensprung -> Presse/Medien. – Es wäre ja toll wenn alle gewissenhaft und wahrheitsgetreu berichten würden, jedoch wäre auch das kein evolutionär stabilder Zustand. Der Selektionsdruck kommt hier von den Konsumenten. Anbieter, die das drucken/zeigen, was am meisten gekauft wird, verdienen mehr als die, die drucken/zeigen, was wahr/nützlich/sinnvoll ist. Wenn die Leute nützliche Wahrheit lesen/sehen wollen, wird es die (oder etwas, das auch auf den zweiten Blick noch danach aussieht) auch geben; wenn nicht, dann aber auch nicht (zumindest nicht so viel.) Damit die schönen Geschichten nicht zu absurd wirken, ist der Ursprung machmal authentisch, jedoch die Tatschen sind so verzerrt, dass nur noch wenig wiederzuerkennen ist. Ein Beispiel dafür ist, wie bei gefundener Korrelation oft von angeblicher Kausalität berichtet wird. Es verkauft sich einfach besser.

Dieses Muster jetzt auf die Politik zu übertragen ist einfach: Welcher Politiker wird sich mehr durchsetzen (gewählt werden)? Kandidat A, der alle seine Energie da rein steckt, sinnvolles zu sagen und zu tun, oder Kandidat B, der seine Energie mehr darein steckt, die Wähler dazu zu bringen, ihn zu wählen, indem er ihnen erzählt, was sie hören wollen? Auch hier ist die Strategie von A wieder keine evolutionär stabile, weil sie von der von B flott invadiert wird. Merkst du, dass das nicht das Gleiche ist wie „Politiker… Alle an die Wand stellen…“, das mein Schwiegeronkel gerne mal sagt? Es geht stattdessen darum, dass auch wenn nur 600 von 30000 Politikern so sind, es sein kann, dass genau diese in einer Demokratie nach oben gespült werden. Den Auftrieb dafür liefern wir selbst.

Ein weiteres „schönes“ ist das Beitragsdilemma. Angenommen, es gibt ein Ziel, dass (fast) alle eigentlich gerne erreichen wollen, wie beispielsweise saubere Luft (Klimaschutz) oder Meere, in denen langfristig noch genug Fische sind. Jeder hätte einen Vorteil daraus. Wenn man als Staat aber selbst nicht so sehr mitmacht bei der Klimasache, spart man viel Geld und profitiert ja trotzdem davon, dass die anderen schützen. Die Erhöhung des globalen Gesamtschadens, die man dadurch verursacht, wiegt den lokalen wirtschaftlichen Vorteil nicht auf, genau wie bei der Fischindustriefirma, die dann doch alles rausholt, was geht. Lokale „Schlauheit“ bedeutet oft globale Dummheit. Das Ganze nennt sich dann Tragik_der_Allmende.

Hilft es, das zu wissen? Naja, muss nicht, aber zumindest ich ich fühle mich etwas besser wenn ich verstehe, warum das, was doof ist, doof ist. Und wenn das auch nichts mehr nützt, dann vielleicht nocht das Bewusstmachen, dass Willensfreiheit eine Mär ist. 😉

„Ich glaube nicht an die Freiheit des Willens. Schopenhauers Wort: ‚Der Mensch kann wohl tun, was er will, aber er kann nicht wollen, was er will‘, begleitet mich in allen Lebenslagen und versöhnt mich mit den Handlungen der Menschen, auch wenn sie mir recht schmerzlich sind. Diese Erkenntnis von der Unfreiheit des Willens schützt mich davor, mich selbst und die Mitmenschen als handelnde und urteilende Individuen allzu ernst zu nehmen und den guten Humor zu verlieren.“ – der schlaue Albert

Zu guter Letzt sei nochmal am Beispiel der nicht nachhaltigen Fischerei gezeigt, dass man nicht einfach nur im Stau steht, sondern selbst der Stau ist: Wenn wir mit unseren Kaufentscheidungen bewusst darauf einwirken würden, zu fördern, was wir eigentlich für gut befinden („Geld ist Stimmzettel.“ und so), würden sich einige Probleme lösen. Aber wer hat schon tatsächlich den Greenpeace-Einkaufsratgeber im Supermarkt dabei…

Natur-/Umweltschutz

Wie schon im Fleischfresserei-Artikel kurz erwähnt, ist Natur kein Wesen mit Absichten oder Leidensfähigkeit. Sie ist ein Wort für einen Zustand ohne Kultur, also eigentlich für das, was physikalisch in DNA kodiert ist und ohne anders geartete generationsübergreifende Informationsweitergabe existiert. Es ist jedoch nicht nur dem Mensch, der Kultur hat, auch andere (vorallem Säuge-)Tiere sind dafür bekannt. Es werden Werkzeuge, deren Herstellung und Handhabung von den Vorfahren erlernt wird, benutzt, um die Umwelt den eigenen Bedürfnissen anzupassen. Die Fähigkeit, Kultur zu bilden, ist also eine natürliche Eigenschaft vieler Lebewesen. So gesehen ist alles, auch alles, was Menschen tun, „natürlich“, egal wie hochtechnologisch es wirkt. Selbst synthetisch hergestellte Stoffe sind so also nicht „unnatürlich“, und das nicht nur weil Penicilline beispielsweise auch in Pilzen vorkommt (da wurde es sogar entdeckt) und ein Vorläufer von Aspirin, das Salicin, unter anderem in Silberweiden und Stiefmütterchen gefunden werden kann. Da diese Unterscheidung bei genauerer Betrachtung also ihre Schwammigkeit offenbart, ist sie offensichtlich nicht geeignet, um irgendwelche Entscheidungen auf ihrer Basis zu treffen. Dazu kommt, dass man sich von dem Gedanken, dass Natur „gut“ und alles andere eher „böse“ sei, verabschieden muss. Es gibt höchstens Dinge oder Zustände, die in bestimmten Situationen für bestimmte Lebewesen nützlich oder schädlich sind.
Allgemeingültige Wertungen werden da nur von uns selbst nachträglich reininterpretiert, sind aber nicht inhärent vorhanden. Warum also die Natur schützen? „Wenn wir die Meere industriell leergefischt haben, können sich vielleicht Quallen besser vermehren, ist doch schön für sie. Außerdem ist der letzte Hai vermutlich nicht trauriger wenn er stirbt als wenn es noch ganz viele seiner Art gäbe.“ Wenn Arten aussterben erfahren Individuen nicht mehr Leid als wenn die Art weiterexistiert.
Auch die Vereinfachung, dass Veränderung der Umwelt, die der Mensch verursacht, schlecht seien, und man einen gewissen Zustand erhalten müsse, greift nicht, denn Veränderung ist ein unvermeidlicher Teil des Ganzen. 99% aller Arten, die je auf der Erde gelebt haben, sind ausgestorben, und das war schon so, bevor der Mensch anfing, die Erde im großen Stil zu bevölkern. Außerdem ist ein „Es ist so / war schon immer so.“ sowieso noch lange kein „Es soll so sein.“ (vgl. Humes Gesetz).
Wenn wir also von Umweltschutz sprechen, geht es eigentlich um Selbstschutz (im Gegensatz zum Naturschutz, der auch Dinge schützen will, die für den Menschen nicht so relevant sind). Wir wollen eine Umweltsituation, die für uns (und vielleicht folgende Generationen) irgendwie nett ist. Ob frei lebende Geparden dafür nötig sind, muss jeder selbst entscheiden. Die Werte weisen wir also subjektiv zu. Ich persönlich finde z.B. die erwähnten Tierchen ja echt stylisch, vorallem wenn sie mit über 100 km/h durch die Gegend fetzen, und würde mir wünschen, dass sie das in Zukunft auch noch tun. Darüber, was besonders schützenswert ist, werden sich jedoch wohl nie alle einig sein. Selbst auf die Frage, wie wenig wir unsere Kosten auf zukünftige Generationen externalisieren dürfen („Sollen die sich doch um unseren Müll kümmern, wir verbuddeln ihn jetzt erstmal.“), gibt es keine eindeutige Antwort, auch wenn es gut möglich ist, dass unsere (Ur-)Enkelkinder uns später einmal ziemlich vorwurfsvoll angucken werden.
Man kann Dinge schützen, weil man sie schön, interessant, erforschenswert, praktisch, erholsam oder sonstwie schützenswert findet. Was nun letztendlich im großen Stil getan wird, kann nur im Konsens entschieden werden, wobei man sich natürlich (höhö) dann auch Gedanken machen muss, wie man Leute, die nicht intrinsisch motiviert sind, extrinsisch dazu bringen kann, mitzuziehen. Man kann beispielsweise jahrelang predigen, dass es doof ist, leere Cola-Dosen aus dem Auto zu werfen, jedoch die simple Einführung des Dosenpfands löst das Problem wesentlich effizienter, da nun einfach ein direkter Anreiz da ist. Und wenn man seine Dosen doch lieber in der Gegend liegen lässt, findet sich eventuell jemand, der sie beim zufälligen Vorbeigehen aufsammelt, weil er den Pfand kassieren möchte. Solche eleganten Lösungen, die menschliches Zufallsverhalten (zumindest teilweise) automatisch selbst ausgleichen, finde ich toll. 🙂

Fleischfresserei

Zum Nachdenken über das Thema durch eine Diskussion im Trickingforum (und immer mal wieder durch einen guten Freund) angeregt schreibe ich nun mal auf, was mir diesbezüglich so durch den Kopf geht.

Der Einfachheit halber, differenziere ich in diesem Artikel nicht zwischen den verschiedenen Derivaten des Vegetarismus (Pescetarismus usw.) sondern beschränke mich auf „alles“, „nur kein Fleisch“ (ovo-lacto-vegetarisch) und „gar keine Tierprodukte“ (vegan).

Wichtig finde ich, die Argumente einzeln zu betrachten und nicht unnötig zu vermischen. Gerade wenn man moralisch für etwas motiviert ist, kann es passieren, dass man in einigen eigentlich sachlichen Fragen sonst unsachlich wird. Unser frontaler Cortex verliert den Boxkampf (The thrilla adjacent to the amygdala) gegen das limbische System ja manchmal ganz gerne. 😉 Also, auf geht die wilde Fahrt.

Viele Menschen entscheiden sich für eine fleischlose Ernährung, weil sie ihrer Gesundheit etwas gutes tun wollen. Immerhin gibt es ja genug Studien, die eine starke Korrelation zwischen erhöhter Lebenerwartung, besseren Blutwerten und vegetarischer Ernährung zeigen. Das, was da gemessen wird, ist jedoch keine Kausalität. Um die zeigen zu können, müssten viele Leute randomisiert den Testgruppen zugeteilt werden (siehe Korrelation und Kausalität) und auch dann hätte man in dem Fall noch das Problem, dass die Leute ja wissen würden, in welcher Gruppe sie wären. Die genannte Korrelation kann also anders kausal bestehen. Vielleicht wird man ja nicht gesünder wenn man weniger Fleisch isst, sondern Leute, die auf ihre Gesundheit achten, werden im Schnitt öfter Vegetarier. Man würde also im Endeffekt gesundheitsbewusste Vegetarier mit auf-Gesundheit-scheissende Fleisch-Essern vergleichen. Wer dann hier gesundheitstechnisch besser abschneidet, ist kaum überraschend.

Fleisch, das man momentan so kaufen kann, ist oft mit Antibiotika belastet, und die Tiere haben aus wirtschaftlichen Gründen nicht wenige Wachstumshormone bekommen. Vermutlich wäre es besser für einen, wenn dies alles nicht der Fall wäre, jedoch sind das Eigenschaften der spezifischen Produkte und nicht von Fleisch generell als Nahrungsmittel.

Muskelheinis (Schnell-)Kraftsportler, von denen ich zufällig einige kenne, sagen hingegen gerne mal, dass sie ohne Fleisch ihre sportliche Leistung gar nicht erbringen könnten (Proteine, Vitaminkombination usw.) und argumentieren damit, dass ja fast alle Leute, die richtig stark/breit sind, Fleisch essen. Aber auch das ist wieder nur Korrelation und keine Kausalität. Zumindest aus meinem amateurhaften Wissen spricht nichts dafür, dass es ohne Fleisch physiologisch nicht genau so gut ginge (wenn man nur ein klein Bischen Ahnung von Ernährung hat). Ganz ohne Tierprodukte, also vegan, ist es schon etwas aufwendiger. Es fällt ja nicht nur der gute Magerquark als Proteinquelle weg. 😉 Da muss man dann halt schon etwas Ahnung haben und auf einige Sachen achten (biologische Wertigkeit durch Kombinieren von verschiedenen Aminosäureprofilen erhöhen usw.). Trophologische Argumente sind oft allerdings eh nicht die entscheidenden.

Schwerwiegender finde ich die ethischen Aspekte. Tiere, die wir so essen (nicht nur Säugetiere), sind Lebewesen mit komplexen Zentralnervensystemen, denen jeder, der sie kennt, auch soetwas wie Leidensfähigkeit attestieren würde. Wer das noch nicht getan hat, dem empfehle ich, sich mal ein paar „Schockerdokus“ anzugucken, in denen man einiges über die industrielle/intensive Tierhaltung lernt. Wenn Menschen Rechte haben, wieso sollten nichtmenschliche Tiere dann keine haben? – „Aber Menschen sind doch von Natur aus Omnivore und keine Herbivore. Guck mal, wir haben Eckzähne, unsere Vorfahren mit den Höhlenmalereien aßen auch Fleisch und andere Primaten tun es auch. Die Natur will es so.“ – Zunächst einmal will die Natur gar nichts. Die Natur ist kein denkendes Wesen. Natur ist nur ein Wort für einen angeborenen Zustand (also einen ohne Kultur), in dem sich Lebewesen zunächst befinden. Klar sind Menschen „von Natur aus“ keine reinen Pflanzenfresser. Das faktische sollte aber keine normative Kraft haben (hihi). „Natürlich“ ist auch, dass man ein Krüppel bleibt wenn man sich einmal das Bein bricht. Hier ruft jedoch kaum einer „So soll es dann halt sein.“, sondern ist froh, dass wir dank Kultur (in dem Fall Wissenschaft/Medizin/Technik) etwas dagegen unternehmen können. 😉 So, nun können wir unserem Mitleid für die Nutztiere (sofern wir denn welches aufbringen) freien Lauf lassen. Und dass man mit jedem Stück Fleisch, dass man kauft, den Hersteller und seine Methoden unterstützt, ist ja wohl jedem klar.

Die Erzeugung von Tierprodukten benötigt mehr Fläche und andere Rohstoffe pro hinterher für den Menschen konsumierbarer Kalorie als der Anbau pflanzlicher Nahrung. Durch den Umstieg auf diese würde es also in diesem (vereinfachten) Modell mehr Essen für jetzt noch hungernde Teile der Weltbevölkerung geben. Wie sich der komplexe Weltmarkt tatsächlich verhalten würde (sinkende Nachfrage -> niedrigere Preise -> neue Nachfrage anderswo?) ist jedoch schwer vorherzusagen. Solche Systeme sind oft recht chaotisch. Dazu kommt, dass nicht alle Flächen, die als Weide nutzbar sind, sich auch für den Ackerbau eignen. Vollständig ist diese Frage also leider nicht zu beantworten. Rein ökologisch kann man noch einwerfen, dass Kühe ziemlich viel Methan auspupsen, was zum Treibhauseffekt (Jaja, Hoax, ich weiß. ;)) beiträgt. Versuchen, sie deshalb alle aufzuessen, hilft dabei natürlich nicht, sondern erhöht den Zuchtbestand nur noch weiter.

Der letzte Aspekt, der vorallem für Leute, die Tierprodukte (insbesondere Fleisch) essen, ein wichtiger ist, ist der Genuss, auf den man eventuell nich verzichten möchte, auch wenn man Geschmack wie andere Gewohnheiten auch, durch Gewöhnung umlernen kann. Google einfach mal nach „veganische Rezepte“.

Alles in Allem spricht logisch gesehen eigentlich kaum etwas dafür, Fleisch zu essen, und vieles dagegen. Trotzdem bleibt das Ganze für die meisten eher eine Gefühlsentscheidung. Fleischfresser wie ich (Überraschung? ^^)) priorisieren ihren persönlichen Luxus einfach über den ethischen und ökologischen Argumenten. Moralgefühle sind nunmal nicht immer konsistent. (siehe lineare Moralregression) und durch unbewusste Verdrängung kann man sich wunderbar zufrieden asig verhalten. 😀 Ähnliches tun wir ja auch wenn wir mit dem Auto irgendwo hin rasen und somit schön dafür sorgen, dass weniger fossile Rohstoffe in der Erde und mehr Abgase in der Atmosphäre sind, oder wenn wir uns neue Klamotten kaufen, die von ausgebeuteten Kindern zusammengenäht wurden.

Dass ethisch motivierte Vegetarier/Veganer nicht noch wesentlich penetranter versuchen zu missionieren, finde ich übrigens bemerkenswert tolerant von ihnen. Immerhin tut man ja etwas, das gegen ihr Moralgefühl geht. Wenn mir jemand erzählen würde, dass er etwas tut, das gegen meins geht, wie z.B. dass er auf der Strasse gerne kleine Kinder anschreit, weil er Spaß dran hat, wie sie sich erschrecken und losheulen, würde ich vermutlich ziemlich energisch versuchen, ihn davon zu überzeugen, es sein zu lassen. 😉

Vielleicht haben wir ja aber auch Glück und können die Technik zur Herstellung von In-Vitro-Fleisch soweit verbessern, dass sich damit ein preiswerteres, gesünderes und umweltverträglicheres Produkt anböte. Dann würde es vermutlich auch nicht lange dauern, bis es sich durchgesetzt hat, und zumindest dieses Problem wäre zur Zufriedenheit aller gelöst. 🙂

Zwei Systeme und nur ein Kopf

Da wir eigentlich ja nur Linsensuppe in unseren Köpfen haben (siehe Neuronale Netze und das Leib-Seele-”Problem”), entspricht jede einfache Modellvorstellung über unsere mentalen Zustände natürlich nicht der biologischen Realität. Trotzdem finde ich manche Ansätze da recht nett, einfach um in der Praxis etwas zu haben, mit dem man forschen und sich im Alltag bewegen kann. Daniel Kahneman und Amos Tversky haben sich da etwas ganz nettes ausgedacht. Das Denken wird in zwei Systeme (1 und 2) unterteilt. Auch wenn es sich auf den ersten Blick vielleicht etwas wie das Freud’sche Es und Ich oder die bildhafte Funktionstrennung der zwei Gehirnhälften anhört, ist es doch anders.

  • System 1 ist schnell, automatisch, intuitiv, implizit und unbewusst.
  • System 2 ist langsam, abwägend, analytisch, bewusst und anstrengend.

Das meiste, was wir so tun oder entscheiden kommt von System 1. Es kann ganz tolle Dinge wahnsinnig schnell und sicher. Dinge, die man am Computer bisher so noch nicht in dieser Qualität und Effizienz implementieren konnte. Du brauchst dir nur kurz dieses Bild anschauen:

Auch ohne Sherlock Holmes zu sein, weißt du sofort, dass der Typ da das kleine Kind vermutlich sehr gerne mag, das Kind gerade von irgendwas abgelenkt ist, die Zunge rausstreckt usw. Über nichts davon musstest du nachdenken. Du wusstest es sofort. Dein System 1 hat Blickrichtungen, Gesichtsausdrücke usw. blitzschnell interpretiert und Schlüsse gezogen. Keine Software der Welt kann das so gut wie du.

Hier nun was für System 2:

Wahrscheinlich hast du gar keine Lust, das jetzt auszurechnen, denn es ist anstrengend. Wenn du es doch machst, erweitern sich deine Pupillen messbar bis du fertig bist. (238 ist übrigens das Ergebnis, du Fauli. :P) Hierbei wäre selbst jeder uralte Taschenrechner wesentlich schneller und zuverlässiger als du.

Wenn man übrigens den beiden Systemen einen MBTI zuordnen wollen würde, würde *NFP (zu 1) und *STJ (zu 2) vermutlich am ehesten passen.

So, System 1 ist toll, 2 stinkt ab. Es gibt aber auch außer langweiligem Kopfrechnen noch andere Dinge, die System 1 nicht so gut kann. Unvoreingenommen und objektiv urteilen ist eins davon. Es gibt eine Menge Schwächen, die in bestimmten Situationen zum Tragen kommen. Das Gemeine daran ist, dass wir sie gar nicht wahrnehmen, weil System 2 im Normalfall einfach schluckt, was es von System 1 so vorgesetzt bekommt. Wir identifizieren uns zwar immer mit unserem System 2, sind aber in Wahrheit viel viel mehr unser uns selbst fast unbekanntes System 1. Optische Illusionen kennen wir alle ein paar, wie beispielsweise die Müller-Lyer-Illusion:

Man meint, die untere Linie sei auch wenn man die komischen Enden weglässt eindeutig länger als die obere, ist sie aber nicht:

Wenn man diese Dinge kennt, fällt man nicht mehr drauf rein. Statt optischen Illusionen gibt es auch kognitive Illusionen (zum Teil auch Denkfallen genannt), in die unser System 1 kompromisslos reinlatscht, und das auch bei wichtigen Entscheidungen, die weitreichende Folgen für unser und das Leben anderer haben können. Deshalb denke ich, lohnt es sich, einige davon zu kennen. Das Ganze in der Hoffnung sie im richtigen Moment auch zu bemerken, und die Ergebnisse unter Benutzung von System 2 nochmal überdenken zu können. (Zumindest sollte man wissen, dass es sie gibt.)

Fangen wir mit etwas (emotional) einfachem an: Sagen wir, ich trainiere eine Basketballmannschaft. Einer der Spieler schießt schlecht Freiwürfe, weswegen ich sie nach dem normalen Training nochmal extra mit ihm übe.

Von den ersten 10 Würfen trifft er 8 Stück. Das finde ich gut, und lobe ihn dafür. Von den nächsten 10 versemmelt er 7, worauf ich ihn tadel. Danach sind es wieder ein paar mehr, usw. Ohne Nachzudenken könnte ich das Gefühl bekommen, dass er durch Lob beim nächsten mal schlechter wird und durch Tadel besser. Also lasse ich das Loben doch lieber ganz sein. Freiwürfe haben aber nunmal zusätzlich zum Können auch etwas mit Glück zu tun, wodurch es ganz normal ist, dass man mal mehr und mal weniger trifft. Nach einem besonders guten oder schlechten Ausreißer ist es normal, dass wieder zur Mitte hin regressiert wird. Das muss gar nicht unbedingt etwas mit dem Kommentar des Trainers zu tun haben. Wenn man eine Studie mit mehreren Spielern macht, könnte sogar dabei herauskommen, dass Zuckerbrot im Schnitt wesentlich besser funktioniert als Peitsche, und die kurzfristig subjektiv entstandene Trainer-Intuition, der sich auf Grund dieser schon nur aufs Meckern versteift hat, genau falsch war. Soetwas kann natürlich auch in anderen Situationen vorkommen, in denen der Zufallsfaktor nicht so offensichtlich ist. Erkennt ein Personalmanager, dass die Leistungen seiner Mitarbeiter unter anderem auch ganz natürlichen Zufallsschwankungen (auch von Projekt zu Projekt) unterliegen, oder kommt er eher zu dem Schluss, dass die Leute Lorbeeren nur benutzen, um sich darauf auszuruhen? (Es könnte tatsächlich so sein, es könnte aber genau wie beim Freiwurftraining Quatsch sein.)

Auch wenn man gar nicht selbst interagiert (in dem Fall lobt oder tadelt) gibt es lustige Effekte. Wenn ein Skisprung-Event zwei Tage geht und ein Springer am ersten Tag besonders gut war und am zweiten nur noch mittelmäßig neigen Reporter gerne zu Aussagen wie „Nach der Spitzenleistung war der Erwartungsdruck einfach zu hoch.“. Wenn jemand, der am ersten Tag besonders schlecht war am zweiten Tag besser war, heißt es „Jetzt konnte er ganz gelöst springen, er hatte ja nichts mehr zu verlieren.“. Dabei ist es in beiden Fällen wieder nur ganz banale Regression zur Mitte gewesen. Aber System 1 ist sehr gut darin, in allem irgendwelche Kausalzusammenhänge zu sehen, auch wo keine sind. Dazu kommt, dass es meistens auch nur einen Grund ausspuckt, anstatt die Komplexität der Sache zu erfassen wenn tatsächlich sehr viele Faktoren zusammenkommen (Fallacy of the single cause). Und hinterher sagt man dann gerne „Hab ich doch gleich gesagt.“ (hindsight bias) selbst wenn man es gar nicht wirklich hatte. Die Erinnerung spielt einem da einfach einen Streich, denn sie ist manchmal nicht sehr stabil. Ja, wir erinnern uns an Dinge, die gar nicht so waren!

Das Self-serving bias ist eine Eigenschaft von System 1, die einen dazu bringt, eigenes Scheitern eher auf äußere Umstände zu schieben und Erfolg eher auf innere Werte/Fähigkeiten. Börsianer sind darin besonders gut. Der Markt ist ziemlich effizient (Was es über ein Wertpapier zu wissen gibt, ist schon im Preis mit drin.) und die Erträge der Spekulanten sind genauso verteilt wie wenn man seine Aktien einfach zufällig auswählen würde (siehe Don’t Blink! The Hazards of Confidence). Im Prinzip wird da mit sehr hohen Beträgen nichtmal Poker sondern eher Roulette gespielt, und die, die bisher Glück hatten, werden für angebliche Fähigkeiten bewundert. (Wenn jemand beim Mensch-ärgere-Dich-nicht-Spielen fünf mal hinter die sechs würfelt, würde einem doch auch kein „Boa, krass wie du’s drauf hast!“ entfleuchen. ;)). Aber dass die Börse chaotisch ist, will unser System 1 einfach nicht wahrhaben, und es wirft immer weiter mit Kausalerklärungen um sich. Beim Basketball macht man etwas ähnliches wenn man davon ausgeht, dass Spieler soetwas wie eine „heiße Hand“ haben wenn sie mehrmals hintereinander getroffen haben. Entgegen allgemeinem (Irr-)Glauben ist die Chance nach ein paar getroffenen Würfen wieder nicht daneben zu werfen statistisch nämlich nicht erhöht. Die Welt ergibt aber einfach viel weniger Sinn als wir denken. Ein großer Teil der Kohärenz entsteht erst (und nur) in unserem Kopf. 🙂

Dazu kommt, dass für solche Schlussfolgerungen von System 1 dann gerne auch nur noch die Tatsachen wahrgenommen werden, die sie bestätigen und die anderen ausgeblendet werden (confirmation bias). Beispielsweise wenn wir uns einbilden, dass eine Ampel immer rot wird wenn wir gerade mit dem Auto dahinkommen, oder dass unsere Supermarktkassenschlange immer die langsamste ist, machen wir das. System 1 hat es mit statistischem Denken (siehe Basketballtrainer/Personalchef) nicht so wirklich und produziert Erklärungen zwar wie irre, trifft die Wahrheit aber manchmal ähnlich präzise wie ein Besoffener beim Pinkeln das Klo. 😉

Wohin es trifft, kann dazu auch noch geprimed sein. Anchoring ist nur eins von vielen witzigen Beispielen dazu. Kognitions-Psychologen haben um das zu Testen Leute befragt, was die schätzen wieviel Prozent der Staaten in Afrika Mitglied der vereinten Nationen sind. Bevor die Leute diese Schätzung abgeben sollten, wurde ein Glücksrad mit Zahlen drauf gedreht, was so manipuliert war, dass es entweder bei den Zahlen 10 oder bei 65 stehen bliebt. Obwohl die Versuchsteilnehmen natürlich wussten, dass das Rad nichts mit der Frage zu tun hat, hat die 10er-Gruppe im Schnitt 25% geschätzt und die 65er-Gruppe 45%. Total banale Einflüsse können das Ergebnis also stark verändern. (Bei Verkaufsverhandlungen versuchen wir übrigens oft unser Gegenüber an irgendeine Zahl zu ankern.)

Aber auch Verhaltensentscheiden, die wir unseren innersten stabilsten Werten zuschreiben können sich durch Nichtigkeiten ändern. In einer Studie (vor der Zeit der Mobiltelefone) ließ ein Schauspieler vor einer Telefonzelle sein Zeug fallen, als der Benutzer eben dieser gerade heraus kam. Es wurde gemessen wie hoch der Anteil der Leute, die beim Aufheben geholfen haben, unter den Telefonierern war. Nur einer von 25 Leuten half. Wurde jedoch vorher ein 10-cent-Stück auf dem Telefon platziert, was die Testperson dann dort fand (und sich vermutlich drüber freute) wurde in 14 von 16 Fällen geholfen. (Do We Really Have Any Character Traits?)

Zumindest bei einem für einen selbst unschönen Ergebnis schützt das Self-serving bias ist einen ja noch ein Bischen, aber wenn es um das Beurteilen des Verhaltens andere Leute geht, machen wir den Fundamental attribution error häufig. Wer intuitiv verstanden hat, dass die echten Erklärungen oft weniger intern, stabil und global und dafür mehr extern, instabil und lokal sind (siehe Explanatory style), hat schon einen großen Vorteil, weil er nicht nur über andere weniger schnell urteilt sondern auch selbst weniger depressionsgefährdet ist. Es scheint übrigens so zu sein, dass dieser Fehler in westlichen Kulturen öfter begangen wird als in asiatischen. Vielleicht liegt das ja ab der hier verbreiteten albernen Vorstellung von Gut und Böse.

Ein weitere Eigenschaft von System 1, die es zu kennen lohnt, ist die, dass es schwer zu beantwortende Fragen intern gerne durch leichter zu beantwortende ersetzt werden, und die Antwort zu diesen dann als angebliche Antwort auf die eigentlichen Fragen präsentiert werden (Attribute substitution). Wenn wir beispielsweise nach zwei Vorstellungsgesprächen beurteilen wollen, welcher der beiden Ingenieure, die sich beworben haben, wohl der bessere System-Entwickler ist, was schwer zu entscheiden ist. Aber hey, wir wissen doch, welchen von beiden wir netter finden, also tun wir doch einfach so, als wär‘ der besser. (Hier kommt die substitution mit dem zusammen Halo-Effekt.)

Das Availability Bias ist eine weitere nette Heuristik, die System 1 gerne anwendet, besonders wenn wir Risiken einschätzen wollen. Der Wahrscheinlichkeit an einer Krankheit oder durch einen Autounfall zu sterben ist weeeesentlich höher als die, durch einen Flugzeugabsturz oder einen Terroranschlag ums Leben zu kommen. Trotzdem sind die beiden letztgenannten Szenarien in den Medien wesentlich präsenter, was dazu führt, dass diese Gefahren extrem überbewertet werden. Das Problem ist, dass System 1 sehr schlecht aus Statistiken lernt und wesentlich mehr aus anschaulichen Einzelfällen, auch wenn diese eigentlich irrelevant sind. Wenn du mit deinem letzten Fernseher der Firma Blony „nichts als Probleme“ hattest, würde eine Statistik, die eindeutig zeigt, dass Geräte dieser Marke am zuverlässigstens sind, dich dazu bringen, dass dein nächster wieder ein Blony ist?

Als weiteres und (endlich ;)) letztes Highlight der System-1-Spezialitäten hätte ich nun noch die Conjunction fallacy zu bieten. Meine Version vom Linda-Problem sieht wie folgt aus:

Es gibt einen Tobias (über den du bisher noch gar nichts weißt), der als Schüler und Student immer sehr gerne viel Sport gemacht hat und mehr trainiert als gelernt hat. Nun ist er 30 Jahre alt. Welche dieser beiden Aussagen über Tobias hälst du für wahrscheinlicher:

  • A) Tobias arbeitet als Software-Entwickler.
  • B) Tobias arbeitet als Sofware-Entwickler und hängt mehrmals die Woche in Sporthallen rum und tobt sich dort aus.

Wenn du jetzt B sagst, hast du den gleichen Fehler gemacht, wie die Mehrzahl der Leute in der Originalstudie. SW-Entwickler, die in Sporthallen rumgammeln sind eine Untermenge aller Software-Entwickler. Aussage B kann also nicht wahrscheinlicher sein als A, was man an folgendem Euler-Diagramm gut sieht:

System 1 ist nicht nur manchmal schlecht in Statistik sondern auch im Beurteilen von Wahrscheinlichkeiten und im Anwenden von einfachster Logik. Entscheidender ist, wie schön passend sich die Geschichte anhört (cognitive ease).

Malcom Gladwell sagt uns zwar, dass wir uns auf unsere erste Eingebung verlassen sollen, was auch oft richtig ist. Ich sage jedoch, dass wir sie zwar nutzen sollen (was ich als INTJ sowieso oft tue), es aber auch gut ist, zu wissen, dass man in nicht wenigen Situationen besser dran ist, wenn man sein System 2 benutzt, um seine Intuition aus System 1 kritisch zu hinterfragen. 🙂 Vielleicht kann man System 1 ja auch bewusst etwas darauf hintrainieren, noch bessere Intuitionen zu entwickeln, denn gerade wenn System 2 schon mit etwas anderem beschäftigt ist, will man ja nicht ungesichert ausgeliefert sein. 😉
Das Schalten beim Autofahren musste man in der Fahrschule ja auch noch bewusst machen und nun geht es wie von selbst. Und wieso sollte das nur mit Koordinationskram funktionieren? 🙂

Wenn du jetzt Spaß an sowas gefunden hast und gerne noch mehr solcher Voreingenommenheiten und Fallen kennenlernen willst, schau doch einfach mal bei Wikipedia rein: http://en.wikipedia.org/wiki/List_of_fallacies, http://en.wikipedia.org/wiki/List_of_cognitive_biases

Achja, die Prospect Theory (incl. Loss aversion, Endowment-Effekt, Mental accounting, usw.) finde ich ebenfalls recht amüsant, weil sie zeigt, inwiefern das das klassische rationale Verhaltensmodell der Wirtschaftswissenschaft nicht hinhaut. Aber drüber hier zu schreiben würde den Rahmen sprengen, also sieh und lies selbst. 😉

Nachtrag (27.11.2012): Es scheint so, dass einige der kognitiven Verzerrungen stark reduziert werden, wenn man über die Fragen, bei denen sie auftreten, in einer Fremdsprache (die man gut beherrscht) nachdenkt. Koreaner entscheiden beispielsweise rationaler bei Problemen, die in Englisch formuliert sind, Engländer bei Französischen vorgetragenen Fragen. Hier gibt es noch einiges zu erforschen mit eventuell interessanten Implikationen, die wir vielleicht sogar in unseren Alltag einfließen lassen könnten. 🙂

Urheberrecht, freie Software, Patente, Arbeitslosenquote und andere Utopie

Dieses mal geht es gleich um mehrere Themen, die ich dazu auch noch recht subjektiv (also ganz anders als sonst ;)) behandeln werde.
Gestern beim Training hat mein Kumpel Eugen gejammert, weil er meinen Brüllaffen-Sampler nicht bei YouTube gucken konnte. (Dafür gibt’s ihn hier zum Herunterladen. :-P) Ich hab‘ anscheinend nicht das Recht, ein Dittel eines Liedes, das mir gefällt, als Hintergrundmusik für mein nicht kommerzielles Tricking-Video auf YouTube zu benutzen. -_-

Die jetzige Form des Urheberrechts (*brech*) und die GEMA (Wem außer sich selbst nützt sie überhaupt noch?) sind ja angeblich so super wichtig, damit man als Kulturschaffender (Musiker, Autor, sonstiger Künstler) nicht seines geistigen Eigentums (Was soll das denn bitte für ein Quatsch sein?) beraubt (Mal abgesehen von der fehlenden Androhung oder Ausübung von Gewalt: Ist es danach beim „Beraubten“ nicht mehr vorhanden?) wird. (Alles, was ich hier als Blog-Autor schreibe, darfst du übrigens weitergeben, abändern oder sonstwie verwenden. Ich fänd’s nur nett, wenn du irgendwo dazu schreibst, dass du von mir inspiriert wurdest. ;-))

Wenn man irgendetwas kommerzielles, wie z.B. eine kleine Filmproduktion, machen will, scheint es ganz übel sein zu können (hab‘ ich gehört). Man muss aufpassen, dass im Hintergrund kein Radio läuft, kein Handy mit einen geschützten Klingelton runterbimmelt oder ein gecopyrightetes Bild an der Wand hängt.

Ich versteh‘ das Ganze einfach nicht wirklich. Wenn ich mir ein Lied aus dem Internet herunterlade, ist das kein Stehlen, sondern nur eine Urheberrechtsverletzung, und von diesem „Recht“ bin ich aus folgenden Gründen kein Fan:

  • In Zeiten des Internets ist es einfach anachronistisch. Informationen (Daten) können nunmal jetzt extrem leicht und schnell vervielfältigt und an andere weitergegeben werden. Man teilt gerne mit Freunden. Ich finde das schön. 🙂
  • Musiker beispielsweise konnten auch schon lange bevor es Tonträger gab, die man hätte verkaufen können, von ihrer Leidenschaft leben.

Mir würde eine andere Form von Urheberrecht, eine, die das private Kopieren entkriminalisiert, und es überflüssig macht, jemanden mit DRM auf die Neven zu fallen, besser gefallen. Vielleich ja soetwas wie eine Kulturflatrate. (Bezahlt man sowas ähnlichen nicht sowieso schon mit den ganzen Abgaben auf Festplatten, USB-Stick usw.? *g*) Es könnte eventuell sogar jeder seinen Beitrag selbst auf die von ihm bevorzugten Künstler aufteilen, so wie es der Chaos Computer Club vorschlägt.

Oder es sucht sich jeder einfach ganz aus, ob und wieviel er wem geben möchte. Überraschenderweise scheint das teilweise sogar recht gut zu funktionieren (link). 🙂

Ein anderes aber möglicherweise irgendwie verwandtes Thema sind Softwarepatente. Auch hier direkt: Die finde ich doof. 😉

John Carmack (ein bekannter Softwareentwickler) hat es mal schön formuliert:

The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.

Und das passt meiner Meinung nach wirklich ganz gut. Softwarepatente sind teilweise wirklich sehr absurd (siehe hier und hier). Als man sich dieses Verfahren vor ewigen Zeiten für mechanische Erfindungen ausgedacht hat, mag das ja irgendwie sinnvoll gewesen sein, nun kommt es mir aber eher so vor als ob Bach sich irgendeine Schlusskadenz patentieren ließ und fortan jeder, der auf die gleiche musikalische Idee kommt, gearscht ist.

Und selbst wenn man eine Idee bewusst übernimmt; Kultur basiert darauf, dass Ideen von verschiedenen Leuten weiterentwickelt werden. Alles baut aufeinander auf. Auch das größte Genie ist nur ein Zwerck auf den Schultern der Riesen.

Igor Strawinski meinte mal:

A good composer does not imitate; he steals.

Dass Software nicht nur patentfrei sondern sogar komplett frei (frei wie in Freiheit, nicht wie in Freibier) sein kann, zeigen viele erfolgreiche Projekte, die unter der GNU GPL oder einer ähnlichen Lizenz stehen. Diese Programme sind oft auch kostenlos (nun doch frei wie in Freibier) erhältlich; sie dürfen und sollen weitergegeben und verändert/verbessert werden. Der Quelltext ist frei zugänglich (open source). Das ist unter anderem toll, weil er so von vielen Leuten auf Fehler überprüft werden kann. Gerade wenn es um Sicherheit geht wirkt das auf mich wesentlich vertrauenderweckender als Sicherheit durch Unklarheit. Die beteiligten Entwickler sind teilweise oft auf freiwilliger Basis dabei. (Wikipedia basiert übrigens auf dem gleichen Prinzip.) Dieses Modell funktioniert überraschend gut; die resultierende Qualität der Software ist meist sehr hoch. Vielleicht liest du meinen Blog (benutzt WordPress, GPL) ja gerade sogar in einem freien Browser wie Firefox (MPL/GPL/LGPL) oder Chrome (BSD-Lizenz). Der hostende Server benutzt vermutlich Apache (Apache License) unter Linux (GPL) oder Unix (CCDL). All das ist frei. =) Ein weiterer Vorteil von freier gegenüber proprietärer Software ist der, dass man sich nicht von einem Hersteller abhängig macht. Closed source software benutzt gerne Datenformate ohne offene Spezifikation. Aber nicht nur das. Wenn der Hersteller einer solchen Software pleite geht (oder einfach mehr keine Lust auf das Produkt hat), ist es aus mit Support. Eventuell hat man seine IT-Infrastruktur aber schon davon abhängig gemacht. Nun wird es teuer (nicht nur in Sachen Geld, sondern auch bezüglich des Arbeitsaufwands). Man muss halt irgendwie aus dem untergehenden proprieätren Käfig herauskommen. Freie Software könnte man immer selbst an seine neuen Bedürfnisse anpassen bzw. von einem Entwickler anpassen lassen. Aus all diesen Gründen bin ich dafür, dass in öffentlichen Einrichtungen wenn möglich freie Software eingesetzt wird.

Der gute alte Linus hat mal gesagt:

Software is like sex; it’s better when it’s free.

So, als Überleitung zum nächsten Teil muss ich gerade nochmal zurück zum Thema Musikkopieren und co.

Dieser mythische Jesus, der wohl die Ausgeburt des Guten sein sollte, hat der Legende nach 5000 Leute mit nur einem Brot satt gemacht. Dieser fiese Brotkopierer! Wenn man das ständig so machen würde, würden doch fast alle Bäcker (in der Analogie: Angestellte der Musikindustrie) arbeitslos werden!

Tjoa, so ist das nunmal mit fortschreitender Technik. Ganz früher war eigentlich jeder damit beschäftigt, durch Jagen und später durch manuellen Ackerbau dafür, dass er genug zu Essen hatte, zu sorgen. Als man dann auf die Idee kam, Ochsen vor den Pflug zu spannen, konnte man mit weniger menschlicher Arbeitskraft mehr Nahrung produzieren. Mit moderner Agrartechnik geht das noch viel effizienter. Eigentlich ist es doch schön wenn weniger Leute dafür, dass für alle genug Güter produziert werden, ackern (höhö) müssen. So gesehen stellt dich die Frage, ob es vielleicht nicht sogar ein positives Zeichen ist, wenn nicht mehr so viele Menschen arbeiten gehen müssen. Vielleicht hören wir ja irgendwann auf, Bullshit-Jobs zu produzieren, und es wird dann so sein, dass Leute nur noch das tun, was ihnen Spaß macht. Musiker, Dichter, Frisöre (und was man sonst alles auch nicht von Maschinen/Robotern/Computern machen lassen kann oder will) wären dann bestimmt immernoch ein paar dabei. Ich würde vermutlich auch noch weiterhin programmieren wollen. 🙂

Realismus und evolutionäre Stabilität hin oder her – man darf ja mal Träumen. Gerade scheint mir die Abendsonne beim Schreiben nämlich so schön auf den Bauch. ^_^

PS: Ich werde mich bemühen, demnächst nochmal etwas tiefsinniger und objektiver zu schreiben. 😉