Warum und wie du Softwareentwicklung üben kannst

Warum und wie du Softwareentwicklung üben kannst

Von Jan Suchotzki

UPDATE: Das Thema dieses Artikels erkläre ich dir auch im neuen Video Wie du programmieren lernst - Episode 1: Üben.

Hinweis: Dieser Artikel ist erschienen im Kontext der LernMoment Geburtstagswochen. Vielen Dank für dein Interesse in den letzten 12 Monaten!

Kennst du das? Du nimmst dir vor heute endlich mal eine Übung zu machen. Nachdem es schon gar nicht so einfach war eine gute Übung zu finden, stehst du nun vor dem Problem wie du anfangen sollst. Vielleicht hast du dir eine kleine Anwendung wie beispielsweise ein Mini-Spiel (z.B. Tic Tac Toe auf der Konsole) ausgesucht und fragst dich nun welche Klassen du brauchst.

Du siehst nur noch diese Frage und lässt dich hineinziehen in eine wilde Suche. Du fängst an zu recherchieren wie man eine solche Aufgabe löst. Du liest einige Artikel. Vielleicht findest du ein paar Beispiellösungen und schaust dir auch diese an. Einige Stunden später bist du so demotiviert, dass du alles in die Ecke schmeißt. Wahrscheinlich bist du an dieser Stelle total frustiert, ärgerlich über die dämliche Übung und unter Umständen auch enttäuscht von dir selbst.

Aus meiner Sicht kommt noch ein weiteres Resultat hinzu, du hast nämlich nicht geübt! Du hast keinen Quellcode geschrieben und vor allem keine Erfahrung gesammelt. Dieses ist eine der größten Herausforderungen beim autodidaktischen Lernen mit Büchern, Online-Kursen und Co.

Bevor ich dir ein paar Tricks zeige wie du quasi jede Aufgabe zum fokussierten Üben nutzen kannst, sollten wir darüber sprechen warum Üben so wichtig ist.

Übe und du kannst dich selbst erleuchten

Gerade wenn du mit einem Thema wie Softwareentwicklung anfängst, ist Erfahrung sammeln eine der wichtigsten Aktivitäten überhaupt. Du kannst noch so viel lesen, anschauen und aufschreiben, du wirst es einfach nicht lernen, solange du es nicht anwendest.

Um dein gewonnenes Wissen anwenden zu können, brauchst du jedoch Übungen die zu deinem Wissensstand passen. Sagen wir du hast gerade gelernt was eine Methode ist und wie du sie schreibst, dann brauchst du nicht zu üben welche Klassen du brauchst um eine Aufgabe zu lösen. Du brauchst auch nicht üben in welche Klasse die Methode gehört die du schreiben willst. Das einzige was du üben musst ist das Schreiben und Verwenden von Methode!

Wenn du deine ersten Methoden geschrieben hast, dann bekommst du plötzlich ein Gefühl dafür warum Methoden toll sind. Du verstehst wann es Sinn macht einen Rückgabewert zu verwenden und wann nicht. Genau dann kommen dir auch plötzlich neue Fragen in den Sinn. So fragst du dich vielleicht: “Was genau passiert eigentlich wenn ich eine Methode aufrufe und ihr eine Variable als Parameter übergebe?”

Genau an dem Punkt lernst du! Und das so richtig. Das ganze theoretische Arbeiten mit Büchern, Kursen, Videos, … ist wichtig! Wie du aber tatsächlich Software entwickelst, das erfährst du erst, wenn du dir die Hände im Quellcode schmutzig machst (im übertragenen Sinne ;).

Zwischenstand: Problem: Üben kann schwierig und frustrierend sein! Erkenntnis: Du musst es trotzdem machen, wenn du Software entwickeln willst.

Was kannst du nun konret machen um zu üben und dabei vielleicht sogar noch Spaß zu haben?

Finde die für dich passende Übung

Ich habe bereits gezeigt wie hilfreich es ist, dass du das übst was gerade zu deinem Wissensstand passt, aber wo findest du solche Übungen? Dazu kann ich nur sagen: “Überall!”

Aus meiner Erfahrung ist es egal welche Übung du nimmst. Es kommt nur darauf an wie du sie umsetzt. Bleiben wir bei dem Beispiel Tic Tac Toe. Solch ein kleines Projekt kannst du in den unterschiedlichsten Schwierigkeitsstufen umsetzen (Konsolenprojekt, grafische Oberfläche, Gegenspieler mit künstlicher Intelligenz, …). Du bist gerade angefangen und hast einiges über Methoden gelernt? Super!

Dann erstelle dir ein Konsolenprojekt und fange an Quellcode direkt in der Main Methode zu schreiben. Als erstes könntest du dir überlegen wie du das Spielfeld ausgeben kannst. Wenn du den Quellcode erstellt hast, der die Ausgabe macht, dann versuche einmal das leere Spielfeld auszugeben und danach das Spielfeld mit einem beliebigen Spielstein an einer beliebigen Stelle.

