b Projektorientierung bei cdemy | cdemy

Projektorientierung bei cdemy

Wie wir durch praktische Erfahrungen gute Programmierer ausbilden

Umschulung Programmierung FIAE Projekte

Wir sind der festen Überzeugung, dass man nur dadurch lernt, dass man sich Aufgaben stellt und Lösungen erarbeitet. Daher spielen Projekte im Rahmen der Ausbildung bei der cdemy GmbH eine herausragend wichtige Rolle. Hier stellen wir den Ansatz und einige Projekte vor.

Wenn man auf YouTube jemandem dabei zusieht, wie er ein Problem löst, dann heißt es nicht, dass man es zukünftig lösen kann. Und die Chance ist auch klein, dass sich einem in Zukunft exakt das gleiche Problem nocheinmal stellt. Und auch wenn wir viel von unserem eigenen Unterricht halten: Dadurch, dass wir viel erzählen, ist nicht gewährleistet, dass die Teilnehmer es a) verstanden, aber vor allem b) anwenden können in Zukunft. Man lernt Programmieren nicht dadurch, dass man ein Buch liest oder ein Tutorial ansieht. Das sind alles gute Ansätze, aber der einzige Weg, sich selbst und seine Fähigkeiten nachhaltig zu entwickeln, ist, dass man sich Aufgaben stellst, dass man teilweise auch scheitert und weitermacht und daraus lernt.

Unser Ansatz umfasst klassischen Theorie-Unterricht, LiveCoding-Vorführungen, aber besonders wichtig ist uns, dass die Teilnehmer auch immer Projekte haben, an denen sie in der Regel in kleinen Teams arbeiten. Diese Projekte starten einfach und werden schnell komplexer. Unser Ziel ist immer, dass man zu Beginn daran zweifelt, es umsetzen zu können - und es dann natürlich schafft. Bei der Umsetzung nutzen die Teilnehmer

  • offizielle Dokumentationen,
  • inoffizielle Tutorials,
  • die Kenntnisse ihrer Teammitglieder,
  • die Dozenten, die stets betreuend dabei sind.

Reale Projekte

Wir stellen examplarisch einen Verlauf dar, wie ihn unsere Teilnehmer in den ersten 6 Monaten(!) durchlaufen werden und typische Projekte aus der Vergangenheit für die jeweiligen Ausbildungsabschnitte.

Das erste Projekt - Kalender

Das erste Projekt für jeden Teilnehmer beginnt mit dem Erstellen eines statischen Kalenderblatts für einen Tag mit HTML. Das sieht dann aus wie eine Website aus den 90er Jahren des letzten Jahrhunderts, denn die optischen Möglichkeiten von HTML sind begrenzt und selbst diese begrenzten Möglichkeiten wollen wir nicht nutzen. Wir lernen nebenbei Versionsverwaltungen und unsere Entwicklungsumgebung kennen.

Kalender eines Teilnehmers

Abb.: Kalender: Erster Wurf eines Teilnehmers

Danach ist es an der Zeit, sich mit den Möglichkeiten von CSS zum Webseiten-Styling zu befassen.

Kalender mit CSS

Abb.: Kalender: Erste Versuche mit CSS

Natürlich ist das anfangs noch alles recht einfach gehalten, aber nach und nach lernen die Teilnehmer, schrittweise die Seite ihren Vorstellungen anzunähern.

Kalender mit CSS

Abb.: Kalender: Erste Layout-Erfolge mit CSS

Bevor wir uns in den Möglichkeiten von CSS verlieren, starten wir mit unseren ersten Schritten in Javascript (Vanilla). Auf der Basis des Tagesdatums finden wir heraus, welchen Wochentag wir haben, welches Kalenderwoche, wie der aktuelle Monat heißt und vieles mehr. Dabei lernen wir Variablen und Kontrollstrukturen kennen, die Interaktion mit Datenobjekten und dem DOM-Objekt, also der dargestellten Webseite.

Dann widmen wir uns der Aufgabe, für ein uns im Vorhinein nicht bekanntes Datum aus dem Stand ein Kalenderblatt zu zeichnen. Welche Informationen müssen wir hierfür haben? Während wir dieses Problem lösen, befassen wir uns zwangsläufig mit Schleifen und dem Recherchieren in Dokumentationen.

Danach ist es vergleichsweise einfach, dem Benutzer zu ermöglichen, von Datum zu Datum oder Monat zu Monat zu springen. Wir werden dabei viele eigene Funktionen entwickeln und lernen erste Grundsätze von Clean Code und Refactoring.

