Wichtigsten Software-Entwickler Base Skills und immergültige Grundlagen
Es gibt Grundlagenwissen, das trotz aller Änderungen der Technologien und Programmiersprachen dauerhaft nachgenutzt werden kann. Hier findest du eine Zusammenstellung dieser Themen, die mir als Softwareentwickler in den letzten 25 Jahren immer wieder aus schwierigen Situationen geholfen haben.
Die Skills sind nach drei Levels sortiert. Die Levels sagen etwas über die Schwierigkeit und Komplexität der Themen aus. Sie sollen aber auch dabei helfen zu verstehen, dass bestimmte Themen aus den höheren Leveln die Grundlagen aus vorangegangenen Leveln benötigen.
Level 0: IT Grundlagen
- PC Aufbau repräsentiert am besten jede Hardware, auf der Software betrieben wird
Mainboard, CPU, Ram, Cache, GPU mit GPU Ram, Storage, Verbindungen untereinander, Schnittstellen aussen/innen (SATA, USB, PCIe) - Persistente Speicher Typen mit ihren Auswirken auf Geschwindigkeit, Zuverlässigkeit, Skalierbarkeit
SSD, NAND, NVME, mechanische Laufwerke, SD, Flash, CD/DVD/Bluray, Tape - Betriebssysteme einsetzten können und Unterschiede verstehen
Windows, MacOS, Linux, Chrome mit Unterschieden, Applikationsinstallation, Rechten, Vorteile + Nachteile, 2-3 bedienen können - Datei und Ordner Struktur und Hierarchie Ordner Struktur Windows / Linux / Mac navigieren, sortieren, verschieben, Hierarchie durchsteigen
- Office Programme und Texteditor bedienen
Word, Excel, Powerpoint, Visuelle Texteditoren wie Notepad++ / Sublime / Textedit
Level 1: Softwareentwicklungsgrundlagen
- IDE aufsetzen und konfigurieren mit Plugins / Extensions und Runtimes
- Browser Funktionalität begreifen
Rendering, Messages, Verschlüsselung, Komprimierung - Command Line Grundlagen Linux und Windows Zugriff auf Terminal, 5-10 wichtigsten Commands
- SSH zum Verbinden auf Server, Container, Datenquellen
- git Versionskontrolle verstehen und nutzen
Initialisieren, Anbinden an externes Repo, 5 wichtigsten Commands - Markdown zum Schreiben für Doku und Readme Dateien
wichtigesten Formattierungen für Überschriften, fett, kursiv, Links, Listen - S3 Object Storage nutzen
GUIs könenn, Command Line Commands, Unterschied zu Block Storage verstehen - Rest API lesen und mit konsumieren
Funktionsweise, Aufgaben, CRUD in Rest, Rest-API GUI Client - Binär, Hexadezimal und Dezimal Zusammenhänge und Struktur begreifen
- Netzwerkgrundlagen “Wie funktioniert das Internet”
IP Adresse, Domains, Routing, Firewall, Ports
erklären können warum eine HTML Seite überhaupt an einem lokalen Device angezeigt wird - Wie funktionieren Programmiersprachen
wieso erzeugt eine Datei überhaupt eine Ausgabe auf dem Monitor oder Smartphone
Herunterbrechen bis auf die Hardware
Level 2: Erweiterte Softwareentwicklungsgrundlagen
- Command Line Tiefenwissen
20-30 Standard Commands, Piping, Output umlenken - Command Line Text Editor wie vim oder nano zum schnellen Editieren in VMs, Containern oder Servern
- Crontab Lesen, verstehen, Cron Job einrichten
- Datei-Kompression anwenden und verstehen
wichtigste Typen kennen: tar, gz, zip mit und ohne Komprimierung, bz2
Unterschiede bei Ressourcen, Geschwindigkeit und Grösse der komprimierten Archive - Bildkompression verstehen
Gängige Komprimierung verstehen und kontrastieren können (tiff, gif, jpg, png, webp, avif) - Erweitertes Netzwerkwissen
Netzwerk-Protokolle, Standard Ports der gängigsten Applikationen, DNS Zonen, CDNs - Webserver Grundlagen Apache und/oder nginx Aufgaben verstehen, neu starten können, SSL Zertifikate
- Datenbanken und deren Unterschiede
Relationale Datenbanken kennen und betreiben: sqlite, maria/mysql, postgresql
Non-Relationals Datenbanken kennen und betreiben: Redis, Mongo, CouchDB
Unterschiede in Verwendung verstehen - Docker und Container
Vorteile, Nachteile gegenüber VM und FaaS
Command Line Wissen: Erstellen, einsehen, images löschen, Versionierung - Continuous Integration, Continous Delivery im Idealfall git
- Backup Strategien kennen und anwenden
für lokalen Daten, für produktive Applikationen einschliesslich Datenbanken