Random thoughts and musings. Part of an oliology.


Montag, Juli 28, 2008


Today, I had very pricy lessons in which I learned the following:

When you ask a lawyer for advice, always negotiate the fee first. There are lawyers who refuse to bill by the hour (because they don't do time-tracking) and instead bill large lump sums. For each topic separately. And they don't care about losing a potential long-time customer by this at all.

(By the way, all other lawyers who I had consulted so far didn't have any problem with billing by the hour.)

Hab heute sehr teuren Unterricht genommen und dabei Folgendes gelernt:

Wenn du einen Anwalt um Rat fragst, verhandle immer zuerst über das Honorar. Es gibt Anwälte, die weigern sich, ihre Zeit abzurechnen (weil sie ihre Stunden nicht erfassen) und rechnen stattdessen happige Pauschalen ab. Und zwar für jede Sache separat. Dass sie damit einen potenziellen langjährigen Kunden verlieren, ist ihnen egal. Raffsäcke.

(Alle anderen Anwälte, mit denen ich bisher zu tun hatte, hatten übrigens kein Problem damit, den Aufwand nach Stunden zu berechnen.)

Oliver @ 18:05 | Permalink | 0 comments/Kommentare

Sonntag, Juli 27, 2008

glass mystery solved
Altglasrätsel gelöst

I recently solved the mystery concerning the used glass containers. (There are three containers for each of the glass color (white, green and brown), but the van collecting the class has only one big storage area.) The guy with the van told me that they had separate tours for the different colors: One day they collected the white glass, another day the green glass and so on.

Ich habe neulich das Mysterium um die Altglascontainer gelöst, von denen es jeweils drei gibt (Weißglas, Grünglas, Braunglas), die aber von einem Transporter mit nur einem Laderaum geleert werden. Der Glas-Abholer meinte, die würden einfach separate Touren für die verschiedenen Glassorten fahren: Einen Tag Weißglas, einen anderen Tag Grünglas und so.

Oliver @ 19:42 | Permalink | 1 comments/Kommentare

Mittwoch, Juli 23, 2008

iPhone locking

I've just read Merlin Mann's article on security on the iPhone and immediately passwort-protected my iPhone. After all, I've saved a few really sensitive passwords on the iPhone.

Hab gerade Merlin Manns Artikel über Sicherheit auf dem iPhone gelesen und sofort mein iPhone passwortgeschützt. Immerhin habe ich auf dem iPhone ein paar echt sensible Passwörter gespeichert.

Oliver @ 12:55 | Permalink | 1 comments/Kommentare

Donnerstag, Juli 10, 2008

Saving with the power
Beim Strom sparen

A few days ago, we received a fat refunding for our electricity bill, and our monthly andvance pay has been reduced as well. Greenpeace Energy really is a cool electricity provider (even apart from the fact that they provide CO2-free energy).

Wir haben vor ein paar Tagen eine fette Rückzahlung für unsere Stromrechnung bekommen, und unser monatlicher Abschlag ist auch gesenkt worden. Greenpeace Energy ist schon ein cooler Stromanbieter (mal ganz abgesehen davon, dass es auch noch Ökostrom ist).

Oliver @ 18:44 | Permalink | 1 comments/Kommentare


Sie: Is the skin of this fish edible?
Ich: Yes …
Sie: (eats a piece of fish)
Ich: … at least I think so.

Sie: Kann man die Haut mitessen?
Ich: Ja …
Sie: (steckt sich ein Stück Fisch in den Mund)
Ich: … glaube ich zumindest.

Oliver @ 13:37 | Permalink | 0 comments/Kommentare

Sonntag, Juli 06, 2008

Productitvity for coders
Produktivität beim Programmieren

After a really long day that was really not productive at the end, I've compiled some thoughts about productivity for coders:

  • Make use of the usual best practices, and be consequent about it: well-documented code, SVN, bug tracker and so on.
  • Do pair programming (except for routine stuff). Compared to the hacking-away-at-problems-alone approach and the reviews, this saves time.
  • Put a bottle of water next to your keyboard and drink from it regularly. Select some kind of water which you like and of which you can drink four liters per day without problems (for me, that's tap water).
  • When you're stuck, continue trying to solve the problem. When you're really stuck, have a break and do something completely different: Go for a walk, eat an apple, take out the garbage, do some juggling, sit down in the sun. The important thing is that your brain chemistry can get some balance again.
  • If you're stuck even after the break, explain the problem to someone who hasn't been working on it yet. Maybe explaining it already helps you see the solution, or maybe he/she has an idea or can spot the error.
  • Remove as many distractions as possible: phones, aggressive mobile phone sounds (Lars!), some kinds of music, unnecessary comments from co-workers, permanent Are you finished yet? questions from your boss … It might help to close the door, use ear plugs or noise-canceling headphones, put a do-not-disturb sign on the door, close your e-mail program and your chat client.
  • Make a plan on paper before you start coding: Draw some UML, think about the necessary unit tests, draw some other picture. And talk about it with your programming partner.
  • Du Test First very consequently. Each time you ignore this will have its revenge really soon.
  • Arrange your keyboard, mouse and screen so that your sitting right in front of it and typing is easy. Get a good keyboard and mouse.
  • Clean up your (physical and virtual) desktops so that there're nothing in the way which could distract you.
  • Write down everything that's floating in your mind and put it into your trusted system (GTD!) so that your working memory is empty for the task you're going to tackle.
  • Only do one task at a time. You cannot really multitask, and task-switching is expensive.
  • Know the times when you're the most productive, and do your programming at those times. Move away meetings, e-mail processing and administrative stuff to other times.
  • In your afternoon sleepiness time, do some 20-minute powernapping or relaxation exercises. This will help you to skip the two- oder three-hour period with severely reduced productivity.
  • Get enough sleep at night and live to your chronotype. (For example, if you're an owl, you shouldn't get up at seven if you want to reach your top productivity. And larks benefit from getting up early.)
  • Perceive when it's enough for the day (usually, that's after an average of eight hours). If you want to continue after that, be aware that you're borrowing energy from your next day (because you'll be less productive the next day). Overtime only makes sense (apart from the macho spirit: I'll kill myself if necessary to finish this project!) if it actually allows you to finish something today and you can afford to be less productive the next day. All in all, overtime reduces your productivity because you're not very productive in that time: You introduce errors, don't see the obvious or go down the wrong paths. It's better to invest the time the next day when you're rested and fresh.
  • Create small, incremental patches and commit often. This allows you to start over withou having to toss six hours of work. (And if you're using peer review instead of pair programming, this also is a lot faster with smaller patches.)
  • Learn the keyboard shortcuts of your development environment and create some code templates.
  • Your emotional state affects your perception, memory, concentration and your ability to think logically. When you're angry, then invest some time so that you feel well again so you can be productive again.
  • If possible, avoid stress. Productivity for demanding mental activities is highest when you're in a slightly relaxed state. (For routine acitivites, productivity is highest when there is a bit of stress.) In addition, stress is bad for your health—and being sick is a real productivity killer.
  • Take frequent break to gather new energy: Strech. Get enough sleep. Have a day completely without work at the weekend. Go on vacation.
  • Be kind to yourself. Your body is you most valuable asset, and all mental processes actually are bodily processes (with hormones, electricity and so).
  • You're not equally productive on all days: On some days you make a lot of progress, on others less. That's this way for everybody, cannot be avoided and absolutely is okay.

By the way, most of the items on these list aren't originally by me, but have been taken from numerous books.

Hab mir nach einem viel zu langen und am Schluss echt unproduktiven Tag neulich mal ein paar Gedanken zum Thema Produktivität beim Programmieren gemacht:

  • Benutze die üblichen Besten Praktiken, und zwar konsequent: ordentlich kommentierter Code, SVN, Bugtracker und so.
  • Programmiere möglichst immer zu zweit (außer bei Routineaufgaben). Das spart gegenüber dem Alleine-an-Problemen-Knabbern und den Reviews unterm Strich Zeit.
  • Stell die eine Flasche Wasser neben die Tastatur und trinke regelmäßig davon. Suche dir das Wasser aus, das dir gut schmeckt und von dem du ohne Probleme an einem Tag vier Liter trinken kannst (bei mir ist das Leitungswasser).
  • Wenn du festhängst, versuche das Problem zu lösen. Wenn du wirklich festhängst, mache eine Pause und beschäftige dich mit etwas komplett Anderem: Geh spazieren, iss einen Apfel, bring den Müll raus, jongliere eine Runde, setz dich in die Sonne. Wichtig ist, dass deine Gehirnchemie wieder ins Gleichgewicht kommt.
  • Wenn du auch nach einer Pause nicht mehr weiterkommst, erkläre jemandem Unbeteiligten das Problem. Entweder kommst du beim Erklären schon auf die Lösung, oder er/sie hat vielleicht eine Idee oder sieht den Fehler.
  • Schalte möglichst viele Störungen aus: Klingelnde Telefone, nervende Handytöne (Lars!), ablenkende Musik, unnötige Kommentare von Kollegen, ständige Wann seid ihr denn endlich fertig?-Fragen vom Chef … Schließe bei Bedarf die Tür, benutze Ohrstöpsel oder schalldichte Kopfhörer, hänge ein Nicht-Stören-Schild an die Tür, schließe dein Mailprogramm und deinen Chatclient.
  • Mache dir vorher einen Plan auf Papier: Male ein UML-Diagramm, überlege dir die Unit-Tests, male irgendein Bild. Und rede mit deinem Programmierpartner darüber.
  • Programmiere absolut konsequent Test-First. Jedes Mal, das du davon abweichst, rächt sich ziemlich schnell.
  • Richte dir Tastatur, Maus und Monitor so ein, dass du gerade davor sitzt und gut tippen kannst. Besorge dir eine gute Tastatur und eine gute Maus.
  • Räume deinen (physikalischen) Schreibtisch und deinen (virtuellen) Desktop auf, so dass da nichts rumliegt, was dich ablenkt.
  • Schreibe alles auf, was dir so durch den Kopf geht und tue es in dein vertrauenswürdiges System (GTD!), so dass dein Arbeitsgedächtnis frei ist für die Aufgabe, an der arbeiten willst.
  • Mache nur eine Sache gleichzeitig. Du kannst nicht wirklich multitasken, und das Umschalten ist teuer.
  • Kenne die Zeiten, in denen du am produktivsten bist, und lege deine Programmierzeiten dahin (und verschiebe Meetings, Mails-Bearbeiten, Verwaltungskram und so auf die anderen Zeiten).
  • Mache in deinem Mittagstief 20-Minuten-Powernapping oder Entspannungsübungen. Dadurch kannst du vermeiden, zwei bis drei Stunden lang viel weniger produktiv zu sein.
  • Schlafe nachts genug und richte dich nach deinem Bioryhthmus. (Wenn du zum Beispiel eine Eule bist, solltest du nicht um sieben aufstehen, wenn du deine maximale Produktivität erreichen willst. Und wenn du hingegen eine Lerche bist, ist frühes Aufstehen eine gute Idee.)
  • Merke, wenn es genug für den Tag ist (das ist wahrscheinlich im Durchschnitt nach rund acht Stunden der Fall). Wenn du danach noch weitrerarbeiten willst, sei dir dessen bewusst, dass du dir die Energie vom nächsten Tag borgst (dann bist du nämlich entsprechend weniger produktiv). Überstunden sind (mal abgesehen vom Macho-Denken: Ich bringe mich notfalls um, um das noch fertig zu bekommen!) nur dann sinnvoll, wenn du die Sache an diesem Tag dadurch noch fertig bekommen kannst und du es dir leisten kannst, am nächsten Tag entsprechend weniger zu schaffen. Unterm Strich bringen Überstunden weniger Produktivität, weil du in den Überstunden wenig produktiv bist: Du machst Fehler, übersiehst Offensichtliches oder gehst falsche Wege. Diese Zeit ist besser am nächsten Tag investiert, wenn du frisch und ausgeruht bist.
  • Mache kleine, aufeinander aufbauende Patches und checke oft ein. So kannst du auch einmal etwas Arbeit wegwerfen und neu anfangen, ohne dass du gleich sechs Stunden Arbeit vernichteten würdest. (Und wenn du mit Peer-Reviews statt mit Pair-Programming arbeitest, geht es mit kleineren Patches erheblich schneller voran.)
  • Lerne die Tastaturkürzel deine Entwicklungsumgebung kennen und richte dir Code-Templates ein.
  • Dein Gemütszustand beeinflusst deine Wahrnehmung, dein Gedächtnis, deine Konzentration und dein logisches Denkvermögen. Wenn du wütend oder sehr genervt bist, dann investiere zuerst Zeit darein, dass es dir wieder besser geht, damit du danach produktiv sein kannst.
  • Vermeide möglichst Stress. Bei anspruchsvollen geistigen Tätigkeiten ist bei einer entspannten Herangehensweise die Produktivität am höchsten, während bei Routinetätigkeiten bei leichtem Stress die Produktivität am höchsten ist. Außerdem macht Stress krank, und Krankheitsausfälle reduzieren deine Produktivität extrem.
  • Mache Pausen, damit du neue Energien sammeln kannst: Strecke dich zwischendurch. Schlafe genug. Erlege dir am Wochenende (mindestens) einen Tag Arbeitsverbot auf. Mache Urlaub.
  • Behandle dich gut. Dein Körper ist dein wertvollstes Gut, und alle geistigen Tätigkeiten sind genau genommen körperliche Vorgänge (so mit Hormonen, elektrischem Strom und so).
  • Du bist nicht immer gleich produktiv: An manchen Tagen kommst du besser voran, an anderen weniger. Das geht allen so, ist nicht zu vermeiden und absolut okay.

Die meisten Sachen dieser Liste sind übrigens nicht auf meinem eigenem Mist gewachsen, sondern ich habe sie aus diversen Büchern zusammengesammelt.

Oliver @ 23:50 | Permalink | 0 comments/Kommentare

Good people

Good Software


This page is powered by Blogger. Isn't yours?