Wenn du diese ersten Schritte umgesetzt hast, wirst du sehen, dass die Main Methode schon sehr umfangreich ist und wahrscheinlich auch unübersichtlich. Außerdem werden sich Teile deines Quellcodes wiederholen. Nun kannst du anfangen Methoden zu erstellen. Nehme den Quellcode der sich wiederholt und packe ihn in eine Methode. Diese kannst du nun aus der Main Methode aufrufen. Voilá, du hast geübt eine Methode zu erstellen.

Mehr noch, du hast direkt selber erfahren welchen positiven Einfluss eine Methode auf deinen Quellcode hat. Außerdem hast du gleich neue Fragen gesammelt mit denen du dich als nächstes beschäftigen kannst.

Nochmals ganz konkret! Du kannst jede Übung nehmen und damit erfolgreich und zu deinem Wissensstand passend üben. Wichtig ist, dass du überhaupt anfängst, dir ein konkretes Thema nimmst das du üben willst und alles andere so einfach wie möglich machst.

Wenn du das Erstellen von Methoden üben willst, dann kannst du gerne ein kleines Projekt nehmen, aber du brauchst nicht überlegen welche Klassen du alle benötigst. Du brauchst auch nicht jede für dich wichtige Funktionalität umsetzen. Es geht nur darum, dass du eine Aufgabe hast mit der du ein bestimmtes Thema üben kannst.

Eliminiere Unbekannte um erfolgreich zu üben

Bereits im Artikel Coding Kata - Üben, bitte mit Ziel habe ich beschrieben, dass es Sinn macht eine Übung mehrfach zu machen aber mit unterschiedlichen Schwerpunkten.

Das hat nämlich den Vorteil, dass du dich nur einmal mit dem grundlegenden Problem (der Domäne) beschäftigen musst. Beispiel: Wenn du einmal Tic Tac Toe erstellt hast, ist dir der Aufbau und der Ablauf des Spiels bekannt. Du weißt dann, dass es ein Spielfeld gibt, dass es Spielsteine gibt, dass die Spieler abwechselnd einen Spielstein auf das Spielfeld malen, …

Auch wenn das in diesem Beispiel einfach klingt enthält es genügend Dinge um dich vom Üben abzuhalten. Wenn du erst überlegen musst wie das Spiel geht, wie der Ablauf ist, … dann kommst du schon wieder sehr schnell vom eigentlich Üben weg. Implementierst du aber Tic Tac Toe bereits zum 3. oder gar 10. mal, dann weißt du sofort was alles bei dem Spiel wichtig ist und kannst sofort mit deiner eigentlichen Übung anfangen.

Ein weiterer Trick um möglichst schnell Unbekannte zu eliminieren ist Annahmen zu treffen und sich zu entscheiden. Mir ging es häufig so, dass ich viel Zeit damit verbracht habe zu überlegen wie eine Variable, eine Methode, … heißen soll. Nun ist es mir sehr wichtig ausdrucksstarken Quellcode zuschreiben. Gerade beim Üben hat das aber den Nachteil, dass es mich von der Übung ablenkt. Daher bin ich dazu übergegangen in Übungen einfach irgendeinen Namen zu verwenden. Kann ich mich beispielsweise nicht (innerhalb von wenigen Sekunden) entschließen wie eine Variable heißen soll, dann nenne ich sie einfach “hugo”. Das sieht zwar etwas komisch aus, aber ich kann mit meiner eigentlichen Übung weiter machen.

Ähnlich verhält es sich mit Annahmen. Häufig ist mir bei einer Aufgabe nicht klar was gemeint ist und wie sich etwas in der Realität tatsächlich verhält. Kürzlich habe ich beispielsweise eine Übung gemacht mit der die Punkte beim Bowling gezählt werden. Bevor ich nun lange überlege / recherchiere wie die Regeln beim Bowling wirklich sind, treffe ich einfach Annahmen. Das geht sicherlich nicht immer, aber doch häufiger als du glaubst. Auch hier ist wieder der Vorteil, dass du nicht von deiner eigentlichen Übung abgelenkt wirst.

Je weniger Unbekannte du also hast, desto besser kannst du spezifische Themen üben. Mit besser meine ich in diesem Kontext schneller und motivierter. Hier schließt sich der Kreis zum Anfang des Artikels. Wenn du es schaffst in kurzer Zeit das Thema zu üben welches du gerade gelernt hast, dann ist das motivierend und nachhaltig. Dann hilft dir Übung dabei Erfahrung zu sammeln und ein tiefes Verständnis aufzubauen.

Außerdem ist kaum etwas so beflügelnd wie zu sehen, dass der eigene Quellcode tatsächlich funktioniert und dadurch das Gefühl zu bekommen, dass man etwas wirklich verstanden hat.

Viel Spaß bei deiner nächsten Übung

Jan

PS: Das Thema Üben wird in den kommenden Wochen und Monaten wesentlich ausgebaut. In Übungen zu C#, GitHub und mehr habe ich dir schon einige Übungen vorgestellt. Momentan entstehen noch einige neue Übungen speziell für Anfänger. Ich bin sehr gespannt wie du die finden wirst.