12 Vorsätze für Programmierer

Dieser Artikel stammt von Matt Might und wurde von mir, mit Erlaubnis, nur ins Deutsche übersetzt.

Der Post gilt für mich nicht nur für Programmierer, sondern allgemein für Menschen, die sich weiter entwickeln und mental flexibel bleiben wollen. Stellenweise ist die Übersetzung noch etwas holprig, wenn ihr eine bessere Formulierung parat habt oder einen Fehler findet, kommentiert gerne!

Alle Links sind aus dem ursprünglichen Post übernommen, es sind auch ein paar referral Links dabei.

Link zur Originalfassung auf Englisch

12 resolutions for programmers (von Matt Might)

Es ist wichtig, dass Programmierer sich selbst herausfordern.

Kreative und technische Stagnation ist die einzige Alternative dazu.
Im Geiste des neuen Jahres, habe ich eine Liste für Vorsätze, in Monatsportionen aufgeteilt, zusammengestellt.

Jeder Monat lässt sich jährlich wiederholen, mit einer austauschbaren technologischen oder persönlichen Herausforderung:

  1. Tue etwas analoges.
  2. Bleib gesund.
  3. Suche das Unangenehme.
  4. Lern eine neue Programmiersprache.
  5. Automatisiere.
  6. Lern mehr Mathematik.
  7. Konzentrier dich auf Security.
  8. Mach Backups von deinen Daten.
  9. Lern mehr Theorie.
  10. Nimm Anteil an Kunst und Geisteswissenschaften.
  11. Lerne neue Software.
  12. Beende ein persönliches Projekt.

Lies weiter, für weitere Vorschläge.

Update 1: Auch lesenswert: Was jeder Informatiker wissen sollte.

Update 2: Übersetzungen dieses Textes.

Update 3: 12 Vorsätze für Studenten

Update 4: Updates für 2016 hinzugefügt.

Tue etwas Analoges

Progrmamierer sind obszessiv mit der digitalen Welt verbunden, daher bedeuten schon kleine Investitionen in die analoge Welt, relativ große Fortschritte.

Hier ist eine Liste von analogen Aktivitäten, die man ausprobieren könnte, jede benötigt etwa einen Monat an Engagement um darin kein blutiger Anfänger mehr zu sein:

  • Kochen
  • Wandern
  • Ski fahren
  • Astronomie
  • Joggen
  • Gewichtheben
  • Werken/Tischlern
  • Kampfsport
  • Tanzen

Bleib gesund

Programmierer tendieren dazu, im Sitzen zu leben und wir haben dadurch unsere eigenen Herausforderungen was unsere Gesundheit angeht.

Wir tendieren außerdem dazu, diese Herausforderungen zu ignorieren.

Nutze einen Monat in jedem Jahr dazu dein Workout, deine Diät und dein Umfeld zu verbessern, um gesunde Angewohnheiten zu entwickeln und fortzusetzen.

Geh einmal im Jahr zum Arzt um Blutdruck, Cholesterol und Blutzucker messen zu lassen. Sieh dir an wie diese Werte sich im Laufe der Zeit verändern.

