Code Kata

vom 18. July 2008

Auf codinghorror.com habe ich neulich einen interessanten Artikel gelesen, der sich mit der generellen Frage beschäftigt, ab wann man ein Experte ist, ab wann man dazulernt und warum Praxiserfahrung wichtig ist.

[...]Contrary to what you might believe, merely doing your job every day doesn't qualify as real practice. Going to meetings isn't practicing your people skills, and replying to mail isn't practicing your typing. You have to set aside some time once in a while and do focused practice in order to get better at something. I know a lot of great engineers -- that's one of the best perks of working at Amazon -- and if you watch them closely, you'll see that they practice constantly. As good as they are, they still practice. They have all sorts of ways of doing it, and this essay will cover a few of them.[...]

Von täglicher Routine wird man nicht besser. Erst wenn man sich Zeit für neues nimmt, an seine Grenzen stößt und genau dort weitermacht wo man scheitert, wird man besser. Jeff Atwood hat eine interessante Liste mit Tipps zusammengetragen, von denen ich ein paar für sehr wichtig halte und deshalb - zusammen mit einigen Tipps von mir - hier noch einmal aufführe.

Such dir einen Helden

Schau dir auf Wikipedia die Pioniere der Informatik an und such dir einen davon raus. Folge allen Links und lese über ihn. Finde heraus, mit was sich dein Held beschäftigt (hat) und versuche seine Lösungswege zu verstehen.

Lese fremden Code

Lies täglich 20 Minuten lang Code von anderen Programmierern. Wenn du keinen Code von Arbeitskollegen oder Freunden bekommen kannst, such dir ein Open-Source-Projekt das dir gefällt und arbeite dich in den Code ein. (Beispielsweise Firefox, RubyOnRails, Django, Subversion, o.ä.) Anfangs scheint es so, als wäre der Code in einem Leben nicht zu überschauen, doch mit der Zeit findet man Muster, versteht die Zusammenhänge, erkennt wie Probleme gelöst wurden und lernt Techniken und Architekturen kennen. Auch erkennt man auf diese Weise, was guten Programmcode ausmacht.

Lasse andere deinen Code lesen

Such dir eine Person, die deinen Code lesen will und lasse diese deinen Code bewerten. Gute- sowie schlechte Programmteile müssen hervorgehoben werden, nur so lernt man dazu. Ein "Ja, ist ganz nett" bringt niemanden weiter.

Nutze deine Programme besser

Mach eine Liste mit deinen 10 meistgenutzten Tools und lese für eine Stunde das Hanbruch/Dokumentaton/ManPage eines zufällig ausgewählten Programms. Versuche in dieser Stunde neues über dieses Programm herauszufinden und Arbeitsabläufe zu beschleunigen. Beispielsweise Shortcuts, Features von denen du noch nichts gehört hast oder Konfigurationseinstellungen, die die Bedienung einfacher machen.

Programmiere!

Theorie schön und gut, aber ohne richtige Programmiererfahung wird man nicht weit kommen. Der Beste Weg dafür ist es einfach zu tun. Probiere neue Technologien aus, schaue dir unterschiedliche Frameworks an und hacke was das zeug hält!

Wer ist der Beste?

Suche und arbeite zusammen im Team an Projekten. Finde heraus, was es bedeutet, der beste und der schlechteste Programmierer zu sein. So kannst du herausfinden, wie du besser werden kannst.

Code-Pflege

Lerne fremden Programmcode, den du nicht geschrieben hast zu warten. Am Besten funktioniert das, in dem man ein verwaistes Projekt wieder auferstehen lässt (fork) oder Fehler behebt (bug-fixing). So lernt man, was es ausmacht, wartbaren Code zu schreiben.

Lerne verschiedene Programmiersprachen

Such dir eine Programmiersprache heraus, die komplett andere Konzepte und Strategien verfolgt, welche du bis jetzt noch nie genutzt hast oder welche dir bis jetzt noch nie bewusst waren.

Für weitere Tipps und Kritik steht die Kommentarfunktion und die Anmerkungen am Linken Rand bereit :)

4 Kommentare, delicious bookmark del.icio.us


Metal Gear Solid 4 und Usability

vom 21. June 2008

