9 Programmierprojekte, die dich zu einem besseren Entwickler machen

TThe Coding Koala
Computing/SoftwareAdult EducationInternet Technology

Transcript

00:00:00Wisst ihr, was noch frustrierender ist, als ein Projekt zu bauen? Nicht zu wissen, was man bauen soll.
00:00:04An einem gewissen Punkt deiner Reise als Entwickler erreichst du diese seltsame Phase.
00:00:08Noch eine CRUD-App mit einem JavaScript-Framework zu bauen, fühlt sich langweilig an,
00:00:11aber ein Betriebssystem von Grund auf zu entwickeln, scheint unmöglich. Du steckst in der Mitte fest.
00:00:16Du willst es nicht zu einfach, aber auch nicht unmöglich. Du willst einfach etwas Sinnvolles.
00:00:21Etwas, das dich genug herausfordert, um dich weiterzubringen, aber nicht so überwältigend ist, dass du aufgibst.
00:00:26Glaub mir, ich kenne das. In diesem Video zeige ich dir deshalb einige wirklich großartige Projektideen.
00:00:32Ich habe diese in drei Stufen unterteilt. Stufe eins: Grundlagen schaffen. Stufe zwei: Speicherung,
00:00:38Datenbanken und Datensysteme. Und Stufe drei: Fortgeschrittene Systeme und Interna.
00:00:44Wenn du diese Projekte baust, wirst du nicht nur besser im Coden. Du fängst an, wie ein Ingenieur zu denken.
00:00:49Fangen wir mit Stufe eins an. Das erste Projekt ist der Bau eines eigenen HTTP-Servers von Grund auf.
00:00:55Wenn du das hier siehst, weißt du wahrscheinlich, was ein HTTP-Server ist. Jedes Mal, wenn du
00:01:01eine Website öffnest oder eine API aufrufst, findet im Hintergrund ein Request-Response-Zyklus statt.
00:01:06Aber bisher hast du damit nur über Frameworks wie Express interagiert. Der Bau eines eigenen Mini-HTTP-Servers
00:01:12zwingt dich zu verstehen, was darunter wirklich passiert. Du lernst, wie TCP-Sockets Daten senden
00:01:19und empfangen, wie HTTP-Requests geparst werden, wie Antworten formatiert sind und wie mehrere
00:01:25Anfragen gleichzeitig verarbeitet werden. Falls du dich jetzt schon davon überwältigt fühlst,
00:01:30wie du diese Projekte angehen sollst, habe ich am Ende des Videos eine kleine Lösung für dich. Verpass das nicht.
00:01:35Kommen wir zum zweiten Projekt: Baue deine eigene Shell. Du hast Befehle wie cd, ls oder pwd
00:01:40schon hunderte Male benutzt. Aber hast du jemals darüber nachgedacht, was diese Befehle eigentlich verarbeitet?
00:01:46Wenn du deine eigene Shell baust, erschaffst du dieses System selbst. Du lernst Dinge wie das
00:01:52Einlesen und Parsen von Benutzereingaben, das Ausführen von Prozessen und Systemaufrufen sowie
00:01:58Konzepte auf Betriebssystemebene. Indem du deine eigene Shell von Grund auf baust,
00:02:04verstehst du Computer auf einer tiefen Ebene. Jetzt wird es richtig interessant. Schauen wir uns Stufe zwei an.
00:02:09Das erste Projekt hier ist der Bau deines eigenen Redis. Redis ist ein In-Memory-Datenspeicher,
00:02:15der als Cache, Datenbank, Message Broker und mehr dient. Er ist unglaublich schnell. Aber erst,
00:02:21wenn du selbst einen baust, verstehst du wirklich, warum. Bei der Implementierung deines eigenen Redis-Klons
00:02:26lernst du, wie In-Memory-Datenstrukturen funktionieren. Du implementierst grundlegende Redis-Befehle,
00:02:32verstehst das Redis-Protokoll und verwaltest mehrere Client-Verbindungen effizient über Event-Loops.
00:02:38Das sind nur einige Highlights. Es gibt noch viel mehr zu lernen, sobald du damit anfängst.
00:02:43Du wirst merken, dass Software-Engineering mehr ist, als nur CRUD-Anwendungen zu schreiben.
00:02:48Das nächste Projekt ist der Bau deines eigenen Git. Du benutzt Git jeden Tag, aber weißt du,
00:02:54wie es wirklich funktioniert? Wenn du selbst ein vereinfachtes Versionskontrollsystem baust, macht es klick.
00:03:00Du verstehst, wie Commits intern gespeichert werden, implementierst Hashing und inhaltsadressierbaren Speicher
00:03:05und organisierst Datei-Snapshots in Commit-Trees. Und es gibt noch so viel mehr zu lernen.
00:03:11Das Tolle daran, alles selbst zu bauen, ist, dass du es genau so anpassen kannst, wie du es willst.
00:03:16Schließlich ist unser drittes Projekt der Bau einer eigenen SQLite-Datenbank. SQLite ist eine
00:03:22serverlose Datenbank-Engine, die alles in einer einzigen Datei speichert. Anders als MySQL oder Postgres
00:03:29gibt es keinen separaten Serverprozess. Sie ist leichtgewichtig, aber extrem leistungsstark. Wenn du deine
00:03:34eigene Version baust, verstehst du, wie Daten mittels B-Bäumen organisiert werden. Du wirst einfache
00:03:39Abfragen parsen und ausführen und Indizierung für schnelleren Abruf implementieren. Als Entwickler
00:03:45kommt man an Datenbanken nicht vorbei. Aber wer versteht, wie sie intern arbeiten, gehört zur Elite.
00:03:52In Stufe drei gehen wir noch tiefer. Das erste Projekt hier ist der Bau deiner eigenen Mini-Programmiersprache.
00:03:58Ja, deine eigene Sprache. Du erschaffst etwas, das Code liest, versteht und Anweisungen ausführt.
00:04:04Auch wenn das einschüchternd klingt, ist es eines der lohnendsten Projekte, die man bauen kann.
00:04:10Du lernst und implementierst Dinge wie Lexer, Parser und abstrakte Syntaxbäume. Vor allem aber
00:04:17verstehst du, wie Interpreter und Compiler wirklich funktionieren. Das ist ein großartiges Projekt, weil du
00:04:22endlich begreifst, wie wir mit Computern kommunizieren. Und du kannst damit angeben, eine eigene Sprache
00:04:27erschaffen zu haben, die du nennen kannst, wie du willst. Das zweite Projekt ist ein eigener BitTorrent-Client.
00:04:32Hier kommen verteilte Systeme ins Spiel. BitTorrent ist ein Peer-to-Peer-System zum Filesharing,
00:04:38bei dem Nutzer Dateistücke von vielen Peers statt von einem einzelnen Server herunterladen.
00:04:44Dabei implementierst du Peer-Discovery, verwaltest Verbindungen zwischen Knoten, unterteilst Dateien,
00:04:50stellst die Dateiintegrität sicher und händelst verteilte Kommunikation. Das ist kein einfaches Projekt.
00:04:57Sicher hast du kaum die Hälfte von dem verstanden, was ich gerade gesagt habe. Aber es lehrt dich,
00:05:02wie riesige verteilte Systeme funktionieren. Und schließlich: Baue deinen eigenen Coding-Assistenten,
00:05:08ähnlich wie Claude Code. Moderne KI-Tools fühlen sich toll an, aber unter der Haube sind es
00:05:14Systeme, die Large Language Models mit klassischer Softwarearchitektur verbinden. Wenn du selbst einen baust,
00:05:20integrierst du eine LLM-API in eine Anwendung. Du parst und indizierst Projektdateien,
00:05:27um Kontext zu liefern, verwaltest Prompts und kontrollierst Antworten. Du entwirfst ein System,
00:05:32das KI mit echten Engineering-Prinzipien vereint. Danach wirst du verstehen, wie diese
00:05:38beliebten KI-Tools unter der Haube wirklich funktionieren. Und nicht nur das: Da KI gerade
00:05:44so gehypt wird, ist dies ein Projekt, mit dem du wirklich aus der Masse herausstechen kannst. Aber seien wir ehrlich.
00:05:50Einige dieser Projekte sind hart. Ein eigenes Redis, Git oder einen BitTorrent-Client baut man nicht
00:05:55mal eben an einem Wochenende. Du wirst feststecken. Du wirst an dir zweifeln. Manchmal wirst du
00:06:01nicht einmal wissen, ob du es richtig machst. Und genau an diesem Punkt geben die meisten Leute auf.
00:06:05Um das zu verhindern, gibt es eine Plattform namens CodeCrafters. Das ist eine projektbasierte
00:06:11Lernplattform, auf der du Tools wie Redis, SQLite oder DNS-Server Schritt für Schritt nachbaust.
00:06:19Sie geben dir nicht die Lösung vor, sondern Tests und strukturierte Meilensteine. Und du
00:06:23implementierst alles selbst. Ich habe es selbst für diese Projekte genutzt. Ganz ehrlich,
00:06:29diese strukturierte Anleitung war der Unterschied zwischen Aufgeben und Fertigstellen. Wenn dir diese
00:06:34Ideen gefallen, du aber Anleitung suchst, findest du einen Link in der Beschreibung. Aber egal, ob du eine
00:06:39Plattform nutzt oder es allein versuchst: Wichtig ist, dass du wirklich selbst baust. Wenn du das Internet
00:06:45nach dem nächsten Projekt durchforstet hast, hoffe ich, dass dir das hier Klarheit verschafft hat.
00:06:51Es mag erst beängstigend sein, aber das Wasser wird nicht wärmer, wenn man nicht reinspringt. Wenn dir
00:06:57dieses Video gefallen hat, lass ein Like und Abo da und sag mir, mit welchem Projekt du startest.
00:07:02Wir sehen uns im nächsten Video.