Falls deine Handgelenke anfangen weh zu tun oder weh taten, (fang an RSI entgegen zu wirken](http://matt.might.net/articles/preventing-and-managing-rsi/).

Konzentriere dich darauf deine Haltung zu verbessern, besonders Schultern und Nacken. Nimm einen haltungsverbessernden Gurt zur Hilfe:

(Ja, es funktioniert auch bei Männern)

Track your weight, caloric intake and caloric burn. If necessary, reshape your lifestyle to promote healthier eating and weight loss.

Behalte dein Gewicht im Auge, Kalorienaufnahme und Kalorienverbrennung. Wenn nötig, änder deinen Lebendsstil, iss gesünder und verliere, wenn nötig, Gewicht.

Wenn du schon normalgewichtig bist, erwäge ein einjähriges Experiment um Kraft und Muskelmasse anzulegen.

2016 update: Über die lezten paar Monate, habe ich einen stehenden Schreibtisch ausprobiert und es ist sowohl mental als auch physisch erfrischend.

Nach meinen Schätzungen verbrauche ich etwa 360 Kalorien extra pro Tag durch das Stehen, aber da Stehen meine allgemeine körperliche Aktivität steigert, nehme ich an, dass es etwas mehr ist und ich fühle mich konzentrierter wenn ich stehe, als wenn ich sitze.

Suche das Unangenehme

Seit meinen frühen Zwanzigern, habe ich bei älteren Bekannten versucht darauf zu auchen warum manche stagnieren und manche lebendig bleiben.

Die Antwort ist Komfort.

Komfort fördert technische Fossilisation.

Wenn wir ein System finden, was uns reicht, bleiben wir dabei.

Technologie entwickelt sich weiter und die, die in ihrer comfort zone bleiben, werden diese Vorteile nie erkennen.

Übe dich außerhalb deiner comfort zone wohl zu fühlen.

Hier ist eine Liste von Dingen, die zunächst sehr unkomfortabel sein werden:

  • Wechsle zu Dvorak.
  • Wechsle von emacs zu vim oder umgekehrt.
  • Hör auf eine Maus zu benutzen.
  • Nutze einen anderen window manager.
  • Wechsle von Kaffee mit Zucker oder Milch zu schwarzem Kaffee oder zu Tee.
  • Probiere das „beliebte neue Stück Müll“ für einen Monat aus.
  • Mach dein Telefon aus, für einen Tag der Woche.
  • Lern ein einhändig bedienbares input device.
  • Probiere ein anderes Betriebssystem aus.
  • Probiere ein anderes Versionskontrollsystem aus, für ein kleines Projekt.
  • Meide das Internet für einen Tag pro Woche.
  • Versuche etwas diätär restriktives wie vegan, vegetarisch, keine Milchprodukte, etc.
  • Iss etwas, das du nicht magst, jeden Tag.
  • Steck deinen dominanten Arm in eine Schlinge.
  • Lern mit deiner nicht-dominanten Hand zu schreiben.
  • Fang einen Blog an.
  • Melde dich dafür einen Vortrag zu halten.
  • Hör einen Monat lang Musik, die du nicht magst.
  • Arbeite freiwillig in einem Krankenhaus oder Altenheim.
  • Faste einmal pro Woche.
  • Reise in ein Land mit einer anderen Sprache und/oder Kultur.
  • Lies ein anerkanntes Buch aus einem Genre, das du nicht magst.
  • Sieh einen anerkannten Film aus einem Genre, das du nicht magst.
  • Lern ein Auto ohne Automatik zu fahren.
  • Sprich dich gegen etwas aus, an das du glaubst.

Nach einem Monat, in dem du etwas anders gemacht hast, entscheide dich ob du Dinge lieber weiter annder tust oder ob es eine gute Mischung zwischen vor dem Experiment und jetzt gibt.

Beispielsweise, als ich zu vim wechselte, nach zehn Jahren emacs, habe ich emcas Keybindings für den insert Modus erstellt, aber vim behalten.

Update: Leser Shae Erisson hat die „rule of 3“ für die Suche nach dem Unangenehmen vorgeschlagen: Wenn die dritte Person dir etwas empfiehlt, musst du es ausprobieren.

Er hat auch eine „15 Minuten Regel“: Gib etwas (wie einem Film oder einer serie) einen Vertrauensvorschuss von 15 Minuten. Wenn du nach 15 Minuten nicht weiter schauen willst, lass es.

Ich mag diese Regeln beide.

Lern eine neue Programmiersprache

Programmiersprachen haben Aufstieg und Untergang.

Programmierer die nur eine Sprache kennen, werden ihre Problemlösungsfähigkeiten und Karrieremöglichkeiten einschränken.

Nimm dir einen Monat um eine neue Sprache oder oder ein neues Sprachenprinzip zu lernen.

Schreib ein bescheidenes Programm damit.

Hier sind ein paar weniger mainstream Sprachen, die man lernen kann:

Wenn du dich für besonders mutig hältst, nimm dir doch eine abhängig typisierte Programmiersprache oder ein Theorembeweissystem vor:

Wenn dir die Programmiersprachen zum Lernen ausgehen, implementier eine

Automatisiere

Die mächtigste und am wenigsten genutzte Fähigkeit von Programmierern ist es, Dinge zu automatisieren, sowohl virtuell als auch physisch.

Wenn du noch nie einen Roboter gebaut hast, bau einen Roboter.

Mindestens: Spiel mit LEGO Mindstorms:

oder hack etwas mit einem Arduino Board:

Schau dir deine Routineaufgaben an, die du vollführst und entscheide welche sich voll oder teilweise automatisieren lassen.

Heimautomatisierungstechnologie hat sich stark weiterentwickelt und viel ist schon mit DIY Systemen wie Insteon möglich.

Nimm dir einen Monat um an einem Automatisierungsprojekt zu arbeiten:

  • Erstelle Emailfilter oder nutze procmail.
  • Erstelle
    Shellskripte um häufige Aufgaben zu automatisieren.
  • Schaffe
    Shellskripte, die dir beim Schreiben helfen.
  • Lerne, wie man cron nutzt.
  • Verlinke eine Schranklampe mit Bewegungsmeldern.
  • Ersetze Kabel durch Kabelloses wo möglich.
  • Hör auf manuell zu synchronisieren, schieb es in die Cloud.
  • Bau ein fernsteuerbares Soundsystem.
  • Steuere dein Thermostat von deinem Server.
  • Installiere digitale Sicherheitskameras.
  • Erstelle ein digitales Intercom/Babyfon.
  • Lass deine Kaffeemaschine automatisch angehen.
  • Bau einen sich selbst nachfüllenden Wassernapf für deine Haustiere.
  • Bau eine Sensorbasierte Katzen/Hundeklappe
  • Hacke einen Roomba, damit er dein persönlicher Kourier wird.

Lern mehr Mathematik.

Im Kern ist Informatik eine mathematische Disziplin.

Gute Mathematiker sind gute Programmierer.

Lass deine mathematischen Kenntnisse nicht welken.

Erwäge eine Monatliche Wiederholung von je einem dieser Themen:

Konzentriere dich auf Security

Wenige Programmierer haben gute Securityangewohnheiten.

Wenn du dir deiner eigenen digitalen Sicherheit bewusst bist wirst du auch bewusster sicheren Code schreiben.

Stelle sicher, dass du ein einzigartiges und starkes Passwort für jede Seite nutzt.

Manage deine Passworte mit einem verschlüsselten Passwortmanager wie Passwordsafe oder KeePassX.

Wenn du noch nicht deine Festplatte verschlüsselst, nimm dir die Zeit, das zu tun. (Unter Mac OS ist das schnell gemacht.)

Sieh dir jedes Jahr die wichigsten zehn Sicherheitslücken der letzten 12 Monate an. Wie ist das passiert? Welche Programmierpraktiken hätten diese in deinem Code vermeiden können?

Hier sind ein paar Securityaufgaben, die du ausprobieren kannst:

[Ich habe kürzlich angefangen viele meiner Dateien in Copy zu lagern, einer Dropboxartigen App, die mit viel mehr freiem Speicherplatz daher kommt. Wenn du dich mit diesem referral Link anmeldest, bekommst du 5 zusätzliche GB Platz.]

Entscheide dich für eine defensive Sicherheitsstrategie und mache von jedem Computer automatische Backups mit Werkzeugen wie Time Machine.

Sichere kritische Dateien in Versionskontrollsystemen in einem remote repository.

Lerne mehr Theorie

Informatik hat eine große theoretische Struktur.

Halte dich über neue Entwicklungen auf dem Laufenden, erneuer dein Wissen der Klassiker.

Nimm dir einen Monat jedes Jahr für Themen wie diese:

  • Formale Sprache.
  • Automatik und Berechenbarkeitstheorie.
  • Komplexitätstheorie.
  • Formale Methoden.
  • Semantik.
  • Algorithmen und Datenstrukturen.

Für den Anfang, könntest du dir folgende Posts ansehen:

Nimm Anteil an Kunst und Geisteswissenschaften

Entwickler tendieren dazu auf die Künste herabzusehen.

Was Entwickler nicht verstehen, ist das Kunst und Geisteswissenschaften technische Exzellenz widerspiegeln.

Steve Jobs hat gerne die Wichtigkeit, Technologie und Geisteswissenschaften zu verbinden, aufgezeigt; zu Recht.

Kunst und Design haben Prinzipe die sich auf Mensch-Computer Interkation anwenden lassen.

Ignoriere diese Prinzipe nicht.

Kunst und Geisteswissenschaften üben und schärfen Intuition in Bahnen, die schwer zu quantifizieren sind, aber unabdingbar sind, für jene die in quantifizierbaren Feldern arbeiten.

Entwickler müssen lernen wie sie messen, was sie nicht zählen können, anstatt zu zählen, was sie messen können.

Für mindestens einen Monat im Jahr, widme dich einem der folgenden Themen:

  • Industrielles Design.
  • Philosophie.
  • Fotografie.
  • Malen.
  • Zeichnen.
  • Musik und Musiktheorie.
  • Film.
  • Literatur.

Sozialwissenschaften können Informatikern auch viel geben. Versuche dich an Wirtschaft und Psychologie im Besonderen.

Lern neue Software

Sich neue Software oder eine neue Anwendung anzueignen ist ein guter Ansatz um Ideen für seine eigene Software zu sammeln.

Als Beispiel, wenn du noch nie eine 3D Modellierungssoftware benutzt hast, probiere Blender aus.

Wenn du nie LaTeX gelernt hast, versuche es wirklich zu lernen.

Wenn du lernst, notiere was dir gefällt und was nicht.

Frage dich ob das was du lernst sich in deiner Software widerspiegelt.

Es ist schwer einen Fehler in der eigenen Arbeit zu finden, aber leicht in der anderer.

Keine Eltern hatten jeh hässliche Kinder.

Lerne deine hässlichen Kinder zu erkennen.

Beende ein persönliches Projekt

Wenn du den ganzen Tag Code für jeamdn anderen schreibst, erinnere dich daran wieso du Programmierer wurdest und schreib ein Programm für dich.

Nimm dir einen Monat jedes Jahr für ein Projekt, dass du dir selbst aussuchst.

Bring den Kern des Projektes zur Reife.

Veröffentliche es unter einen Open Source Linzens.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.