Posted 9 days ago. Visible to the public. Repeats.

Hilfe, ich hänge beim Programmieren fest!

Bei makandra bist Du mit Kollegen umgeben, die seit Jahren mit einem ähnlichen Stack entwickeln wie du. Es sollte deswegen nie einen Grund geben, länger allein an einem Programmierproblem festzuhängen.

In diesen drei Schritten kommst du immer und zeitnah zu einer Lösung:

  1. Dein Problem besser kennen lernen
  2. Gute Fragen in #geeks stellen
  3. Eskalation in #sos

Schritt 1: Dein Problem besser kennen lernen

Grenze das Problem ein

Ein erster Schritt bei der Problemsuche ist immer, den Ort im Quelltext einzugrenzen, der das ungewünschte Verhalten auslöst.

Idealerweise findest du heraus, bis zu welcher Zeile sich dein Programm noch wie erwartet verhält, und ab welcher Zeile Du das Verhalten nicht mehr verstehst. Oft kannst Du diese Frage beantworten, indem Du mit einem Debugger die Ausführung anhältst und z. B. den Wert lokaler Variablen ausliest, während Du durch den Programmfluss stepst. An irgendeiner Stelle wird eine lokale Variable einen unerwarteten Wert aufweisen.

Wenn du überhaupt keine Idee hast, wo Du den Debugger ansetzen sollst, versuche große Programmteile als Fehlerquellen auszuschließen:

  • Stelle ein JavaScript- oder CSS-Problem in einem minimalen CodePen nach, um so Rails und dein Backend als Fehlerquelle auszuschließen.
  • Wenn z. B. ein Link nicht mehr reagiert, prüfe, ob das Problem auch ohne JavaScript weiter besteht. Damit weißt du, ob das Problem im Frontend oder Backend zu suchen ist.
  • Wenn sich ein Formular nicht speichern lässt, erstelle den Datensatz direkt von der Konsole, um so Controller, Views und JavaScript als Fehlerquelle auszuschließen.

Exceptions lesen lernen

Exceptions und Stacktraces wirken auf den ersten Blick kryptisch, sind bei genauerer Betrachtung aber sehr hilfreich.

Nimm Dir bei einer Exception Zeit, den Fehlerbericht zu verstehen:

  • Auf welches Problem weist die Fehlerbeschreibung hin? Häufig benennt sie sehr genau die Ursache eines Problems.
  • Welche Stelle in Deinem Programm löst die Exception aus? Meist findest du im Stacktrace Zeilennummern in deinen eigenen Projektdateien.
  • Wenn die Exception aus einer Bibliothek kommt: In welcher Zeile ruft dein Programm die Bibliothek auf? Prüfe in der Dokumentation der Bibliothek, ob du die Bibliothek richtig verwendest.

Recherche

Nimm dir bitte ein paar Minuten Zeit zur Online-Recherche, bevor du einen Kollegen fragst. Viele Probleme sind mit einer schnellen Suche auf Google oder unserem Card-Deck schnell gelöst.

Überlege dir, welchen Text ein Tutorial, eine Card, eine Github-Issue enthalten würde, die dein Problem diskutiert. Das sind gute Suchbegriffe.

Falls du auf StackOverflow einen Code-Schnippsel findest, der Dein Problem löst: Bitte verstehe den fremden Code, bevor Du ihn ins Projekt commitest.

Wie lange alleine rumprobieren?

Solange du kontinuierlich mehr über Dein Problem lernst, kannst Du alleine weiter arbeiten.

Bitte ziehe einen Kollegen hinzu, wenn…

  • … du keine Spur mehr hast, die du untersuchen kannst
  • … du orientierungslos durch unbekannten Quelltext scrollst
  • … du nur noch auf den Monitor starrst
  • … du das Gefühl hast, unverhältnismäßig viel Zeit auf dein Problem zu verwenden

Schritt 2: Gute Fragen in #geeks stellen

Wenn du alleine nicht weiterkommst, kannst du jederzeit in #geeks um Hilfe bitten. Bitte schau auch selbst gelegentlich im #geeks-Channel nach, ob du etwas zu den Fragen deiner Kollegen weißt.

Bitte zögere auch als Senior-Entwickler oder Project-Lead nicht, in #geeks zu fragen, auch wenn sich ein Problem mal wie ein "Anfänger-Thema" anfühlen sollte. Wir erwarten nicht, dass Du immer alles weißt oder alles parat hast. Deine Zeit ist uns genau so wichtig wie die Deiner jüngeren Kollegen.

Gute Fragen, schlechte Fragen

Am schnellsten bekommst du Hilfe, wenn jemand dein Problem direkt im Chat erkennen kann und nicht erst zu dir kommen muss. Ein gutes Hilfegesuch enthält deswegen Antworten auf die folgenden Fragen:

  • Was möchte ich tun?
  • Was ist unerwartetes passiert?
  • Was habe ich erwartet?
  • Was habe ich über das Problem bereits herausgefunden?

Negativ-Beispiel:

Mein Rails-Formular lässt sich nicht abschicken. Kann jemand helfen?

Positiv-Beispiel:

Ich habe ein Formular auf einem ActiveRecord-Model und möchte es abschicken. [was möchte ich tun?]
Wenn ich den Submit Button drücke, passiert nichts auf dem Bildschirm. [was ist unerwartetes passiert?]
Ich hätte erwartet, dass ich entweder die Folgeseite oder einen Validierungsfehler sehe. [was habe ich erwartet?]
Ich habe bereits im Network-Tab bestätigt, dass ein Request ausgelöst wird. Das Problem besteht auch ohne JavaScript. [was habe ich bereits herausgefunden?]
Kann jemand helfen?

Schritt 3: Eskalation in #sos

Manchmal hat in #geeks kein Kollege Zeit, oder niemand weiß mit deinem Fehlerbericht etwas anzufängen. Handelt es sich um ein Problem, bei dem du nicht länger auf eine Antwort warten kannst, frag bitte im separaten Channel #sos nochmals um Hilfe. Dort bekommst du garantiert eine Antwort.

Bitte zögere auch als Senior-Entwickler oder Project-Lead nicht, in #sos zu fragen, auch wenn es sich für Dich wie ein "Anfänger-Thema" anfühlen sollte. Wir erwarten nicht, dass Du immer alles weißt oder alles parat hast. Deine Zeit ist uns genau so wichtig wie die Deiner jüngeren Kollegen.

Als Project Lead oder höher erwarten wir, dass Du bei der Beantwortung von Fragen in #sos aktiv mithilfst.

makandra has been working exclusively with Ruby on Rails since 2007. Our laser focus on a single technology has made us a leader in this space.

Owner of this card:

Avatar
Henning Koch
Last edit:
4 days ago
by Arne Hartherz
Keywords:
stuck, block, blocked, unblock, help, hilfe, coding, code
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Henning Koch to makandra dev
This website uses cookies to improve usability and analyze traffic.
Accept or learn more