Zustandsforschung

Mit offenen Augen durch die Welt

Werbeboykott

Laut Wikipedia dient Werbung “sowohl der gezielten und bewussten als auch der indirekten und unbewussten Beeinflussung des Menschen zu meist kommerziellen Zwecken. Teils durch emotionale (Suggestion), teils durch informierende Werbebotschaften spricht Werbung bewusste und unbewusste Bedürfnisse an oder erzeugt neue.”

Im Umkehrschluss könnte man also – vielleicht ein wenig überspitzt formuliert – sagen, dass Werbung versucht uns unzufrieden zu machen mit dem was wir bereits besitzen, so dass wir glauben, wenn wir das Smartphone/Bier/Parfüm/Tütensüppchen kaufen, was uns da angeboten wird, wäre die Welt wieder in Ordnung (spannendes Detail am Rande: Werbung kann sogar Erinnerungen fälschen).

Da viele glauben, sich nicht durch Werbung beeinflussen zu lassen, möchte ich folgendes zu bedenken geben: Die deutschen Unternehmen geben nicht 25 Milliarden Euro im Jahr für Werbung aus, weil sie hoffen, mal den ein oder anderen zu einem Kauf bewegen zu können, sondern weil sie genau wissen, dass das bei den meisten funktioniert. Und es funktioniert sogar so gut, dass man glaubt, man wäre gar nicht beeinflusst worden, sondern es wäre die eigene Entscheidung gewesen.

Die Organisation “Adbusters” geht sogar so weit, von mentaler Verschmutzung (mental pollution) durch Werbung zu reden und schreibt, dass “Fernsehwerbung und Autobahnwerbeflächen näher verwandt sind mit giftigem Klärschlamm als mit Sprache

Weil ich mich nicht so gern beeinflussen lassen möchte, keinen unnötigen Kram brauche und Werbung eigentlich (von wenigen Ausnahmen mal abgesehen) nur nervig finde, versuche ich mich so weit es eben geht dem zu entziehen. Und das funktioniert bei mir folgendermaßen:

Internet

Ich habe in jedem Browser, den ich regelmäßig benutze, ein Plugin zum Ausblenden von Werbung installiert (gibt’s als Adblock Plus für Firefox und Adblock für Chrome – für IE lässt sich vermutlich was ähnliches finden).

Wer sich nicht so vorstellen kann, wie das dann am Ende aussieht, der möge einfach mal die beiden folgenden Screenshots miteinander vergleichen:

Fernsehen

Seit ich mir meinen MythTV HTPC gebaut habe, schaue ich so gut wie keine Sendung mehr dann wenn sie im Fernsehen läuft, sondern nehme alles erstmal auf. Dadurch kann ich dann ganz einfach die Werbepausen überspringen und muss keine dämliche Fernsehwerbung mehr über mich ergehen lassen. Außerdem bezahle ich noch Geld für einige PayTV-(Serien)-Sender, die sowieso keine Werbeunterbrechungen haben.

Natürlich braucht man dazu nicht unbedingt MythTV, sondern gerne auch jeden beliebigen anderen Festplattenrecorder – oder man schaut einfach kein Fernsehen mehr ;-)

Post

So trivial es klingen mag, aber hier hat ein ganz einfacher “Keine Werbung!”-Aufkleber (sogar ohne “bitte”) bereits gereicht, um den Großteil an Werbemüll, der so in meinem Briefkasten gelandet ist, auszufiltern.

Radio

Meine Lösung für Radiowerbung ist möglicherweise nicht für jeden was: Ich bin umgestiegen auf den Kultursender hr2, weil die keine Werbung senden und höre jetzt tatsächlich beim Frühstück klassische Musik. Alternativen könnten zukünftig aber auch die bezahlten und damit werbefreien Versionen von Simfy oder Spotify sein.

Sonst so

Natürlich kann man sich nicht hundertprozentig gegen Werbung abschotten. Kaum entkommen kann man beispielsweise der guten alten Plakatwerbung oder wie’s jetzt neuerdings an Bahnhöfen beliebt wird, den Massen solcher nerviger Bildschirme, die dort aufgestellt werden.

Aber man kann zumindest einiges dafür tun, die Anzahl und damit auch die Wirkung der täglich auf uns niederprasselnden Werbebotschaften deutlich zu reduzieren.

