Building Software From Scratch

By John SonmezFebruary 23, 2017

Viele Softwareentwickler machen die Dinge gerne kompliziert. Sie nehmen etwas, das einfach und leicht sein könnte, und machen es kompliziert, wie die meisten Leute im Internet sagen.

Software sollte einfach sein. So gesehen ist es leicht zu verstehen, warum es so vielen Entwicklern schwerfällt, Software von Grund auf zu entwickeln. In ihren Köpfen ist es eine total komplexe und schwierige Sache und sie stecken mitten im Prozess fest.

Die Frage ist also… Wie baut man Software von Grund auf neu auf?

Transkript aus dem Video

John Sonmez:

Hey, was ist los? John Sonmez von simpleprogrammer.com. Heute habe ich eine Frage zur Erstellung von Software von Grund auf. Das ist eine Frage, die ich schon oft von verschiedenen Leuten gestellt bekommen habe, weil das etwas ist, was für einen Anfänger schwierig ist, herauszufinden, wie man das überhaupt machen kann.

Diese Frage kommt von Akash und er sagt: „Hey John, deine Videos sind toll und ich schätze deine Ratschläge sehr. Ein Problem, mit dem ich konfrontiert bin, ist, dass ich, wenn es darum geht, eine große Software zu erstellen, nicht weiß, wie ich das Ganze von Grund auf entwerfen soll. Sprich, wie man das Ganze in Mini-Teilaufgaben aufteilt und dann jede Teilaufgabe implementiert und sie alle zusammenfügt, damit es funktioniert. Es wäre sehr nett, wenn Sie mir einen Rat geben könnten, wie ich dieses Problem lösen kann. Vielen Dank im Voraus.“

Was ich hier sagen würde, Akash, ist, dass man ein ganzes System nicht von oben nach unten betrachten sollte, sondern es in all diese Teile zerlegen sollte, all diese Teile zusammensetzen und sehen, wie sie zusammenpassen, und diesen riesigen Transformer oder Legos aus diesen riesigen Legos bauen sollte. Sie sollten sich die Softwareentwicklung eher wie eine Evolution vorstellen.

Was ich damit meine, ist, dass man mit etwas wirklich Einfachem beginnt. Beginnen Sie mit der einfachsten Sache, die funktionieren könnte, die nicht viele Funktionen hat, und entwickeln Sie sie dann dorthin, wo Sie hinwollen, anstatt das zu tun, was man großes Vorabdesign nennt. Das heißt aber nicht, dass man sich nie Gedanken über die Gesamtarchitektur machen sollte und dass man sich nicht schon im Vorfeld um das Design und bestimmte Dinge kümmern sollte. In vielen Fällen muss man gar nicht so viel davon machen, wie man glaubt, dass man es braucht.

Wenn man nun eine Software entwirft, die in ein elektronisches Gerät eingebettet werden soll, und ein Hardware-Ingenieur muss die Schaltkreise oder einen speziellen Chip oder etwas anderes entwickeln, damit das funktioniert, dann muss man wahrscheinlich viel davon im Voraus entwerfen, und das muss man wahrscheinlich auch tun. Vielleicht sind Sie da sogar eingeschränkt. Bei der meisten Software, die wir heute entwickeln, insbesondere bei Webanwendungen und ähnlichen Dingen oder bei mobilen Anwendungen, können wir etwas sehr, sehr Grundlegendes entwickeln und es dann weiterentwickeln, Änderungen vornehmen, um es zu vergrößern und die Komplexität nach Bedarf zu erhöhen.

Ein Grund, warum dies so wichtig ist, ist, dass der Fluch der Softwareentwicklung, eines der schlimmsten Dinge in der Softwareentwicklung, die Komplexität ist. Dieser Kanal heißt Simple Programmer und mein Geschäft ist es, das Komplexe einfach zu machen, denn das ist es, was wir tun müssen. Als Softwareentwickler besteht eine Ihrer Hauptaufgaben darin, die Komplexität zu bekämpfen, denn wenn Komplexität in ein System eindringt, ist es schwer zu warten und schwer zu verstehen. Das macht es wahrscheinlicher, dass es Bugs hat und versagt. Wir wollen die Komplexität so weit wie möglich reduzieren. Wir wollen vereinfachen. Wir müssen so einfach wie möglich anfangen, was ist das Einfachste, was funktionieren könnte?