Key Takeaway

Der Weg zum erfahrenen Software-Ingenieur führt über den Nachbau fundamentaler Werkzeuge und Systeme, um deren interne Mechaniken tiefgreifend zu verstehen und anzuwenden.

Highlights

Überwindung der Lücke zwischen einfachen CRUD-Apps und komplexen Systemen wie Betriebssystemen.

Strukturierung der Lernkurve in drei Stufen: Grundlagen, Datensysteme und fortgeschrittene Interna.

Tiefes Verständnis von Netzwerkprotokollen durch den Eigenbau eines HTTP-Servers und Redis-Klons.

Einsicht in die interne Funktionsweise von Versionskontrolle (Git) und Datenbankstrukturen (SQLite).

Herausforderung durch komplexe Konzepte wie Interpreter-Bau, Peer-to-Peer-Netzwerke und KI-Integration.

Empfehlung von strukturierten Plattformen wie CodeCrafters zur Bewältigung schwieriger Meilensteine.

Fokus auf das Denken wie ein Ingenieur statt nur das Schreiben von funktionalem Code.

Timeline

Die Frustration des Stillstands

Der Sprecher beschreibt eine typische Phase in der Entwicklung eines Programmierers, in der einfache Projekte nicht mehr fordern, aber große Systeme unerreichbar scheinen. Es geht darum, die Lücke zwischen trivialen Anwendungen und unmöglicher Komplexität zu schließen. Um dieses Plateau zu überwinden, werden neun Projekte vorgestellt, die in drei Schwierigkeitsstufen unterteilt sind. Das Ziel ist es, nicht nur die Syntax zu beherrschen, sondern eine ingenieurwissenschaftliche Denkweise zu entwickeln. Dieser Abschnitt legt den Grundstein für eine Reise weg von Frameworks hin zu den Grundlagen der Informatik.