Kinderfernsehzombies

Da ich mir darüber bewusst bin, dass ich über ein recht kontroverses Thema – kleine Kinder vor dem Fernseher - schreibe und ich vermute, dass sich auch der ein oder andere dadurch angegriffen fühlt, möchte ich ein paar Dinge hier vorwegschicken:

  • Dieser Artikel soll informieren und nicht missionieren – ich möchte niemandem in seine Kindererziehung reinreden.
  • Es geht hier nicht um Kinder und Fernsehen im Allgemeinen, sondern speziell um ganz kleine Kinder bis maximal im Kindergartenalter.
  • Ich schaue selbst gerne Fernsehen. Und ich schaue auch gerne mal was mit Gewalt.
  • “Jurassic Park” ist einer meiner Lieblingsfilme. Aber ich möchte nicht, dass meine Tochter so etwas anschaut, bevor sie alt genug dafür ist.

Im Artikel 10 Tipps für Erziehende: Film und Fernsehen steht folgendes:

Fachleute raten davon ab, Kinder im Alter von weniger als 3 Jahren fernsehen zu lassen. Bei unter Dreijährigen kann Fernsehen bleibende Schäden verursachen. Ab dem dritten bis vierten Lebensjahr können Kinder behutsam an das Fernsehen herangeführt werden. Dabei ist es sinnvoll, mit ihnen altersgerechte Kindersendungen mit langsamen Bildabfolgen auszusuchen, die sie verstehen können.

Bei der Bundeszentrale für gesundheitliche Aufklärung (BZgA) kann man ähnliche Hinweise finden. Offenbar interessiert das aber viele Eltern gar nicht.

Denn abgesehen davon, dass es genug Eltern gibt, die auch Kinder unter 3 Jahren oder sogar Babys schon regelmäßig fernsehen lassen, ist glaube ich hier auch das Wort “altersgerecht” ein wichtiges Stichwort.

Vor kurzem habe ich folgendes gehört: “Unser Dreijähriger kann ruhig Spider-Man und Jurassic Park gucken – der weiß ja, dass das nicht real ist.” Klingt auf den ersten Blick vielleicht ganz valide, wenn man allerdings genauer drüber nachdenkt, dann kommt man schnell drauf, dass dieses Argument gar nicht zählen kann:

Mal angenommen, wenn man wüsste, dass das was in einem Film passiert nicht real ist, könnte man von den Ereignissen in diesem Film nicht mehr emotional berührt werden. Das würde bedeuten, man könnte nicht mehr mit den Charakteren mitfühlen und damit ja dann auch keine Spannung/Romantik/Action mehr erleben. Und das wiederum bedeutet, dass sich kein Erwachsener – denn für die sollte das ja sowieso gelten, wenn das sogar ein Dreijähriger versteht – überhaupt je einen Film ansehen würde.

Heißt also im Umkehrschluss: Wissen, dass etwas nicht echt ist (sofern ein so kleines Kind das überhaupt so gut unterscheiden kann) heißt nicht, dass es keine Angst machen kann. Die FSK klebt auf die oben genannten Filme auch nicht umsonst eine Freigabe “ab 12″ drauf. Die sind nämlich der Meinung, dass bei Kindern unter 6 Jahren “schon dunkle Szenarien, schnelle Schnittfolgen oder eine laute und bedrohliche Geräuschkulisse Ängste mobilisieren oder zu Irritationen führen” können.

Es gibt offenbar auch Hinweise darauf, dass sich hoher Fernsehkonsum – also mehr als die von der BZgA empfohlene halbe Stunde für Kinder zwischen 3 und 6 Jahren – in späteren Jahren auswirkt. Eine Studie der Université de Montréal (hier ist eine deutsche Zusammenfassung) hat herausgefunden, dass Kinder bei hohem Fernsehkonsum in der frühen Kindheit im Alter von 10 Jahren dann Schwierigkeiten mit Konzentration und Lernverhalten haben, sich weniger bewegen und mehr Süßigkeiten essen als der Altersdurchschnitt.

Also sollte man sich dann vielleicht doch ein paar Gedanken darüber machen, was und wie viel die lieben Kleinen denn so gucken. Es gibt es auch ein paar Hilfestellungen wie zum Beispiel die schon oben genannten Empfehlungen der BZgA und Seiten wie FLIMMO oder Schau hin!, die Fernsehsendungen nach ihrer Eignung für bestimmte Altersgruppen bewerten.