Kalender mit Javascript und CSS

Abb.: Kalender: Funktionalität in Javascript

Projekt 2: Snackautomat

Wir unterbrechen unser Kalenderprojekt für unseren Einstieg in die objektorientierte Programmierung für unsere erste App mit Dart & Flutter. Unser Ziel ist ein simulierter Snackautomat, der sich merkt, wieviel Wechselgeld er noch hat, passend heraus gibt und Transaktionen ablehnt, wenn er nicht passend rausgeben kann.

Snackautomat auf Android-Handy

Abb.: Snackautomat auf Android-Handy

Dabei lernen wir etwas komplexere Datenstrukturen kennen und erkunden die Layoutmöglichkeiten, responsives Design (Handyformate und Hand im gedrehten Zustand) und natürlich auch generell die Vorgehensweisen beim Coden, Debuggen und Publishing. Auch das ist ein Einzelprojekt für jeden Teilnehmer.

Projekt 3: Ein Spiel

Das Thema ist diesmal nicht so genau vorgegeben. Meistens schnappen wir uns einen Spieleklassiker (wie Minesweeper, Tetris, Snake, etc.) und setzen diesen um. Nach und nach lernen wir dabei Techniken kennen wie die Nutzung von Bibliotheken / Packages, SOLID-Prinzipien, Clean Code und Test Driven Design und wir refactorn Deinen Code entsprechend.

Tetris-App von Teilnehmern

Abb.: Tetris-App von Teilnehmern

Ganz automatisch lernen wir hier noch komplexere Datenstrukturen kennen, feilen viel an der GUI und haben vor allem das erste Mal am Ende auch das Erlebnis, dass wir etwas programmiert haben, was nach einem weiteren Feintuning tatsächlich einem Produkt ähnelt, was man sich unter Umständen auch aufs Handy laden würden. Das war bei den Produkten zuvor natürlich anders.

Vor allem aber handelt es sich um das erste Projekt in einer Kleingruppe (ca. 3-4). Die Teilnehmer organisieren ihr Backlog, verteilen Aufgaben, arbeiten mit Pull Requests und Code Reviews.

Projekt 4: Datenbank im Kalender

Der nächste Schritt ist einer zurück. Wir schnappen uns wieder unseren Kalender. Entweder in der alten Fassung (HTML, CSS, JS) oder zuvor den alten Stand in Dart & Flutter schnell nachgebaut. Nun geht es um die Verknüpfung zu einer Datenbank, die uns a) zu jedem Datum die historischen Ereignisse anzeigen kann (angenommen wir hätten eine vollständige Datenbank) und b) unsere vorliegenden Termine. Außerdem sollen wir in der Lage sein, aus der App die bestehenden Termine zu verändern bzw. zu löschen und neue Termine anzulegen.

Tetris-App von Teilnehmern

Abb.: Datenbank-Management für Kalender-App

Wir lernen dabei SQL-Datenbanken kennen und die Interaktion mit APIs, um mit dem Datenbankserver zu kommunizieren.

Projekte zwischendrin

Genannt wurden hier nur die großen Projekte, die uns jeweils mehr als eine Woche beschäftigen. Unter der Woche gibt es natürlich noch Aufgaben für ein oder zwei Tage, die bestimmte Aspekte fokussieren. Beispiele hierfür sind Prüfziffernberechnungen, Sortieralgorithmen, etc.

Projekte danach

Die dargestellten Projekte decken gerade mal die ersten 6 Monate ab. Weitere Projekte folgen, aber nun sind sie nicht mehr so genau vorgegeben. Unser Ziel sind nun aber auch tatsächlich einsatzfertige Programme. Außerdem wird es natürlich weniger spielerisch, da wir ja Anwendungsentwickler werden wollen und nicht Gamedesigner.

Fazit

Grundsätzlich haben unsere Projekte das Ziel, immer für jeden persönlich fordernd zu sein. Mit anderen Worten: Niemand soll sich langweilen, sondern immer gezwungen sein, etwas Neues zu lernen. Entsprechende Vorkenntnisse oder Lerntempo vorausgesetzt, ist unser System so flexibel, dass wir Projekte im Einzelfall auch überspringen können, um stattdessen etwas Komplexeres zu tun.

Vorheriger Beitrag Nächster Beitrag

Hauptmenu
=========