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
|