Meine Leseliste 2011

Hier ist wie jedes Jahr die Liste der Bücher, die ich im Verlauf des Jahres gelesen habe:

  • Effective Java von Joshua Bloch:
    Quasi das Buch zur Java-Entwicklung überhaupt. Unbedingt empfehlenswert für jeden einigermaßen fortgeschrittenen Java-Entwickler.
  • Der Wüstenplanet von Frank Herbert,
    Der Herr des Wüstenplaneten von Frank Herbert,
    Die Kinder des Wüstenplaneten von Frank Herbert,
    Der Gottkaiser des Wüstenplaneten von Frank Herbert,
    Die Ketzer des Wüstenplaneten von Frank Herbert,
    Die Ordensburg des Wüstenplaneten von Frank Herbert:
    Das war mein großes Leseprojekt dieses Jahr: Ich habe alle von Frank Herbert geschriebenen “Wüstenplanet”-Romane gelesen. Und obwohl es zusammen genommen ein sehr phantasievoll gestaltetes Science-Fiction-Epos ist, sticht doch der erste Roman was Qualität angeht, deutlich hervor. Für den gilt: absoluter Lesebefehl – auch wenn man nicht wirklich Science-Fiction-Fan ist. Den Rest muss man nicht unbedingt gelesen haben. Was mir aber insgesamt besonders gut gefallen hat, ist das Gefühl, das man vermittelt bekommt, dass nach den Ereignissen des ersten Buches das bewohnte Universum und vor allem eben der Wüstenplanet seine besten Zeiten hinter sich hat und nur noch ein verweichlichtes, verkommenes Abbild seiner selbst ist.
  • Test-Driven Development By Example von Kent Beck:
    Wieder mal ein Fachbuch: Sehr anschauliche Einführung in das Prinzip “Test-Driven Development”.
  • Walden; or, Life in the Woods von Henry David Thoreau:
    Henry David Thoreau zieht sich 1845 für zwei Jahre in eine Hütte zurück, um seine Vorstellung eines alternativen Lebensstils abseits der industrialisierten Konsumgesellschaft zu verwirklichen. Nach seiner Rückkehr hat er dieses Buch geschrieben, das seine Erlebnisse zusammenfasst. Mit seinem Fokus auf das Wesentliche ist er eine tolle Inspiration.
  • Momo von Michael Ende:
    Ein Aufruf sich mehr Zeit zum Leben zu nehmen – verpackt in ein Kinderbuch.
  • Jefta und seine Tochter von Lion Feuchtwanger:
    Aus ein paar Versen der Bibel hat Lion Feuchtwanger eine spannende Geschichte über die Gier nach Macht und die Beziehung eines Vaters zu seiner Tochter gemacht.
  • Weisheit für Minimalisten von Peter Steiner:
    Eine Mischung aus Schwarzweißfotografien und kurzen Texten rund um das Thema “Minimalismus” (als Lebensstil). Sehr nett um immer mal wieder reinzuschauen und ein paar Seiten zu lesen.
  • Effektive Softwarearchitekturen – ein praktischer Leitfaden von Gernot Starke:
    Eine Einführung in Softwarearchitektur entsprechend der unter arc42 frei verfügbaren Architekturvorlage. Das Buch liest sich recht leicht – den entsprechenden technischen Background mal vorausgesetzt und ich habe auch schon angefangen, die Architekturvorlage in meine Projekte einzubringen.
  • Liebe und Abenteuer von Giacomo Casanova:
    Das Buch war ein Auszug aus den Memoiren von Casanova persönlich. Von den unterschiedlichsten Affären mal abgesehen, die Casanova für die damalige Zeit sehr deutlich beschreibt, hatte er auch ein sonst recht bewegtes Leben. Etwas verwirrend, da extrem viele Personen darin vorkommen, aber durchaus lesenswert.

Java Profiling (fast) ohne Tools

In manchen Situationen kommt der Einsatz eines professionellen Profiling-Tools nicht in Frage. Das kann beispielsweise dann vorkommen, wenn es gilt, eine durch diverseste Firewalls geschützte Java-Applikation zu profilen und in der Firma, in der man arbeitet kein entsprechendes Tool eingesetzt werden kann oder darf (oder wenn der für das Tool zuständige “Experte” nicht greifbar oder nicht kooperativ ist).

