Latest / Coding Buddies | Tech & Dev-Mindset / Das DRY Prinzip - Effizienz oder Stolperfalle?
Transcript
- 0:00Was für unglaubliche Tricks ich drauf habe und der Rest deines
- 0:04Teams denkt sich so. Ja OK, dann kannst du dich in
- 0:06Zukunft selber um diese Klasse kümmern, Kollegen genau dann.
- 0:09Coder alleine weiter das da steigt ja niemand mehr durch.
- 0:12Coding Boys Dein Podcast wohnt im Softwareentwicklung und
- 0:15aktueller Tech News. Herzlich Willkommen.
- 0:30Halli Hallo ihr lieben, herzlich Willkommen zur neuen Folge des
- 0:34Coding Buddies Podcasts. Es geht wieder los, ne neue
- 0:38Folge startet und damit werde ich natürlich wieder den
- 0:42wunderbaren Tino begrüßen. Tino, wie geht's dir?
- 0:46Moin Moin Fabi, schöne Einleitung, gefällt mir ja, mir
- 0:50geht's gut. Ich hoffe dir auch.
- 0:51Ich glaube, wenn man das mit der Stimmlage sagt, dann kannst du
- 0:54alles sagen, ja. So, so, Showmaster Game Master
- 0:58mäßig. Ja genau da hängt man dir direkt
- 1:01an den Lippen, das ist das kommt gut, das find ich.
- 1:03Gut, muss man mal so zu weißt du so, wenn Leute eigene Kinder
- 1:06haben, muss man sagen und jetzt ihr lieben Kinder gehen wir ne
- 1:09Runde spazieren und das wird der absolute Knaller.
- 1:11Und danach und danach? Räumt ihr euer Zimmer auf?
- 1:14Yeah. Ja, das wäre das.
- 1:19Könnte sein, könnte funktionieren.
- 1:21Es reißt halt einfach mit. Ja, das ist einfach motiviert.
- 1:25So, ich räum mein Zimmer auf jetzt.
- 1:27Jetzt ist OK. Kurz Pause.
- 1:30OK, Ach nee, Tilo, erzähl doch mal was haben wir denn heute auf
- 1:33dem Programm, worum geht es denn heute, was ist der Titel?
- 1:36Nee, nicht der Titel, das Thema des der heutigen Folge.
- 1:40Ja, es geht also nicht um Zimmer aufräumen an sich, aber
- 1:43aufräumen ist kein schlechtes Stichwort.
- 1:46Und zwar wollen wir uns heute mal so ein Prinzip in der
- 1:49Softwareentwicklung vornehmen. Und zwar das Dry Prinzip, was im
- 1:53Endeffekt für Don't repeat yourself steht.
- 1:57Wofür steht das Don't repeat yourself, OK?
- 2:00Tippte Witz, was dich einfach. Du bist ja hart rangekriegt.
- 2:06So, jetzt hab ich kein Bock mehr.
- 2:07Macht euch voll geil. Sei ehrlich, du hast jetzt die
- 2:12ganze Zeit auf diesen Moment gewartet.
- 2:14Oder das war bei dem Alten. Ach so war OKOKOK ja gut, war
- 2:18nicht schlecht. Und die Leute fallen darauf.
- 2:20Rein Liebe zuhören lieber zu. Ich hoffe, du konntest jetzt
- 2:22auch darüber lachen, dass ich darauf reingefallen bin.
- 2:25Es tut mir leid. Na, alles gut, und zwar
- 2:29aufräumen. Das Stichwort jetzt hast du mich
- 2:31aus dem Konzept gebracht, weil es spielt dieses Prinzip auch in
- 2:35die Codequalität mit rein sauberen Code zu haben, der
- 2:38wirklich wartbar und aufgeräumt ist und das ganze Prinzip wollen
- 2:41wir heute mal ein bisschen erklären beleu.
- 2:44Chten, die vor und Nachteile nennen.
- 2:45Und ich sage bewusst Nachteile, weil es auch so einige, ich sag
- 2:49mal Herausforderungen dabei gibt.
- 2:51Es ist nicht nur alles grün und positiv dabei, sondern ich finde
- 2:55man kann das auch ein bisschen kritisch betrachten, das würde
- 2:57ich auch gerne mit dir machen heute.
- 2:58Ja, auf jeden Fall. Also ich finde das ja immer ganz
- 3:01schön, wie du ja weißt, wenn man irgendwie so eine kleine
- 3:03Analogie nimmt, aber. Vorher können wir einmal gucken,
- 3:07dass Don't Repeat yourself steht ja für also, dass man sozusagen
- 3:12sich, na ja, natürlich nicht wiederholen soll, klar, aber es
- 3:15geht ja darum um Redundanzen im Code zu vermeiden, ne und jeder
- 3:19kennt das ja vielleicht vielleicht auch nicht, ist so
- 3:23eine Sache, aber den Sachverhalt kennt jeder, zum Beispiel Briefe
- 3:26schreiben und stell dir vor, du hast.
- 3:30Eine Geburtstagsparty hast einen runden Geburtstag, willst alle
- 3:32Leute einladen und sagst jetzt okay ich möchte irgendwie eine
- 3:35Einladungskarte rausschicken und wenn man sich jetzt überlegt
- 3:40okay ich fange jetzt an, Brief zu schreiben, zum Beispiel
- 3:43lieber Gast 1 und dann geht's los, kommt die Einladung, die
- 3:47ganzen Informationen, wann geht's los, wo findet statt und
- 3:49so weiter und sofort, das musst du ja an jede Person schreiben,
- 3:53so und wenn du dich jetzt händisch machen würdest und
- 3:55jeden Brief immer wieder gleich schreiben würdest, immer wieder,
- 3:58dann ist es ja irgendwie. Ja, weiß ich nicht.
- 4:01Das macht ja keiner. Also da kommt man ja relativ
- 4:03schnell auf die Idee, warte mal, ich muss keine Ahnung sagen wir
- 4:05mal 50 Briefe schreiben. OK, krasse Party.
- 4:09Wird ne gute Party. Ich muss 50 Briefe schreiben,
- 4:13aber eigentlich steht immer das Gleiche drin, außer dass du die
- 4:16Person, den Namen der Person, die du einlädst, eben ersetzt.
- 4:20Dann kommt man ja vielleicht relativ schnell darauf zu sagen,
- 4:22Don't repeat yourself, also schreib ich einmal n Vordruck
- 4:25Druck das 50 mal auf aus und schreibt dann die entsprechenden
- 4:28Namen von den Leuten die ich einlade rein.
- 4:31Mit Hand oder auch direkt über den Computer.
- 4:35Ja, ein ganz gutes Beispiel, weil du natürlich auch, also ich
- 4:39sag mal, wenn du 50, mal diese Einladung schreibst, ist ja die
- 4:42Wahrscheinlichkeit gar nicht so gering, dass du irgendwo einen
- 4:44Fehler an Schreibfehler oder so einbaust.
- 4:46Zuerst 5 schreibst du noch konzentriert und sauber und dann
- 4:50wird's denke ich mal immer fahrlässiger du.
- 4:54Hast einen wichtigen Punkt bei der Nummer auch noch genannt,
- 4:56was denn die finale Optimierungsstufe ist, indem du
- 4:59einfach sagst, lieber Gast und das schickst du einfach raus.
- 5:05Finde ich gut, warte ich notiere mir das eben.
- 5:08Da kann ja gar nichts mehr schief laufen.
- 5:11Der aber gutes Beispiel genau, und da würdest du das ja auch
- 5:14wieder verändern und wiederverwenden und dich nicht
- 5:17ja selbst wiederholen. Ganz gutes Beispiel.
- 5:21Was eigentlich auch so, dass die Kernaussage des Prinzips ist.
- 5:26Also es ist nicht unbedingt die Aussage.
- 5:31Also einmal und nur einmal. Das ist auch noch n anderes
- 5:35Prinzip. Da kann man später noch mal
- 5:36drauf eingehen, um das ein bisschen zu differenzieren.
- 5:40Aber im Endeffekt geht es halt wirklich darum anstellen, wo ich
- 5:44merke, ich habe Redundanzen, diese zu vermeiden, einfach
- 5:49genau. Das fängt ja beispielsweise,
- 5:52wenn man jetzt auf Code Ebene ist, damit an, dass man zum
- 5:54Beispiel, wenn du eine Berechnung einmal durchführst,
- 5:59anstelle 1 irgendwo in deiner Software und diese Berechnung
- 6:03anstelle 2 nochmal durchführst und anstelle 345 dann.
- 6:07Möchtest du ja sozusagen nicht, dass du das jedes Mal wieder an
- 6:11den entsprechenden Stellen hast, sondern vielleicht dann eine
- 6:14zentrale Stelle hast, dass du diese Redundanz vermeidest und
- 6:17einmal diese Berechnung, die vielleicht, sagen wir mal aus 10
- 6:20Zeilen Code besteht, einmal in deinem Code hast.
- 6:23Und dann halt nicht überall immer wieder im Code.
- 6:27Genau, dass du halt, sage ich mal, diese Berechnung oder zum
- 6:30Beispiel Daten, die du aber reinstellt.
- 6:32Bereitstellst Mensch heute ist aber schwierig.
- 6:36Dass du quasi so ne Wissenseinheit schaffst, halt
- 6:38darüber und dann die Abfragen kannst.
- 6:40Und dann hast du halt so n zentralen Punkt, wo du quasi das
- 6:43Wissen rausziehen kannst. Beispielsweise für Daten und
- 6:46nicht überall immer wieder dieses Wissen aufbauen musst.
- 6:49Genau in Form von Funktion, Berechnung, wie auch immer.
- 6:53Und das sorgt halt dafür. Dass man halt auch eine
- 6:58geringere Fehleranfälligkeit hat.
- 7:00Das, was wir nämlich gerade. Quasi in dem Briefbeispiel ja
- 7:04schon mal so n bisschen angeteasert haben, ist natürlich
- 7:07auch n großer Pluspunkt an diesem Prinzip, dass wenn du es
- 7:12an einer zentralen Stelle hast und ja hoffentlich auch
- 7:15abgetestet ne. Dass du quasi weniger
- 7:19fehleranfällig bist im Gesamtsystem mit dieser
- 7:22Funktion, weil du es halt zentralisiert hast, dass es
- 7:25abgetestet. Du weißt, das funktioniert.
- 7:27Und wenn du es dann daraus verwendest an verschiedenen
- 7:31Stellen kannst du dir eigentlich auch sicher sein, dass das
- 7:33funktioniert, nicht Fehler fehlerhaft ist.
- 7:37Und du kommst ja auch noch zu dem Punkt, dass wir haben ja
- 7:40auch schon öfter mal in unserem Podcast über Refactoring
- 7:42geredet. Und sowas hatte ich tatsächlich
- 7:45auch schon mal refactor du bist dann an einer Stelle des Codes
- 7:49und Refactors diese Stelle und merkst dann okay warte mal hier,
- 7:52hier könnte ich was verbessern und dann hatte ich es
- 7:54tatsächlich auch schon mal. Ich glaube also, es klingt jetzt
- 7:57gerade so wie wow, echt, du hattest das mal, aber es ist
- 7:59glaube ich es passiert öfter mal irgendwie oder im Laufe einer
- 8:03Softwareentwicklungskarriere, dass man sowas mal hat und zwar
- 8:07habe ich dann halt dieses Codesstück Refected und dieses
- 8:10Codestück war aber ein redundantes Codestück.
- 8:14Was sich sozusagen nicht nur, also es waren 2 Sachen,
- 8:16eigentlich zu tun, einmal ne Erweiterung und dazu dann hat
- 8:19sich n Refactoring angeboten, was aber dazu geführt hat, dass
- 8:23Codestelle 1. Diese Erweiterung bekommen hat
- 8:26und auch verschönert wurde und Erweiterung 2 eben nicht mehr.
- 8:30Und dann hast du ja diesen Effekt, dass du unterschiedliche
- 8:34Verhalten hast an unterschiedlichen Bereichen der
- 8:36Software Punkt 1 und Punkt 2 ist du findest diese Duplikate.
- 8:41Sogar eventuell noch schwerer, die du ja vorher 1 zu 1
- 8:45dupliziert hattest. Und das macht die Sache dann
- 8:47auch noch n bisschen schwieriger.
- 8:49Das heißt also es. Wird es wird halt inkonsistent
- 8:51an der Stelle. Genau.
- 8:53Und wenn du das aber raus ziehst und dieses Prinzip Don't repeat
- 8:56yourself anwendet, das heißt, du hast eine zentrale Stelle, wie
- 8:58wir gerade meinten, und dann musst du etwas refectern oder
- 9:02etwas erweitern, dann hast du halt genau diesen Effekt.
- 9:06Dass sozusagen die Erweiterbarkeit oder Wartbarkeit
- 9:08einfach auch verbessert wird durch das Prinzip.
- 9:10Ja, dazu fällt mir auch direkt aber auch ein Nachteil ein.
- 9:13Da würde ich auch später drauf eingehen.
- 9:15Ich hoffe ich denke dran, weil nicht, dass wir jetzt vor und
- 9:18Nachteile hier hin und her werfen, das sollten wir
- 9:20vielleicht ein bisschen strukturierter machen, aber
- 9:22ansonsten erinnere mich mal bitte daran.
- 9:26Ist aber auf jeden Fall im Großen und Ganzen auf jeden Fall
- 9:29ein großer Pluspunkt. Ja der der quasi das Drive
- 9:34Prinzip da anzuwenden, also unter Gesichtspunkt.
- 9:37Fehleranfälligkeit, die verringert wird und natürlich
- 9:40die Wartbarkeit, die da enorm gesteigert wird, weil du halt
- 9:43nur noch eine Stelle im Code anrühren musst.
- 9:46Und es wird ja auch, also es wird ja auch übersichtlicher,
- 9:50zunächst erstmal. Wenn ich jetzt diese Funktion
- 9:53rausziehe, dann packe ich das an eine Stelle.
- 9:55Ich kann darauf zugreifen, das ist ja grundsätzlich erstmal
- 9:58übersichtlicher. Genau also mit der Prämisse,
- 10:02dass du natürlich dann diese diesen Codeblock, den du
- 10:04Kapselst in eine Funktion beispielsweise.
- 10:07Natürlich auch gut benennst, damit du weißt, was die auch
- 10:10wirklich. Tut ja gut, klar, also das ist
- 10:13jetzt mal vorausgesetzt. Genau.
- 10:16Und ich finde halt auch ein Punkt noch dazu, den ich
- 10:20spannend finde, ist, dass man ja auch so gesehen eigentlich eine
- 10:23Effizienzsteigerung hat. Weil.
- 10:29In dem Moment, wenn ich das Vereinheitliche und.
- 10:33Verwendbar mache für andere und ich merke, ich brauch öfter in
- 10:36meiner Gesamtsoftware diese Funktion oder diese Daten die
- 10:40ich damit bereitstelle. Dann Steiger ich natürlich auch
- 10:42die Effizienz. Im Code selbst, weil ich weiß,
- 10:45OK, ich habe jetzt diese Anlaufstelle und.
- 10:49Ich implementier n neues Feature an einer anderen Stelle und so.
- 10:52Ah jetzt brauch ich Daten XYZ ah ja OK warte das kann ich mir
- 10:55jetzt hierherziehen, das geht ja dann leichter von der Hand als
- 10:58wirklich jedes Mal wieder selbst zum Beispiel mühsam die Daten
- 11:02zusammen zu sammeln oder aufzubereiten.
- 11:03Wenn ich jetzt so eine zentrale Stelle dafür habe.
- 11:06Ja, auf jeden Fall. Und mit der Übersichtlichkeit,
- 11:09was du vorhin meintest, spielt oder spielst du wahrscheinlich
- 11:13auch darauf an, dass du im Endeffekt natürlich weniger Code
- 11:16hast. Also wenn du jetzt 5 * 10 mal
- 11:18also 10 zeilen. Die Rauslagerst hast du
- 11:20natürlich nur einmal noch diese 10 Zeilen Code und dann halt
- 11:24eben immer noch diese Aufrufe. Ne das?
- 11:26Da liegt zwar auch ne Challenge drin, auch später, seid
- 11:30gespannt. Aber grundsätzlich ist das
- 11:33erstmal dieser positive Effekt, der dadurch entsteht.
- 11:37Würde ich sagen. Wie findest du generell dieses
- 11:39Prinzip erstmal so? Bevor wir jetzt natürlich auch
- 11:41noch das ganze Challengen wollen.
- 11:44Also grundsätzlich finde ich es sehr gut das im Kopf zu haben.
- 11:48Also ich finde man sollte davon gehört haben, es muss ja jetzt
- 11:52nichts. Also ich finde man neigt ja
- 11:54immer dazu oder man will immer alles einen Namen geben und ein
- 11:57total cooles Prinzip daraus machen, aber der Kerngedanke der
- 12:01dahinter steckt, den sollte man auf jeden Fall immer im Kopf
- 12:04haben, ob man das jetzt Dryprinzip nennt oder nicht,
- 12:07eigentlich egal, aber halt. Dass man auf Redundanzen achtet
- 12:12und halt auch berücksichtigt, ob man das Reflect dann kann und
- 12:15vereinheitlichen kann oder nicht finde ich ist schon sehr wichtig
- 12:19und wenn wir das jetzt dafür steht ja so gesehen, dass dry
- 12:22Prinzip, deswegen würde ich sagen, es ist auf jeden Fall ein
- 12:24wichtiger Prinzip. Ja, finde ich auch das sollte
- 12:27man auf jeden Fall im Kopf haben.
- 12:29Was ich dabei auf jeden Fall, also wenn man jetzt mal
- 12:33übergehen und sagen, OK, es ist ein wichtiges Prinzip, aber.
- 12:38Es ist ja nicht einfach nur, dass man sagt, OK, es gibt
- 12:40dieses Prinzip und benutzt es immer.
- 12:44Dafür hätte ich direkt mal eine kleine Story, die ich mal erlebt
- 12:47habe, die mir auf jeden Fall total gezeigt hat, dass du do it
- 12:53yourself. Grundsätzlich do it yourself.
- 12:58Das Don't repeat yourself zwar an sich ein gutes Prinzip ist,
- 13:02aber man das ganze Halt auch übertreiben kann oder so machen
- 13:06kann, dass es eigentlich wirkt in dem Fall überhaupt nicht mehr
- 13:10meiner Meinung nach und von einigen, die auch im Team dabei
- 13:14waren auch ein Business, so das Gefühl da war.
- 13:16Aber auch wir haben darüber gesprochen und wir haben halt so
- 13:19gesagt. Nette Idee, aber die Umsetzung
- 13:22ist schwierig. Da ging es um eine Tabelle und
- 13:25diese. Tabelle hat der verschiedene
- 13:27Spalten, das heißt du hast Spaltenköpfe oben und es ging
- 13:31darum, dass du jede Tabelle ordnen solltest, ordnen können,
- 13:35also sortieren können solltest. Ne, also zum Beispiel
- 13:38alphabetisch der Größe nach. Was auch immer verschiedene
- 13:42Sachen und die Schwierigkeit dabei war, dass das zum Beispiel
- 13:46die Daten, die da drin standen in dieser Tabelle.
- 13:48Also wir hatten verschiedene Tabellen, und das war halt so,
- 13:51dass diese Tabellen jeweils. Filter bekommen haben oder nicht
- 13:56Filter, sondern sortierreihenfolgen
- 13:59Möglichkeiten, die man anwenden konnte.
- 14:01Ne und? Dann war es aber so, dass du
- 14:04natürlich sagst, OK, du sortierst ja unter Umständen
- 14:06Strings anders als Zahlen oder sortieren.
- 14:10Anders als vielleicht auch Objekte nach bestimmten
- 14:14Kriterien. Ja, und da war es dann aber so,
- 14:19dass diese, dass ein Kollege gesagt hat, OK, ich nehme alle
- 14:22Filter und Verallgemeinere diesen Filter so extrem, dass du
- 14:27am Ende alle Daten, die du haben wolltest, da reinschmeißen
- 14:31konntest, also sozusagen so ein sogenanntes Generic, und das war
- 14:35am Ende auf der einen Seite was cool, weil für die Anwendung,
- 14:38wenn du sagst, ok, ich will eine neue Tabelle erstellen.
- 14:41Ein neuen neues Objekt in die Tabelle einfügen ne, also ne
- 14:45Spalte mit einem neuen Objekt was da Daten drin anzeigt dann.
- 14:52Konntest du das relativ schnell machen, aber irgendwann kamen
- 14:54wir an den Punkt, dass wir gesagt haben, wir müssen diese
- 14:56Tabelle erweitern. Ja, und mussten in diesen Code
- 14:59reingucken und ich und ich glaub ich hab insgesamt mit 2 anderen
- 15:04Leuten dann über n paar Tage daran gearbeitet beziehungsweise
- 15:08da drauf geguckt und wir waren 3 gute Entwickler und haben uns
- 15:13echt schwer getan diesen Code zu verstehen und da muss man
- 15:15natürlich auf der einen Seite sagen okay Respekt an den einen
- 15:17Kollegen der das gemacht hat, dass er irgendwie das Skill
- 15:21Level auch hatte, diesen Code SUV zu verallgemeinern, also so
- 15:24eine so hohe Abstraktion zu bilden, aber auf der anderen
- 15:27Seite hat es. Nicht wirklich uns was gebracht
- 15:30am Ende, sobald es an die Erweiterbarkeit ging, die wir ja
- 15:32auch schon angesprochen. Hatten ja.
- 15:34Die man ja eigentlich gewährleisten möchte, oder?
- 15:36Mit diesem Prinzip verbessern möchte.
- 15:38Und das ist halt wirklich ein großes Problem an diesem Drive
- 15:42Prinzip beziehungsweise eine Herausforderung.
- 15:45So klingt es immer schöner. Man neigt halt schnell dann zu
- 15:49diesem Overengineering, dass du sagst okay ich.
- 15:53Hab jetzt hier eine Funktion, die habe ich jetzt in ähnlicher
- 15:56Weise an 2 stellen. Das ist nämlich auch das, was
- 15:59ich noch anmerken wollte zu deinem Beispiel vorhin
- 16:02angenommen, ich habe diese Funktion sehr ähnlich und merke,
- 16:05aber anstelle A brauche ich sie so ein bisschen abgewandelt und
- 16:09anstelle b bleibt sie wie sie ist.
- 16:10Und jetzt will ich die zusammenfügen, dann habe ich ja
- 16:13eine Art Varianz drin oder so optionale Stränge und dann geht
- 16:17es halt los, dann denkst du ja okay, dann machen wir, dann
- 16:20abstrahieren wir das, dass die Grundfunktion gleich ist.
- 16:23Das ist mein zentrales. Denkt.
- 16:24Und dann kann ich davon ableiten, beispielsweise und so
- 16:26weiter und dann kapselst du das immer weiter und abstrahierst
- 16:30das immer weiter und dann wird es nachher so n overengineering
- 16:33Prozess, dass es am Ende gar keinen Mehrwert mehr gibt, wenn
- 16:37ich wirklich mal wieder an die Kern oder an die ja doch an die
- 16:40Kernsubstanz diese eigentlichen Funktionalität ran muss und da
- 16:43was ändern möchte, wie du ja auch gerade in so einem großen
- 16:46Extrembeispiel genannt hast, dann brauchst du auf einmal
- 16:48Ewigkeiten. Das überhaupt noch zu verstehen
- 16:51und quasi zu adaptieren, und das kann halt auch nicht der Sinn
- 16:56sein im Sinne von wir haben gut wartbaren Code, weil das ist
- 17:00auch nicht mehr wartbar. Dann am Ende, das heißt es ist
- 17:03immer so ein so ein Balanceakt finde ich zu sagen, bin ich an
- 17:09dem Punkt, wo ich wirklich dieses 3 Prinzip anwenden sollte
- 17:13oder muss und ich refecter jetzt mein Code und Lager das aus.
- 17:18Oder bin ich eigentlich noch an einer Stelle, wo ich mich zwar
- 17:21so gesehen wiederholt habe, aber es an der Stelle keinen Sinn
- 17:25macht, das zusammenzufassen, weil einfach nur ganz andere
- 17:28Probleme dann auf mich zukommen? Das ist halt im ersten Schritt
- 17:31zwar besser. Aber dann eigentlich der
- 17:34Software am Ende oder dem gesamten Quellcode schadet.
- 17:37Ja, und das ist finde ich ein Spagat, den man da macht, das
- 17:39ist nicht so einfach und deswegen dieses Drive Prinzip
- 17:43sollte man auf jeden Fall im Kopf haben, aber man sollte da
- 17:46mit einem gesunden Maß rangehen finde ich und das auch mal
- 17:49kritisieren ob es denn wirklich immer die richtige Entscheidung
- 17:52ist das umzusetzen sozusagen. Definitiv also allein schon so
- 17:56eine grobe Daumenregel zu sagen, du hast es, du hast, sage ich
- 18:00jetzt mal einen Code ein, also ein Codeabschnitt.
- 18:03Mal in deiner Software OK, don't repeat yourself, auf jeden Fall
- 18:06nicht logischerweise, du hast es zweimal, macht eigentlich noch
- 18:10keinen Sinn, weil du weißt ja noch gar nicht, ist es jetzt so,
- 18:14dass sich dieser codeblock halt wirklich noch vermehrt oder
- 18:17nicht? Braucht man den wirklich noch an
- 18:19anderen Stellen? Muss ich mir jetzt schon den
- 18:21Aufwand machen, das Ganze sozusagen zu abstrahieren,
- 18:23abzukapseln, wie auch immer hast du es dreimal drin, würde ich
- 18:27sagen okay die Tendenz geht auf jeden Fall.
- 18:30Lasst uns das mal rausziehen in den eigenen Bereich.
- 18:34Ja, das ist nämlich ein guter Punkt, weil 3 ist bei mir auch
- 18:36so ein Schwellenwert, wo die Überlegung losgeht, wo ich mir
- 18:39denke, okay, jetzt ist es schon dreimal drin und es ist schon
- 18:42sehr ähnlich und dann ist es ja so auch gerade mit steigender
- 18:47Erfahrung, dass wir ja schon im Kopf ungefähr hast, wie du das
- 18:50rausziehen könntest, was du machen müsstest, wie du es
- 18:52referdern müsstest und wegst dann, oder ich fange dann so an,
- 18:56quasi abzuwägen. Ist das?
- 18:59Lohnt sich das oder lohnt es sich nicht?
- 19:013 ist da so bei mir so ein bisschen Schwellenwert, ganz
- 19:04ehrlich. Zweimal drin ist, dann ist es
- 19:06zweimal drin. Ja genau, mittlerweile früher,
- 19:10so sag ich mal n paar Jahre zurück, wenn man sagt ich möchte
- 19:14unbedingt super cleancode schreiben und ich möchte ne
- 19:17richtig geile codebasis haben, wie man ja auch so quasi so ein
- 19:21Entwicklungsschritt hat und sich super viele Gedanken darüber
- 19:24macht. Da dachte ich mir es ist doppelt
- 19:26ich habe ein Duplikat, jetzt muss ich das zusammenpassen,
- 19:29also so richtig. Wirklich straight diese
- 19:31Prinzipien durchsetzen und dann machst du aber auch relativ
- 19:34schnell die Erfahrung. Geil ist das auch nicht, weil
- 19:37dann hast du auch schnell mal einen sehr komplexen Code, der
- 19:42im Nachhinein kein Stück besser ist als es vorher war.
- 19:45Also du hast keine richtige Rabbit hole, wären dann
- 19:48definitiv. Ich sag mal so, es ist ja
- 19:52natürlich auch so. Lassen wir mal die Kirche im
- 19:55Dorf, es kommt ja immer noch vor, dass man vielleicht auch
- 19:57mal man ist im Eifer des Gefäß, und dann findet man auf einmal 5
- 20:01stellen, ich nenne jetzt einfach irgendeine Zahl, die größer als
- 20:043 ist. Code, wo man sagt, Oh warte mal
- 20:08irgendwie. Na ja, das muss ich wohl noch
- 20:10mal aufräumen. Das typische Refactoring, es
- 20:12kommt ja dahin oder man man merkt vielleicht später so OK
- 20:16warte mal das was ich hier mache und was ich da mache und was ich
- 20:19dort mache. Sehr, sehr ähnlich und ich kann
- 20:23es schon vereinheitlichen. Also das ist nicht immer
- 20:26zwangsläufig. Die Intuition ist, dass es von
- 20:29vornherein das gleiche ist und man dann direkt sagt, Oh, das
- 20:33müssen wir ja, ich weiß ja, dass das auf der anderen Stelle im
- 20:35Code oder in meiner Software auch schon so da ist.
- 20:38Also. Diese Gedanken.
- 20:41Manchmal ist man im Eifer des Gefechts, hat es gerade nicht im
- 20:43Kopf und merkt es später. Und dann ist halt auch hilfreich
- 20:46zu sagen, beim Refactoring zu Challengen kann ich das jetzt
- 20:49zusammenfassen, kann ich jetzt sozusagen Don't repeat yourself
- 20:52anwenden. Und da.
- 20:53Habe ich noch mal eine interessante Frage an dich.
- 20:56Kennst du das, dass du 2 verschiedene Arten hast?
- 21:00Dieses also oder 2 verschiedene Codesstücke, die sehr ähnlich
- 21:03sind, aber vom. Kontext her doch sehr
- 21:07verschieden. Also du meinst, dass man quasi
- 21:12auf den ersten Blick sagen würde, man kann die sehr einfach
- 21:14zusammenfassen, weil. Sie doch von der Funktion, wenn
- 21:19man auf den ersten Blick ähnlich aussehen, oder wie?
- 21:21Genau. Ja, kenn ich.
- 21:25Und oftmals ist aber auch die Antwort, nein kann man nicht
- 21:28oder es würde halt sehr sehr komplex und abstrakt werden, um
- 21:32das zu machen. Also wie gesagt das ist n
- 21:36Prinzip in meinen Augen und es ist eher wichtig sich Gedanken
- 21:39darum zu machen, das heißt erst mal zu challengen ob es denn
- 21:43funktioniert und der bessere Weg wäre das jetzt so zu refactern
- 21:46wenn aber die Antwort ist ganz ehrlich, das bringt nur Chaos
- 21:49rein nur um diese Funktion zusammenzufügen und dann wären
- 21:53die Aufrufe kompliziert. Irgendwelche Abstraktionsebenen
- 21:56einbauen, dann weiß ich nicht, ob da der Mehrwert so groß ist
- 22:00am Ende oder ob ich mir andere Probleme denn einkaufe.
- 22:03Und das ist halt so n klassischer Fall beim
- 22:06Refactoring wie Du meinst, dann findest du auf einmal mehrfach
- 22:09stellen. Wo ähnliches passiert und dann
- 22:12entwickelst du so n Gefühl dafür und sagst Mhm ah, das müsste man
- 22:15glaub ich noch mal refactern das das kann man.
- 22:17Ich glaub das kann man irgendwie zusammenbringen so absolut
- 22:21legitim und das passiert immer wieder, es ist ja nicht so, dass
- 22:23du Code schreibst und quasi festsetzt, so nach dem Motto, Ja
- 22:26jetzt habe ich es zweimal verwendet, aber ich werde es auf
- 22:28jeden Fall nicht noch mal verwenden, ich muss es nicht,
- 22:30ich muss jetzt nicht nach Dry quasi refectern oder?
- 22:36Ich habe gerade eine Zeile Code geschrieben, das war Nummer 3
- 22:38und jetzt refect dann natürlich ist es so nicht wie wie man
- 22:42jetzt in der Theorie quasi das erklärt, aber gerade im Refekter
- 22:46Schritt wirst du sowas ja irgendwann merken und dann musst
- 22:49du es meinen Augen abwägen. Das ist dann genau dieser
- 22:52Balance Akt dahinter. Also ich finde zum Beispiel
- 22:55auch, dass sinnvolles, sich darüber Gedanken zu machen.
- 22:57Manchmal finde ich es aber auch sinnvoll, das sind auch nicht zu
- 23:00krass zu durchdenken, weil manchmal sitzt man vielleicht
- 23:03davor und denkt sich und so und dies und das vielleicht auch
- 23:05einfach mal anfangen. OK, warte mal, das sind jetzt 2
- 23:08verschiedene Sachen. Ich glaube die kann man
- 23:10vereinheitlichen und dann einfach mal ausprobieren.
- 23:12Ne manchmal. Also mir mir persönlich hilft
- 23:14das auf jeden Fall, es wäre n Ansatz den ich auch
- 23:17weiterempfehlen kann und dann vielleicht auch hinterher zu
- 23:19merken na Moment. OK, ich hab jetzt zwar Zeit
- 23:23investiert und es ist jetzt diese Zeit nicht wert gewesen,
- 23:27weil ich zu dem Schluss gekommen bin, es funktioniert nicht so
- 23:29richtig oder ich hab es mir anders vorgestellt.
- 23:32Aber nichtsdestotrotz lernt man ja genau aus diesen Sachen auch
- 23:36sehr, sehr viel, dass man es einfach mal macht und entweder
- 23:39es schafft und sagt, OK, nee, das war das war ne gute Idee und
- 23:42ich hab es durchgezogen und es gefällt mir wirklich besser oder
- 23:45dass man sagt, ich hab es probiert, aber es ist irgendwie
- 23:47nicht so geil, weil als kleines Beispiel, wenn du einen sehr
- 23:50ähnlichen Code hast und dann aber am Ende eine Funktion
- 23:54rauskommt, der du noch ein bool Fleck übergeben musst um zu
- 23:57sagen aber. Bitte an der Stelle A und an der
- 24:01anderen Stelle in dem Fall B. Dann ist das ja nach Cleancode.
- 24:05Übrigens haben wir auch eine Reihe dazu cleancode hört euch
- 24:07lieber, hört euch die Anwendung interessiert, Liebe zuhören,
- 24:10lieber Zürcher, dann ist das nach Cleancode natürlich auch
- 24:13keine gute Praxis diese bool Variablen einzubauen, nur um an
- 24:16einer. Stelle.
- 24:17Genau. Nur um an einer Stelle mal zu
- 24:20sagen, Nimm die oder die Abzweigung, aber der Rest des
- 24:23Codes ist gleich gleich beispielsweise.
- 24:26Und in solche Fallen nenne ich das jetzt mal, bin ich auch
- 24:28schon gelaufen, dass ich mir dann dachte, das kann man super
- 24:31vereinheitlichen und dann kann ich aber an den Punkt, da ich
- 24:34mir dachte. Na, sieht irgendwie jetzt aber
- 24:36nicht mehr so geil aus, wie ich mir erst dachte.
- 24:38Also du hast es zwar vereinheitlicht, aber die
- 24:40Anwendung dieser Vereinheitlichung war überhaupt
- 24:44nicht intuitiv am Ende. Ja, der ist n absolut
- 24:48klassisches Problem. Was ich früher auch viel hatte,
- 24:51weil du meintest einfach mal anfangen.
- 24:54Hatte halt so ne Phase wo ich alles immer so super akkurat
- 24:57machen wollte und so richtig clean coden wollte.
- 24:59Ne, also ich wollte halt so richtig geilen Code schreiben
- 25:01auf gut Deutsch und dann fängst du und die Falle oder die Falle
- 25:05dabei ist zu sagen okay ich schreib ne Funktion und dann
- 25:08denkst du im Kopf so. Hab das Gefühl, das könnte ich
- 25:12noch mal gebrauchen. Ich muss das jetzt gleich schon
- 25:14so auslagern, damit das später, damit ich das nicht doppelt
- 25:17schreibe, die Funktion und mach's dir schon über Sachen
- 25:19Gedanken, die einfach noch gar keine Rolle spielen und da
- 25:22kommen auch so andere Prinzipien rein, da können wir auch gerne
- 25:25mal folgen zu machen, zum Beispiel das Kiss Prinzip, Keep
- 25:28it simple, stupid, weil an der Stelle mach's doch erstmal so
- 25:33einfach, mach doch erstmal den Progress und lass doch die
- 25:36Funktion so es wird sich zeigen ob du das Refact.
- 25:39Dann musst dann beispielsweise nach dem.
- 25:41Prinzip, weil Refactoring wird für immer dazugehören.
- 25:45Es ist einfach ein fester Bestandteil der
- 25:48Softwareentwicklung, also ist es auch OK zu Refectern in meinen
- 25:52Augen, oder also weißt. Du definitiv.
- 25:55Also nicht die. Nicht Schrödingers Don't repeat
- 25:59yourself machen. Muss das werden oder nicht?
- 26:03Kann man es denn auslagern, oder?
- 26:05Das werden wir erst erfahren, wenn wir die Kiste öffnen.
- 26:09Aber ich find halt auch, und das ist auch find ich einfach NN
- 26:11sehr, sehr wichtiger Leitsatz irgendwie.
- 26:15Klar kann man Sachen Refectern vereinheitlichen, sozusagen
- 26:20Don't repeat yourself anwenden, aber ich finde darüber über
- 26:24diesem Prinzip steht immer noch, wie gut kann ich diesen Code
- 26:28lesen. Genau, also es kommt vielleicht
- 26:32noch n bisschen drauf an, weil wenn du sagst ey ich schreib
- 26:33jetzt ne Library und diese Library ist abgekapselt, da wird
- 26:37eigentlich nicht mehr dran gearbeitet, die ist sozusagen in
- 26:39Stein gemeißelt und die wird heute da sein und die wird
- 26:41morgen da sein und die wird in 100 Jahren noch da sein.
- 26:44OK, optimier Sie bis zum Umfallen meinetwegen, aber wenn
- 26:48du ne Software hast, in der du am Team arbeitest, wo andere
- 26:51Leute immer wieder was erweitern müssen, die Software muss muss
- 26:54verstanden werden. Der Code meint Ich muss
- 26:56verstanden werden, dann ist die Lesbarkeit deutlich darüber über
- 27:00Abstraktion und Vereinheitlichung und sonst?
- 27:03Was ja das erschwert ja auch im Team die Zusammenarbeit, wenn
- 27:06man es mal so betrachtet. Mal angenommen, du würdest alles
- 27:09so krass abstrahieren. Dass du alles so auf einzelne
- 27:12Punkte zurückführst und dann willst du jetzt verschieden
- 27:16daran entwickeln oder weiter anstellen in deiner Software und
- 27:20dann kommst du immer wieder auf diesen einen Punkt.
- 27:21Das kann ja auch zu Konflikten führen am Ende, was vielleicht
- 27:25unnötig ist, weil du es gar nicht so hättest auf so einer
- 27:29hohen Abstraktionsebene programmieren müssen.
- 27:33Es ist ja, wie auch wenn du mit jemandem sprichst, kannst du ja
- 27:36eine sehr hochgesprochene Sprache verwenden.
- 27:40So und am Ende weiß keiner, was los ist.
- 27:41Und am Ende denkt sich jeder so etwas.
- 27:42Was will der jetzt von mir sagen?
- 27:44Du kannst es doch einfach mit normalen.
- 27:45Orten sagen und jeder versteht, was du meinst.
- 27:48Und dann kommst du ja meistens weiter und so sehe ich das halt
- 27:51beim Code am Ende auch, weil es bringt dir ja nichts, wenn du
- 27:54dich hinstellst und sagst, guck mal wie unglaublich elegant ich
- 27:59programmieren kann, was für unglaubliche Tricks ich drauf
- 28:02habe und der Rest deines Teams denkt sich so ja okay, dann
- 28:05kannst du dich in Zukunft selber um diese Klasse kümmern.
- 28:08Kollegen ja genau dann Code alleine weiter, da steigt
- 28:11niemand mehr durch. Absolut klassisches Ding, aber
- 28:17genau die Challenge. Dabei auf der anderen Seite kann
- 28:19man natürlich auch sagen okay. Genauso kann man sich natürlich
- 28:23auch hinstellen und sagen, dann erklär mir das mal.
- 28:25Vielleicht ist man ja auch selber einfach nur zu blöd.
- 28:30Wahrscheinlich aus der Sicht des Codes, der es gemacht hat, ja.
- 28:36Oh Mann ey, aber worauf ich noch eingehen wollte ist, weil Don't
- 28:41repeat your safe. Das klingt auch ein bisschen
- 28:43irreführend. Also ich verstehe das Prinzip,
- 28:44aber nicht so, dass man. Nie quasi doppelten Code drin
- 28:50haben sollte oder Duplikate. Deswegen meinte ich auch, man
- 28:54darf das auch nicht verwechseln, es gibt nämlich glaube ich auch
- 28:56so ein. Only One oder so heißt das
- 29:00Prinzip. Was halt wirklich sagt.
- 29:04Nein, es wird alles nur einmal gemacht, es gibt keine
- 29:07Duplikation, aber das Dry Prinzip verstehe ich gar nicht
- 29:09so, sondern wenn es gegeben ist durch unterschiedlichen Kontext
- 29:14oder so, dann kannst du das, dann musst du dich wiederholen,
- 29:16aber dann ist es so gesehen auch keine Wiederholung, weil es
- 29:19einem anderen Kontext dient, auch wenn dir zum Beispiel die
- 29:21Funktion sehr ähnlich ist oder von mir aus auch identisch, aber
- 29:25irgendwie in dem Rahmen in dem Kontext, in dem man sich bewegt,
- 29:28eine Unterscheidung stattfindet, dann ist das doch völlig legitim
- 29:31auch beide drin zu haben. Der Unterschied ist ja, wie du
- 29:34schon meintest 5 war ne schöne Zahl.
- 29:36Übrigens wenn ich 5 mal exakt das gleiche mache, dann kann ich
- 29:40das Prinzip anwenden, ja. Also don't repeat yourself heißt
- 29:44nicht, du darfst niemals einen Variablennamen doppelt vergeben.
- 29:50Naja aber ja mal blöd gesagt. Also mal wirklich.
- 29:53Zugespitzt. Das sagt es halt nicht aus.
- 29:59Ja, also wie gesagt, das ist auch immer noch da, spielt auch
- 30:04viel, wie wir es ja eben auch schon angeschnitten haben, eine
- 30:07Zusammenarbeit, eine Rolle im Team, weil ich finde zum
- 30:11Beispiel auch, das ist mir eben noch so ein bisschen entfallen
- 30:15oder lag mir noch auf der Zunge, es kommt natürlich auch immer
- 30:19ein bisschen auf die Projektgröße, die Teamgröße
- 30:21drauf an, weil angenommen, du hast wirklich eine Software, an
- 30:24der du alleine arbeitest. Dann kannst du natürlich
- 30:26angenommen, du bist jemand, der sehr stark gerne.
- 30:29Agiert kannst du das sicherlich machen.
- 30:31Ne, dass du sagst, OK, das ist irgendwie auch in
- 30:33Anführungsstrichen meine Software, da kann ich mit machen
- 30:36was ich möchte so dann ist das in Ordnung.
- 30:39Blöd wird es finde ich, wenn du an den Punkt kommst wo du dann
- 30:42einfach sagst OK. Egal, was die anderen sagen, ich
- 30:46setze jetzt ne hohe Abstraktionsebene auf und ist
- 30:49mir egal ob die da nicht durchsteigen.
- 30:50Also da finde ich sollte man auf jeden Fall auch immer gucken,
- 30:53also nicht immer ne, sondern in bestimmten Situationen zum
- 30:56Beispiel auch das Beispiel noch mal sozusagen den.
- 30:59Rahmen zu schließen das Beispiel von vorhin, was ich angesprochen
- 31:02hab, wäre schön gewesen, wenn man einmal kurz über es war ja
- 31:05auch ne recht große Veränderung n recht großes Refactoring dann
- 31:08weil es wurde ja auch sehr viel dann angefasst, weil wir einige
- 31:11Tabellen irgendwo hatten, ja, dass man da vielleicht auch dann
- 31:14einmal im Team drüber spricht und sagt Okay, wie wäre es denn,
- 31:18ich hätte da eine Idee, sich die Idee anzuhören, im Team einen
- 31:21Konsens zu bilden und zu sagen. Lass uns das bis dahin machen,
- 31:25aber vielleicht nicht weiter. Das ist auch ein ganz cooler
- 31:30Punkt, den du ansprichst. Und zwar wir haben ja gesagt,
- 31:33das ist so ein Abwägen, also so eine Balance zwischen.
- 31:38Ich hab quasi eine hohe, wie soll ich sagen, Lesbarkeit und
- 31:42Verständlichkeit. Also ich ich verstehe was da
- 31:44drin passiert und auf der anderen Seite.
- 31:49Habe ich dann halt so diese Aspekte, der zum Beispiel die
- 31:53Wartbarkeit, die erhöht wird, wenn es nur ein Punkt ist, was
- 31:55wir so als Vorteil genannt haben.
- 31:57Und jetzt habe ich so diese Gegenüberstellung und ich finde,
- 31:59das muss man halt ausbalancieren, zu sagen, ist
- 32:02mein Code noch verständlich und. Habe ich zum Beispiel Dry
- 32:05angewandt, um die Wartbarkeit und die Fehleranfälligkeit, also
- 32:08die Wartbarkeit? Erhöhen und Fehleranfälligkeit.
- 32:10Verregert so ne und das musst du irgendwie ausbalancieren und ich
- 32:13finde, das ist eigentlich die Schwierigkeit dabei, diesen
- 32:17Mittelweg zu finden. Und weil du jetzt die Teamarbeit
- 32:21genannt hast, finde ich es zum Beispiel echt cooler Aspekt,
- 32:24wenn man sagt okay, wir machen jetzt Code Reviews, weil dann
- 32:28guckt man da zusammen drauf und erkennt vielleicht ja ne, hier
- 32:32können wir das Re factor, hier können wir das zusammenfügen.
- 32:35Wenn man sich einfach auch Meinungen von anderen aus dem
- 32:37Team einholt. Um zu entscheiden.
- 32:42Ist. Diese Duplikation jetzt in
- 32:44Ordnung, ne, also Redundanz ist ja nicht zwangsläufig immer
- 32:48schlechter. Also ich finde man darf das halt
- 32:49nicht so engstündig betrachten, sondern man muss dann
- 32:51entscheiden, ist es an der Stelle gerechtfertigt oder haben
- 32:56wir einen Cooleren weg, indem wir das zusammenfassen?
- 32:59Definitiv. Ich finde, das ist ein ganz
- 33:02Gutes, das rundet die Sache ganz gut ab.
- 33:07Dankeschön. Dankeschön.
- 33:08Also im Endeffekt ist es ja so, wenn wir uns das ganze jetzt
- 33:11noch mal, wenn wir das ganze jetzt noch mal Revue passieren
- 33:14lassen. It yourself don't repeat
- 33:18yourself Prinzip. Ich will immer do it yourself
- 33:19sein. Das Don't Repeat yourself
- 33:22Prinzip ist ja im Endeffekt dafür da, dass man hauptsächlich
- 33:25Redundanzen vermeidet. Die Erhöhung der Wartbarkeiten.
- 33:31Gewährleistet und auch Erweiterbarkeit und auch eine
- 33:35Fehlervermeidung. Irgendwie.
- 33:36Dadurch schafft bei der Erweiterung oder der Wartung,
- 33:41und das ist natürlich auf jeden Fall auf der haben Seite, und es
- 33:44ist natürlich ein Prinzip, was man definitiv bei der
- 33:48Programmierung immer im Hinterkopf haben sollte, so,
- 33:52aber vielleicht möchtest du noch mal ganz kurz zusammenfassen, wo
- 33:55man vielleicht darauf achten könnte, wenn man das denn an,
- 33:57also wo die Herausforderungen liegen.
- 34:00Ja, also wie gesagt, die Challenges dabei sind.
- 34:05Kann zwar eigentlich immer N-Weg finden es zusammenzufassen, aber
- 34:07die Frage ist leidet darunter die verständlichkeiten
- 34:10Lesbarkeit, das heißt, dass andere auch Probleme haben
- 34:13diesen Code dann nachzuvollziehen, also dass man
- 34:16halt nicht in diese Reporter geht und sagt zum Beispiel, ich
- 34:18abstrahiere jetzt alles, damit alles aus einer Funktion
- 34:22aufgerufen werden kann, dann parametrisiert man die und dann
- 34:24ist geil. Dann habe ich eine Funktion für
- 34:26die gesamte Software, jetzt war ganz überspitzt.
- 34:28Overengineering. Style genau das ist halt den
- 34:31wirklich. Over engineering at its best.
- 34:34So, und das macht halt den einfach auch gar keinen Sinn
- 34:37mehr, deswegen so als Take Home Message.
- 34:41Redundanzen sind nicht zwangsläufig schlecht, also man
- 34:44darf nicht so engstirnig an die Sache rangehen und sagen, ich
- 34:47darf das auf gar keinen Fall machen, das habe ich früher mal
- 34:50eine Zeit lang gemacht, weil ich dachte okay, sonst ist es nicht
- 34:53gut gecoated, aber das stimmt in meinen Augen einfach nicht.
- 34:55Aus meiner Sicht ist das nicht richtig, das so zu betrachten,
- 34:58sondern. Es ist eine Richtlinie, es ist
- 35:00ein Wegweiser und. Es animiert halt, sich die
- 35:04richtigen Gedanken zu machen, zum Beispiel beim Refactor.
- 35:07Ja, find ich gut. Weise Worte, mein Herr.
- 35:12Danke, danke. Und es ist halt wie gesagt
- 35:14Kontextabhängig auch n wichtiger Punkt nicht von Projekt zu
- 35:17Projekt kannst du sagen OK ich hab jetzt wieder so ne Art
- 35:20Datensammlung hier, ähnlich wie beim anderen Projekt, da jetzt
- 35:23auf jeden Fall Drive soweit, das kann halt wieder unter anderen
- 35:27Gegebenheiten komplett anders aussehen, definitiv mehr habe
- 35:31ich auch dazu nicht also ich denke wir haben das eigentlich
- 35:34relativ kleine Prinzip ausführlich besprochen und ich.
- 35:38Finde es auch gut, dass wir das auch kritisch beleuchtet haben,
- 35:40weil wie gesagt, das muss man auch mal aus der Sicht
- 35:42betrachten. Ja, es ist ja nicht immer alles
- 35:44Gold, was glänzt oder wie es so schön heißt, selten, dass ich
- 35:48mein Sprichwort richtig sage. Es ist nicht alles drivers.
- 35:52Glaube ich. Genau so sagt man eigentlich so.
- 35:55Sagt man eigentlich. Ja, dann würde ich sagen, wenn
- 35:59du auch nichts mehr hast, würde ich auch die Folge jetzt
- 36:01beenden, ja. Danke für den.
- 36:03Haus ja ausführlich beleuchtet ja, vielen Dank auch für deine
- 36:07Geschichte mit der Tabelle, weil das war ein super Beispiel.
- 36:10Waren es denn vielleicht doch zu extrem wird.
- 36:13Ohne jetzt dem Entwickler zu nahe treten zu wollen, weil er
- 36:16hat es ja scheinbar auch echt geil gecoded, aber das ist halt
- 36:19so. N klassisches Beispiel von
- 36:21andere verstehen es irgendwann. Nicht mehr, dann hast du keine
- 36:25Frage, ne, das will ich damit ja auch gar nicht sagen, nur an der
- 36:27Stelle hat es halt im Team nichts.
- 36:28Gebracht ne genau und das ist genau der Trade, auf dem man
- 36:31dann hat irgendwann. Ja, ansonsten liebe zuhören,
- 36:35Liebe zuhören. Falls du Anmerkungen hast zum
- 36:36Drive Prinzip, Ergänzungen oder vielleicht auch Erfahrungen
- 36:39gemacht hast, wann es dir geholfen hat und wann nicht,
- 36:42dann lass uns das doch gerne wissen.
- 36:44Die Mail findest du wie immer, also die Mail vom Podcast in den
- 36:47Shownotes schreib uns gerne, wir würden uns freuen, wir werden
- 36:50auch darauf eingehen, dann Diskussionen sind immer herzlich
- 36:53willkommen, ansonsten wenn du sonst Feedback hast, lass uns
- 36:56das auch gerne zukommen, empfehle auch gerne wenn dir
- 36:59Podcast gefällt. 2 oder 3 Leuten diesen Podcast weiter, das würde
- 37:03uns auch sehr freuen. Ansonsten findest du in den Show
- 37:07Notes auch noch einen Link. Da hast du die Möglichkeit eine
- 37:10kleine Spende zu hinterlassen, falls dir das zusagt, was wir
- 37:13hier machen und möchtest, dass noch weitere Folgen entstehen.
- 37:16Weil das hilft uns auf jeden Fall, unseren Content zu
- 37:18verbessern und dranzubleiben. Es macht uns ja auch ne Menge
- 37:21Spaß und ansonsten würde ich sagen, hören wir uns alle beim
- 37:25nächsten Mal wieder und bis dahin bis zum nächsten Mal deine
- 37:29Coding Buddies. Gemeinsam besser.
- 37:40Was?