Kurskonzept Fullstack Entwickler
Vorbemerkung
Entwicklerinnen und Entwickler, die Sofware für Webanwendungen schreiben können, sind gefragte Fachkräfte. Das gilt auch für Server Administratoren, Datenbankdesigner und Oberflächengestalter. Wer *alle* diese Fähigkeiten vereint, ist selbstverständlich noch mehr gefragt als diese Spezialisten.
Allerdings bedeutet Spezialisierung auch, dass jemand ein bestimmtes Thema ganz besonders tiefschürfend beherrscht und wer alles können will, wird nicht den gleichen Grad von Kompetenz entwickeln können, wie ein Spezialist auf seinem oder ihrem Gebiet. Und so haben die Fullstack Generalisten einerseits den Ruf, sich in Wirklichkeit auch nur in wenigen Aspekten des ganzen Softwarestapels(Stack) wirklich auszukennen, andererseits gelten sie als "Weiße Wale": mythische Alleskönner, die jedes Problem lösen können, die aber leider nur in der Fantasie von Personalchefs existieren.
Der Kurs hat das Ziel, IT Fachkräfte mit dem vielfältigen Wissen auszustatten, das für einen Arbeitsplatz als Fullstack Generalist erforderlich ist. Der Kurs bietet eine Übersicht über die verschiedenen Kompetenzen, die Unternehmen von Fullstack Entwicklern erwarten. Dabei zeigt er eine Strategie auf, mit der die Teilnehmenden vermeiden, sich in der Vielfalt der in der Webentwicklung aktuellen Technologien zu verzetteln. Das Ziel der Entwicklung der Kompetenz Fullstack ist weder ein Fabelwesen, das *alles* weiss und kann, noch ein Programmierer oder Administrator, der sich nur Fullstack nennt, ohne wirklich alle notwendigen Aspekte einer modernen Webanwendung verstanden zu haben.
Erreicht wird dieses Ziel durch eine Konzentration auf praktische Fragen der am weitesten verbreiteten Plattform für Webanwendungen: dem LAMP System aus dem Betriebsystem Linux, dem Webserver Apache, der SQL Datenbank MariaDB/MySQL und der Programmiersprache PHP. Darüber hinaus geht es auch um den produktiven Umgang mit den Frontend Techniken HTML5, CSS3 und Java Script.
Aus langjähriger Erfahrung als alleinverantwortlicher Programmierer und Administrator von Webanwendungen und als Dozent für Linux und Programmierung weiss ich, dass all diese Techniken sich erst im Vergleich mit verfügbaren Alternativen wirklich erschließen. So lernen die Teilnehmenden im Kurs parallel zu LAMP auch andere, ähnliche Techniken kennen. Unter anderem Webserver auf Basis von Java(Tomcat), Python(Pyramid) und Java Script(node.js). Neben den dazu benötigten Programmiersprachen werden auch alternative Datenbankkonzepte wie NoSQL, KeyValue Stores und XML-Basierte Datenbanken betrachtet und erklärt.
Der Kurs besteht aus 3 Modulen, die bei entsprechenden Vorkenntnissen auch einzeln absolviert werden können. Für alle 3 Module werden wenigstens 120 Unterrichtseinheiten benötigt, wobei der Linuxbasierte LAMP Stack wenigstens 60 UE Zeit(idealerweise innerhalb zwei Wochen) braucht.
1.:LAMP
- Linux Installation und grundsätzlicher Aufbau: Dateisystem und Paketverwaltung. Als Beipiel dienen Debian Linux und Arch Linux. Die Installation von Arch wird zur Vertiefung der Kenntnisse nach dem ausführlichen Kennenlernen von Debian durchgeführt.
- Umgang mit der Shell Bash, Arbeit im Terminal, wichtige Nutzerbefehle, der Texteditor VIM. Nutzerverwaltung und Dateizugriffsrechte. Zugriff via Netzwerk mit SSH.
- Installation und Konfiguration von Software am Beispiel von Apache, MariaDB und PHP, Konfiguration des Netzwerks mit Schwerpunkt auf DNS.
- Systemdienste und Systemstart steuern mit systemd und SysVinit. Sicherheitsfragen.
- Praxis: Installation und Konfiguration der Webanwendungen WordPress und Nextcloud, Aufbau einer Backuplösung als Shellscript. Einrichten eines eigenen Systemdienstes mit xinetd.
2.:Eigene Anwendungen auf Datenbankbasis
- Eine vollständig konfigurierte Linuxumgebung wird vorausgesetzt, benutzt wird MariaDB als Datenbank und PHP als Programmiersprache.
- Datenbankzugriff im Terminal und im Webbrowser(mit PHPmyAdmin). Grundlagen SQL. Datenbankdesign: Relationen und Normalisierung.
- Grundlagen PHP: Kontrollstrukturen, Variablen und Funktionen, Einbetten von HTML und Ausgabe von HTML in PHP Programmen.
- Objektorientiertes PHP und Datenbankzugriffe via PDO, eigene Funktionen, Klassen und Objekte
- Zusammenarbeit mit Java Script unter Einsatz der JS Bibliothek jquery, Einbinden von jquery in die Webseite, Einbinden von CSS3 Stylesheets
- Praxis: alles miteinander verbinden: eine simple Buchhaltungssoftware für die Verwaltung von Mietshäusern.
- Praxis: Anzeige von Datenbankabfragen in HTML Tabellen und Listen, einfache Bedienelemente mit HTML Formularen und dynamischen Elementen auf Basis von jquery
- Praxis: Extra: eine Landkartenerweiterung für die Hausverwaltung auf Basis von Open Street Map und der Java Script Bibliothek leaflet.
2.1.:Nextcloud installieren und administrieren
Das LAMP basierte Nextcloud System bietet eine leicht bedienbare, zuverlässige und sichere Cloudspeicher Lösung.
Dateien lassen sich online speichern und mit Verzeichnissen auf Nutzerrechnern synchronisieren. Im Webbrowser, in Desktopanwendungen und in Apps für Mobilgeräte können Dateien verwaltet, eingesehen, mit anderen geteilt und auch bearbeitet werden. Die Apps erledigen dabei auch das automatische Synchronisieren im Hintergrund.
Nextcloud wird von vielen internationalen Privatnutzern, Firmen und Institutionen verwendet, seit 2018 auch von der deutschen Bundesregierung.
- Installation und Einrichtung, Sicherheit mit HTTPS und Backups
- Installation und Einrichtung von Plugins.
- Administration: Nutzeraccounts, Privilegieneinstellungen, Nutzergruppen, Filesharing
- Plugin API und Programmieren eigener Erweiterungen
3:Alternative Systeme
- Installation und Einsatz von Java unter Linux, der Anwendungsserver Tomcat und die Entwicklungsumgebung Eclipse.
- Webanwendungen: Framework APIs WordPress und Nextcloud, CSS- und JS Bibliotheken(bootstrap, jquery etc)
- Webanwendungen im Normalnutzerkontext: Geoserver(Java) und Pyramid(Python)
- Konzepte von NoSQL Datenbanken: MongoDB und CouchDB
- Java Script basierte Webanwendungen mit nodejs/GoogleV8, Einblick in die Google Maps API
- nginx als reverse proxy
Das Kurskonzept soll vor allem ein Curriculum vorschlagen, viele sinnvolle Modifikationen sind denkbar, einzelne Module lassen sich zu ausführlicheren Seminaren ausbauen. Für Nachfragen per Email stehe ich gern zur Verfügung: zettberlinlinuxuse.de