Die JVM bringt aber auch ein eingebautes Profiling mit, das zwar nicht mit dem was eben die “richtigen” Profiler liefern vergleichbar ist, aber eben doch ganz brauchbar, wenn es darum geht herauszufinden, warum eine Applikation lahm ist. Die Funktion nennt sich hprof und viele kennen das vielleicht als Methode, um Heap-Dumps zu erzeugen. Aber das Ding kann noch mehr: um zu zeigen, wie man damit Performance-Probleme erkennen kann, verwende ich hier ein einfaches Beispiel, das Fibonacci-Zahlen rekursiv berechnet (der Source-Code für das Beispiel ist hier verlinkt).

Das hier ist die Java-Klasse, mit der wir die entsprechenden Daten erzeugen:

package example;
 
public class Fib {
 
	public long calculate(long n) {
		if(n == 0) {
			return 0;
		}
		if(n == 1) {
			return 1;
		}
		return calculate(n-1) + calculate(n-2);
	}
 
	public static void main(String[] args) {
		Fib fib = new Fib();
		System.out.println(fib.calculate(Long.valueOf(args[0])));
	}
 
}

Ruft man nun diese Klasse mit folgenden Parametern auf, erhält man eine Datei java.hprof.txt, die jede Menge Stack-Traces und am Ende eine Tabelle mit Profiling-Informationen enthält:

java -agentlib:hprof=cpu=times,depth=100 example.Fib 20

Den vollständigen Satz an möglichen Optionen erhält man mit java -agentlib:hprof=help oder im Artikel HPROF: A Heap/CPU Profiling Tool in J2SE 5.0.

Die Tabelle am Ende der Datei sieht ungefähr so aus:

CPU TIME (ms) BEGIN (total = 96) Wed Dec 07 16:53:53 2011
rank   self  accum   count trace method
   1 15.63% 15.63%    5020 301386 example.Fib.calculate
   2  9.38% 25.00%    4760 301385 example.Fib.calculate
   3  8.33% 33.33%    3632 301387 example.Fib.calculate
   4  7.29% 40.62%    2942 301384 example.Fib.calculate
   5  6.25% 46.87%    2026 301388 example.Fib.calculate
   6  5.21% 52.08%    1024 301389 example.Fib.calculate
   7  5.21% 57.29%     512 301390 example.Fib.calculate
   8  2.08% 59.38%     174 300332 java.lang.StringBuffer.append
   9  2.08% 61.46%    1152 301383 example.Fib.calculate
  10  1.04% 62.50%     256 301375 java.lang.Long.<init>
  11  1.04% 63.54%     256 301374 java.lang.Number.</init><init>
  12  1.04% 64.58%       1 301231 java.util.Hashtable.get
  13  1.04% 65.63%       5 301162 java.lang.StringBuilder.toString
  14  1.04% 66.67%       1 301111 java.io.FilePermissionCollection.<clinit>
  15  1.04% 67.71%       1 301031 java.io.Win32FileSystem.normalize
  16  1.04% 68.75%       1 300988 sun.net.www.protocol.file.FileURLConnection.getPermission
  17  1.04% 69.79%       1 300986 java.io.FilePermission.init
  18  1.04% 70.83%       1 300982 java.io.FilePermission$1.run
  19  1.04% 71.88%      44 300950 java.lang.StringBuffer.append
  20  1.04% 72.92%       1 300886 sun.net.www.protocol.file.Handler.createFileURLConnection
...

Hier kann man schon sehen, dass unsere Methode calculate() wohl nicht die schnellste ist. Außerdem sieht man noch, dass die langen Laufzeiten in dieser Methode in unterschiedlichen Threads immer mal wieder vorkommen.

Jetzt kann man in der gleichen Datei nach der Nummer, die in der Spalte trace steht suchen und findet dazu für die erste Zeile folgenden Thread

TRACE 301386:
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.calculate(Fib.java:Unknown line)
example.Fib.main(Fib.java:Unknown line)

