Latest / Coding Buddies | Tech & Dev-Mindset / #140 Warum Domain-Driven Design den Unterschied macht
Transcript
- 0:00Und ich finde, da sieht man wahrscheinlich relativ schnell,
- 0:02dass Domain driven Design jetzt eher sich.
- 0:04Kkw Maschinenhersteller finden. Da sieht man bei meinen.
- 0:08Begriffen hier Coding Buddies Dein Podcast rund um
- 0:12Softwareentwicklung und aktueller Tech News.
- 0:15Herzlich Willkommen. Herzlich Willkommen zur neuen
- 0:28Folge des Calling Bodys Podcast. Schön, dass du wieder
- 0:31eingeschaltet hast. Und wie soll's anders sein,
- 0:34deine Gastgeber, meine Wenigkeit, der Tino und der
- 0:36fantastische Fabi. Er grinst mich wie jeden
- 0:39Donnerstag hier an, er ist bereit für ne neue Folge
- 0:42herzlich willkommen, fabi, was geht?
- 0:44Ab was geht ab, Mann, ich find's, ich weiß nicht was bei
- 0:52dir grinsen ist, aber ich zieh die heftigsten Grimassen.
- 0:57Ja, das sind für mich ich ja, weißt du, ich bin ja immer sehr
- 1:00positiv, so weißt du und ich denk mir dann nenn ich das
- 1:02einfach mal grinsen, das klingt halt so schön, weißt du und alle
- 1:05so, oh ja, der grinst vor sich hin, muss ja keiner wissen, dass
- 1:09du total die. Grimassen ziehst.
- 1:11Das Ding ist ganz am Anfang vom Podcast.
- 1:13Weißt du noch, es war so übertrieben aufgeregt, weißt du,
- 1:15der erste, die 1. Folge ja und jetzt ist halt so,
- 1:19machst du halt Grimassen. Also so Auflockerungsübungen für
- 1:24die Gesichtsmuskeln genau genau, genau vorher sing ich immer noch
- 1:28n bisschen weißt du, damit es ja ja klar na versteh ich versteh
- 1:32ich ja, es ist ja auch schon ne n bisschen Zeit ins Land
- 1:36gegangen also ja wir haben ja schon n paar folgen gemacht, ist
- 1:40so, da kommt dann irgendwann auch so n bisschen Routine rein,
- 1:42aber ich hab trotzdem jede Woche Bock ne Folge mit dir
- 1:44aufzunehmen und ich freu mich auch auf das heutige Thema aber.
- 1:48Lasst uns erstmal über ne andere Sache reden, die die Woche
- 1:51abgegangen ist. Ja, am Dienstag, also wir haben
- 1:56es quasi gerade erst verdaut, hat ja unser For connect extreme
- 2:00Turnier stattgefunden, live auf Twitch.
- 2:03Die Bots sind angereist, die Zuschauer auch, es war n
- 2:06absolutes Spektakel und ich muss sagen, also n bisschen
- 2:09verarbeiten tu ich es ja immer noch ne also es war es war
- 2:12krass, es war einfach krass. Ja, das fand ich auch krass.
- 2:15Vor allen Dingen das, was ich auch, also was für mich krass
- 2:18war, war, dass ich das Gefühl, also wir sind, wir haben ja
- 2:20nicht ganz so lange gestreamt wie sonst immer, es war ja quasi
- 2:23relativ, also eher früher vorbei als normaler Twitchstream ne,
- 2:28aber nichtsdestotrotz boah ich komplett fertig danach, ich
- 2:33glaub, weil ich so aufgeregt muss und Bock hatte und es hat
- 2:35Spaß gemacht, wir haben das ja wieder so richtig schön
- 2:38moderiert und. Es war auf jeden Fall n richtig
- 2:40geiles Event. Auch alle die dabei waren ne
- 2:43Riesen Dank für den tollen Abend war richtig cool, hat Mega Spaß
- 2:46gemacht. Auf jeden Fall.
- 2:48Man muss natürlich fairerweise sagen, wir haben n bisschen
- 2:50früher angefangen, also vielleicht war der Stream gar
- 2:52nicht wirklich kürzer, wenn ich so jetzt so, also ich dachte
- 2:55auch mal krass, war ja eigentlich n kürzerer Stream und
- 2:58trotzdem völlig fertig gewesen danach, aber eigentlich ging ja
- 3:01fast ansatzweise gleich lang wie sonst.
- 3:03Wir haben nur früher angefangen. Aber ich hab länger.
- 3:05Geschlafen, drüber, nachdenkst, weißt du?
- 3:07Und das trotzdem war ich müde danach, weil es halt einfach
- 3:10weißt, hat ausgelaugt, zweimal so aufregend.
- 3:12Ja, das stimmt, das stimmt, das stimmt.
- 3:14Ich war auch richtig angespannt, muss ich sagen.
- 3:16Ja, man muss ja auch sagen, dass die die Bots, die eingereicht
- 3:20wurden, ne, die hatten ja auch schon n gutes Niveau, also da
- 3:23ging schon einiges ab, deswegen waren es halt auch super
- 3:25spannende Matches. Absolut.
- 3:26Also wir hatten ja insgesamt 16 Bots, das heißt, es gab ne
- 3:28Gruppenphase, also richtig, wieso so n geilen Turnier und
- 3:31danach ne n Playoffs quasi ne KO runde.
- 3:35Oh, das war ja also die Spannung war ja, das war ja der Hammer,
- 3:37also gerade wenn so n Spiel richtig knapp war zwischen den
- 3:40Bots und dann so n Gewinner ermittelt wurde absolut geil
- 3:44also auch an dem Punkt noch mal Herzlichen Glückwunsch an alle
- 3:48Gewinner an die ersten 4 Plätze und noch mal n riesen Dankeschön
- 3:52an alle die teilgenommen haben ich hoffe ihr hattet Spaß beim
- 3:55Implementieren also das Feedback war auf jeden Fall super noch
- 3:58mal vielen vielen Dank an unseren Hauptsponsor Jet Brains
- 4:01an der Stelle die auch Gewinne mit beigesteuert haben.
- 4:05Und an alle, die sich jetzt denken, weil sie jetzt
- 4:09vielleicht gerade hier zuhören und sich denken, ah, da hätte
- 4:10ich auch gern mitgebracht, ich hab es vielleicht nicht
- 4:12mitgekriegt oder hatte nicht so Zeit.
- 4:14Keine Sorge, es wird auch ne dritte Auflage von dem Turnier
- 4:18geben, also von dem For connect Extreme und natürlich auch von
- 4:22den anderen Turnieren, wir hatten ja bisschen früher im
- 4:25Jahr das Flappy Buddy Turnier zum Beispiel, das ist ja n
- 4:27anderes Spiel, da wird es auch ne weitere Auflage geben und.
- 4:30Ich sag mal so Spoilerwarnung. Wir haben ja auch schon die Idee
- 4:34für ein weiteres Spiel, was so gerade in der Community auch so
- 4:36ein bisschen entwickelt wird, wie das so sein soll und davon
- 4:39wird es dann natürlich auch Turniere geben, also hier auch
- 4:42noch mal ganz offiziell die Einladung, Liebe zuhören, lieber
- 4:46zuhören, falls du noch nicht auf unserem Discord bist und dir
- 4:48denkst, die Community klingt wirklich cool, jetzt mache ich
- 4:51den Schritt, ich gehe da mit rein und möchte mit planen an
- 4:54dem nächsten Turnier und an dem Spiel, du bist herzlich
- 4:56eingeladen die Links wie immer in den Shownotes.
- 5:00Nach dem Turnier ist vor dem Turnier.
- 5:02Genauso sagt man genauso wie bei Podcast folgen nach einer
- 5:06Podcast Folge ist vor der Podcast Folge ich weiß gerade
- 5:08gar nicht wo wir sind nach oder vor aber auf jeden Fall
- 5:11mittendrin. Ja und dann lass uns doch auf
- 5:16jeden Fall mal das Thema Reinstarten und zwar ist es auch
- 5:20n Thema was auch tatsächlich, weil du es gerade gesagt hast.
- 5:22Community aus der Community kommt zwar n Wunsch und es geht
- 5:25um Domain driven Design in dieser Folge.
- 5:29OK. Und also, wenn wir jetzt da mit
- 5:32reinstarten, möchte ich dir eigentlich mal so ne Frage
- 5:34stellen, ne, um um jetzt reinzukommen in diese Folge und
- 5:36zwar hattest du das schon mal irgendwann so in deiner Laufbahn
- 5:41als Softwareentwickler, als in deinem Dasein, dass es
- 5:45irgendwann mal dazu gekommen ist, dass irgendwie auf
- 5:50technischer und fachlicher Ebene aneinander vorbeigeredet wurde.
- 5:56Also ist jetzt die Frage jetzt, ob es mal vorgekommen ist oder
- 6:00ob es irgendwann mal nicht vorgekommen ist.
- 6:04Ich glaube so kann man das schneller beantworten.
- 6:07Nein, es ist noch nicht nicht vorgekommen, sozusagen.
- 6:12Ja, das ist gang und gäbe. Ne.
- 6:13Also gerade wenn Projekte größer werden und mehr Parteien da drin
- 6:17sind und das vielleicht nicht alles die absoluten Coder und
- 6:21coderin sind und man sich quasi auf low Level Ebene technisch
- 6:25unterhält, sondern übergeordnet fachlich, dann sind
- 6:29Missverständnisse sehr oft der Fall.
- 6:32Ja das geht ja dahin, dass du irgendwann Begriffe verwendest,
- 6:38wo beide Seiten. Bild von Harm aber es nicht das
- 6:42Gleiche ist. Und das ist Realität, dass sowas
- 6:44passieren kann, weil du hast ja je nachdem in welcher Branche
- 6:47oder was nicht, Branche in welchem Bereich, auf welchem
- 6:49Level du dich bewegst, gibt es ja, so sag ich mal, allgemeine
- 6:54Begriffe ja, also das Wort an sich ist n allgemeiner Begriff,
- 6:58aber es steht für was spezifisches in deinem Kontext
- 7:01und. In einem anderen Kontext für was
- 7:03anderes spezifisches und bis man da merkt, dass man aneinander
- 7:08vorbei redet, ist absolut keine Seltenheit.
- 7:10Ja, ich mein, das fängt ja auch teilweise schon an, wenn du
- 7:12keine Ahnung, irgendwer kommt von draußen rein, ne als
- 7:15irgendwie einfach fiktiv und sagt erst hast du gesehen was da
- 7:17draußen los ist. Also nee, meinst du das?
- 7:20Nein, wieso glaubst du das? Nein ich mein das ne, also dass
- 7:23man direkt also die Assoziation, also allein schon das worauf
- 7:27jemand irgendwie wert legt, was was im Fokus von einer
- 7:30bestimmten Person steht ist ja schon mal was ganz anderes, ne
- 7:33also der eine denkt sich dann zum Beispiel ja okay draußen, da
- 7:36hab ich zum Beispiel das und das gesehen, weil es mir irgendwie
- 7:39aufgefallen ist, weil was weiß ich, da steht auf einmal
- 7:41irgendwie n verlassenes verlassene Pflanze draußen, die
- 7:44irgendwer nicht mit reingenommen hat, der andere meint aber, dass
- 7:46jemand falsch geparkt hat, ne? Ist es halt der Fokus, der
- 7:51berühmte. Blickwinkel dann ne genau worauf
- 7:53man achtet. Und ich finde, das ist halt,
- 7:55wenn wenn so ne Kleinigkeiten schon vorkommen, dann ist es ja
- 7:58eigentlich relativ einfach, auch gerade in solchen komplexeren
- 8:02Bereichen auch in diesem Modus zu kommen, dass man halt
- 8:05vielleicht ne andere Sichtweise auf bestimmte Dinge hat, ne und
- 8:09weil du ja auch jetzt gesagt hast, fachliche Ebene.
- 8:13Oder Fachlichkeit hatten wir auch gesagt.
- 8:15So, ich hab mich irgendwann, da hatte ich mich auch mal mit
- 8:18jemandem unterhalten und da ging es dann auch immer so um beim
- 8:21Programmieren, da war ich noch relativ frisch, auch so
- 8:23Einsteiger im in in der Softwareentwicklung
- 8:27beziehungsweise als als Berufseinsteiger ne das mein Ich
- 8:30und da wurde dann auch mal hab ich mich mit jemandem leicht
- 8:33zusammen per Programming gemacht mit jemandem der dann auch.
- 8:36Ja, sagen wir mal viel mehr Erfahrung hat und dann noch mal
- 8:38meinte, so, wenn ich dann irgendwie Vorschläge gemacht
- 8:39hab, meinte er so ja gute Idee, aber das ist wir müssen genau
- 8:43uns überlegen was eigentlich die Fachlichkeit ist.
- 8:45Ne also wir dürfen das jetzt nicht so technisch betrachten,
- 8:47also er war quasi schon in diesem Mindset Domain driven
- 8:50design drin ne und ich hab es aber irgendwie überhaupt nicht,
- 8:53ich dachte mal was will er denn mit seiner Fachlichkeit, ne?
- 8:56Und da gehen wir auf jeden Fall noch mal genauer drauf ein, was
- 8:59jetzt wirklich ne Fachlichkeit ist, weil wir gesagt haben, OK,
- 9:01es gibt natürlich ne, man kann von der technischen Seite das
- 9:04ganze betrachten und von der fachlichen Seite, dass diese
- 9:06Unterscheidung noch mal n bisschen genauer klar wird, das
- 9:08kommt auf jeden Fall in Erfolge dran, das wird auf jeden Fall
- 9:11auch das Ziel dann am Ende sein und halt zu gucken, was ist
- 9:16Domain driven Design eigentlich ne, also es ist ja oft so, dass
- 9:19es so bestimmte ich sag malideen gibt, die so rumgeistern oder so
- 9:25annahmen sowas wie. Domain driven Design ist n
- 9:27Architektur pattern oder wenn von Domain driven Design
- 9:31gesprochen wird, dann nutzt du Microservices, solche Sachen,
- 9:34aber das entspricht nicht unbedingt der Wahrheit,
- 9:37jedenfalls nicht genauso diese Gleichstellung sozusagen ne ja
- 9:42und da würd ich sagen, dass wir uns das einfach mal so angucken,
- 9:46was es damit alles auf sich hat, oder?
- 9:48Ja, absolut. Und ich glaub das ist schon der
- 9:50erste Wichtige. Punkt, den man hier am Anfang
- 9:54der Folge direkt mal nennen sollte, bevor wir tiefgreifender
- 9:57darauf eingehen. Dass also Test, Test, das Test
- 10:03driven das ist bei mir einfach drin, immer domain driven Design
- 10:06ist für mich halt auch vom großen Prozentsatz aus ne
- 10:12Mindset frage oder n oder ne Herangehensweise die im.
- 10:17In der Einstellung startet sozusagen, und daraus können
- 10:21Architekturentscheidung resultieren oder sollten daraus
- 10:25resultieren. Aber wie du schon meintest, es
- 10:26ist kein kein Architektur Pattern oder irgendwas was du
- 10:30direkt dann so umsetzt ne weil dann bist du ja schon wieder
- 10:33auch sehr stark technisch unterwegs und das ist ja gar
- 10:36nicht das worum es gehen soll, ne oder wie du meintest.
- 10:40Was DDD ja, Microservices alles klar los geht es, wir legen los,
- 10:44darum geht es ja gar nicht ne, sondern man muss sich halt bei
- 10:47also wenn man über dieses Thema spricht mal n bisschen wirklich
- 10:51auch frei machen davon und das fällt halt manchen Leuten,
- 10:54gerade auch einsteigerinnen und Einsteigern, weil du das ja
- 10:57gerade erwähnt hattest, weil mir ging es genauso.
- 11:00Schwer, sich davon n bisschen frei zu machen, weil man neigt
- 11:04dazu, immer sehr schnell ins technische zu gehen und sich zu
- 11:07überlegen, wie implementiere ich das jetzt?
- 11:09Ah na warte mal, warte mal jetzt jetzt braucht Datenbank hier
- 11:13dann anbinden Oh nee, da in dem Fall müssen wir aber auf das und
- 11:16das achten, weißt du also kennst du das wenn so die Gedanken
- 11:20abdriften und man sofort im technischen ist und damit mit
- 11:23diesem Designansatz ja über den wir jetzt sprechen werden.
- 11:28Das Domain driven zu betrachten versuche ich bewusst davon
- 11:32wegzukommen und hab halt, wie du auch schon meintest, das Ziel,
- 11:36dass ich auf einer Ebene mit allen Beteiligten sprechen kann.
- 11:40Diese berühmte bekannte gemeinsame Sprache in
- 11:44Anführungszeichen, ne, dass wirklich jeder vom gleichen
- 11:47redet und nicht wie du meintest. Hast du das gesehen da draußen
- 11:50und der eine keine Ahnung sieht wie du meintest, der parkt
- 11:53falsch oder was auch immer und der andere sie guckt ganz
- 11:55woanders hin, dann hab ich ja nichts gewonnen.
- 11:58Ich find das so geil, weil du sagst, diese gemeinsame
- 12:00gemeinsame Sprache, ne, da hab ich n Begriff gehört.
- 12:03Also als ich das noch mal so n bisschen da drüber mir auch noch
- 12:06mal jetzt in im Zuge der Folge auch noch mal n bisschen so paar
- 12:09Sachen so quergelesen hab wahrscheinlich.
- 12:11Den gleichen, die ich auch gesehen hab.
- 12:12Ich kann ihn nur nicht aussprechen, so richtig.
- 12:14You you big, it is oder sowas language ne, das ist im
- 12:17Endeffekt so diese allgemeine Sprache, das wird wohl so
- 12:19genannt, hab ich vorher orderlich also den Begriff hab
- 12:21ich noch nie gehört, vorher ganz komisches Wort also.
- 12:25Mich würd mal interessieren ob das so n so n geläufiges ja ist
- 12:29so n Ding vielleicht im Englischen?
- 12:31Ich weiß es nicht genau, es ist ja ist ja quasi englischen, aber
- 12:34vielleicht wird das da viel öfter verwendet.
- 12:35Ich hab keine Ahnung, aber ich kann es halt wirklich
- 12:37wahrstellen so n alltagswort so weißt du so in jedem zweiten
- 12:40Satz, sprich bitte so nee, aber ich find es auf jeden Fall gut,
- 12:45dass weil du meintest, so dass man da relativ schnell
- 12:48abdriftet, ne und sagt so OK, ich bin so relativ technisch
- 12:52direkt unterwegs, ne und ich find das, aber eigentlich ist es
- 12:54ja komisch, dass es passiert so ne, weil wenn du jetzt zum
- 12:57Beispiel mal dir überlegst, ne so als kleine Analogie, ja stell
- 13:00dir mal vor, meine Kaffeemaschine ist kaputt und du
- 13:02denkst dir ne ja pass auf wirklich doof das Fabian mag
- 13:08gerne Kaffee ne ich bring ihm einfach mal also du bringst mir
- 13:11jetzt ne Kaffeemaschine mit weil du noch eine übrig hast und
- 13:14denkst dir so Mensch Junge. Komm, du darfst hier nicht out
- 13:17of Kaffee laufen. Ne, das ist das ist n no go, das
- 13:19dürfen wir nicht machen. So also bringst du mir eine mit,
- 13:21stellst du mir n Flur so ne und jetzt ist die Frage ne weil
- 13:25angenommen ich kenne diese Kaffeemaschine nicht ne du ich
- 13:29hab vielleicht weiß ich nicht bin auch n bisschen blöd in
- 13:32diesem Moment keine Ahnung du musst mir jetzt erklären wie ich
- 13:35diese Kaffeemaschine einschalte oder wie ich die überhaupt
- 13:38generell jetzt einsatzbereit bekomme wie würdest du das
- 13:40machen? Also was würdest du sagen was
- 13:42ich machen müsste damit ich mir Kaffee damit kaufe kochen kann.
- 13:45Na ja, ich würde erst mal sagen, dass du ausrechnen musst,
- 13:49wieviel Kraft du aufwenden musst, um diese Kaffeemaschine
- 13:51hochzuheben. Das würde man erst mal
- 13:55berechnen. Ja dann die Distanz berechnen
- 13:59zum finalen Punkt, der auch ermittelt werden muss, ganz klar
- 14:02OK, mit dir kann man das nicht machen, genau genau das soll ja
- 14:06nicht sein, ne? Du sagst ja auch nicht keine
- 14:09Ahnung. Und ja, so wie ich das gerade
- 14:12meinte, ne Wende jetzt bitte Kraft XY auf um diese
- 14:16Kaffeemaschine anzuheben, sondern.
- 14:18Kinetische Energie um die Kaffeemaschine in die Küche zu
- 14:21bringen und leite 230 Volt in die Kaffeemaschine, so das würde
- 14:25ja auch keiner machen, da würdest du sagen, Nimm die
- 14:26Kaffeemaschine, Pack die in die Küche, Steck Stecker rein und
- 14:29drück auf an, so nach dem Mut, das ist ja.
- 14:31Ist n Schalter on. Genau.
- 14:34So, aber das ist halt genau der Punkt, weil in solchen Momenten
- 14:36ist, fängt man ja nicht an, technisch darüber zu reden, so,
- 14:38man ist ja auf einer fachlichen Ebene, man überlegt sich, OK,
- 14:42wie funktioniert das, was ich ja eigentlich machen soll, ne, wie
- 14:45erkläre ich das ganze fachlich, dann mach die Kaffeemaschine an,
- 14:48indem du auf Andrückst. Es ist halt so.
- 14:49Das klingt jetzt so n bisschen witzig, aber es ist halt
- 14:52eigentlich n ganz gutes Beispiel, weil wir würden uns ja
- 14:54auf einer fachlichen Ebene. Wenn man das jetzt fachliche
- 14:57Ebene nennen kann bei einer Kaffeemaschine, da aber
- 14:59unterhalten, weil wir reden vom gleichen und du weißt, wenn ich
- 15:02dir sage, Steck bitte den Stecker rein, dass du auch bitte
- 15:06dann den Stromanschluss da bereitstellst sozusagen ne und
- 15:12genau darum geht es halt auch, dass man genau auf so einer
- 15:14Ebene dann kommunizieren kann und man sich um die eigentliche
- 15:19Fachlichkeit der Kaffeemaschine. Unterhält und wie man das
- 15:23umsetzen kann und nicht darum, wie es intern sag ich mal
- 15:26elektronisch umgesetzt ist, weil das interessiert dich als Kunde
- 15:30zum Beispiel oder als als ja doch nehmen wir mal den Kunden
- 15:35im Sinne von dem Kaffeetrinker. Interessiert dich das ja nicht.
- 15:38Ja, richtig, und da kann halt auch n Rechtsanwalt mit einem
- 15:40Elektriker sprechen und dann wissen trotzdem alle wie das
- 15:43Ganze funktioniert, auch wenn der Elektriker vielleicht genau
- 15:45weiß wie das da mit dem Strom funktioniert, ne?
- 15:47Genau. Deswegen wollte ich erst sagen,
- 15:50so der der Maschinenhersteller, aber da gibt es natürlich Leute
- 15:54gut, doch nehmen wir mal das Beispiel, kann man auch ganz gut
- 15:56daran erklären, dass du sagst, aber auch bei einem bei dem
- 15:59Hersteller ne in dem Unternehmen die diese Maschinen herstellen,
- 16:02gibt es ja auch unterschiedliche Leute, da gibt es den
- 16:05Produktdesigner, dem ist halt wichtig wie die Knöpfe
- 16:08angeordnet sind, wie vielleicht die User Experience ist und den
- 16:11interessiert auch nicht wie die interne elektrische Schaltung
- 16:14aussieht, damit das so funktioniert wie er sich das
- 16:17vorstellt und trotzdem. Müssen ja die Entwickler ja,
- 16:20also sagen wir mal auch die, die wirklich das auf Elektroebene
- 16:24machen kommunizieren können die Produktdesigner und dann muss
- 16:28klar sein, wenn von dem Knopf geredet wird was passiert oder
- 16:32keine Ahnung weiß ich nicht irgendwelche Siebe, einläufe was
- 16:38auch immer man dann da besprechen kann, ja oder das
- 16:41Malwerk von mir aus auch da muss ja trotzdem jeder wissen worum
- 16:44es geht so ne. Genau.
- 16:46Und ich find da sieht man doch wahrscheinlich relativ schnell,
- 16:48dass. Domain driven design jetzt.
- 16:51Eher sich kein Kaffeemaschinenhersteller
- 16:53finden. Da sieht.
- 16:54Man bei meinen Begriffen hier. Ein Sieb sieb ist schon mal gut.
- 16:59Das kann man bestimmtes Hunderpro dabei und Mahlwerk
- 17:02gibt es auch. Erzähl mir doch nichts.
- 17:03Wir reden ja hier von Vollautomaten oder wir reden
- 17:05doch hier von Vollautomaten. Nein, ich beite gerade.
- 17:08Ne Filtermaschine ist doch logisch.
- 17:10OK, gut, dann bin ich raus. Nein, aber siehst du da?
- 17:13Haben wir schon wieder n? Nein, nein, aber also man, man
- 17:16sieht halt, dass deshalb zum Beispiel ist ja Domain driven
- 17:19Design keine kein Architektur Pattern oder so, das ist ja
- 17:21etwas, was im Kopf beginnt, ne also dass man sich wirklich
- 17:24überlegt, wie kann ich die Kommunikation maximal
- 17:28verbessern. Und dafür halt dann am Ende auch
- 17:31Sorgen, dass der Code halt eben auch besser ist.
- 17:33Dass alle am Ende über das gleiche reden, aber dass es halt
- 17:37eben nicht im Code anfängt, sondern halt in der
- 17:40Kommunikation ne und demzufolge halt logischerweise im Kopf.
- 17:45Demzufolge ist es halt eben auch nicht einfach nur irgendwie n
- 17:48Pattern wo man sagt, OK, gestalte deine Software so auch
- 17:52unter anderem, aber es geht vielleicht auch n bisschen
- 17:54darüber hinaus, ne? Wenn wir uns das ganze jetzt
- 17:58noch mal n bisschen technischer angucken, ne und sagen, OK, wir
- 18:00nehmen jetzt zum Beispiel das Kaffeebeispiel und unsere
- 18:02Kaffeefirma, keine Ahnung, die hat jetzt n bestellsystem ne und
- 18:07wir jetzt mal überlegen OK was ist jetzt eigentlich die
- 18:08Fachlichkeit bei diesem Bestellsystem, dann ist es ja
- 18:12so, dass im Großen und Ganzen die Fachlichkeit selber oder
- 18:16diese Domain, das kannst du gleichsetzen, die Fachlichkeit
- 18:18sozusagen die Domain an der Stelle und du möchtest jetzt
- 18:20etwas bestellen, das heißt du hast irgendwie n irgendwas mit
- 18:22Order ne Order. Das ganze Ordering ne, das ist
- 18:26sozusagen eine Domain die dahinter steht und da wird halt
- 18:29im Endeffekt mit dieser Fachlichkeit wird beschrieben
- 18:32was eigentlich passiert. Also es geht wirklich um die
- 18:34Abläufe oder so gewisse Regeln aus der Business Sicht.
- 18:38Ne wenn du jetzt zum Beispiel sagst du hast n Kunde der jetzt
- 18:41ne Bestellung aufgibt sag ich möchte jetzt gerne n Kilo Kaffee
- 18:43kaufen, beispielsweise in diesem Onlineshop oder was auch immer.
- 18:47Dann darf natürlich nur diese. Besteht diese Bestellung
- 18:49getätigt werden, wenn auch Kaffee verfügbar ist,
- 18:52beispielsweise, und wenn nicht, dann wird dem Kunden halt
- 18:54angezeigt, ey pass auf, das geht gerade nicht, du kannst das
- 18:58nicht bestellen, weil es nicht da oder so und zum Beispiel gibt
- 19:01es dann auch noch die weiß ich, die Regel, dass es erst
- 19:04losgeschickt wird, wenn es bezahlt wurde oder sowas in die
- 19:06Richtung, das heißt es wird ja. Einfach nur beschrieben, wie
- 19:12diese Domain ja in dem also dieses Geschäft in
- 19:14Anführungsstrichen, je nachdem wie groß du deine Domain siehst,
- 19:17aber zumindest diese diese online diese online Bestellung,
- 19:20diese Domain, diese Fachlichkeit wird einfach beschrieben.
- 19:23Wie funktioniert das, was für Regeln gibt es da ne auf der
- 19:26technischen Seite ist es halt anders, da bist du halt eher an
- 19:28einer technischen Lösung orientiert wie du ja auch schon
- 19:30meintest, dass man da relativ schnell hin abdriftet und sich
- 19:34dann sagt, wenn dir jemand zu dir kommt und sagt ich mein, das
- 19:36kennen wir ja glaub ich selber ganz gut ne.
- 19:38Kommt jemand zu dir hin und sagt Implementier Mal n Onlineshop,
- 19:41dann denkst du dir wahrscheinlich ehrlich, OK
- 19:43ramara, dann brauch ich irgendwie ne Datenbank wo meine
- 19:45ganzen Produkte drin sind. Wenn jetzt ne Bestellung kommt,
- 19:48wo wird die Bestellung gespeichert?
- 19:49Ah da nehmen wir vielleicht ne SQL oder ne Mongo DB.
- 19:52Das ganze packen wir in Kybernetes Cluster und wir
- 19:57implementieren es in in in Kotlin so ne und wenn jetzt aber
- 20:01zu viel Traffic kommt müssen wir das System skalieren das sind ja
- 20:03alles dann im Endeffekt diese. Ganze Technik, Performance,
- 20:06Infrastruktur, Datenhaltung. Was für Implementierungsdetails
- 20:10wollen wir dafür nehmen? Also das wie ne wie wird es
- 20:12umgesetzt und das ist ja sozusagen dieser kleine
- 20:16Unterschied zwischen die Fachlichkeit die du hast und
- 20:21halt eben diese technische Seite, ne?
- 20:24Ja, und wenn man das ganze jetzt sag ich mal domain driven macht.
- 20:29Du hast ja jetzt Ordering zum Beispiel genommen, dann.
- 20:32Ist es ja so, dass hier auch mal die Anmerkung, dass dein
- 20:37gesamtes Produkt oder deine Applikation, wie man es auch
- 20:41jetzt nennen möchte, auf welchem Schnitt ne.
- 20:44Besteht ja aus mehreren Domainen, sozusagen ne.
- 20:46Also es gibt dann verschiedene Abstufungen sozusagen, aber du
- 20:50kannst ja jetzt sagen, dieser ganze Bestellprozess ist ne
- 20:53Domain, geh ich mit ja und dann gibt es verschiedene Entitäten,
- 20:57wie jetzt der Kunde das Produkt ja also was du jetzt so genannt
- 21:01hattest, um das noch mal so n bisschen einzuordnen, genauso
- 21:04gibt es ja aber auch weitere Domain, dass Du sagen kannst OK,
- 21:07aber payment ist auch noch mal ne eigene Domaine, weil der
- 21:10Kunde oder der. Projekt Verantwortliche sagt,
- 21:14Ich möchte oder wir müssen dafür sorgen, dass man das Produkt
- 21:18auch bezahlen kann. Ja, er kommt ja nicht um die
- 21:21Ecke und sagt, wir müssen übrigens hier Payment Service XY
- 21:24anbinden, dafür müssen wir folgenden Request machen und das
- 21:28Mitsenden und hier damit wird er ja nicht um die Ecke kommen, das
- 21:31sind Themen die beschäftigen dich nachher wenn du quasi Dinge
- 21:35implementieren möchtest, aber auf Domain ebene diskutierst du
- 21:39ja nicht. Auf diesem Level sozusagen,
- 21:42sondern du sagst vielleicht, wir müssen gewährleisten, dass wir
- 21:46verschiedene Bezahlmöglichkeiten anbieten.
- 21:49In genau dieser Payment Domain. Ne, wenn wir uns da also mit dem
- 21:52Blick auf diesen Punkt gucken sozusagen, und so geht das ja
- 21:56immer weiter, ja, also kannst du denn halt dein, dein ganze, dein
- 22:00ganzes Projekt strukturieren, mit dem richtigen Blickwinkel
- 22:05sozusagen. Ich find das gut, dass du sagst,
- 22:07dass dass man es halt theoretisch unterschiedlich.
- 22:11Ich sag mal trennen kann oder eingliedern kann oder splitten
- 22:15kann wie du es nennen möchtest. Also die einzelnen Domains, weil
- 22:18ich finde ich weiß nicht wieso dein deine Gedankengänge
- 22:21normalerweise funktionieren, also ein bisschen weiß ich es,
- 22:23weil wir kennen uns ganz gut, aber bei mir ist es oft so, dass
- 22:27ich mir zum Beispiel denke ja hier domains ne so mach domain
- 22:29driven design, da musst du das in Domains teilen, dann denke
- 22:32ich mir oder ne wenn ich anfange mit einem neuen Thema.
- 22:35Und vielleicht geht es ja auch irgendwie.
- 22:37Jetzt zum Beispiel Dir Liebe zur lieber Zurer, so dass du denkst,
- 22:40OK, domains, aber was sind denn jetzt meine Domains, ne?
- 22:42Und ich find das ist halt immer schwierig, weil für mich ist es
- 22:45gerne. Also ich hab gerne sowas wie, ja
- 22:48das ist halt also das sind die Regeln, dann ist es ne Domain,
- 22:51aber es ist halt schon n bisschen floating ne weil du
- 22:54musst ja überlegen, OK was ist denn jetzt wirklich eine
- 22:57Fachlichkeit ist eine Fachlichkeit die komplette
- 22:59Bestellung ne dass du einfach sagst OK Bestellung umfasst
- 23:03sowas wie. Den Warenkorb, den die
- 23:06Bezahlung, das ordern, weißt du dieses Ganze, weil weil du ja
- 23:09auch meintest, es gibt ja Payment zum Beispiel, es gibt es
- 23:10gibt Ordering was auch immer und es ist halt genau die Frage und
- 23:16das kann man nicht pauschal beantworten, was eine Domain
- 23:19ist. Es ist immer die Fachlichkeit
- 23:21und das liegt im Auge des Betrachters und da ist es halt
- 23:23auch wichtig, wenn man gerade so nach Domain driven Design
- 23:25arbeiten möchte, dass man genauso was abklärt, ne also
- 23:31zwischen dem Team. Und ich sag mal dem Fachbereich,
- 23:34mit dem dann sozusagen diese Anwendung oder dieses Produkt
- 23:36oder was auch immer entwickelt wird, dass man auch wirklich mal
- 23:40klipp und klar absteckt, was ist denn jetzt eigentlich zum
- 23:43Beispiel eine Domain, was ist eine Fachlichkeit, ne, was
- 23:45gehört zusammen, weil ich finde, und da, da geht es auch wieder
- 23:49um den Punkt Kommunikation, weil oft werden einfach Dinge
- 23:52angenommen, manchmal denken ja oder denkt so n Fachbereich gar
- 23:56nicht darüber nach oder so Fachexperten.
- 23:59Was es eigentlich bedeutet, weil es für die Leute so unglaublich
- 24:01klar ist. Aber kennst du das, wenn du dir
- 24:04etwas total klar ist? Aber du kannst es trotzdem
- 24:07eigentlich nicht richtig beschreiben, weil es einfach nur
- 24:09so n Gefühl ist und das passt. Das passt zusammen, das ist eine
- 24:12Sache, das ist eine Sache, aber du kannst es nicht explizit
- 24:15beschreiben. Ja, also das ist halt gerade
- 24:18wenn man sich lange in ein Thema reingräbt und sich da auskennt
- 24:22und da quasi zu Hause ist, dass genau diese Momente auftreten,
- 24:25dass du sagst. Ja, ist doch logisch, oder?
- 24:28Oder beziehungsweise dass du verknüpfen kannst, dass gewisse
- 24:31Dinge einfach immer zusammenhängen, was aber von
- 24:35außen und ich sag bewusst außen ne für Leute, die jetzt
- 24:39vielleicht auf eher auf fachlicher Ebene da unterwegs
- 24:42sind, das gar nicht bewusst ist, dass Dinge immer zusammenhängen
- 24:46und dass man vielleicht an der Stelle.
- 24:48Ganz andere Domain hat, als man gerade vom Mindset her, also
- 24:51als, als dass man gerade annimmt, sozusagen ne da.
- 24:56Deswegen gibt es ja auch zum Beispiel den Begriff von
- 24:58Aggregates, dass du sagst, es gibt Verbünde, die immer
- 25:03zusammenhängen und nur zusammen funktionieren.
- 25:05Und wenn du dir über sowas Gedanken machst, kannst du halt
- 25:08auch besser Domain bilden. Ja, ja, beispielsweise weil du
- 25:15meintest, der Bestellprozess, das wird halt keinen
- 25:17Bestellprozess ohne einen Kunden geben.
- 25:19Ja, also irgendwer muss es ja bestellen genauso.
- 25:23Ja, ich will mich jetzt nicht zu weit aus dem Fenster lehnen,
- 25:26aber sagen wir mal so n Warenkorb, weil du den gerade
- 25:28genannt hast. Der muss halt auch irgendwo im
- 25:30Bestellprozess irgendwie ne Rolle spielen, weil wo brauch
- 25:33ich n Warenkorb außerhalb sozusagen.
- 25:35Ja, genau, definitiv. Und so kann man denn halt quasi
- 25:40auch anhand dieser Entitäten, die da involviert sind, auch
- 25:44Domains dann irgendwie gliedern, sag ich mal.
- 25:46Beziehungsweise du, du Meißelst das ja nicht in Stein und sagst,
- 25:51so sieht das aus, sondern es ist deswegen am Anfang dieser
- 25:54Aussage, es ist irgendwo auch Mindset 80% Mindset, würd ich
- 25:58mal sagen ne, weil du halt immer mit diesem Gedanken da rangehen
- 26:02musst sozusagen. Ja, auf jeden Fall.
- 26:04Und wenn wir jetzt, also wir haben jetzt.
- 26:06Ich ich denke so so was jetzt ne Fachlichkeit, das haben wir
- 26:09eigentlich ganz gut abgeklärt und gerade bei Domain driven
- 26:12Design geht es ja auch vor allem darum zu sagen, ich möchte nicht
- 26:15die Fachlichkeit mit der technischen Seite vermischen, da
- 26:18hab ich mich zum Beispiel auch als ich das erste Mal oder als
- 26:20ich überhaupt so generell so n bisschen auf Domain driven
- 26:22Design mal gestoßen bin, dachte ich mir mal so, aber du brauchst
- 26:25ja irgendwann technisch das technische, muss ja mit rein,
- 26:28also wie kann es sein, dass sozusagen, dass man diese diese
- 26:32Technik da ich sag mal also für mich war es dann so OK soll die
- 26:36soll diese technische Seite dann ausgeklammert werden oder so ne
- 26:39aber das ist es ja nicht, sondern es ist ja wirklich so,
- 26:41dass du sagst man muss es trennen, damit man eben damit
- 26:46die Software halt dann am Ende auch schöner wird ne also so n
- 26:51kleines Beispiel ne, wenn du jetzt mal wenn du jetzt sagst.
- 26:54Ne Bestellung darf nicht getätigt werden, wenn das nicht
- 26:57auf Lager ist. Wenn wenn du davon nichts mehr
- 26:59hast. Also du kannst kein Kilo Kaffee
- 27:00bestellen, wenn es kein Kilo Kaffee mehr gibt.
- 27:03Von dieser Sorte beispielsweise ne technisch sagt man OK, wir
- 27:06müssen also die Menge in der Tabelle Inventory überprüfen mit
- 27:10einer SQL Curry mal als Beispiel ne das wäre jetzt sozusagen das
- 27:13technische und wenn du das ganze jetzt aber nicht trennst
- 27:18voneinander hast du vielleicht irgendwie diesen diesen
- 27:21technischen Aspekt wo dann irgendwo?
- 27:24Ich sag mal in deinem in deinem ganzen Konstrukt, wo du da
- 27:30bestimmte SQL Queries abfeuerst. Also du hast irgendwo n Pfeil wo
- 27:34SQL Queries gebastelt werden und irgendwo innerhalb deiner SQL
- 27:38query wird aber gesagt so aber nur wenn Stock größer 0 ist.
- 27:41Ne nur dann können wir das zum Beispiel verarbeiten und dann
- 27:46ist diese Fachlichkeit die die dir eigentlich sagt.
- 27:51Du darfst gar nicht erst eine Bestellung ausführen, wenn der
- 27:55Stock gar nicht vorhanden ist. Es ist ja eigentlich relativ
- 27:57einfach zu sagen, NE IF Inventory ist sozusagen für das
- 28:02Produkt ist 0. Dann kannst du halt nicht
- 28:04bestellen, dann wirf ne Exception oder irgendwie sowas.
- 28:06Ne, das ist ja eigentlich relativ einfach zu sag ich mal
- 28:10fachlich zu greifen, aber wenn das irgendwo tief im Code
- 28:13verankert ist, wo du. Vielleicht als Entwickler oder
- 28:15Entwicklerin auch noch mal ewig nachgucken muss.
- 28:17Ne jemand sagt dir zum Beispiel sowas wie ja dein der User der
- 28:21bestellt, der muss aber verifiziert sein oder n Konto
- 28:24haben oder sowas ne und dann und das musst du jetzt einbauen, das
- 28:28heißt da müsstest du irgendwo gucken tief in diesen Code
- 28:30reingucken bis du irgendwann an der Stelle bist wo dann diese
- 28:33Bedingung kommt und wo du dir dann sagen kannst OK wart mal,
- 28:36aber hier will ich ja eigentlich das überhaupt erst machen wenn
- 28:39der User wart mal wo hab ich den User also du.
- 28:42Du bist irgendwo ganz tief im Code drin und musst dann
- 28:46irgendwie frickelst da was rein, ne im im worst case und wenn du
- 28:50aber jetzt sagst ich trenne diesen technischen Bereich, also
- 28:52zum Beispiel den Datenbankzugriff ne von der
- 28:56fachlichen Seite, also irgendeiner übergeordneten Ebene
- 28:58wo einfach nur drin steht ne ganz, also ganz einfache Regel
- 29:03ne wenn das Inventory gefüllt ist und wenn der User zum
- 29:07Beispiel auch wirklich weiß nicht registriert ist, dann
- 29:10darfst du überhaupt diesen Zugriff machen.
- 29:12Das ist sozusagen wieso ne, wie sagt man wieso n wieso n wieso n
- 29:17Buch so n Regelbuch weißt du wo du nachgucken kannst?
- 29:21Ja wonach etwas passiert und dann ist es viel einfacher so ne
- 29:24Zusatzbedingung noch hinzuzufügen, weil du eine Ebene
- 29:27hast in deinem Code, die einfach die überhaupt nicht technisch
- 29:30ist, sondern wo nur fachlich, sag ich jetzt mal regeln stehen,
- 29:34die dir irgendwie zeigen. Nach diesem Prinzip funktioniert
- 29:37hier irgendwas, diese Domain ne. Ja.
- 29:41Ja, so kannst du ja auch abbilden, quasi wie die
- 29:43Funktionsweise aussieht. Und das ist ja der Punkt, dass
- 29:46du sagst, auf fachlichen fachlicher Ebene komme ich ja
- 29:49nicht dahin zu sagen, Na ja, da müssen wir in der Datenbank da
- 29:52und da abfragen, weil das interessiert auf fachlicher
- 29:56Ebene nicht, sondern es ist ja eher sowas wie ist der Artikel
- 30:01noch auf Lager? Ja, wir müssen feststellen, ist
- 30:03der noch auf Lager, haben wir noch, ist er vorrätig oder so,
- 30:08das wär die fachliche Ebene. Und dann, ob dahinter ne
- 30:11Datenbankabfrage ist oder jemand guckt auf einen Zettel ob das da
- 30:15drauf steht. Wie auch immer erfasst wird ob
- 30:18noch dieses dieser Artikel vorhanden ist.
- 30:20Also auf Lager ist oder nicht spielt ja also auf der
- 30:23fachlichen Ebene keine Rolle, genau auf der Domain jetzt ne
- 30:27klar jetzt kann ich in ne andere reingucken und dann sieht das
- 30:29vielleicht schon anders aus je tiefer ich gehe je technischer
- 30:33wird es zwangsläufig irgendwann ne.
- 30:36Aber wir sind ja quasi, und das ist wichtig, ja, auf einer
- 30:39Ebene, wo alle miteinander kommunizieren sollen, und dann
- 30:42gehst du ja nicht zum ja, keine Ahnung, nehmen wir das Beispiel
- 30:47noch mal. Ich find, das ist n ganz gutes
- 30:48Beispiel zu sagen, wir haben jetzt n Designer, der sagt, so
- 30:51und so sieht der Job aus, ne und?
- 30:55Sagt, dann möchte ich da anzeigen, wenn der Artikel auf
- 30:58Lager ist, dass da n grüner Text ist auf Lager sofort lieferbar.
- 31:03Wenn das der Fall ist, möchte ich, dass die Lieferzeit so und
- 31:06so ist oder so weiter ne, also er betrachtet das ja ins Aus
- 31:10seiner Perspektive, das Design so, aber wenn er sagt auf Lager
- 31:16ne dann. Wissen alle, was damit gemeint
- 31:19ist? Genau.
- 31:20Und er sagt ja nicht, wenn diese Query sagt, das Ergebnis größer
- 31:250 ist so nach dem Motto ne, weil du das so schön gesagt hast.
- 31:28Klar, auf technischer Sicht muss es so umgesetzt werden, um auf
- 31:31Lager entscheiden zu können, sozusagen ob es auf Lager ist
- 31:34oder nicht. Aber genauso wie du es schon
- 31:38angemerkt hast, das ermöglicht mir überhaupt den Spielraum zu
- 31:41sagen. Ganz ehrlich, wir haben am
- 31:43Anfang ne technische Entscheidung getroffen, die sah
- 31:46erstmal gut aus, dass wir jetzt zum Beispiel die und die
- 31:48Datenbank nehmen, aber wir stellen das jetzt oben auf das
- 31:50und das. Wenn ich aber das ganze Domain
- 31:53driven betrachtet hab, fällt es mir im Nachhinein viel einfacher
- 31:57diese Änderung sag ich mal auf Architekturebene durchzuführen
- 32:01beziehungsweise anders gesagt, meine Architektur resultiert aus
- 32:06einem Domain driven Ansatz und ich bin überhaupt in der Lage
- 32:10diese Adaption machen zu können, ohne dass.
- 32:12Alles den Bach runter geht so ne.
- 32:14Ja, du kannst halt einfach diese.
- 32:15Du kannst halt einfach. Du kannst den technischen Teil
- 32:17austauschen ohne die Fachlichkeit halt im Endeffekt
- 32:20anzufassen. Ne, das ist halt genau der
- 32:22Vorteil an der Stelle. Also es wird immer noch grün
- 32:26angezeigt auf Lager, dann am Ende wie jetzt überprüft wird,
- 32:29ob das der Fall ist oder nicht. Ne, das ist halt der große
- 32:31Vorteil dabei. Ja, genau, und das ist halt
- 32:35finde ich auch genau die, die also genau die Frage, die man
- 32:39sich dann im Endeffekt auch gut stellen muss, weil.
- 32:41Das hilft einfach, um wenn du in den Code guckst ne und du bist
- 32:45irgendein Entwickler, ne oder ne Entwicklerin und guckst in
- 32:48diesen Code und möchtest etwas erweitern und da steht irgendwas
- 32:52drin, wo du vielleicht nicht so richtig weißt.
- 32:55OK, was bedeutet das denn eigentlich?
- 32:56Ne? Also jetzt noch mal dieser
- 32:58Punkt, dass wirklich die Fachlichkeit eben abgebildet
- 33:00wird, aber nicht nur in ich sag mal Funktionen in Regeln
- 33:04Abläufen, sondern halt auch. Im Naming von Funktionen oder
- 33:09von, von Klassen oder so ne. Und es gibt ja nichts
- 33:12Schlimmeres, als wenn du irgendwie in den Code guckst und
- 33:14irgendwen fragst und sagst, was ist denn das jetzt hier
- 33:17eigentlich genau, was bildet das in der realen Welt in
- 33:20Anführungsstrichen ab ne und dann kommt sowas wie ja, das
- 33:23heißt, das heißt zwar user, aber eigentlich ist es nur n Account
- 33:26ne so und dann denkst du dir so OK, also was ist denn das jetzt
- 33:30genau also. Du musst, du brauchst dann
- 33:32transferleistung im im Worst case.
- 33:34Wenn du es nicht gut quasi gemacht hast.
- 33:36Wenn du diese diese einheitliche Sprache im Code und in der
- 33:39echten Welt in Anführungsstrichen nicht richtig
- 33:42vereinheitlicht hast, dann brauchst du ne transferleistung
- 33:46irgendwie so ne Art Übersetzer, der dir sagt, das bedeutet aber
- 33:50eigentlich das und ich finde das ist auch so n so n Red Flag,
- 33:54wenn es um Software geht, mehr oder weniger, dass man sich
- 33:58sagt. Wenn du hörst, eigentlich
- 34:00bedeutet es aber das und das oder eigentlich ist damit das
- 34:03und das gemeint, dann weißt du schon, OK, hier gibt es ne
- 34:05Diskrepanz zwischen dem Code und der wieder in Anführungsstrichen
- 34:09echten Welt, ne zwischen dieser Fachlichkeit, die eigentlich
- 34:12irgendwie abgebildet werden soll und ich hatte das selber auch
- 34:15schon mal, dass ich mir mit einem Kollegen angeguckt hatte n
- 34:18Code und gesagt hab, so ey, verdammt noch mal was was, was
- 34:22soll das sein, was bedeutet das eigentlich ne und dann?
- 34:25War auch die Antwort. Ja, das ist eigentlich, weil
- 34:28dann kam jemand, der das kannte oder das entwickelt hat
- 34:30beziehungsweise da schon länger im Produkt war und meinte so,
- 34:33ja, das ist jetzt zwar so und so benahmt, aber eigentlich gehört
- 34:37das gar nicht. Man könnte zwar denken, dass das
- 34:39sozusagen zu a gehört, aber eigentlich ist es b so und du
- 34:42denkst dir so wie soll man das zur Hölle wissen, wenn ich jetzt
- 34:46mich mit irgendwem unterhalte aus dem Fachbereich über genau
- 34:49diese diesen Punkt denk ich mir so.
- 34:51Nee, aber also das passiert aber im Code nicht so wie du sagst.
- 34:55Also dann, da müssen wir es umbauen, aber eigentlich war es
- 34:57eigentlich genauso gemacht, nur dass halt eben ne ich dieses
- 35:01Wissen dafür nicht hatte und dafür ist es halt super gut
- 35:04einfach zu sagen, OK wenn du gut nach Domain driven Design
- 35:08arbeitest, dann. Ist der Code quasi mit der
- 35:12eigentlichen Fachlichkeit eigentlich sehr gut erklärt,
- 35:14weil du sehr gut verstehst, was eigentlich wirklich passieren
- 35:17soll. Das ist halt n Riesenvorteil ne,
- 35:19weil du ja gerade n Beispiel gebracht hast.
- 35:21Das ist wirklich nicht selten, ich hatte das auch in einem, ist
- 35:24schon ne Weile her in einem Projekt, das war im Prinzip
- 35:28ziemlich Hardware nah oder es war Hardware nah und es gibt
- 35:34halt einfach so Begriffe, das hatte ich ja am Anfang gesagt,
- 35:36die sind so. Allgemein, dass jeder mit seinem
- 35:40Blickwinkel weiß, was dahinter steckt, aber das sich nicht
- 35:44deckt. Ne einfaches Beispiel, da ging
- 35:47es halt darum in diesem Projekt quasi verschiedene Stände
- 35:55Releases zu bauen sag ich mal ne und oder auszuliefern gehen wir
- 35:58mal ganz allgemein davon ne wir hatten n Produkt, das lief auf
- 36:01Mikrocontroller und das musste ausgeliefert werden und.
- 36:05Im Endeffekt das Wort Target. Ja, jeder verbindet da
- 36:09wahrscheinlich was anderes mit ne, aber du konntest so
- 36:12wunderbar sehen, dass am Ende jede Person, die auf einer
- 36:17anderen Ebene unterwegs war, für diese Person war.
- 36:21Wenn das Wort Target fällt. Etwas Unterschiedliches, das
- 36:26fand ich stark, weil für mich zum Beispiel der sich viel auch
- 36:29mit der Bildumgebung beschäftigt hat, war ein Target einfach,
- 36:32dass wir etwas gewisses Bauen, kompilieren und Linken
- 36:35sozusagen. Ja, also wir haben ein Target,
- 36:37und das ist das Ziel, was da am Ende rausfallen soll, war in dem
- 36:41Fall keine Ahnung, sagen wir jetzt einfach eine Executable
- 36:43oder eine Library oder so, ja, und für andere war das aber zum
- 36:47Beispiel direkt das, was du auf Mikrocontroller Flasht am Ende.
- 36:51Ja, das ist n Target sozusagen ne und für den Dritten war das
- 36:54wieder übergeordnet noch was anderes.
- 36:55Ja, es steigert halt am Ende dann die Komplexität.
- 36:58Ne, weil du genau dieses Verständnis, dieses einheitliche
- 37:02Verständnis nicht hast. Und es ist halt viel, viel
- 37:06einfacher. Wirklich den exakten Begriff
- 37:09also am besten du hast noch sowas wie ja ich pack da n
- 37:13Entity rein, so ne, aber dann weißt du ja gar nicht.
- 37:16Also es ist doch viel einfacher, wenn wirklich das da steht worum
- 37:18es geht als wenn du irgendwas hinschreibst was allgemeines und
- 37:21irgendwie auf einer Metaebene funktioniert und du dann halt
- 37:24eben dir überlegen musst. OK.
- 37:28Warte mal, das war das. Das war also, das ist ja, wieso
- 37:31Vokabeln lernen, die du noch zusätzlich machen musst, ne und
- 37:34wir wissen alle, dass es durchaus komplex sein kann,
- 37:37Software zu entwickeln, je nachdem gerade in bestimmten
- 37:41Bereichen, wo vielleicht auch noch mehrere, ich sag mal
- 37:44fachlichkeiten aufeinandertreffen, ne wo
- 37:47vielleicht mehrere Fachlichkeiten innerhalb einer
- 37:49Software aus verschiedenen Bereichen sogar noch kombiniert
- 37:51werden müssen, dann ist es natürlich viel viel einfacher,
- 37:55wenn du dann nicht zusätzlich noch.
- 37:57Dir diese Komplexitätsstufe noch mit reinholst ne ja.
- 38:02Jetzt fragt sich vielleicht der eine oder andere, OK gut, hab
- 38:05ich verstanden, fachliche Sicht da drauf, domain driven ja
- 38:09gemeinsame Sprache das andere Wort hab ich schon wieder
- 38:12vergessen was du gesagt hast kann ich es nicht aussprechen.
- 38:14Und aber was, was ist ja genau, was ist denn jetzt so der Punkt,
- 38:20dass man sagt, deswegen sollte man das so machen?
- 38:23Was sind die Vorteile, was sind die Nachteile, weil es gibt
- 38:26nicht, also wenn ne Sache nur Vorteile hat, würde es ja jeder
- 38:29machen, da ist es mal so als Spoilerwarnung ne also es gibt
- 38:32ja Gründe die dagegen sprechen und gerade Domain driven Design
- 38:37geistert doch jetzt bestimmt. 20 Jahre schon durch die IT Welt
- 38:41gerade in der Softwareentwicklung.
- 38:43Ich meine, das ist ich krieg es nicht genau zusammen, das hätte
- 38:46man vielleicht recherchieren soll Schaden über mein Haupt,
- 38:48aber so Anfang der Zweitausender gab es so die erst ist das somit
- 38:53das erste Mal gefallen würd ich sagen wenn ich das so richtig
- 38:57verknüpfe kann sein dass es auch viel früher ist.
- 38:59Dann gerne ne Nachricht an uns aber ich meine so Anfang der
- 39:03Zweitausender ist das so n bisschen aufgekommen das ganze
- 39:07ne oder? Man hat es, sag ich mal, in
- 39:10Begriffe gepackt. Ja, weil diese Gedanken dahinter
- 39:12sind wahrscheinlich schon älter, aber dass man den ganzen Namen
- 39:15gibt, sozusagen ne. Ja, die Grund.
- 39:18Die was sind jetzt? Was würdest du sagen, sind jetzt
- 39:21so die ganz klaren Vorteile dahinter, weil oder wo wo du
- 39:26sagst. Deswegen verwende ich das
- 39:29Prinzip auch oder dieses Mindset.
- 39:33Mhm, also erstmal ist es natürlich ne klare ne bessere
- 39:37Kommunikation die stattfinden kann über auch das
- 39:42Entwicklerteam hinweg würde ich sagen, weil das ist halt sehr
- 39:44wichtig, bedeutet aber finde ich auch um jetzt ganz kurz das noch
- 39:48mal einzugrenzen wann es überhaupt sinnvoll ist oder wann
- 39:50es wirklich Vorteile bringt, wenn du halt auch in einem, ich
- 39:54sag mal relativ komplexen Umfeld dich bewegst.
- 39:57Dann macht das eben halt auch Sinn ne, weil dann hast du ne
- 40:00weil komplexeres Umfeld bedeutet mehr Kommunikation und die kann
- 40:03dann halt eben eben besser werden.
- 40:04Ne, du kriegst halt n super klares Modell wenn du möchtest.
- 40:07Für deine Fachlichkeiten, für deine Domains, für Deinen, für
- 40:11das was für deine Regeln deiner Software was da passieren soll
- 40:14sozusagen ne und ich finde es ist halt auch relativ gut
- 40:20testbar, weil du halt relativ. Einfach siehst, was in Deiner
- 40:23Software passiert. Also du hast halt ne Ebene, in
- 40:25der du das halt gut sehen kannst und demzufolge halt gut auch
- 40:29deine entsprechenden. Ich sag es jetzt wieder, ich
- 40:31weiß es geht wahrscheinlich irgendwann auf n auf n Keks,
- 40:34weil diese entsprechenden Fachlichkeiten halt eben auch
- 40:37gut abgebildet werden können, weil du das Halt verstehen
- 40:39kannst was da los sein soll überhaupt weißt du.
- 40:42Ja, ich glaub du kannst das relativ da auch streichen, weil
- 40:45in dem Moment, wenn ich mir die Gedanken darüber mache, hatten
- 40:48wir ja gesagt, resultiert ja auch eine Architektur
- 40:50dementsprechend daraus. Und die ist testbarer ja, weil
- 40:55ich halt Entscheidungen treffe, weil ich es fachlich und
- 40:59technisch sauber auch trenne, dass ich einfach ne testbarere
- 41:03Software hab, weil ich zum Beispiel, wie wir vorhin gesagt
- 41:05haben, die unterste Ebene denn auch austauschen kann.
- 41:08Ja, weil es nicht mehr ne Rolle spielt, welche Datenbank hängt
- 41:11da dran, sondern ich möchte testen, ob da jetzt steht auf
- 41:15Lager ne und das kann ich ja denn.
- 41:18Testbar gestalten, indem ich dann auch Dinge austausche und
- 41:21das simulieren kann beispielsweise.
- 41:24Also da geh ich auf jeden Fall ganz klar mit und ich find es
- 41:26auch gut, dass du gesagt hast, also diese gemeinsame Sprache
- 41:29ist auf jeden Fall ja n Vorteil und diese komplexitätsabbildung
- 41:35ich finde mit Domain driven schafft man es einfach näher an
- 41:40die Realität zu kommen, Mhm. Ja, also du hast ja Modelle
- 41:45gesagt. Klar, es sind am Ende Modelle,
- 41:46ja du kannst nicht die Realität, dafür gibt es Modelle, du kannst
- 41:49es ja nicht 1 zu 1 abbilden, aber du versuchst dich auf die
- 41:52Dinge zu konzentrieren in deinem Modell, die von Bedeutung sind
- 41:57für die Applikation und die werden halt besser und
- 42:01realitätsnaher und dementsprechend hast du auch ne
- 42:05bessere Struktur am Ende die daraus resultiert ja.
- 42:09Ja. Ein Punkt, den du ganz eingangs
- 42:12erwähnt hattest, fand ich ganz witzig, weil du hast gesagt,
- 42:16Domain driven ja, Microservices, so dass das Mindset so
- 42:21Rumgeistert, geh ich mit denken viele dran, hat aber halt auch n
- 42:24Grund, weil dieser Domain driven Design Ansatz auch ne starke
- 42:30Basis für ne Microservices Struktur oder Architektur
- 42:34bildet. Ja weil du halt genau das halt
- 42:36schon so betrachtest, dass das überhaupt technisch möglich ist.
- 42:40So zu differenzieren. Ich glaube, in der Folge
- 42:42Microservices, Monolithen, das hatten wir so mal in der Folge
- 42:46verglichen, da hab ich auch glaub ich sogar den Begriff
- 42:49Fachlichkeit verwendet, weil du n Microservice für eine
- 42:52Fachlichkeit abnimmst. Als du lebst, ist einfach nein
- 42:55nein, weil also ist mir gerade eingefallen, weil du hast ja
- 42:58recht, es ist es ist halt möglich, dass also da domain
- 43:01driven Design, wenn du dieses wie gesagt im Kopf hast, ne
- 43:03dieses Mindset mehr oder weniger ne, dann ist Microservices eine
- 43:08mögliche Architektur dafür. So ne, genau so kann man das,
- 43:11weil du halt wie gesagt diese bounded contexts hast.
- 43:14Ne und diese Aggregates durch diese Betrachtung bündelst du
- 43:18halt Dinge die einfach zusammengehören und kannst
- 43:22daraus halt Architekturen ableiten wie zum Beispiel Oh
- 43:24Mensch, das ist so n astreiner Microservice.
- 43:27Jetzt ja. Der daraus resultiert.
- 43:30Genau, ja, und natürlich gute Designentscheidung,
- 43:35resultierende gute Architekturen und das ist wie bei jeder guten
- 43:39Architektur, dass ich natürlich dadurch schaffe, langlebig das
- 43:44Ganze zu gestalten, ohne dass ich es komplett neu
- 43:45implementieren muss oder mir das ganze wieso n Kartenhaus
- 43:49zusammenfällt. Das ist natürlich klar, dass das
- 43:52daraus resultiert, deswegen würde ich es fast schon
- 43:54spannender finden. Welche Nachteile siehst du da
- 43:58drin beziehungsweise wann würdest du sagen er heißt n
- 44:02bisschen over the top das ganze ich wollt Grad sagen klingt doch
- 44:06alles gut, warum sollte man das jetzt einfach so gibt es nicht
- 44:10Folge beendet aber. Es es ist halt so oftmals
- 44:13einfach genau, es sind halt ähnliche Gründe oft nicht.
- 44:16Ich meine das ist halt logischerweise, du musst dir ne
- 44:19gemeinsame Sprache bilden, ne was wir gesagt haben, diese UB.
- 44:23Wie geht es Language? Nein, aber das sind alle alle
- 44:25das Gleiche verstehen, sagt jeder zehnmal dieses Wort oder
- 44:28aber damit damit alle das gleiche verstehen, und das ist
- 44:31ja genau wieder n Punkt, der ist halt anstrengend, das ist halt,
- 44:33es ist natürlich irgendwie ne gewisse Art von Investment, das
- 44:36dauert du, du musst halt irgendwie Zeit investieren um
- 44:39dir zu sagen, OK wir schaffen aber dieses gleiche Verständnis
- 44:42und das ist natürlich einfach nun mal am Anfang erstmal n
- 44:46bisschen zeitintensiver, das bedeutet das ist halt teurer
- 44:49beispielsweise. Du brauchst sowas nicht zu
- 44:51machen, wenn du NMBP machen möchtest, wo du einfach nur mal
- 44:54irgendwas austesten willst. Im Proof of Concept Hinballern
- 44:57möchtest, dann brauchst du sowas erstmal nicht zu tun.
- 45:00Ne, dafür ist es halt einfach nicht gedacht, ne oder zum
- 45:03Beispiel sowas wie irgendwas einfaches crat, mäßiges ne ne
- 45:07API wo einfach nur irgendwas erstellt, gespeichert,
- 45:11verändert, gelöscht werden soll, was auch immer, dann brauchst du
- 45:14auch keine extrem krasse Architektur, das ist im
- 45:17Normalfall relativ klar was da passiert dann ne.
- 45:19Es geht um wirklich komplexe Sachen und wenn die Sachen nicht
- 45:22komplex sind, dann muss man nicht unbedingt Domain driven
- 45:25Design nehmen, dann ist es teilweise sogar einfach zu viel.
- 45:28Ja, das das neigt dann ganz klar zum Over Engineering, auch ne.
- 45:32Also wenn ich ne so ne kleine Applikation hab, dass ich
- 45:34einfach eine Domain hab und da ist einfach alles drin und ich
- 45:37kann da 1000 Stunden drüber nachdenken, es bleibt diese eine
- 45:40Domain weil es halt einfach wie du meintest so ne simple
- 45:42Anwendung ist dann. Wozu den Aufwand betreiben?
- 45:47Dann macht das keinen Sinn, dann brauch ich das nicht, dann wird
- 45:49da auch nicht ne bessere Architektur draus resultieren,
- 45:52weil die Architektur eh schon nur simpel sein kann, sozusagen
- 45:56ne oder gar nicht komplexer werden kann, dass ich in
- 46:00irgendwelche Bredouillen komme, sozusagen.
- 46:03Da hab ich. Da da würd ich ja auch sagen und
- 46:04ich finde wegen dieser gemeinsamen Sprache, ich will
- 46:11also das, das ist jetzt kein, wie soll ich sagen.
- 46:15Kein Angriff oder so gegen Junior Developer, sondern
- 46:19einfach nur meine eigene Erfahrung.
- 46:21Ich als Junior Developer, wo ich frisch ins Arbeitsleben
- 46:24eingestiegen bin, hätte man mir das so dermaßen um die Ohren
- 46:28geworfen, dass ich mich da hätte, also so nach dem Motto
- 46:31Domain dürfen ist klar oder so neues Projekt, jetzt geht es los
- 46:34hier. Ich finde man, da muss man halt
- 46:36auch n bisschen reinwachsen, dann ist es vielleicht nicht
- 46:38unbedingt Junior developer abhängig, sondern eher
- 46:42erfahrungsabhängig ne, weil ich denke es gibt auch Senior
- 46:45Developer, die da nicht ewig viel mit zu tun gehabt hatten,
- 46:49weil sie vielleicht einfach auf ganz anderen Projekten unterwegs
- 46:52waren. Ja und man muss da reinwachsen
- 46:54und das ganze muss Reifen so das ist der Punkt.
- 46:59Das muss einem klar sein, dass es das funktioniert in der Regel
- 47:02nicht so einfach. Out of the Box, habe ich
- 47:04festgestellt. Ja, finde ich auch gut und da
- 47:06würde ich auch einfach so n Tipp mitgeben, weil für mich war es
- 47:09immer ganz am Anfang als ich so Domain driven Design gehört hab,
- 47:11war für mich immer so OK irgendwie, du musst es hat
- 47:14irgendwas mit Ordnerstruktur zu tun ne für mich war es immer so,
- 47:18da muss ich irgendwie die Files und so weiter muss ich dann
- 47:21irgendwie so das das muss irgendwie das muss passen du
- 47:24hast irgendwie so Ordner und da kommt alles rein.
- 47:26Sowas war für mich am Anfang immer so Domain driven Design,
- 47:29aber eigentlich, wenn man jetzt mal wirklich das ganze ganz
- 47:32abstrakt betrachtet, ist es klar, kann man mich jetzt gerne
- 47:37werfen, Stein was auch immer, aber es ist eigentlich
- 47:39scheißegal. Ich.
- 47:39Hab schon eine in der Hand hier. Aber es ist scheißegal, mehr
- 47:43oder weniger ne wo die Files jetzt liegen, weil in erster
- 47:46Linie geht es um die Idee zu sagen.
- 47:49Löst dich mal n bisschen von dem ganzen technischen Gedanken, wie
- 47:52du irgendwas umsetzt, sondern geh doch erstmal wirklich auf
- 47:54der obersten Ebene ganz fachlich, was jeder versteht ran
- 47:58und versuche deine Regeln in den Code zu fassen und danach kannst
- 48:01du alles implementieren, so und dann kommt man ganz von alleine
- 48:04dahin, dass du sagst OK warte mal, das ist ne Fachlichkeit,
- 48:07das würde ja vielleicht Sinn machen, dass man diese
- 48:09Fachlichkeit auch in n eigenen Ordner zum Beispiel
- 48:11Zusammenpackt. Ne, dass man zum Beispiel sagt,
- 48:13Ja, und die ist da und die ist da.
- 48:14Und wenn du jetzt aber zum Beispiel irgendwelche
- 48:16Hilfsfunktionen hast, die aber überhaupt nicht fachlich sind,
- 48:19ne, weil ich find das ist so n relativ schneller Gedanke der
- 48:21mir aufkommt sowas wie du willst, Redundanzen vermeiden
- 48:24irgendwelche Hilfsfunktionen, die du nicht zweimal
- 48:25implementieren willst und die ist überhaupt nicht fachlich,
- 48:27sie hat nichts mit der Fachlichkeit zu tun.
- 48:29Ja dann pack dir n shared Ordner so nach dem Motto und dann ist
- 48:31es OK, dann kannst du sie überall benutzen.
- 48:33Wenn es aber sehr sehr fachlich ist, wiederum dann ist es
- 48:35natürlich wichtig, dass es in die entsprechende Domain kommt,
- 48:38was? Eventuell n gleicher Ordner ist
- 48:42ne, aber das ist find ich das Wichtige sich einfach mal zu
- 48:45überlegen. OK wie mach ich mich denn frei
- 48:47von dieser ganzen technischen Implementierung immer gleich
- 48:49komplett technisch zu denken und das ist find ich das Wichtigste
- 48:54was man jetzt so mitgeben könnte zu sagen ey domain driven Design
- 48:59denk mal n bisschen anders so nach dem Motto ich.
- 49:02Find es auch gut. Es ist auch n wichtiger Punkt zu
- 49:04sagen die Ordnerstruktur ist gar nicht so entscheidend dabei,
- 49:07klar. Das sollte aufgeräumt sein.
- 49:09Das Projekt von der Ordnerstruktur her, und da gibt
- 49:11es auch Präferenzen, ganz klar, jeder baut sich das so n
- 49:15bisschen anders zusammen, aber wie du schon meintest.
- 49:18Domain Driven ist ja nicht die Ordnerstruktur, sondern zum
- 49:20Beispiel die Abhängigkeiten unter, also unter den Klassen ja
- 49:24oder wie Kapsel ich das ganze, welche bound it Kontext habe
- 49:28ich, wie gruppiere ich das ganze?
- 49:30Das sind die entscheidenden Fragen, die mich dann in der
- 49:33Entwicklung begleiten und gute Entscheidungen treffen lassen
- 49:36und nicht die Ordnerstruktur, aber natürlich räumt eure
- 49:39Projekte auf Leute, andere Entwicklerinnen und Entwickler
- 49:42werden es euch danken, ja. Da würd ich sagen, haben wir es.
- 49:47Cooles Thema, ich find es halt auch geil, dass Domain driven
- 49:51Design halt wirklich viel übergeordnet ist.
- 49:55Ja, also es ist jetzt nicht, dass man über Code quatscht,
- 49:58sondern einfach die Ebene da drüber und es fördert halt auch
- 50:01einfach ne gute Zusammenarbeit und gutes Projektgeschehen, das
- 50:05muss man sagen und es resultieren auch oft daraus gute
- 50:10Architektur architekturentscheidung richtig.
- 50:13Und damit würde ich sagen, vielen Dank erstmal für das
- 50:15Gespräch. Tino über DDD wie man das so
- 50:19schon nennt und Liebe zuhören, lieber zuhören, wenn du jetzt
- 50:22sagst Ey, das war echt ganz cool, manche Sachen sind mir
- 50:25noch nicht so ganz klar oder könnt ihr da noch mal bei der
- 50:27einen oder anderen Sache in die Tiefe gehen oder vielleicht mal
- 50:30ne bestimmte Architektur beleuchten, die irgendwie
- 50:33vielleicht aus Domain driven Design resultiert?
- 50:36Dann schreibt uns auf jeden Fall wie gesagt, Tino meint ja schon
- 50:38Discord beispielsweise Podcast Mail geht auch einfach auf uns
- 50:42zukommen, irgendwo auf den Plattformen eurer Wahl, links
- 50:45dazu gibt es auf jeden Fall den Shownotes zu einem Plattform und
- 50:48dann können wir da auf jeden Fall was machen, ne mit und auf
- 50:53jeden Fall ansonsten ich freu mich drauf.
- 50:54Ja ansonsten würd ich sagen war es das hier an dieser Stelle
- 50:58auch. Vergesst nicht, wenn euch die
- 51:00Folge gefallen hat, einfach mal ne Bewertung da zu lassen oder
- 51:03den Podcast zu empfehlen. Es würde uns mega freuen, wenn
- 51:06ihr sagt Ey ganz cool, es hat mir mal wieder was gebracht die
- 51:11Podcast Folge generell der Podcast und ihr sagt ey ich hab
- 51:14Grad n bisschen was übrig und möchte dem was Gutes tun
- 51:17sozusagen dann gibt es auch n kleinen Spendenlink in den
- 51:19Shownotes aber nichtsdestotrotz wünsch ich jetzt dir Tino und
- 51:25dir liebe Zura lieber Zura einen schönen Tag noch.
- 51:28Und bis zur nächsten Folge Deine Collin Balls.
- 51:31Gemeinsam. Besser sag, wie geht es
- 51:36language, du kriegst es und sag mir you, wie geht es, bist du
- 51:42sicher, dass es ausgesprochen wird?
- 51:43Das klingt total falsch, ich habe keine Ahnung, ob das
- 51:45ausgesprochen wird.