Stufe 1: Die Grundlagen meistern

In der ersten Stufe geht es um den Bau eines eigenen HTTP-Servers und einer Shell. Beim HTTP-Server lernt man die Details von TCP-Sockets, das Parsen von Requests und die Handhabung paralleler Verbindungen ohne Frameworks wie Express. Der Bau einer eigenen Shell vermittelt tiefes Wissen über Systemaufrufe, Prozessverwaltung und Befehle wie 'cd' oder 'ls'. Diese Projekte zwingen den Entwickler dazu, direkt mit dem Betriebssystem und Netzwerkprotokollen zu interagieren. Sie bilden das Fundament für das Verständnis, wie Computer Befehle interpretieren und Daten austauschen.

Stufe 2: Speicherung und Datensysteme

Diese Phase konzentriert sich auf Werkzeuge, die Entwickler täglich nutzen, aber selten hinterfragen: Redis, Git und SQLite. Durch den Nachbau eines Redis-Klons versteht man In-Memory-Datenstrukturen und Event-Loops für hohe Geschwindigkeit. Ein eigenes Git-System zu entwickeln, verdeutlicht Konzepte wie Hashing, Inhaltsadressierung und die Struktur von Commit-Trees. Bei SQLite liegt der Fokus auf der Organisation von Daten mittels B-Bäumen und dem Parsen von SQL-Abfragen in einer serverlosen Architektur. Wer diese Systeme selbst baut, gehört laut Sprecher zur Elite der Entwickler, die Datenbank-Interna wirklich durchdringen.

Stufe 3: Fortgeschrittene Systeme und KI

Die finale Stufe befasst sich mit hochkomplexen Themen wie dem Bau einer eigenen Programmiersprache, eines BitTorrent-Clients und eines KI-Coding-Assistenten. Die Entwicklung einer Sprache lehrt den Umgang mit Lexern, Parsern und abstrakten Syntaxbäumen, was die Kommunikation mit Computern entmystifiziert. Ein BitTorrent-Client führt in die Welt der verteilten Peer-to-Peer-Systeme ein, inklusive Dateistückelung und Integritätsprüfung. Schließlich zeigt der Bau eines KI-Tools, wie Large Language Models effektiv in bestehende Softwarearchitekturen integriert werden. Diese Projekte sind besonders wertvoll, um in der modernen Tech-Landschaft durch Fachwissen in Nischenthemen hervorzustechen.

Struktur und Durchhaltevermögen

Der Sprecher räumt ein, dass diese Projekte extrem fordernd sind und viele Entwickler vorzeitig aufgeben könnten. Er empfiehlt die Plattform CodeCrafters als hilfreiches Werkzeug, das strukturierte Tests und Meilensteine bietet, ohne die Lösung direkt vorzugeben. Es wird betont, dass das eigenständige Bauen und das Überwinden von Hindernissen der einzige Weg zum echten Fortschritt sind. Das Video schließt mit einem Motivationsaufruf, den Sprung ins kalte Wasser zu wagen und mit dem ersten Projekt zu beginnen. Nur durch praktische Anwendung und das Lösen harter Probleme festigt sich das Wissen langfristig.

Community Posts

View all posts