Hier kann man dann ablesen, dass es sich wohl um den rekursiven Aufruf handelt, der hier das meiste der Performance auffrisst. Wenn man Glück hat, dann stehen da auch noch die Zeilennummern dabei – warum das hier nicht der Fall ist, weiß ich ehrlich gesagt nicht.

Weil diese java.hprof.txt-Files gerne mal ziemlich riesig werden können und die Sucherei in den Files nicht wirklich Spass macht, habe ich ein kleines Python-Skript geschrieben, das die Files in eine HTML-Seite umwandelt, in der man per Klick von der Liste zu den Threads springen kann und wo man auch bestimmte Klassen ausfiltern kann, von denen man schon weiß, dass die nix mit dem Problem zu tun haben. Das Skript habe ich hprof2html getauft und es kann hier heruntergeladen werden: https://github.com/zustandsforschung/hprof2html

Überstunden sind schlecht fürs Geschäft

Nicht nur in der IT-Branche kommt es immer mal wieder vor, dass mehr Arbeit da ist als der normale Arbeitstag lang ist. Die übliche Reaktion der meisten Unternehmen ist es, zu versuchen diese zusätzlich benötigte Zeit durch Überstunden wieder reinzuholen.

Gleichzeitig ist das aber auch eine Reaktion, die sich früher oder später sowohl für den Mitarbeiter als auch für die Firma wieder rächt.

Die Konsequenzen für den Mitarbeiter selbst, der die Überstunden ableistet, muss ich glaube ich nicht wirklich detailliert betrachten – ich nehme mal an, das kennen die meisten selbst. Viel interessanter ist, warum es sich auch für die Firma selbst dann nicht lohnt, wenn die Überstunden “bereits mit dem Gehalt abgegolten” sind, wie es in Arbeitsverträgen oft formuliert wird.

Ich möchte hier zwei Aspekte aufgreifen, die ich für relevant halte.

Qualitätsverlust

Das hier nenne ich das “Eger’sche Überstundentheorem” ;-) :

Code, der nach 18 Uhr entsteht ist schlechter als Code, der vor 18 Uhr entsteht.

Meine eigene Erfahrung nicht nur an meiner Person, sondern auch was ich an meinen Kollegen beobachte, zeigt dass je später der Abend desto mehr lässt die Konzentration nach und wenn die Konzentration nachlässt werden die Arbeitsergebnisse meist nicht unbedingt besser. Ich wage auch zu behaupten, dass das nicht nur für Softwareentwickler gilt, sondern auch für andere Berufsfelder. Das gilt übrigens um so mehr, je länger die Periode, in der Überstunden geleistet werden andauert.

Schlechterer Code bedeutet mehr Fehler oder zweifelhafte Designentscheidungen, die es zwar kurzfristig erlauben, einen Termin zu halten, im späteren Verlauf des Projektes aber oft mehr Zeit kosten als hätte man es ausgeruht gleich richtig gemacht.

Know-How-Verlust

Wenn über einen längeren Zeitraum Überstunden zu leisten sind, dann ist es oft so, dass sich bei den Mitarbeitern eine gewisse Unzufriedenheit einstellt. Das kann unterschiedliche Gründe haben wie zum Beispiel

  • Unzufriedenheit mit der wenigen Freizeit und weil das Privatleben darunter leidet oder
  • Unzufriedenheit durch die weiter oben genannten Schwierigkeiten, gute Qualität abzuliefern oder
  • Unzufriedenheit mit der Planung, die dazu geführt hat, dass die Überstunden überhaupt notwendig wurden.

Das Problem für den Arbeitgeber entsteht nun dadurch, dass unzufriedene Mitarbeiter sich auch gerne mal nach einem anderen Job umschauen. Besonders für die richtig guten Mitarbeiter ist es oft auch kein Problem einen anderen Job zu finden. Und mit jedem Mitarbeiter, der das Unternehmen verlässt, geht gleichzeitig auch ein gewisses Maß an Know-How für das Unternehmen verloren.

Ich verstehe natürlich, dass es notwendig sein kann mal über den Zeitraum von ein paar  Wochen länger zu arbeiten, weil irgendwelche unvorhergesehene Dinge passiert sind oder eine Deadline droht. Wenn allerdings über einen längeren Zeitraum kontinuierlich immer wieder Überstunden geleistet werden müssen, dann macht die Firma was falsch.

Wer gerne noch mehr wissen möchte: