-
Notifications
You must be signed in to change notification settings - Fork 0
Werte
In diesem Abschnitt wird auf einige Werte eigegangen, die für Zaubercode und die Entwicklung wichtig sind.
Hier geht es darum, dass zum einen der Code so einfach und verständlich wie möglich geschrieben wird. Die Lösung für ein Problem, sollte dieses so einfach wie möglich und ohne unnötige Komplexität lösen. Ein Akronym, das man sich hierbei merken kann ist KISS: Keep It Short (Stupid) Simple.
In diesem Projekt sehen wir uns als Team von gleichgestellten Individueen, in dem alle ihre Ideen in den Entwicklungsprozess mit einbringen können. Die Erfahrerenen in bestimmten Themen bringen dabei den Unerfahrenen diese Themen näher, hinterfragen sich dabei aber auch gleichzeitig demütig und gucken, ob die Unerfahrenen neue Gedankenprozesse anregen können. Es geht darum offen fürs Umdenken zu sein und Anregungen von anderen nicht abzuwerten, sondern in einen gewaltfreien Dialog zu gehen, um zu ermitteln, was das Beste für die gemeinsame Vision ist.
Um ein Beispiel zu geben: Viele erfahrene Programmierer*innen kennen das Acronym DRY (Don't Repeat Yourself) und für viele ist es wichtig dieses gewissenhaft anzuwenden. Die zu starke Anwendung dieses Prinzips kann jedoch in Overengineering und großer Software-Komplexität ausarten. Dies kann z.B. passieren wenn man versucht zwei sich stark ähnelnde Codeabschnitte so zu refactorn, dass die Gemeinsamkeiten ausgelagert werden. Die Reihenfolge von den gemeinsamen Codeabschnitten kann beispielsweise unterschiedlich sein und dann werden durch Parameter und Optionen eine unnötige Komplexität aufgebaut. Besser wäre es dann die zwei ähnlichen Codeabschnitte einfach separat zu lassen. Dieses Problem fasst Dan Abramov, Erfinder und Entwickler des React-Frameworks, in seinem Talk The Wet Bodebase auf humorvolle Art und Weise zusammen.
Da es sich um ein innovatives Projekt handelt und noch nicht alle Lösungen für die Vision bekannt sind, ist Agilität nach dem Manifest für Agile Softwareentwicklung von großer Bedeutung. Dies bedeutet nicht, nicht zu planen, sondern nur für einen kurzfristigen Zeitraum vorauszuplanen und zu schauen, was in kurzer Zeit umzusetzen ist. Team-Kommunikation und Team-Work ist hier von großer Bedeutung. Außerdem geht es darum, sich nicht zu schnell auf eine bestimmte Lösung festzulegen, sondern viele Experimente zu machen, um sich einer besseren Lösung immer weiter anzunähern. Bei vielen Änderungen, muss nicht jeder im Team den Überblick über alle Änderungen haben, sondern nur über diese, welche gerade für ihn relevant sind. Es geht auch darum offen und ehrlich zu kommunizieren und auch die Team-Organisation flexibel zu halten. Falls ein Team-Mitglied an einem bestimmten Problem festhängt, sollte dieses beiseite gelegt und sich auf etwas anderes konzentriert werden.
Um diese Flexibilität im Softwareentwicklungsprozess widerzuspiegeln, werden Techniken wie Continous Integration (CI) und Continous Delivery (CD) verwendet. Diese Ideen und Techniken vermittelt Dave Farley auf seinem Blog und YouTube-Kanal sehr gut.
Frameworks in der Softwareentwickler wie z.B. Web-Frameworks, Design-Framworks, Compiler-Frameworks und Entwicklungswerkzeuge bieten oft hervorragende funktionierende Lösungen für existierende Probleme. Bei der Entwicklung von Zaubercode wird die Herausforderung sein, zu ermitteln welche existierenden Frameworks angewandt werden können und welche nicht. Dabei sollte weise entschieden werden, ob ein Framework nötig ist, da die Verwendung von Frameworks die Software manchmal in ein starres Gerüst lenken kann, in dem eigene Anpassungen mit großer Komplexität hervorgehen. Deshalb wird bei der Entwicklung der Einsatz von kleinen Frameworks und Bibliotheken favorisiert. Außerdem wird eine Coding-From-Scratch-Mentalität als sehr wichtig empfunden, sodass ein tieferes Wissen der Techniken und Algorithmen aufgebaut werden kann und eigene Lösungen für auftauchende Probleme gefunden werden können.