In der Welt der Unternehmer nennt man das oft ein MVP oder minimal viable product. Was kann man tun, wenn man versucht, ein großes Softwaresystem zu bauen, oder was man tun kann, ist, dass man wirklich klein anfängt. Beginnen Sie mit einer sehr, sehr kleinen Sache. Ich versuche, mich an das Buch zu erinnern, aber ich habe dieses wirklich gute Buch über etwas gelesen, ich glaube, es war testgetriebene Entwicklung Schritt für Schritt oder so ähnlich. In dem Buch entwarf er eine Notepad-Anwendung oder so etwas. Er begann mit einer sehr, sehr inkrementellen – er tat dies auf eine sehr inkrementelle Weise und er begann mit, ich glaube, seine Anwendung brauchte eine Datenbank, aber er begann ohne eine Datenbank. Stattdessen speicherte er die Daten einfach in Textdateien, die er aus den Textdateien las. Dann kam er an den Punkt, an dem er die Daten tatsächlich in eine Datenbank eingeben musste, und dann modifizierte er das Programm und ließ es dieselben Daten lesen, nur dass er eine Abstraktion schuf, um aus der Datenbank zu lesen.

Das ist die natürliche Entwicklung der Dinge, und so kann man diese komplexe Software entwickeln. Ich garantiere Ihnen, dass der größte Teil der komplexen Software, die heute entwickelt wird, auf diese Weise entstanden ist. Vieles davon wird nicht von vornherein entworfen, und dann baut man all diese Teile und hofft und betet, dass sie funktionieren. Andernfalls wird das Budget und der Zeitplan bei weitem überschritten. Das passiert leider immer wieder. Wenn Sie erfolgreich sein wollen, wenn Sie das schaffen wollen, fangen Sie einfach mit etwas Kleinem an. In dieser Welt gibt es nichts, was schwierig ist. Es gibt nichts, was kompliziert ist. Es ist nur so, dass es aus einem Haufen einfacher Dinge besteht, die es komplex erscheinen lassen.

Du kannst die komplexeste Architektur bauen. Man kann eine riesige Sache bauen, aber man muss mit dem Einfachen beginnen. Es besteht alles aus dem Einfachen. Anstatt zu versuchen, all diese Teile zu nehmen, sollte man einfach anfangen. Entwickeln Sie die Sache. Anfangen. Bauen Sie etwas auf. Was ist das kleinste, einfachste Ding, das Sie auf den Markt bringen können und das auch nur annähernd die gewünschte Funktionalität bietet? Dann fügen Sie Funktionen hinzu. Während Sie die Funktionen hinzufügen, fügen Sie die Architektur hinzu, um sie zu unterstützen, und Sie schaffen Abstraktionen.

Ein Buch, das ich Ihnen empfehlen möchte und das Ihnen wahrscheinlich dabei helfen würde, heißt Clean Code. Es ist eines meiner Lieblingsbücher von Robert Martin. Ich empfehle dieses Buch auf jeden Fall, aber Sie wollen Ihre Architektur weiterentwickeln. Die andere Sache, die ich dazu sagen würde, ist, dass Sie bei der Entwicklung von Dingen Abstraktionen schaffen werden, um sie einfach zu halten, so dass Sie nie diese riesige, riesige Komplexität haben werden. Manchmal muss man vielleicht sogar die ganze Sache neu schreiben oder Teile davon, aber das ist in Ordnung. So funktioniert die Evolution von Software. Das ist besser, als die Komplexität zu erhöhen.

Häufig wollen Softwareentwickler vorschnell optimieren. Sie wollen die Dinge extrem flexibel machen. Sie optimieren die Software voreilig, weil sie versuchen, dieses sehr, sehr robuste System zu bauen. Das scheitert oft daran, dass wir nicht wissen, was wir nicht wissen. Wir wissen nicht, was wir brauchen werden, also ist es besser, nicht zu versuchen, es vorherzusehen, sondern einfach zu sagen: „Okay. Jetzt muss ich diese neue Funktion hinzufügen oder sie auf diese Weise funktionieren lassen. Wie kann ich das weiterentwickeln?“

Denken Sie daran, dass Softwareentwicklung nicht wie eine Brücke ist. Es ist nicht so, als hätte man den Beton gelegt und würde nun die Architektur des Hauses ändern. Software ist verformbar. Sie ist wie Ton. Man kann sie umgestalten. Es ist nicht mit hohen Kosten verbunden, sie zu modifizieren und zu verändern. Man muss die Vorteile dieses Mediums so weit wie möglich nutzen, was sich für einen evolutionären Prozess bei der Entwicklung von Software anbietet, im Gegensatz zu einem großen Vorabentwurf.

Ich hoffe, das hilft Ihnen, Akash. Gute Frage. Ich glaube, viele Leute haben in der Vergangenheit danach gefragt. Wenn Sie eine Frage an mich haben, können Sie eine E-Mail an [email protected] schicken. Wenn Ihnen dieses Video gefällt, klicken Sie auf den großen Abonnieren-Button unten, falls Sie es noch nicht abonniert haben. Wenn Sie das getan haben, bin ich Ihnen sehr dankbar. Bleiben Sie dran bis zum nächsten Mal. Mach’s gut.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.