Mein Bruder hatte sich vor ca. einer Woche Metal Gear Solid 4 für die PS3 gekauft und ich muss sagen, ich hab noch nie so ein grandioses Spiel gesehen und gespielt. Die Grafik ist einfach umwerfend. Man kommt sich vor, als würde man in einem Film mitspielen und die Handlung beeinflussen. Wie auch die vorherigen MetalGear-Teile gibt es auch in diesem Teil so viele Details und Gimmicks das man hier wirklich von Perfektion reden kann.

Und das Beste: Man kann das Spiel auch über das Internet spielen. Doch dazu braucht man allerdings einen Login, und hier wurden wir geschockt:

Registrierungsformular

Um einen Zugang zu bekommen öffnet sich auf der PS3 der integrierte WebBrowser mit einem Formular. Nach Auswahl der Sprache gelangt man zu einem etwas längerem Formular. Mein Bruder tippte sich die Finger wund, aber das war ok, schließlich wollten wir im Internet spielen. (Ja, man kann auch eine USB-Tastatur anschließen, aber auf die Idee sind wir erst später gekommen). Wieso wir eine KONAMI-ID und eine GAME-ID brauchten war und nicht klar, wir vermuteten schon, dass man hier evtl. die Seriennummer des Spiels eintippen musste. Am Ende des Formulars gab es zwei Buttons: "Weiter" und "Start". Leider war der "Start"-Button mit dem ersten Formular verlinkt, also nochmal alles in mühevoller Kleinarbeit ausfüllen. Nach einem Klick auf "Weiter" bekamen wir eine ziemlich lange Liste mit Hinweisen, was alles falsch ausgefüllt wurde. Nach ca. 5 weiteren Submit-Versuchen waren alle Fehler verschwunden, aber es passierte nichts! Keine Fehlermeldung, kein weiteres Formular, nichts.

Da wir offentlichtlich in einer Sackgasse gelandet waren, haben wir es nochmal am PC versucht, allerdings ging es hier ebenso nicht mehr weiter. Nach etwas Recherche fanden wir hunderte von anderen die das selbe Problem hatten. Es gibt bereits mehrere "Tutorials" um dieses Formular erfolgreich auszufüllen, die aber alle nicht funktionierten.

Hier frage ich mich, wie sowas passieren konnte? Das Spiel ist nahezu makellos und es stecken Jahre an Entwicklungs- und Denkzeit darin, und dann blockiert ein dermaßen bescheuertes Registrierungsformular das halbe Spiel.

4 Kommentare, delicious bookmark del.icio.us


Auserwählt?

vom 9. February 2008

Heute hab ich im Briefkasten einen merkwürdigen Brief entdeckt. Darin befand sich nur eine kleine blaue Sanduhr mit einem Zettel auf dem eine URL, und auf der Rückseite "Problems?" stand.

Image Alt Text

Die URL führt zu einer Präsentation mit einigen Rätseln. Nach etwas Recherche hab ich zwei weitere (der 10 Auserwählten) gefunden: Florian und Joerg. Die anderen heißen Alexander, Frank, Gollo, Hardy, Jan, Joachim und Markus. Florian hat die einfacheren Rätsel schon gelöst: Beispielsweise fühen die Koordinaten 48.856667°N 2.340833°E zu einer Brücke in Paris. Die Morsezeichen bei Folie a führen zu einem Wikipedia-Artikel.

Einige Aufgaben sind allerdings (noch) total nichtssagend. Beispielsweise 2D = 45 oder "Navfbfgvpgn abirzqrpvzchapgngn".

Meine Vermutungen: Die Folie 1 auf der eine Tabelle mit Einsen dargestellt ist verbindet die einzelnen Aufgaben anhand der Buchstaben. Eine andere Vermutung ist, das alle Lösungen irgend wie auf Orte bezogen werden kann und dies am Ende (wenn die Punkte in der richtigen Reihenfolge verbunden werden) ein Bild ergibt. (Vielleicht auch die Wohnorte von uns?). Also: Für alle, die auch eine Sanduhr bekommen haben sollten sich schnell melden :)

Von wem die Post stammt ist uns allerdings noch völlig unklar. Vielleicht verrät uns das die Lösung des Spiels. Nur dumm das ich momentan mitten in den Klausuren stecke und ich mich eigentlich mehr auf Verteilte Systeme II konzentrieren sollte.

Nachtrag: Es sieht so aus, als wäre ich geradewegs in ein ARG reingerutscht. Mehr Infos dazu gibts im Wiki und im IRC (irc.chat-solutions.org, #ARGR).

4 Kommentare, delicious bookmark del.icio.us