WEBVTT

00:00:00.017 --> 00:00:04.797
Also was meinen wir mit React? Meinen wir damit die spezifische Software oder

00:00:04.797 --> 00:00:07.697
meinen wir damit ein etwas breiteres Feld?

00:00:07.817 --> 00:00:11.077
Oder um es mal ketzerisch zu formulieren, ist Preact, React?

00:00:12.677 --> 00:00:18.177
Idiomatisches React willst du, glaube ich, haben, ne? Ja, aber existiert idiomatisches React nicht?

00:00:18.337 --> 00:00:21.077
Wenn ja jeder macht, was er will, was ist denn dann das Idiom?

00:00:23.417 --> 00:00:29.477
Reakt heute ohne Hooks zu schreiben frustriert mich zu Tode aber das Frühjahr

00:00:29.477 --> 00:00:32.577
war schon besser lesbar, also da war deutlich besser sichtbar,

00:00:32.637 --> 00:00:33.757
was hier gerade passiert,

00:00:38.957 --> 00:00:42.077
Diese Revision von Working Draft wird euch präsentiert von euch,

00:00:42.217 --> 00:00:46.117
von unserer Community Podcasting ist keine Einbahnstraße und ohne euer Feedback

00:00:46.117 --> 00:00:50.397
wäre das hier alles gar nichts und deshalb haben wir für euch einen Slack-Channel eingerichtet.

00:00:50.717 --> 00:00:55.497
Unter draft.community könnt ihr beiträgen und mit uns Podcast-Hosts sowie der

00:00:55.497 --> 00:00:57.417
erlesenen restlichen Hörerschaft abhängen.

00:00:57.557 --> 00:01:00.437
Wir diskutieren über den Podcast, tauschen Links aus und immer dann,

00:01:00.617 --> 00:01:03.537
wenn wir etwas Besonderes vorhaben, erfahrt ihr es dort zuallererst.

00:01:03.937 --> 00:01:07.077
Also klickt doch mal rein unter draft.community.

00:01:10.597 --> 00:01:13.177
Working Draft Revision 689.

00:01:15.036 --> 00:01:18.736
Hallo und herzlich willkommen zu Working Draft Revision 689,

00:01:18.756 --> 00:01:22.156
der am wenigsten kontroversen Revision von ganz Working Draft.

00:01:22.396 --> 00:01:24.896
Heute sind am Start der Stefan.

00:01:25.436 --> 00:01:28.436
Guten Morgen, Servus. Meine Wenigkeit, der Peter.

00:01:28.596 --> 00:01:31.856
Und wir haben natürlich wieder einen erlesenen Gast hier im Studio eingeladen.

00:01:31.956 --> 00:01:34.016
Wir haben an Bord den einzig wahren Kiki.

00:01:35.016 --> 00:01:38.516
Scher. Hallo, du warst ja schon einige Male bei uns im Podcast,

00:01:38.616 --> 00:01:40.616
aber irgendwer da draußen hat bestimmt noch nicht mitbekommen,

00:01:40.896 --> 00:01:44.016
was du für ein toller Hecht bist. Also stell dich doch mal bitte ganz kurz vor,

00:01:44.076 --> 00:01:47.196
dass wir eine Idee haben, wer du bist, was du so treibst. Schieß los. Genau.

00:01:47.956 --> 00:01:50.636
Ja, Peter hat mich gerade schon als Kiki vorgestellt, dass mein Spitzname der

00:01:50.636 --> 00:01:53.496
Ausfahssehner auch in der Öffentlichkeit gelandet ist. Früher war der eigentlich

00:01:53.496 --> 00:01:55.356
nur in meinem Kindergarten, aber ist halt jetzt so geworden.

00:01:56.776 --> 00:01:59.436
Im Bürgerlich heiße ich Hans-Christian Otto. Unter dem Namen laufe ich immer

00:01:59.436 --> 00:02:03.256
mal wieder auf Konferenzen rum, treffe da den Peter. Und auch Stefan habe ich

00:02:03.256 --> 00:02:04.376
da vor vielen Jahren mal getroffen.

00:02:05.456 --> 00:02:09.136
Ich habe eine Softwarefirma, wir heißen Suora. Wir entwickeln für unsere Kunden

00:02:09.136 --> 00:02:15.496
individuelle Softwarelösungen von Buchhaltung über E-Commerce bis IoT und ich

00:02:15.496 --> 00:02:18.516
setze da seit vielen Jahren sehr gerne React ein.

00:02:18.656 --> 00:02:23.656
Ich glaube so 2016 oder so habe ich damit losgelegt und halte das für mich persönlich

00:02:23.656 --> 00:02:25.076
auch bis heute das richtige Werkzeug.

00:02:25.356 --> 00:02:28.196
Und ich glaube, das ist so der Grund, warum ich dann auch aus Versehen hier gelandet bin.

00:02:29.496 --> 00:02:34.636
Ja, so ein bisschen. Also wir haben ja hier von Valking Draft unseren Community Slack.

00:02:34.956 --> 00:02:39.896
Da lassen wir ja buchstäblich jeden rein und manchmal kommt es dann zu interessanten Diskussionen.

00:02:40.096 --> 00:02:42.676
Wir haben auch ein Helpdesk und andere Sachen, aber manchmal geht es halt eben

00:02:42.676 --> 00:02:45.576
einfach rund und zuletzt.

00:02:45.736 --> 00:02:50.216
Irgendwer hatte was zu React reingeschmissen. Einen sehr, sehr mittelmäßigen

00:02:50.216 --> 00:02:51.636
Artikel, wo ich irgendwie dachte,

00:02:52.016 --> 00:02:54.496
wow, so viel Füller kann ja nicht mal irgendwie Chat-GPT produzieren.

00:02:54.656 --> 00:02:57.316
Da steht ja irgendwie nichts drin, außer mir passt es nicht.

00:02:57.996 --> 00:02:59.356
Ja, es ist eigentlich genau das.

00:03:00.736 --> 00:03:05.976
React One by Default and it's killing frontend innovation. Das war der Ausgangsartikel.

00:03:06.376 --> 00:03:09.336
Also eine Überschrift, bei der ich bei keinem einzigen Buchstaben und keiner

00:03:09.336 --> 00:03:12.336
einzigen grammatischen Konstruktion mitgehen würde. Das ist auch schon mal eine Leistung.

00:03:13.146 --> 00:03:19.206
Aber jedenfalls hat mich das dann dazu verleitet, ein 10-Punkte-Manifest in

00:03:19.206 --> 00:03:24.826
Slack zu tippen, wo es keiner sieht, warum ich React halt seltener für das richtige

00:03:24.826 --> 00:03:26.846
Werkzeug halte im Vergleich zu Kiki.

00:03:29.086 --> 00:03:32.226
Ja, was dann halt eben, also das Manifest nicht, aber so, ja,

00:03:32.406 --> 00:03:35.586
React kann man so machen, man kann es auch sein lassen, ist so meine Haltung dazu.

00:03:35.826 --> 00:03:38.866
Und Stefan ist ja in dem Bereich auch nicht ganz unbeleckt.

00:03:39.786 --> 00:03:41.486
Ja, tatsächlich stimmt das.

00:03:42.466 --> 00:03:45.146
Wir verwenden React ganz stark in der Firma, in der ich arbeite,

00:03:45.206 --> 00:03:50.366
nicht bei deinem Adress, mittlerweile seit, ich glaube, seit fünf Jahren offiziell.

00:03:50.966 --> 00:03:58.566
Wir haben damals eine UI-Bibliothek gesucht, die wir stark in die Breite geben können.

00:03:58.906 --> 00:04:02.426
Die Historie war einen großen Angular-Client gehabt,

00:04:03.306 --> 00:04:08.606
davor einen Java-Wirtis-Kursen-Guit, Google-Web-Toolkit-Client,

00:04:09.366 --> 00:04:12.906
Und wir haben gewusst, dass mit dem Wachstum, das die Firma hat und mit dem,

00:04:12.986 --> 00:04:13.786
was wir erreichen wollen,

00:04:14.586 --> 00:04:22.066
wir viele, viele Menschen UI machen lassen müssen und haben ein einzigartiges

00:04:22.066 --> 00:04:29.906
Distributionskonzept ausgedacht und uns für React als Technologie für den View Layer entschieden,

00:04:30.166 --> 00:04:32.946
weil wir uns erhofft haben, dass der sehr niederschwellig ist,

00:04:33.066 --> 00:04:36.286
dass viele Leute schnell was machen können.

00:04:36.286 --> 00:04:40.086
Und wie wir von dem reichhaltigen Ökosystem profitieren können,

00:04:40.266 --> 00:04:42.766
das dort nicht existiert. Bei der Entscheidung war ich dabei.

00:04:43.746 --> 00:04:46.626
Und dann habe ich einmal vier Jahre Rust gemacht und jetzt bin ich wieder dort.

00:04:46.766 --> 00:04:50.326
Jetzt schaue ich mir an, was in den letzten vier Jahren passiert ist und finde

00:04:50.326 --> 00:04:51.326
das alles sehr, sehr spannend.

00:04:51.806 --> 00:04:55.786
Es ist beeindruckend, wenn man sich nicht intensiv mit dem Thema beschäftigt.

00:04:56.915 --> 00:05:02.415
Wie das Ökosystem davon galoppiert, Wendungen macht, wieder zurück rennt,

00:05:02.495 --> 00:05:07.475
wieder kreuz und quer rennt und schlussendlich hierdaten wieder ankommen, wo man war.

00:05:08.015 --> 00:05:11.235
Das ist so jetzt im Moment mein Eindruck. Aber das ist ja schon mal ein sehr

00:05:11.235 --> 00:05:14.155
interessanter Umstand und ein sehr interessantes Statement.

00:05:14.275 --> 00:05:18.575
Du warst also so ungefähr vier Jahre raus und hast jetzt, sagen wir mal,

00:05:19.175 --> 00:05:24.475
mit dem Wort galoppieren ja durchaus das Bild von Bewegung und Fortschritt und

00:05:24.475 --> 00:05:26.175
Veränderung in unseren Köpfen platziert.

00:05:27.915 --> 00:05:35.815
Nein, der Freundschaft nicht Bewegung, ja. Das muss man ganz stark voneinander trennen.

00:05:36.875 --> 00:05:38.855
Wenn du im Kreis läufst, bewegst du dich auch.

00:05:40.315 --> 00:05:43.995
Okay, aber ich meine, wenn du im Kreis läufst, kommst du ja hinterher wieder

00:05:43.995 --> 00:05:45.935
da an, wo du gestartet bist, wenn ich mich nicht täusche.

00:05:46.555 --> 00:05:54.055
Und das würde ja bedeuten, dass im Prinzip alles bloß Rauschen im digitalen

00:05:54.055 --> 00:05:57.975
Blätterwald ist, von dir ignoriert werden kann und du kannst weiter React basteln,

00:05:58.155 --> 00:06:01.175
als wären es noch die wilden Zeiten von 2013.

00:06:01.935 --> 00:06:06.075
Also die Frage ist natürlich, wie weit soll ich da jetzt schon vorgreifen bei

00:06:06.075 --> 00:06:07.715
dem Ding? Aber tatsächlich ist das auch mein Eindruck.

00:06:07.915 --> 00:06:15.955
Wir haben jetzt auch gemerkt, bei diesen stark trendgetriebenen Bibliotheken, die rundherum sind,

00:06:17.335 --> 00:06:20.915
wenn du das einfach ignorierst und du Reakt für das hernimmst,

00:06:20.995 --> 00:06:24.655
für das auch wir jetzt hernehmen und was eigentlich der Grund war,

00:06:24.975 --> 00:06:26.475
warum wir das wollen, nämlich zur Reaktion.

00:06:28.549 --> 00:06:34.029
Abstraktion von UI-Komponenten und dieser Kompositionsmöglichkeit,

00:06:34.409 --> 00:06:38.389
dann laufst du eigentlich recht gut damit. Wenn du jetzt nicht versuchst, die 10.

00:06:39.649 --> 00:06:44.629
CSS-Lösung reinzuziehen oder irgendwelche Bibliotheken für State-Management

00:06:44.629 --> 00:06:52.609
reinzuziehen, die halt einen speziellen Use-Case verfolgen, dann bist du eigentlich ganz gut dabei.

00:06:52.989 --> 00:06:54.929
Aber das wissen ja die Entwickler alle nicht.

00:06:56.549 --> 00:06:59.889
Das weißt du nur, wenn du mal diese Kreise gemacht hast, nicht um diese Drehungen

00:06:59.889 --> 00:07:05.389
gemacht hast okay, aber geht das ich hatte eine philosophische Frage noch,

00:07:05.429 --> 00:07:07.649
bevor wir weitergehen, die wollte ich nämlich ganz am Anfang schon noch anbringen

00:07:07.649 --> 00:07:11.289
jetzt hast du ja gesagt, so React ohne State Management und die 10.

00:07:11.409 --> 00:07:15.949
CSS-Lösung ich wollte mal kurz klären, wir haben jetzt ja alle so gesagt wir

00:07:15.949 --> 00:07:19.269
haben jetzt einfach so angenommen, alle wissen und wir sind uns darüber einig, was React ist,

00:07:20.549 --> 00:07:24.669
ich bin mir aber nicht sicher, ob es das ist also was meinen wir mit Mit React,

00:07:24.729 --> 00:07:30.629
meinen wir damit die spezifische Software oder meinen wir damit ein etwas breiteres Feld?

00:07:30.769 --> 00:07:33.949
Oder um es mal ketzerisch zu formulieren, ist Preact React?

00:07:36.327 --> 00:07:37.787
Weil in meinem Kopf ist es das.

00:07:39.887 --> 00:07:43.167
Nicht mehr, hätte ich jetzt gesagt. Aber wieso?

00:07:43.307 --> 00:07:47.887
Ich mache damit das exakt Gleiche und dass da unter der Haube eine andere Art

00:07:47.887 --> 00:07:51.607
des Loops ausgeführt wird und die Events anders abstrahiert werden,

00:07:51.767 --> 00:07:55.427
ist ja, das ist ja die Idee von Abstraktion, für mich ja nicht weiter relevant.

00:07:55.427 --> 00:07:58.647
Wenn ich nicht gerade den Network-Tab aufmache, sehe ich das ja nicht wirklich.

00:07:58.867 --> 00:08:01.687
Und ich würde tatsächlich sagen, das ist alles eins.

00:08:01.947 --> 00:08:05.447
Und React beinhaltet Preact und die ganzen Libraries, die du jetzt einfach mal

00:08:05.447 --> 00:08:06.567
so en passant ausgeschlossen hast.

00:08:07.347 --> 00:08:11.967
Also ich würde an der Stelle so ein bisschen widersprechen. Ich finde grundsätzlich

00:08:11.967 --> 00:08:14.547
die Idee zu sagen, wenn wir von React reden, reden wir nicht von dieser kleinen

00:08:14.547 --> 00:08:17.487
Library, sondern vom Gesamtökosystem sinnvoll.

00:08:17.587 --> 00:08:20.007
Und ich glaube, ich finde es auch legitim, da Preact mit reinzunehmen.

00:08:20.707 --> 00:08:26.807
Aber es ist ja nicht so, dass Preact einfach ein Drop-In-Replacement für React an jeder Stelle ist.

00:08:27.027 --> 00:08:31.707
Und man muss auch sagen, dass bei Preact meiner Wahrnehmung nach zum Beispiel

00:08:31.707 --> 00:08:36.147
Signals ein riesengroßes Thema sind, was innerhalb vom React-Ökosystem nicht

00:08:36.147 --> 00:08:37.267
so richtig ein Thema ist.

00:08:37.327 --> 00:08:39.927
Und das heißt, dass sie sich auch konzeptionell durchaus nochmal in eine etwas

00:08:39.927 --> 00:08:41.607
andere Richtung zwischendurch entwickeln.

00:08:41.707 --> 00:08:45.247
Insofern, ich würde sagen, es ist plausibel zu sagen, lass uns Preact mit in

00:08:45.247 --> 00:08:48.047
diesen Top reinwerfen, wenn wir jetzt über das Ökosystem reden.

00:08:48.047 --> 00:08:50.507
Aber ich würde heute im Detail widersprechen, dass es,

00:08:51.694 --> 00:08:54.434
eins zu eins das Gleiche ist und ich nicht merke, was unter der Haube da drunter

00:08:54.434 --> 00:08:57.774
läuft. Okay, aber wer berührt es zumindest in den gleichen Topf rein?

00:08:58.874 --> 00:09:01.154
Fände ich plausibel, ja. Okay, gut.

00:09:02.994 --> 00:09:07.714
Ich hätte eine Frage an Stefan gerade auch noch gehabt. Würdest du aus deiner

00:09:07.714 --> 00:09:13.134
Perspektive sagen, es war ein Fehler, dass ihr damals React eingewählt habt?

00:09:13.654 --> 00:09:16.954
Nein, überhaupt nicht. Für das, was wir erreichen wollten, war es auf jeden

00:09:16.954 --> 00:09:17.994
Fall die richtige Technologie.

00:09:18.754 --> 00:09:22.794
Wir haben vielleicht den Aufwand ein bisschen unterschätzt, was es heißt,

00:09:24.234 --> 00:09:29.274
wenn du diese Technologien und dieser Entwickler- und Entwicklerinnenmasse anbietest,

00:09:31.414 --> 00:09:36.714
welche Grundvoraussetzungen du schaffen musst, sowohl im Education-Bereich als

00:09:36.714 --> 00:09:41.374
auch in dem, was du als Framework anbietest oder was du als Schnittstellen anbietest,

00:09:41.454 --> 00:09:45.674
um mit dem Gesamtsystem zu interagieren. Da waren wir vielleicht ein bisschen zu blauäugig.

00:09:46.594 --> 00:09:49.194
Weil tatsächlich ist es so, und das ist ja das Spannende.

00:09:52.394 --> 00:09:55.954
Spiele ein bisschen mit dem ein, was der Peter auch jetzt schon gesagt hat,

00:09:56.874 --> 00:09:59.014
was stellen wir uns denn unter React eigentlich vor?

00:09:59.354 --> 00:10:03.054
Und da gibt es halt sehr viele unterschiedliche Vorstellungen,

00:10:03.214 --> 00:10:05.874
je nachdem, von wo du kommst und je nachdem, was du vorher erlebt hast.

00:10:06.054 --> 00:10:09.694
Und wenn du jetzt sagst, du heierst prinzipiell mehr React-Entwicklerinnen und

00:10:09.694 --> 00:10:13.734
Entwickler, haben wir auch so 2022, 2023 ganz stark gemacht,

00:10:13.914 --> 00:10:14.914
stark in die Breite gegangen.

00:10:15.814 --> 00:10:19.854
Die haben alle einen anderen Hintergrund gehabt. Und ich kann da nicht sagen,

00:10:19.934 --> 00:10:26.074
wie viele Support-Trickfests ich beantwortet habe, weil wir halt nicht einfach

00:10:26.074 --> 00:10:29.334
ein CSS-File importen können in JavaScript.

00:10:29.974 --> 00:10:35.894
Und du hast die Klassennamen als Property dort und kannst die auf deine Komponenten

00:10:35.894 --> 00:10:38.974
verwenden, weil wir halt eben kein Webback haben.

00:10:39.114 --> 00:10:42.494
Oder dass der API-Folder, wo wir unsere Serverless-Funktionen schreiben,

00:10:42.994 --> 00:10:45.894
grundsätzlich anders funktioniert als wie der API-Folder in Nextchess,

00:10:45.894 --> 00:10:47.894
weil wir halt eine andere Technologie darunter verwenden.

00:10:49.074 --> 00:10:50.234
Also wie gesagt, das war ein,

00:10:52.883 --> 00:10:56.543
Sehr unterschätzt von uns. Also, wir sind da viel zu,

00:10:57.843 --> 00:11:02.423
ich würde jetzt nicht sagen konzeptlos, aber wir hätten ein stärkeres Konzept

00:11:02.423 --> 00:11:05.343
auch mit dem, was wir für Schnittstellen anbieten und wie wir erwarten,

00:11:05.523 --> 00:11:08.023
dass Leute mit dem Gesamtsystem interagieren.

00:11:11.103 --> 00:11:14.603
Ich würde, das klingt so ein bisschen selbstkritisch, was du gerade gesagt hast,

00:11:14.643 --> 00:11:17.263
und deswegen würde ich da einmal widersprechen wollen.

00:11:17.383 --> 00:11:19.943
Ich habe das in der Einleitung ja gerade schon, oder im Vorgespräch gesagt,

00:11:20.123 --> 00:11:23.483
so, wenn ihr beide jetzt voll pro React werdet, dann würde ich mich auch hier

00:11:23.483 --> 00:11:24.963
hinstellen und dagegen argumentieren.

00:11:25.663 --> 00:11:29.003
Das mache ich jetzt einmal ganz kurz. Die Martina Kraus, die,

00:11:29.063 --> 00:11:33.583
glaube ich, auch schon mal hier zu Gast war, die zitiert mich ein paar Mal.

00:11:33.683 --> 00:11:36.543
Und das finde ich witzig, deswegen wollte ich das erwähnen, dass sie mich zitiert

00:11:36.543 --> 00:11:37.763
und mich einfach die Geschichte erzählen.

00:11:38.003 --> 00:11:41.983
Die zitiert mich gerne mit dem Satz, jedes React-Projekt, was ich gesehen habe,

00:11:42.043 --> 00:11:43.263
sieht komplett anders aus.

00:11:44.183 --> 00:11:47.683
Nutzt sie als Argument pro Angular und gegen React.

00:11:48.863 --> 00:11:52.323
Und das halte ich auch nicht für komplett unplausibel. Und deswegen ist diese

00:11:52.323 --> 00:11:55.303
Experience, die du da schilderst, glaube ich, nicht euch geschuldet,

00:11:55.403 --> 00:11:56.963
sondern eben React geschuldet.

00:11:57.043 --> 00:12:00.103
Also ich glaube, egal, was ihr euch dafür Gedanken gemacht hättet und was ihr

00:12:00.103 --> 00:12:04.703
da an Konzepten aus der Community eins zu eins verwendet hättet oder perfekt

00:12:04.703 --> 00:12:07.743
dokumentiert hättet, ihr wäre trotzdem dieses Problem gelaufen,

00:12:07.843 --> 00:12:09.883
dass die Leute aus einem Projekt kommen, was,

00:12:10.943 --> 00:12:14.823
anders tickt als eures, weil jedes React-Projekt anders tickt und deswegen hätten

00:12:14.823 --> 00:12:16.403
die da, glaube ich, gestruggelt.

00:12:16.543 --> 00:12:18.983
Ja, also dem kann ich was abgewinnen. Das ist ja, glaube ich,

00:12:18.983 --> 00:12:22.463
auch ein bisschen mit dieser Grundvoraussetzung, die wir gehabt haben,

00:12:22.503 --> 00:12:24.383
dass wir so viele Leute wie möglich erreichen wollen.

00:12:25.583 --> 00:12:29.103
Das ist eben auch ein bisschen geschuldet, weil ja klar, du erreichst die breite

00:12:29.103 --> 00:12:34.703
Masse an Entwicklerinnen und Entwicklern und damit hast du ja inhärent einfach

00:12:34.703 --> 00:12:38.923
auch einen anderen Wissensstand und andere Voraussetzungen und andere Hintergründe.

00:12:40.343 --> 00:12:45.003
Und darum sage ich auch, ja, also das ist...

00:12:47.212 --> 00:12:51.252
Klar, das ist mir auch jetzt bewusst. Wir haben halt nur den Aufwand unterschätzt, was es heißt.

00:12:51.352 --> 00:12:58.472
Da hat man ein bisschen Kohärenz und, jetzt fühlt man an fürs andere Wort,

00:12:59.472 --> 00:13:01.032
da ist ja Kohärenz zu kriegen.

00:13:01.532 --> 00:13:05.452
Und ein bisschen Sauberkeit. Nein, Sauberkeit ist auch falsch.

00:13:06.332 --> 00:13:11.632
Idiomatisches React willst du, glaube ich, haben, ne? Ja, aber existiert idiomatisches React, nicht?

00:13:11.832 --> 00:13:14.532
Wenn ja jeder macht, was er will, was ist denn dann das Idiom?

00:13:15.312 --> 00:13:18.232
Naja gut, es macht ja nicht jeder, was es will. Es gibt ja schon irgendwie so

00:13:18.232 --> 00:13:20.632
ein paar Leitplanken, denen die Welt folgen soll.

00:13:20.872 --> 00:13:24.872
Also irgendwie, die APIs müssen irgendwie in eine funktionale Form überführt werden.

00:13:24.952 --> 00:13:28.912
Du machst Nebenwirkungen, nicht indem du einfach imperativ die APIs aufrufst,

00:13:28.972 --> 00:13:31.072
die im Browser sind, sondern du bastelst da irgendwie was dran,

00:13:31.192 --> 00:13:32.812
um das in diesen Datenfluss reinzufügen.

00:13:34.052 --> 00:13:37.712
Das UI ist eine direkte Konsequenz aus dem State.

00:13:37.912 --> 00:13:42.192
Das ist ja schon was, was jetzt erstmal so... Aber das ist zum Beispiel ein richtig guter Punkt.

00:13:42.532 --> 00:13:47.972
Also State-Management Ist ja sehr spannend, weil ich kann dir gar nicht sagen,

00:13:48.012 --> 00:13:51.852
wie viele Diskussionen wir haben, welche State-Management-Bibliothek jetzt die

00:13:51.852 --> 00:13:56.332
richtige ist für den Use-Kiste, den wir haben. Und die Antwort ist ja.

00:13:57.232 --> 00:14:01.072
Du hast halt einfach unterschiedliche UIs, die sich unterschiedlich verhalten

00:14:01.072 --> 00:14:04.472
sollen und deswegen hat auch der Ui-State irgendwie anders gespeichert.

00:14:05.052 --> 00:14:09.232
Und dann kommt da noch viel persönliche Präferenz hinzu oder was hat einfach

00:14:09.232 --> 00:14:11.312
in den ersten zehn Minuten am besten funktioniert.

00:14:11.432 --> 00:14:15.332
Das ist ja das Schönste am Development. Wenn das Intro passt,

00:14:15.472 --> 00:14:18.172
wenn die ersten zehn Minuten super gehen, dann hast du das Gefühl,

00:14:18.312 --> 00:14:21.992
du hast super Pause und dann arbeitest du lieber um deine Entscheidung herum,

00:14:22.452 --> 00:14:25.952
als dass du irgendwann einmal sagst, du hast das Falsche gewählt und wechselst jetzt.

00:14:27.972 --> 00:14:31.052
Und ja, da habe ich aber auch tatsächlich nicht wirklich eine Antwort.

00:14:32.072 --> 00:14:36.332
Ich glaube, da gibt es keine Statemanagementlösung und wir alle entwickeln noch

00:14:36.332 --> 00:14:37.452
diese Statemanagementlösung.

00:14:37.532 --> 00:14:41.512
Ich bin mir sicher, dass wir in zig Use Cases laufen, die nicht funktionieren.

00:14:42.081 --> 00:14:44.421
Also meine persönliche Verschwörungstheorie ist ja tatsächlich,

00:14:44.621 --> 00:14:46.681
dass State-Management gar nicht existiert.

00:14:47.201 --> 00:14:52.861
Das hat sich Big State ausgedacht, um uns mehr JavaScript-Objekte zu verkaufen.

00:14:53.021 --> 00:14:56.941
Und das meine ich jetzt nur so semi-scherzhaft, weil am Ende des Tages ist es

00:14:56.941 --> 00:15:02.121
ja wirklich so, du musst irgendwo in einem wie auch immer gearteten Objekt die

00:15:02.121 --> 00:15:06.281
Daten hinlegen und du musst eine wie auch immer geartete Durchbindung an die

00:15:06.281 --> 00:15:07.741
Konsumenten anbringen.

00:15:08.641 --> 00:15:12.321
Und speziell, wenn du das dann halt eben noch so in das allgemeine Gedankengebäude

00:15:12.321 --> 00:15:16.941
von React einbaust mit dem ganzen funktionalen Blar, engt sich ja doch der Möglichkeitenkreis

00:15:16.941 --> 00:15:19.261
sehr ein, wie viel Gestaltungsfreiheit du da hast.

00:15:19.581 --> 00:15:23.481
Aber das heißt ja nicht, dass das dann egaler wird, sondern das Gegenteil ist ja der Fall.

00:15:24.201 --> 00:15:27.701
Ich meine, die Unterschiede, die wir da draußen in der Welt jetzt haben,

00:15:27.741 --> 00:15:31.361
wenn ihr einfach auf die Straße geht, zwischen euch allen, ist ja wahrscheinlich

00:15:31.361 --> 00:15:32.961
nicht so groß, die ihr da antrefft.

00:15:33.421 --> 00:15:36.121
Aber trotzdem können wir sich mit denen wunderbar halt eben darüber streiten,

00:15:36.121 --> 00:15:38.801
wie man es jetzt eigentlich machen wollte. Sollte man da einen Parkplatz für

00:15:38.801 --> 00:15:40.701
ein Auto haben oder sollte man da Fahrräder einstellen können?

00:15:41.577 --> 00:15:44.257
Ist ja eigentlich im Großen und Ganzen scheißegal, aber darüber kann man sich

00:15:44.257 --> 00:15:45.517
halt dann wunderbar in die Haare kriegen.

00:15:45.697 --> 00:15:48.117
Und ich glaube, bei State Management ist das halt am Ende ganz genauso.

00:15:48.257 --> 00:15:49.497
Du brauchst ein Objekt, wo die Daten liegen.

00:15:49.677 --> 00:15:53.457
Aber weil es halt eben etwas ist, ein Problem ist, das erstens einen griffigen

00:15:53.457 --> 00:15:57.297
Namen hat, zweitens von jedem verstanden werden kann, drittens kann man da sehr

00:15:57.297 --> 00:16:01.317
viel Meinung zu entwickeln, ist das halt so etwas, was sozusagen ein natürlicher

00:16:01.317 --> 00:16:04.637
Punkt ist, an dem sich Diskussion entzünden kann und worüber man sich uneins sein kann.

00:16:05.277 --> 00:16:07.397
Ja, ich glaube, das mit der Meinung ist wirklich ein guter Punkt.

00:16:10.097 --> 00:16:12.877
Nicht nur das, nicht nur das. Ich glaube nicht nur immer. Also ich glaube,

00:16:12.897 --> 00:16:17.537
ich glaube ja ganz stark daran, dass Softwarearchitektur vor allen Dingen zum Team passen sollte.

00:16:17.677 --> 00:16:20.097
Also das heißt, wenn du halt ein Team von 50 React-Entwicklern hast,

00:16:20.137 --> 00:16:23.917
die alle React machen wollen, dann fang bitte nicht an, Angular oder Web-Components

00:16:23.917 --> 00:16:26.157
zu machen. Es sei denn, du hast sehr triftige Gründe dafür.

00:16:27.497 --> 00:16:32.977
Insofern Meinung finde ich wichtig, aber ich glaube, dass es einen Grund dafür

00:16:32.977 --> 00:16:35.597
gibt, dass es das Wort State Management gibt und ich glaube auch,

00:16:35.757 --> 00:16:40.197
dass bis heute Redux zum Beispiel, was eines der komplexeren State Managements

00:16:40.197 --> 00:16:43.897
in React ist, auch wenn es eigentlich nur 50 Zeilen Code sind oder so oder 120,

00:16:44.857 --> 00:16:48.237
dass es dafür eine Existenzberechtigung gibt.

00:16:48.237 --> 00:16:53.837
Das Problem ist, dass ganz häufig diese State-Management-Lösungen auf ein besseres

00:16:53.837 --> 00:16:55.377
phpMyAdmin geworfen werden.

00:16:55.517 --> 00:16:58.997
Also wenn ich halt einfach nur eine Tabelle habe, die die Daten aus einer Datenbank

00:16:58.997 --> 00:17:03.757
anzeigt und ein Textfeld editieren kann und das da wieder in die Daten mal geschickt

00:17:03.757 --> 00:17:07.137
wird, dann brauche ich aller Wahrscheinlichkeit nach kein hochkomplexes State-Management.

00:17:08.417 --> 00:17:12.857
Es gibt aber Situationen, wo es sinnvoll ist, da mehr zu haben,

00:17:12.937 --> 00:17:15.857
als einfach nur ein Objekt, in das ich Daten reinschreibe und wo ich sie wieder rauslese.

00:17:15.977 --> 00:17:20.237
Und insofern, ich würde nicht pauschal sagen, dass das eine Verschwörungstheorie

00:17:20.237 --> 00:17:25.337
ist, dass es dieses Konzept gibt, sondern ich glaube, dass es halt gerne mal

00:17:25.337 --> 00:17:29.477
overengineert wird an ein paar Stellen und man komplexe Technologien schnell

00:17:29.477 --> 00:17:30.517
nutzt, wo man sie nicht braucht.

00:17:31.756 --> 00:17:35.976
Naja, und du musst natürlich auch sagen, die Diskussion und das immer weitere

00:17:35.976 --> 00:17:39.336
Durchiterieren von verschiedenen State-Management-Lösungen hat tatsächlich,

00:17:39.556 --> 00:17:42.836
würde ich behaupten, einen evolutionären Vorteil gegenüber von dem,

00:17:42.936 --> 00:17:44.956
was Stefan versucht, da in seiner Firma zu haben,

00:17:45.296 --> 00:17:47.896
nämlich wir nehmen das einmal und dann ziehen wir das durch.

00:17:48.876 --> 00:17:54.156
Das will ich ja gar nicht, das ist natürlich der Punkt, der noch immer aufgebracht

00:17:54.156 --> 00:17:57.376
wird, wenn du zu viel Fragmentierung hast, dann entscheiden wir uns für uns

00:17:57.376 --> 00:17:58.196
und dann rennen wir damit.

00:17:58.776 --> 00:18:01.836
Ich sehe das ja nicht so, aber mir fällt ja da keine bessere Lösung ein.

00:18:03.316 --> 00:18:08.736
Also was ich halt hatte, als ich seinerzeit als Signals, die hatten wir ja gerade

00:18:08.736 --> 00:18:09.816
schon mal erwähnt, hochkam,

00:18:10.396 --> 00:18:13.196
und so irgendwie alle erzählt haben, hier, du musst jetzt State Management in

00:18:13.196 --> 00:18:15.936
Signals machen, Dann dachte ich so, ja, baust du halt mal ein und guckst,

00:18:15.936 --> 00:18:20.816
was passiert und habe halt mein altes Statement mit rausgeschmissen und ersetzt durch Signals.

00:18:21.316 --> 00:18:26.476
So, jetzt dürft ihr mal raten, ist das Ergebnis am Ende besser gewesen als vorher

00:18:26.476 --> 00:18:28.776
oder ist es schlechter geworden oder gleich geblieben?

00:18:32.044 --> 00:18:35.584
Wenn ich mein altes State-Management rausreiße, alles wegtue,

00:18:35.664 --> 00:18:37.924
was ich vorher hatte und durch Signals ersetze.

00:18:38.864 --> 00:18:41.704
Um ehrlich zu sein, ich kann mir vorstellen, dass es alles viel besser geworden

00:18:41.704 --> 00:18:44.604
ist, dass es alles viel schlimmer geworden ist oder dass es einfach komplett gleich geblieben ist.

00:18:44.684 --> 00:18:47.444
Ich halte alle drei Antworten, kann ich Szenarien skizzieren,

00:18:47.504 --> 00:18:49.364
in denen das noch passiert. Alle drei Antworten gleichzeitig.

00:18:50.124 --> 00:18:57.304
Also ist nicht gut. Na, Antwort ist, ist besser geworden, signifikant besser geworden.

00:18:57.644 --> 00:19:01.264
Und ich würde behaupten, das lässt sich auch auf andere transponieren.

00:19:01.844 --> 00:19:05.964
Das ist dann aber nicht tatsächlich darin bedingt, dass die Signals jetzt irgendwie

00:19:05.964 --> 00:19:09.644
besser wären im State Management, sondern ich habe halt einen Anlass gehabt,

00:19:09.724 --> 00:19:10.944
um ein State Management neu zu bauen.

00:19:12.064 --> 00:19:13.984
Und ich, als ich das gemerkt habe, dass ich so gedacht habe,

00:19:13.984 --> 00:19:15.044
das ist sehr viel besser geworden.

00:19:15.124 --> 00:19:18.564
Es gibt für mich keine Möglichkeit festzustellen, ob das jetzt an der Technologie

00:19:18.564 --> 00:19:22.504
liegt oder ob einfach ich jetzt mal ein ordentliches Refactoring en passant

00:19:22.504 --> 00:19:25.564
gemacht habe, was ich ja machen musste, weil ich kann ja nicht alles rausschmeißen

00:19:25.564 --> 00:19:28.364
und neu machen, ohne zu wissen, was ich tue.

00:19:28.364 --> 00:19:32.924
Habe ich halt festgestellt, es ist nicht feststellbar, a, ob das jetzt besser

00:19:32.924 --> 00:19:35.464
geworden ist durch die Technologie oder nicht und b.

00:19:36.944 --> 00:19:40.224
Dass Leute dauernd über Statemanagement diskutiert wird und das ständig ersetzt

00:19:40.224 --> 00:19:44.764
wird, sorgt überbandet tatsächlich für bessere Apps, aber nicht aus dem Grund,

00:19:44.844 --> 00:19:45.564
aus dem die Leute glauben.

00:19:46.799 --> 00:19:50.539
Das ist so ein evolutionärer Hack, glaube ich, der da drin ist, der ganz praktisch ist.

00:19:51.139 --> 00:19:54.899
Weil du zum Refactoring gezwungen wirst, wenn du den Switch machst.

00:19:55.219 --> 00:19:58.539
Solange du halt irgendwie basale Restkompetenz hast, kommst du nicht umhin,

00:19:58.859 --> 00:20:02.199
da irgendwelche Learnings rein zu integrieren und Sachen zu vereinfachen und zu vereinheitlichen.

00:20:02.339 --> 00:20:04.359
Ja, weil du wahrscheinlich dann die Abstraktionen machst, nicht willst,

00:20:04.419 --> 00:20:08.199
dass du ausdenkst, sondern willst, dass du brauchst. Ja, genau.

00:20:08.879 --> 00:20:13.399
Das ist eigentlich schon mal ein guter Punkt. Ich möchte nochmal sagen, es gibt Ausnahmen.

00:20:13.579 --> 00:20:15.959
Es gibt Einwendungen, die davon profitieren,

00:20:15.959 --> 00:20:19.279
dass man das State-Management austauscht und in alle Richtungen.

00:20:19.519 --> 00:20:22.059
Also ich erinnere mich an eine Anwendung, die wir gebaut haben,

00:20:22.099 --> 00:20:25.179
wo ich mir sehr sicher bin, wir hätten einfach verdammt noch Redux einsetzen

00:20:25.179 --> 00:20:27.639
sollen und dann wäre alles besser gewesen, das sage ich selten.

00:20:28.779 --> 00:20:31.219
Und es gibt Anwendungen, die einfach davon profitiert hätten,

00:20:31.299 --> 00:20:34.139
dass man einfach ein großes Objekt gehabt hätte, aus dem man Daten auslesen kann.

00:20:34.679 --> 00:20:39.259
Ich glaube, in beide Richtungen kann das Dinge verbessern. Also wenn ich an

00:20:39.259 --> 00:20:42.259
eine Anwendung, die eigentlich nichts anderes macht, als die Daten vom Server

00:20:42.259 --> 00:20:45.679
darzustellen und irgendwo gibt es da noch einen Knopf in Warenkorb hinzufügen denke,

00:20:46.159 --> 00:20:51.119
dass die eine mehrere tausend Zeilen große Redux-Struktur da drin hat,

00:20:51.279 --> 00:20:53.639
ist aller Wahrscheinlichkeit nach großer Rumbug.

00:20:55.019 --> 00:20:59.079
Man könnte nachdenken, ob man in dem Anwendungsfall überhaupt direkt in seiner

00:20:59.079 --> 00:21:02.019
Nähe haben möchte und ob man da nicht einfach mit ein bisschen Oldschool,

00:21:02.119 --> 00:21:06.159
PHP oder Java besser aufgehoben wäre. Da können wir gleich drüber sprechen, ja.

00:21:06.739 --> 00:21:09.959
Aber also, nur so als Beispiel, also wenn du halt wirklich einfach nur Daten

00:21:09.959 --> 00:21:14.479
aus dem Backend anzeigst, dann brauchst du halt kein komplexes Statement Management,

00:21:14.659 --> 00:21:18.539
dann brauchst du einen HTTP-Client, der im Zweifelsfall noch...

00:21:18.539 --> 00:21:21.939
Ja, was aber witzig ist, was ja auch nicht so gang und gäbe ist in React,

00:21:22.079 --> 00:21:26.799
dass du einfach Build-in Fetching vom Backend hast, sondern da brauchst du halt

00:21:26.799 --> 00:21:29.579
auch wieder die zehnte Bibliothek dazu.

00:21:29.719 --> 00:21:34.659
Und das ist eigentlich einer der Hauptkritikpunkte, die ich an React habe, ist, dass.

00:21:36.986 --> 00:21:45.786
Es keine einfache oder einheitliche oder simpel gestrickte Lösung gibt, dass man Daten holt.

00:21:45.926 --> 00:21:50.826
Du brauchst immer irgendeinen Workaround mit Hooks oder du brauchst eine Bibliothek,

00:21:50.906 --> 00:21:52.306
die diese Abstraktion über den Hook

00:21:52.306 --> 00:21:57.846
für die macht, wie zum Beispiel dieses React-Query-Dingens-Testaten gibt.

00:21:59.586 --> 00:22:07.386
Und die sich das für ein großes Manko an dem Ding generell, weil ich halt keine

00:22:07.386 --> 00:22:10.266
Web-Applikation kenne, die nicht irgendwie Daten von einem Backend hat.

00:22:11.446 --> 00:22:16.106
Der Punkt ist, dass wie die Daten vom Backend kommen im React-Ökosystem dann

00:22:16.106 --> 00:22:17.826
doch sehr unterschiedlich sein kann.

00:22:18.026 --> 00:22:20.666
Also ich meine, wenn man mal darüber nachdenkt, Peter hat ja irgendwie schon

00:22:20.666 --> 00:22:24.866
damals von vorm Krieg erzählt, als React irgendwie in 2013 erfunden wurde oder

00:22:24.866 --> 00:22:26.086
so veröffentlicht, Keine Ahnung.

00:22:27.326 --> 00:22:30.846
Für Facebook war das ja schon immer was, was auch serverseitig ausgeführt wird,

00:22:31.106 --> 00:22:35.106
was für 90 Prozent der React-Anwendungen bis vor fünf Jahren nicht der Fall war.

00:22:35.346 --> 00:22:38.526
Und die Art und Weise, wie du Daten lädst, wenn du das als serverseitige Anwendung

00:22:38.526 --> 00:22:41.206
hast, ist halt dann doch nochmal anders, als wenn du es kleinseitig hast.

00:22:41.426 --> 00:22:46.686
Und wenn Facebook uns damals schon Serverseit-Rendering aufgezwungen hätte in React.

00:22:48.518 --> 00:22:52.758
Glaube ich, wäre es nie so erfolgreich geworden. Ich bin mir nicht ganz versichert,

00:22:52.858 --> 00:22:55.058
aber ich glaube, da wäre es nie so erfolgreich geworden und dann würden wir

00:22:55.058 --> 00:22:56.018
heute nicht darüber reden.

00:22:57.618 --> 00:23:02.478
Ich bin ja irgendwie da auch bei dir. Jede React-Anwendung sieht anders aus,

00:23:02.638 --> 00:23:05.918
kommt ja auch daher und ich finde es durchaus eine Stärke von React,

00:23:06.058 --> 00:23:09.678
dass ich mir hier meine Werkzeuge zusammensuchen kann, aber es ist halt auch

00:23:09.678 --> 00:23:13.338
richtig scheiße, dass jedes React anders aussieht.

00:23:14.078 --> 00:23:17.178
Am liebsten hätte ich einfach irgendwie Unterstützung, dass ich Fetch aufrufen

00:23:17.178 --> 00:23:18.218
kann in einer Komponente.

00:23:19.338 --> 00:23:25.498
Dann wäre ich so glücklich mit dem Ding, weil dann hätte ich mal 95 Prozent meiner Fälle erledigt.

00:23:25.738 --> 00:23:28.578
Das ist dann das, was die Angular-Leute, glaube ich, Zone.js nennen und das

00:23:28.578 --> 00:23:29.538
wollen sie auch loswerden.

00:23:29.658 --> 00:23:35.198
Wenn du halt die nativen APIs so patchst, dass die sich in dein Change-Tracking integrieren.

00:23:35.598 --> 00:23:40.438
Also man könnte ja durchaus sagen, dass React sowas wie das React-Query,

00:23:40.578 --> 00:23:45.618
also für die Nicht-Reactler, das abstrahiert letztendlich das Warten auf den Promise weg.

00:23:45.998 --> 00:23:48.398
Das ist so ein großes Grund, was es als Prozent tut.

00:23:48.978 --> 00:23:51.958
Ich kenne das jetzt nicht aus der Nähe. Also es ist sozusagen Await, aber für React.

00:23:52.518 --> 00:23:56.858
Genau, also du hast irgendwie, du hast so, du sagst Const Serverantwort gleich

00:23:56.858 --> 00:24:01.858
React Query und dann wirfst du da eine Ating Function rein und du kriegst da

00:24:01.858 --> 00:24:05.618
noch einen, das Promise ist gerade Pending oder es gab einen Error und so weiter.

00:24:05.738 --> 00:24:07.938
Also ich habe es jetzt gerade drastisch vereinfacht konzeptionell,

00:24:07.978 --> 00:24:10.218
aber das ist das, was React Query letztendlich macht.

00:24:10.598 --> 00:24:12.278
Ist das nicht das, was Lazy eigentlich

00:24:12.278 --> 00:24:16.858
macht? Also da gibt es ja diese Lazy-Funktion in React-Suspense?

00:24:17.338 --> 00:24:21.698
Nee, das ist für... Also, ja, in React-Suspense würde ich da wieder...

00:24:22.278 --> 00:24:25.058
Ja, das könnte durchaus sein. Das Ding ist, dass du dafür noch das Suspense

00:24:25.058 --> 00:24:28.918
brauchst, was auch noch nicht jeder heutzutage... Ja, genau, genau.

00:24:29.758 --> 00:24:33.718
Moment, Lazy ist für Komponenten, die du Lazy lädst, oder?

00:24:35.718 --> 00:24:37.638
Ich glaube, dass du auch jede...

00:24:39.147 --> 00:24:43.667
Jede Promise dort reinschmeißen kannst. Gut, dass wir keine Web-Components machen,

00:24:43.767 --> 00:24:44.847
weil die ja so kompliziert sind.

00:24:45.187 --> 00:24:50.427
Also, es gäbe auch andere Wege, dafür brauchst du aber Suspense relativ sicher.

00:24:50.527 --> 00:24:53.547
Du hast komplett recht.

00:24:55.487 --> 00:25:01.847
Puh. Und also, wie gesagt, das, was React Query macht, ist also dieses,

00:25:02.067 --> 00:25:06.287
du hast da ein Promise und irgendwann resolvst es und dann greifst du auf die Daten zu.

00:25:06.367 --> 00:25:09.947
Das geht halt mit React-Board-Mitteln nur, indem man zwei Hooks miteinander

00:25:09.947 --> 00:25:12.927
kombiniert und es wird immer falsch gemacht, diese beiden Hooks zu kombinieren

00:25:12.927 --> 00:25:17.067
und deswegen, absolut nerviger Boilerplate-Code.

00:25:17.447 --> 00:25:22.087
Man könnte natürlich jetzt sagen, lass uns mal irgendwie eine Use-Fetch-Result

00:25:22.087 --> 00:25:25.487
Hook in React einbauen, die genau das tut.

00:25:26.287 --> 00:25:29.427
Das Problem dann ist, dass.

00:25:32.521 --> 00:25:37.021
Die API, die man dafür bereitstellen muss, doch etwas komplizierter sehr schnell wird.

00:25:37.281 --> 00:25:40.861
Weil du im Zweifelsfall, du brauchst Support für Refetch, du musst Error-Handling

00:25:40.861 --> 00:25:43.881
irgendwie mit einbauen, Loading-Indicators mit einbauen.

00:25:44.021 --> 00:25:45.981
Und irgendwann kommt man, glaube ich, dann dabei an, dass man bei einer API

00:25:45.981 --> 00:25:47.681
in der Größe von React Query landet.

00:25:48.801 --> 00:25:52.541
Und dass sowas Großes will React eben nicht selber mitbringen.

00:25:52.661 --> 00:25:55.721
Es ist trotzdem was, wo ich immer wieder denke, Leute, könnt ihr den nicht eben?

00:25:55.821 --> 00:25:58.401
So ein bisschen haben sie das versucht, als sie da angefangen haben,

00:25:58.541 --> 00:26:02.221
Fetch zu patchen, damit das besser in React-Kontext passt.

00:26:02.521 --> 00:26:06.261
Stellt sich heraus, es kommt nicht so gut in der JavaScript-Community an, wenn man Fetch-patcht.

00:26:07.141 --> 00:26:11.641
Insofern, so frustriert ich auch immer wieder darüber bin, dass es kein Latma

00:26:11.641 --> 00:26:16.961
eben Dart per HTTP in React-Bordmittel gibt, verstehe ich auch, wo es herkommt.

00:26:18.661 --> 00:26:22.161
Und ich drehe tatsächlich, wenn, also wir entwickeln nicht nur Anwendungen,

00:26:22.241 --> 00:26:23.701
wir machen auch mal Schulung und Beratung.

00:26:23.941 --> 00:26:30.081
Und wenn ich im Kundencode sehe, dass sie überall Use State mit Use Effect kombinieren,

00:26:30.201 --> 00:26:33.661
um dann HTTP-Request zu machen, dann erkläre ich denen immer wieder,

00:26:33.761 --> 00:26:35.361
Leute, dann abstrahiert es wenigstens selber weg.

00:26:35.441 --> 00:26:37.821
Also wenn ihr euch schon weigert, eine Bibliothek dafür einzusetzen,

00:26:37.901 --> 00:26:40.241
die HTTP-Request macht, dann abstrahiert es bitte selber weg.

00:26:42.401 --> 00:26:47.521
Es gibt übrigens jetzt Use, habe ich gerade gefragt. Use, da kannst du wirklich

00:26:47.521 --> 00:26:49.121
jede Promis reinschmeißen. Genau.

00:26:49.701 --> 00:26:52.621
Das braucht aber Suspense, wenn ich mich nicht vertue.

00:26:53.461 --> 00:26:56.001
Ich glaube, du brauchst Suspense, falls der Fallback brauchst,

00:26:56.061 --> 00:26:57.681
falls die Promis noch nicht resolved ist.

00:27:00.481 --> 00:27:06.821
Ich muss jetzt auch. Ist eigentlich cool. Ich hoffe, bald kriegen wir die Technologie,

00:27:07.321 --> 00:27:10.781
dass wir Film auf T-Shirts drucken können. Ja.

00:27:11.843 --> 00:27:14.603
Dann nehme ich mir nämlich die letzten zehn Minuten, drucke sie auf mein T-Shirt

00:27:14.603 --> 00:27:17.623
und ziehe das zu jeder Konferenz an, wenn mir dann wieder irgendwer erzählen

00:27:17.623 --> 00:27:19.303
möchte, Web-Components sind zu kompliziert.

00:27:19.463 --> 00:27:24.063
Aber wir treffen da ja gerade einen ziemlich guten Punkt, weil das ist ja eigentlich

00:27:24.063 --> 00:27:26.603
auch ein Thema, gerade vor dieser Trajektorie, wo wir kommen,

00:27:26.683 --> 00:27:31.803
dass wir sagen, Hättinge sind einfach zugänglich, niederschwellig und solche Sachen.

00:27:32.383 --> 00:27:37.163
Diesen Eindruck vermittelt ja React und sehr viele Frameworks rund um React

00:27:37.163 --> 00:27:41.223
vermitteln das auch, dass du relativ einfach Dinge erledigen kannst,

00:27:41.843 --> 00:27:42.903
Bis zu einem gewissen Punkt.

00:27:43.823 --> 00:27:48.963
Das ist ein Grund, warum ich sage, Preact ist React. React ist keine Software. React ist ein Meme.

00:27:49.363 --> 00:27:54.383
Das ist eine Erzählung und eine Idee kombiniert mit einem Ökosystem und dann

00:27:54.383 --> 00:27:56.683
franzt das halt eben so aus, wie halt eben dann auch die Memes,

00:27:56.843 --> 00:28:00.283
wenn sie bei den Facebook-Bubern angekommen sind, so langsam anfangen zu degenerieren.

00:28:01.403 --> 00:28:05.283
Deswegen wollte ich ganz zu Beginn von dieser Idee, das ist diese spezifische

00:28:05.283 --> 00:28:08.503
Software weg, sondern das ist eine generelle Herangehensweise.

00:28:08.703 --> 00:28:12.403
Man mache funktionale Programmierung, gebiege die JavaScript-Sprache,

00:28:12.443 --> 00:28:13.803
die eine primär imperative ist,

00:28:14.243 --> 00:28:17.903
mit allen Mitteln irgendwie dazu, um das zu machen, wo andere Sprachen halt

00:28:17.903 --> 00:28:20.983
einfach so algebraische Effekte ja nativ drin haben, muss man sich hier mit

00:28:20.983 --> 00:28:25.483
den Hooks einen abbrechen, was halt Boilerplate ist, was halt fehleranfällig ist,

00:28:25.863 --> 00:28:29.063
wo man halt irgendwie so sagt, aber wir gehen jetzt diesen Weg,

00:28:29.143 --> 00:28:34.003
wir haben jetzt diesen Weg eingeschlagen und wir nehmen das jetzt komplett mit, all in.

00:28:34.263 --> 00:28:36.563
Und das ist halt vor allen Dingen eine Erzählung. Und da würde ich halt eben

00:28:36.563 --> 00:28:40.423
sehr viel reinräumen, was halt jetzt nicht wirklich aus den Facebook-Laboren selber kommt.

00:28:41.403 --> 00:28:44.563
Gegenüber der ganzen Idee von JavaScript first fürs User Interface,

00:28:44.783 --> 00:28:46.903
statt halt zu sagen, hier PHP fertig ist.

00:28:47.783 --> 00:28:50.403
Ich meine, du bist ja bei jeder Technologie irgendwo an einem Punkt,

00:28:50.503 --> 00:28:53.563
wo du mit der Technologie sehr, sehr intensiv auseinandersetzen musst,

00:28:53.643 --> 00:28:54.563
damit du sie auch verstehst.

00:28:54.703 --> 00:28:58.063
Also ich glaube, diese Illusion, dass du einfach damit laufen kannst und alles

00:28:58.063 --> 00:29:01.163
wird einfach, funktioniert halt einfach nicht, weil,

00:29:01.959 --> 00:29:07.279
wo es an Magie versteckt ist, kommt irgendwann einmal ins Tageslicht und du

00:29:07.279 --> 00:29:08.479
musst verstehen, was dort passiert.

00:29:09.179 --> 00:29:12.219
Du kannst die Frequenz von sowas doch sehr moderieren. Ich meine,

00:29:12.319 --> 00:29:14.839
wann hast du dir zuletzt, du machst doch hier dein Low-Level-Rust-Kram,

00:29:14.959 --> 00:29:19.039
wann hast du dir zuletzt darüber Gedanken über virtuellen Speicher gemacht?

00:29:19.639 --> 00:29:22.979
Ja, gar nicht. Siehst du wohl, weil das nämlich eine saubere Abstraktion ist.

00:29:23.259 --> 00:29:28.779
Aber das ist ja eigentlich der Punkt. Also ich verstehe, dass man irgendwann

00:29:28.779 --> 00:29:32.819
einmal den Punkt erreichen muss, wo man sich mit der Technologie auseinandersetzt,

00:29:32.959 --> 00:29:35.779
was aber dann problematisch ist, wenn es du eben merkst, und das ist genau,

00:29:35.839 --> 00:29:36.679
was du jetzt beschrieben hast,

00:29:37.079 --> 00:29:39.819
dass in Wirklichkeit eine Parallelwelt aufgebaut worden ist,

00:29:39.919 --> 00:29:43.979
die nicht so wirklich kompatibel ist mit dem, was du als Ausgangstechnologie hast.

00:29:44.779 --> 00:29:49.639
Und Fetch ist ja, oder die lange Zeit, die es gedauert hat, um Fetch irgendwie

00:29:49.639 --> 00:29:53.519
integrieren zu können in React, ist ja symptomatisch dafür.

00:29:54.979 --> 00:29:57.579
Die Grundvoraussetzung, wie React funktioniert, gestrickt ist,

00:29:57.659 --> 00:30:04.119
gebaut ist, widerspricht sie mit dem, was du an Basistechnologien hast und der

00:30:04.119 --> 00:30:05.639
Bruch dazwischen ist auch so groß.

00:30:05.739 --> 00:30:09.259
Das heißt, selbst wenn ich jetzt sage, ich lerne das Fremdwerk oder die Bibliothek

00:30:09.259 --> 00:30:12.679
besser kennen und setze mich damit auseinander, was das Ding können soll oder

00:30:12.679 --> 00:30:16.899
wie das Ding funktioniert, kann ich das nicht rückführen auf das, was ich schon weiß.

00:30:17.039 --> 00:30:23.719
Das heißt, auch ich als alter grauer Internet-Veteran, der in den 90er Jahren

00:30:23.719 --> 00:30:24.739
schon Webseiten gemacht hat.

00:30:26.382 --> 00:30:30.902
Gern vom Krieg erzählt, das ist der Podcast hier. Ich tue mir schwer,

00:30:31.002 --> 00:30:33.022
dass ich diese Brücken schlage zu dem, was dort passiert,

00:30:33.282 --> 00:30:36.862
ohne dass ich meine vertraute Browser, Chowas, Skip, was auch immer,

00:30:37.022 --> 00:30:40.182
komplett verlasse und mir auf das einlasse, was dort passiert.

00:30:40.322 --> 00:30:41.622
Und da werden eben die Brüche sichtbar.

00:30:41.822 --> 00:30:49.522
Und da werden diese Gaps sichtbar, die man dann irgendwie füllen muss.

00:30:50.322 --> 00:30:53.842
Leaks, die Abstraction ist, glaube ich, das Stichwort. Das ist eine Abstraktion,

00:30:53.922 --> 00:30:55.842
die gerne dichter wäre, als ich sein kann.

00:30:56.702 --> 00:30:59.542
Weil sie halt eben mit dem interagieren muss, was schon da ist.

00:31:00.082 --> 00:31:02.102
Ja, ziemlich guter Punkt.

00:31:02.662 --> 00:31:04.742
Weil es halt eben nicht so eine perfekte Illusion aufbauen kann,

00:31:04.742 --> 00:31:07.042
wie der eben von mir angesprochene virtuelle Speicher.

00:31:07.362 --> 00:31:11.842
Ja, und darum hättest du einfach auch gern irgendwie nicht ein PHP-Skript oder

00:31:11.842 --> 00:31:16.622
ein Java-Becken, das HTML rausrotzt, weil rausgerotztes HTML ist so nativ,

00:31:16.682 --> 00:31:18.602
wie es nur geht im Browser.

00:31:20.182 --> 00:31:23.242
Wenn es da bloß Technologie gäbe, um das dann noch ein bisschen aufzuhübschen

00:31:23.242 --> 00:31:28.562
und zu ergänzen, um eigene HTML-Elemente, aber das ist ja leider nicht machbar. Ah, du, ja.

00:31:31.582 --> 00:31:34.722
Meine Meinung nach, braucht es das ja nicht einmal. Ja, aber gut.

00:31:37.342 --> 00:31:40.382
Sehr klar. Nee, selten. Ich habe letztens jemanden gehabt, der auch so sagte,

00:31:41.062 --> 00:31:43.482
Peter, berat mich mal, soll ich jetzt wirklich Next.js machen?

00:31:43.542 --> 00:31:47.382
Alles, was ich kann, ist PHP und ich möchte gerne irgendwie keinen Ärger haben

00:31:47.382 --> 00:31:49.422
mit irgendwie zu viel CSS.

00:31:49.822 --> 00:31:52.402
Welche Browser musst du supporten? Ja, Chrome. Okay, pass auf,

00:31:52.402 --> 00:31:54.882
Du machst einfach weiter dein PHP-Kram mit deinen Twig-Templates.

00:31:55.022 --> 00:31:58.502
Wenn du nur Chrome supporten musst, kannst du einfach Style-Tags und Add-Scope-Regeln nehmen.

00:31:58.942 --> 00:32:03.002
Das heißt, du baust deine Komponenten PHP-seitig. Das CSS ist natives CSS,

00:32:03.162 --> 00:32:04.062
was da direkt dran wohnt.

00:32:04.122 --> 00:32:07.222
Du brauchst keinen Bildprozess, kein gar nichts und damit kannst du eine Laborverwaltung

00:32:07.222 --> 00:32:08.462
bauen. Ende aus Mickey Mouse.

00:32:10.935 --> 00:32:13.935
Und diese Kunden landen dann irgendwann bei mir und meiner Entwickler sind alle

00:32:13.935 --> 00:32:16.255
traurig, weil sie jetzt jQuery mit Twig machen müssen.

00:32:18.575 --> 00:32:21.535
Also er hatte mich tatsächlich nach jQuery gefragt. Ich so, ja,

00:32:21.575 --> 00:32:23.355
kannst du eigentlich machen? Ich meine, es spricht nichts dagegen,

00:32:23.455 --> 00:32:25.475
außer dass es halt eben komisch aussieht, wenn deine Kollegen das sehen.

00:32:25.795 --> 00:32:28.055
Aber dann hat er irgendwann gesagt, nö, weißt du was, ich habe festgestellt,

00:32:28.115 --> 00:32:29.775
das geht ja mittlerweile mit nativen DOM ganz super.

00:32:30.075 --> 00:32:33.155
Hier, ich habe mal schon Proof of Concept gebaut und da kam er halt mit nativer

00:32:33.155 --> 00:32:35.955
Drag-and-Drop-API-Benutzung entgegen, was ich noch nie gesehen habe.

00:32:36.095 --> 00:32:38.895
Und er so, nee, das funktioniert. Ich kann jetzt hier so meine Laborproben von

00:32:38.895 --> 00:32:41.775
dem Schrank in den Schrank verschieben. das macht dann ein Fetch zum Backend

00:32:41.775 --> 00:32:42.775
und fertig ist die Kiste.

00:32:44.075 --> 00:32:45.955
Der wäre beinahe bei Next.js gelandet.

00:32:47.575 --> 00:32:50.695
Ja, da kannst du es natürlich nur machen, wenn du irgendeine Middleware hast,

00:32:50.875 --> 00:32:53.495
die auf Vercel läuft. Ansonsten funktioniert es dann nicht mehr.

00:32:55.315 --> 00:32:58.695
Ich weiß nicht, ob das so ist, aber das wird zumindest immer propagiert.

00:32:58.795 --> 00:33:01.655
Es wird irgendwann so sein. Dass man das unbedingt braucht.

00:33:02.375 --> 00:33:05.335
Fragst du unbedingt sehr viel Server in deiner kleinseitigen App?

00:33:06.395 --> 00:33:09.695
Es wird besser, Next.js nicht bei Vercel zu hosten.

00:33:10.755 --> 00:33:16.935
Aber Next Trace ohne serverseitige Komponente einzusetzen, halte ich für eine Fehlentscheidung.

00:33:17.355 --> 00:33:19.615
Das ist ja auch nicht der Sinn der Übung. Genau.

00:33:23.195 --> 00:33:27.075
Ich bin die ganze Zeit so ruhig, weil ich mich nicht entscheiden kann,

00:33:27.195 --> 00:33:30.255
welchen der 40 Punkte, die ich reagieren möchte, ich eigentlich ausspreche,

00:33:30.375 --> 00:33:31.435
weil ich das ganz schlimm mache.

00:33:34.455 --> 00:33:37.235
Wir können das machen, wie alle Leute am Stammtisch, du sagst einfach deine

00:33:37.235 --> 00:33:39.895
Meinung, die kann auch komplett anders sein und komplett unabhängig von dem,

00:33:39.895 --> 00:33:41.835
was wir sagen. Und einfach nicht auf das Eingehen.

00:33:42.095 --> 00:33:44.355
Nicht auf das Eingehen, was du gesagt hast. Ja, das finde ich gut.

00:33:45.015 --> 00:33:48.915
Du kennst das doch von Talks auf Konferenzen. Ich habe hier mehr so noch eine

00:33:48.915 --> 00:33:50.055
Ergänzung als eine Frage.

00:33:50.195 --> 00:33:54.715
Und zwar Du hast vor einer Dreiviertelstunde irgendwann gesagt, Peter,

00:33:58.015 --> 00:34:02.415
irgendwas mit React behauptet, es sei einfach oder sowas in der Richtung.

00:34:04.355 --> 00:34:07.215
Ich weiß, was genau du gesagt hast. Ich kann hier leider nicht zurückspulen.

00:34:07.335 --> 00:34:08.915
Alle anderen können das jetzt Es ist okay, es ist unfair.

00:34:11.736 --> 00:34:14.296
Du hast dann als nächstes gesagt, Next.js tut sowas auch in der Richtung.

00:34:14.476 --> 00:34:18.716
Und ich würde halt sagen, React ist halt eine Low-Level-Bibliothek.

00:34:18.836 --> 00:34:21.896
React ist der Virtual Memory, hat es ein bisschen verkackt an ein paar Stellen

00:34:21.896 --> 00:34:23.556
mit den Abstraktionen, bin ich ja auch bei dir.

00:34:23.916 --> 00:34:27.176
Aber React hat nicht diese Prämisse, hey, mit mir kannst du ganz einfach eine

00:34:27.176 --> 00:34:29.876
neue Website bauen. Das ist nicht das Werbeversprechen davon.

00:34:30.636 --> 00:34:35.436
Bei Next.js bin ich bei dir und die Einstiegshürde bei Next.js halte ich auch

00:34:35.436 --> 00:34:38.956
für verhältnismäßig gering, insbesondere für so einen PHP-Entwickler.

00:34:39.136 --> 00:34:43.376
Die Wahrscheinlichkeit, dass dann da am Ende was fehlerhaftes Rausfeld ist aber

00:34:43.376 --> 00:34:44.896
auch relativ groß, muss man dazu sagen.

00:34:46.936 --> 00:34:49.756
Aber trotzdem, ich wollte nur widersprechen, ich glaube nicht,

00:34:49.836 --> 00:34:53.276
dass die Idee von React, dass es einfach zu bedienen ist und dass die Idee von

00:34:53.276 --> 00:34:56.456
React ist, um nochmal die Code zu voll hinzukriegen, dass es einen einfachen

00:34:56.456 --> 00:34:58.196
Weg liefert hat, HTTP-Requests zu machen.

00:34:58.316 --> 00:35:00.996
Da sagt React, hey, das müssen euch die Frameworks machen. Deswegen sagt React

00:35:00.996 --> 00:35:03.816
ja auch auf der Website mittlerweile, bitte setz nicht React ein,

00:35:03.916 --> 00:35:08.096
sondern setz irgendeine Fehlentscheidung ein, keine Ahnung, Next.js oder weiß nicht, was da noch.

00:35:08.276 --> 00:35:12.016
Wahrscheinlich ein ziemlich wüdet Statement ist, wenn man ganz ehrlich ist,

00:35:12.396 --> 00:35:15.216
dass React jetzt sagt, hey, weißt du, versuch uns gar nicht Vanilla,

00:35:16.096 --> 00:35:19.116
lauf einmal zum erstbesten Framework.

00:35:19.356 --> 00:35:23.036
Und früher haben sie das ja auch nicht gesagt. Das war ja nicht immer so, die Aussage.

00:35:23.416 --> 00:35:28.996
Nein, das ist, das wird aber dann, du wirst dann politisch.

00:35:30.656 --> 00:35:35.116
Ich, also, ich finde auch okay, dass sie da ihre Positionierung ändern.

00:35:35.436 --> 00:35:39.636
Und ich glaube, dass React sehr viel fehlverstanden wurde, als dass der Junior-Entwickler,

00:35:39.716 --> 00:35:43.856
der allein ein Startup aufbauen will, mal eben sich alles mit React selber zusammensucht,

00:35:43.996 --> 00:35:46.876
ist glaube ich auch einfach nicht ideal, sondern er sollte gegebenenfalls auch

00:35:46.876 --> 00:35:51.316
sowas wie Next.js Also das ist glaube ich halt so, ich finde es halt toll,

00:35:51.376 --> 00:35:53.936
dass React mir die Möglichkeit bietet, dass ich mir das selber zurechtsuchen

00:35:53.936 --> 00:35:55.456
kann, aber ich finde die Idee ganz gut zu sagen,

00:35:57.176 --> 00:36:01.116
lieber Standard-Entwickler, hier ist was, womit du loslegen solltest.

00:36:01.196 --> 00:36:03.436
Da sind dann auch diese Entscheidungen für dich getroffen, da kommt dann der

00:36:03.436 --> 00:36:06.276
HTTP-Kline mit und so weiter. Und.

00:36:08.128 --> 00:36:10.788
Ich finde, man kann trotzdem viele Punkte daran kritisieren.

00:36:11.228 --> 00:36:14.288
Ich weiß nicht, ob mittlerweile eines der Frameworks mal ohne Server-Site-Rendering

00:36:14.288 --> 00:36:15.508
auskommt, was da draufsteht.

00:36:16.748 --> 00:36:19.748
Weil das ist halt so eine Sache. React braucht nicht immer Server-Site-Rendering.

00:36:19.828 --> 00:36:22.288
Ganz viele Anwendungen brauchen das nicht. Und die Frameworks,

00:36:22.348 --> 00:36:24.608
die da anfangs draufstanden, brauchten alles Server-Site-Rendering.

00:36:25.248 --> 00:36:26.548
Oder hatten das als Zielgruppe.

00:36:27.888 --> 00:36:30.728
Aber warum würde man das denn nicht haben wollen? Weil ich meine die,

00:36:30.888 --> 00:36:34.248
ich weiß, dass das früher nicht, sagen wir mal, in der Realität vorkam,

00:36:34.288 --> 00:36:35.948
aber die Erzählung war ja immer schon so.

00:36:36.128 --> 00:36:39.088
Du hast hier deinen virtuellen DOM-Tree und den kannst du ja serialisieren,

00:36:39.248 --> 00:36:43.448
entweder in diese Diff-Operation oder in einen HTML-String und du schreibst

00:36:43.448 --> 00:36:45.968
einfach ein Code, der läuft in beiden Welten und alles ist easy.

00:36:46.068 --> 00:36:47.028
Würde man das nicht haben wollen?

00:36:47.728 --> 00:36:53.308
Ja, würde man haben wollen, ist ja aber dann nicht unbedingt die Realität.

00:36:54.828 --> 00:36:59.088
Ich habe ja deinen Zehn-Punkte-Plan nicht so ganz gelesen, aber irgendwo hast

00:36:59.088 --> 00:37:01.308
du da, glaube ich, sowas geschrieben, dass das eine Lüge war.

00:37:03.968 --> 00:37:08.088
Nicht Lüge, Scam. Also ich habe da tatsächlich bösartige Absichten unterstellt.

00:37:09.448 --> 00:37:13.268
Das ist eine berechtigte Frage. Die Frage bei diesem Scam ist,

00:37:13.508 --> 00:37:16.808
ist das überhaupt das Werbeversprechen? Das weiß ich gerade nicht.

00:37:17.828 --> 00:37:20.948
Dass die Community das teilweise glaubt, ja.

00:37:21.508 --> 00:37:24.348
Nein, aber niemand, der mal mehr als 5 Minuten Server-Side-Rendering gemacht

00:37:24.348 --> 00:37:28.068
hat, würde behaupten, das ist alles ganz einfach und man muss sich damit nichts befassen.

00:37:29.988 --> 00:37:34.308
Nein, ich glaube, du missverstehst mich ein bisschen. Es erweckt schon...

00:37:36.908 --> 00:37:39.128
Also ich habe nicht gesagt, dass man sich nicht damit befassen muss.

00:37:39.448 --> 00:37:42.868
Das war ja auch der Schluss meiner Erzählung.

00:37:42.988 --> 00:37:47.728
Also ich verstehe, dass man irgendwann an den Punkt kommt, wo man das Ding genauer verstehen muss.

00:37:47.948 --> 00:37:54.088
Und wenn man den Punkt bei Reakt erreicht, eröffnet sich halt die Erkenntnis,

00:37:54.368 --> 00:37:58.768
dass das zwei unterschiedliche Welten sind, die mit sehr viel Spucke zusammengeklebt worden sind.

00:37:59.268 --> 00:38:05.808
Das ist ja eigentlich das Thema. Das ist aber, finde ich, auch sehr überraschend für,

00:38:07.884 --> 00:38:13.364
eine Bibliothek, die da eigentlich sehr geringe API-Oberflächen anbietet.

00:38:13.524 --> 00:38:17.944
Also du hast ein paar Hooks, wie man Komponenten macht, der Rest wird durch

00:38:17.944 --> 00:38:21.064
irgendein Compiler gemacht, den du auch nicht wirklich anschauen musst.

00:38:21.204 --> 00:38:25.304
Das ist eigentlich auch cool, dass du in einer komplett anderen Syntag schreiben

00:38:25.304 --> 00:38:30.484
kannst, die nicht JavaScript-nativ ist und das wird häufig so okay transpiliert

00:38:30.484 --> 00:38:33.204
und du brauchst dir zumindest um das Tooling nicht ordentlich kümmern.

00:38:33.784 --> 00:38:36.984
Aber die Oberfläche ist relativ gering.

00:38:37.884 --> 00:38:41.104
Use State, Use Effect, Use Callback, Use Memo, ich glaube, mehr brauchst du den nicht.

00:38:41.324 --> 00:38:44.504
Dann hast du Use jetzt, falls du nicht mehr weißt, was du genau nutzen musst.

00:38:44.584 --> 00:38:46.384
Du nimmst einfach Use, das wird schon irgendwie funktionieren.

00:38:47.524 --> 00:38:49.184
Und du definierst Komponenten, super.

00:38:50.464 --> 00:38:53.144
Und der Teufel liegt dann in genau dem, was der Peter beschrieben hat.

00:38:53.204 --> 00:38:56.504
Wir sind aber dann in dieser deklarativen Art, wie man das schreibt,

00:38:56.504 --> 00:38:58.284
in einer sehr imperativen Sprache.

00:38:59.184 --> 00:39:03.284
Und dann fängt es an, dass du über den Renderzyklus nachdenkst und über die

00:39:03.284 --> 00:39:10.584
Art, wie State, U-State überhaupt ausgewertet wird, welche Komponenten wann wie angezeigt werden.

00:39:10.784 --> 00:39:13.744
Also Dinge, die der React früher auch noch ein bisschen besser präsentiert hat

00:39:13.744 --> 00:39:17.424
mit den Klassen, wo du diese unterschiedlichen Callbacks drinnen gehabt hast.

00:39:17.524 --> 00:39:20.104
Du hast zumindest noch irgendwie eine Verbindung gehabt zu dem,

00:39:20.124 --> 00:39:23.144
was unter der Haube passiert. Das ist ja auch jetzt alles weg.

00:39:23.464 --> 00:39:29.204
Das ist alles versteckt unter ein paar einfachen Funktionen.

00:39:29.964 --> 00:39:34.204
Es ist nicht versteckt, es ist halt einfach nur jetzt der Ideologie entsprechend

00:39:34.204 --> 00:39:37.024
ausformuliert. Klassen sind halt kein funktionales Programmieren.

00:39:37.584 --> 00:39:41.024
Algebraische Effekte in Form des Hook-Workarounds schon.

00:39:41.284 --> 00:39:44.724
Das entspricht halt so der Idee, wie man es machen sollte. Also ich würde das

00:39:44.724 --> 00:39:46.884
nicht als versteckt nennen, ich würde es halt umformuliert nennen.

00:39:47.744 --> 00:39:52.004
Es ist schon da, es sieht halt seltsam aus, wenn du den ganzen Rest der JavaScript-Welt

00:39:52.004 --> 00:39:53.464
daneben hältst, aber kannst ja auch sein lassen.

00:39:53.964 --> 00:39:57.224
Also es ist halt schon weniger ausdrucksstark.

00:39:57.364 --> 00:40:02.584
Also ich finde, ich finde React heute ohne Hooks zu schreiben,

00:40:02.604 --> 00:40:05.524
frustriert mich zu Tode, aber ich.

00:40:06.489 --> 00:40:10.409
Das Frühjahr war schon besser lesbar. Also da war deutlich besser sichtbar,

00:40:10.529 --> 00:40:11.589
was hier gerade passiert.

00:40:11.769 --> 00:40:14.709
Also was zur Hölle, warum muss ich UseEffect schreiben, wenn ich möchte,

00:40:14.829 --> 00:40:18.169
dass Code ausgeführt wird, nachdem ich die Komponente gerendert habe.

00:40:18.589 --> 00:40:22.389
Also das ist so, intuitiver ist OnComponentDidMount.

00:40:23.329 --> 00:40:26.749
Da verstehe ich sofort, was passiert. Und UseEffect, was zur Hölle?

00:40:26.909 --> 00:40:30.069
Und ich habe ja mal funktionale Programmierung in der Uni gehabt und ich mag

00:40:30.069 --> 00:40:32.349
das Konzept auch, aber trotzdem, was zur Hölle wollt ihr von mir,

00:40:32.389 --> 00:40:33.649
wenn ihr da UseEffect dran schreibt?

00:40:34.249 --> 00:40:37.329
Aber dann trifft es sich ja super, dass React so abwärtskompatibel ist,

00:40:37.409 --> 00:40:40.069
dass man ja bis zum heutigen Tage weiter diese Klassen einsetzen kann.

00:40:40.429 --> 00:40:43.349
Und alle, die damit ein bisschen Frust schieben, können ja einfach sagen,

00:40:43.549 --> 00:40:46.269
geht mir weg mit euren Hooks, ich mache das jetzt so wie unsere Vorväter.

00:40:46.649 --> 00:40:49.669
Ich schiebe da ja noch mehr Frust mit, wenn ich das ohne Hooks schreiben muss,

00:40:49.749 --> 00:40:51.989
weil das halt dann boilerplate-ig ohne Ende ist.

00:40:52.309 --> 00:40:56.069
Also deswegen, Hooks haben totalen Charme. Und ich will trotzdem nicht sagen,

00:40:56.149 --> 00:40:59.189
dass es unbedingt die komplett richtige Richtung war.

00:40:59.789 --> 00:41:01.809
Boilerplate mit dem Angriff der KI, wird das in Ordnung kommen?

00:41:02.509 --> 00:41:04.589
Vollkommen richtig. Aber da muss ich den Code ja auch nicht mehr lesen.

00:41:04.889 --> 00:41:06.529
Kann den ja auch keiner mehr lesen.

00:41:07.909 --> 00:41:12.849
Also ja. Übrigens, also wir haben einen Kunden. Nein, das stimmt nicht.

00:41:13.029 --> 00:41:17.509
Es ist mein liebster Kunde gewesen und unser längster Kunde und er hat uns dieses Jahr verlassen.

00:41:18.249 --> 00:41:22.409
Aber wir hatten bis vor kurzem einen Kunden. Die machen wirklich noch Reactive-Klassen-Komponenten.

00:41:23.629 --> 00:41:27.509
Und die hassen das nicht. Also ich schon, wenn ich dann da was schreiben muss,

00:41:27.609 --> 00:41:28.869
aber die hassen das nicht.

00:41:29.609 --> 00:41:32.189
Ich finde es ja beeindruckend, dass es immer noch geht. Also dass sie auch,

00:41:32.269 --> 00:41:34.489
wenn sie sagen, sie haben jetzt den anderen bevorzugten Ort,

00:41:34.729 --> 00:41:40.649
das zu machen, dass du immer nur sagen kannst, du schreibst Klassenkomponenten, finde ich super.

00:41:41.289 --> 00:41:43.449
Ich weiß nicht, wie stark das kommt. Wieso ist das beeindruckend?

00:41:44.776 --> 00:41:48.056
Was ist daran beeindruckend? Naja, also man kann einfach sagen,

00:41:48.136 --> 00:41:50.936
hey, das ist jetzt teute Mist, wir wollen das nicht mehr unterstützen,

00:41:51.076 --> 00:41:53.216
wir depriketten das und schmeißen das nachher aus dem Framework,

00:41:53.336 --> 00:41:58.076
um irgendwas, keine Ahnung, zu optimieren oder uns jetzt komplett dieser neuen Art zu verschreiben,

00:41:59.176 --> 00:42:01.016
und uns irgendwelche Dinge aufzumachen dadurch.

00:42:02.076 --> 00:42:06.456
Aber wenn der Coventer-Code da ist und die Tests weiter grün sind oder so,

00:42:06.756 --> 00:42:08.936
ist es ja keine Arbeit, den da einfach liegen zu lassen.

00:42:09.116 --> 00:42:12.796
Es wird ja nicht mal mehr in der Dokumentation aufwendig präsentiert oder so.

00:42:13.756 --> 00:42:16.916
Das ist ja nicht beeindruckend. Ich könnte mir jetzt auch diesen Kaffeebecher auf den Kopf auskippen.

00:42:17.296 --> 00:42:20.476
Das wäre jetzt seltsam und bemerkenswert, aber jetzt nicht beeindruckend in

00:42:20.476 --> 00:42:22.736
dem Sinne. Sondern man kann es halt machen, man kann es auch sein lassen.

00:42:23.036 --> 00:42:24.416
Ja, vielleicht lassen wir einfach verantworten.

00:42:25.996 --> 00:42:28.056
Also ich bin da voll bei Stefan. Aber ich finde es eigentlich cool,

00:42:28.116 --> 00:42:30.616
dass das noch geht. Also ich finde es cool, dass ich immer noch Klassenschreiben kann.

00:42:30.896 --> 00:42:33.636
Es ist erstaunlich, dass man irgendwie Software, die man irgendwie einmal hatte,

00:42:33.796 --> 00:42:35.836
noch so verwenden kann, wie als man sie bekommen hat.

00:42:35.976 --> 00:42:39.396
Und dass nicht einfach jetzt irgendwie nach zwei Monaten alles komplett auf

00:42:39.396 --> 00:42:42.036
den Kopf gestellt wird. Also auch schon ein Statement.

00:42:42.796 --> 00:42:46.956
Das ist absolut recht, ja. Ich weiß nicht, ob ich dieses Anekdötchen hier im

00:42:46.956 --> 00:42:51.476
Podcast schon mal erzählt habe, aber ich bin ja von Angular weggegangen wegen

00:42:51.476 --> 00:42:54.176
Angular 2, AngularJS 2 hieß es damals noch,

00:42:54.496 --> 00:42:57.916
weil das einfach so, hi, du kannst deine komplette Anwendung wegschmeißen.

00:42:57.916 --> 00:43:00.096
Ist schön, dass du da die letzten Jahre auf uns gesetzt hast,

00:43:00.216 --> 00:43:03.636
liebes Enterprise-Ökosystem, aber jetzt ist alles neu, weil es war alles ein Fehler.

00:43:04.016 --> 00:43:06.836
Und das ist ja irgendwie, wie das JavaScript-Ökosystem funktioniert.

00:43:07.476 --> 00:43:11.436
So, einfach mal einmal im Jahr oder zweimal im Jahr Breaking Changes ohne Ende

00:43:11.436 --> 00:43:13.216
und wirf bitte deinen kompletten Bestandscode weg.

00:43:13.736 --> 00:43:15.936
Einmal oder zweimal im Jahr, ist das nicht ein Dauerzustand?

00:43:16.016 --> 00:43:18.356
Wenn ich hier irgendwie NPM outdated tippe, ist immer irgendwas.

00:43:18.576 --> 00:43:22.716
Ich wollte gerade behaupten, also ich weiß nicht, wie viele Major-Reheases Angular im Jahr macht.

00:43:22.916 --> 00:43:25.276
Ein oder zwei war meine These und ich wollte die kurz dissen.

00:43:25.356 --> 00:43:28.156
Das ist sehr weit weg von der Realität heutzutage, Also das,

00:43:28.236 --> 00:43:30.916
was sie da mit Angular 2 gemacht haben, haben sie ja selber gemerkt, dass ein Fehler war.

00:43:31.616 --> 00:43:34.456
Und da habe ich in der Intensität... Legendärer Vortrag. Ich habe den live gesehen.

00:43:35.156 --> 00:43:39.076
Also nicht direkt vor Ort, sondern im Livestream. Aber ich kann mich erinnern,

00:43:39.136 --> 00:43:41.216
wie wir alle in der Agentur ausgeflippt sind.

00:43:41.756 --> 00:43:44.856
Ja. So auf die Haltung, was habt ihr denn jetzt vor? Und dann so...

00:43:45.361 --> 00:43:49.661
Wir haben gerade Angular bei drei Kunden unterbracht und so, Wahnsinn.

00:43:49.921 --> 00:43:53.321
Wir haben ein Jahr vorher entschieden, dass XJS nicht mehr unsere Zukunft ist

00:43:53.321 --> 00:43:56.221
und dass wir jetzt alles neu auf Angular bauen und dann machen die sowas.

00:43:56.361 --> 00:43:59.081
Und es war da tatsächlich so, dass wir jetzt halt ein Jahr investiert haben

00:43:59.081 --> 00:44:01.801
und uns gedacht haben, hm, was machen wir denn jetzt?

00:44:01.901 --> 00:44:04.941
Jetzt haben wir da die ganz alte Leiche und jetzt haben wir die neue Leiche.

00:44:07.261 --> 00:44:14.381
Also vor allem mit dieser Frechheit, alles, an dem du verschrieben hast,

00:44:14.481 --> 00:44:19.981
mit einem Grabstein zu quittieren, das war halt so, können wir das verlinken

00:44:19.981 --> 00:44:21.141
oder so in die Schauen, das ist

00:44:21.561 --> 00:44:23.821
meiner Meinung nach eine legendäre Präsentation gewesen.

00:44:24.301 --> 00:44:28.901
Das war ja auch Context was ein Mistake oder sowas in der Richtung,

00:44:29.041 --> 00:44:33.481
und Context war das primäre AngularJS Feature, was uns all das Leben leicht

00:44:33.481 --> 00:44:35.141
gemacht hat, bis es uns schwer gemacht hat.

00:44:35.381 --> 00:44:38.621
Das war ja so diese Variable, wo man einfach alles draufsteckte und dann ging's.

00:44:38.621 --> 00:44:40.081
Irgendwie so. Ja, genau.

00:44:40.261 --> 00:44:43.761
Change Detection und irritierterweise war das langsam. Irgendwie so was war das.

00:44:44.161 --> 00:44:47.081
Gut, dass man das jetzt ersetzt hat durch moderne JavaScript-Entwicklung,

00:44:47.141 --> 00:44:48.641
die ja nicht langsam ist. Genau.

00:44:50.081 --> 00:44:56.841
Habt ihr das großartigste Next.js-Projekt aller Zeiten zur Kenntnis genommen?

00:44:58.819 --> 00:45:03.199
Das jetzt neue, The Greatest, The Biggest, mit dem größten Adler aller Zeiten?

00:45:04.899 --> 00:45:07.599
Vielleicht. Die, was war das?

00:45:08.759 --> 00:45:12.559
Trumpcard war das, ne? Trumpcard. Okay, ein bisschen X-Shields-Projekt.

00:45:13.219 --> 00:45:18.739
Goff. Ja, ja, genau, da ist es. Wo der CEO von Vercel auch direkt gesagt hat,

00:45:18.839 --> 00:45:20.239
jawohl, hier, get with the program.

00:45:20.699 --> 00:45:22.539
Selbst der Präsident nutzt unser tolles Ding.

00:45:24.059 --> 00:45:27.979
Hä, haben sie den Adler weggemacht? Nee, der Adler ist noch da.

00:45:28.099 --> 00:45:31.559
Hey, großartig. Der Adler ist eine Abfolge aus einzelnen PNGs,

00:45:31.579 --> 00:45:32.999
bei denen sie die Animation gemacht haben.

00:45:33.139 --> 00:45:36.899
Statt irgendwie einen von den magischen Videokodex dieses Jahrzehnts zu verwenden,

00:45:37.079 --> 00:45:41.319
um irgendwie halt da, weiß ich nicht, 50 Kilobyte für die Animation zu haben,

00:45:41.499 --> 00:45:43.459
sind es 16 Megabyte an PNGs.

00:45:44.139 --> 00:45:46.819
Aber das kannst du deine Komponenten super durchcyclen.

00:45:47.659 --> 00:45:49.259
Auf jeden Fall, auf jeden Fall.

00:45:50.519 --> 00:45:53.539
Naja, und das ganze Rest Ding ist Next.js und die ganze Performance-Fraktion

00:45:53.539 --> 00:45:57.079
auf Social Media hat einfach nur einmal Anlauf genommen und dann angefangen,

00:45:57.199 --> 00:45:58.579
mit Baseballschlägern drauf einzuprügeln.

00:45:58.839 --> 00:46:01.079
Was ja abgesehen vom Inhalt durchaus berechtigt ist.

00:46:02.699 --> 00:46:05.399
Ja, Entschuldigung, ich wollte einfach, ich warte schon die ganze Zeit,

00:46:05.499 --> 00:46:08.899
seit die Aufnahme startet, auf die Möglichkeit, das anzubringen,

00:46:08.959 --> 00:46:12.519
weil ich wissen wollte, wie Kiki guckt, wenn er diese Webseite sieht.

00:46:12.579 --> 00:46:14.499
Ich habe die halt nicht wahrgenommen.

00:46:14.759 --> 00:46:18.779
Ich habe ganz viele Fragen, relativ wenige davon sind technisch.

00:46:20.199 --> 00:46:25.659
Das ist mit dem Adler für dich schon eine spannende Fragestellung.

00:46:27.039 --> 00:46:30.679
Es gibt zwei Möglichkeiten. Entweder sind die extrem inkompetent oder die lösen

00:46:30.679 --> 00:46:34.259
irgendein Problem, das ich mir nicht mal vorstellen kann. Und ich weiß halt nicht was.

00:46:35.739 --> 00:46:41.559
Ich könnte dir ganz viele Fantasien erzählen. Also ich bin halt wirklich auch

00:46:41.559 --> 00:46:44.899
so hin und her, war da jemand extrem dumm oder extrem smart?

00:46:45.019 --> 00:46:47.319
Und ich halte beides für möglich, wenn ich ehrlich bin.

00:46:47.779 --> 00:46:50.799
Nicht vergessen, diese Realität existiert aus drei Dimensionen.

00:46:50.839 --> 00:46:52.459
Du musst ja noch die Evil-Achse da einbauen.

00:46:54.813 --> 00:46:58.653
Die ist sowieso existent, wenn wir von einer Website, die Trump im Namen,

00:46:58.833 --> 00:47:01.333
sorry, ich weiß nicht, wie politisch dieser Podcast ist.

00:47:03.193 --> 00:47:07.553
Ach, was soll passieren? Sollen die uns rausschmeißen? Was zur Hölle ist denn diese Trump-Card?

00:47:07.833 --> 00:47:13.513
Wenn ich es richtig verstehe, ist, die schmeißen jetzt ja auch die Ausländer mit Ausbildung raus.

00:47:13.753 --> 00:47:18.033
Du kannst dich ja wieder einkaufen, wenn du irgendwie 100.000 Dollar auf den

00:47:18.033 --> 00:47:20.353
Tisch legst, kannst du dein Visum, das du bereits hast, behalten.

00:47:20.713 --> 00:47:26.613
Und ich glaube, das ist etwas aus dem Formenkreis. Also halt sozusagen Bestechung,

00:47:26.693 --> 00:47:27.613
dass du halt da rein darfst.

00:47:28.153 --> 00:47:31.273
Das ist ja witzig. Und da gibt es doch, jetzt sehe ich es aus,

00:47:31.333 --> 00:47:35.153
es gibt doch eine Trump-Latin-Karte, da muss man 5 Millionen Dollar zahlen und

00:47:35.153 --> 00:47:40.053
dann ist man die nächsten 270 Tage von US-Steuer befreit. Was?

00:47:40.813 --> 00:47:45.173
Von Steuer auf Nicht-US-Einkommen?

00:47:48.413 --> 00:47:53.733
Wenn du außerhalb von da lebst musst du aber weiter da Steuern bezahlen außer

00:47:53.733 --> 00:47:58.293
du bezahlst 5 Millionen ja, ist ja klasse es gibt noch eine Corporate Gold ich

00:47:58.293 --> 00:47:59.693
würde das Thema wechseln wollen,

00:48:02.933 --> 00:48:07.273
irgendwie wieder über was Schönes reden über React zum Beispiel.

00:48:13.053 --> 00:48:17.513
Ich weiß nicht aber ich finde das super wie wir einfach komplett abgewogen sind

00:48:17.513 --> 00:48:20.953
und in ein Wurmloch in die vierte Dimension gefallen sind, weil wir einfach

00:48:20.953 --> 00:48:23.813
so multidimensional verstört waren von diesem Ding.

00:48:24.313 --> 00:48:28.493
Wir waren gerade bei, glaube ich, Next.js und wir waren bei Server-Site-Rendering

00:48:28.493 --> 00:48:30.453
und warum das so schwierig ist und ähnliche Kisten.

00:48:31.693 --> 00:48:34.733
Und hier, bei Klassenkomponenten, ob man die noch verwenden kann,

00:48:34.913 --> 00:48:38.253
weil auch das ja sozusagen in meine Erzählung von React als Meme so ein bisschen

00:48:38.253 --> 00:48:41.693
reinspielt, weil meine jüngste praktische Erfahrung mit React ist ja,

00:48:42.013 --> 00:48:44.173
Kiki, da gab es ja so ein Projekt bei euch.

00:48:44.613 --> 00:48:47.493
Wo ich dann gesagt habe, ey, ich könnte mal irgendwie was zu tun gebrauchen.

00:48:47.613 --> 00:48:51.773
Hast du irgendwie sowas aus der aus dem Tätigkeitsfeld Toiletten-Tieftaucher,

00:48:52.613 --> 00:48:54.213
und du so, ha, hau und mein Bier.

00:48:54.473 --> 00:48:57.453
Ich habe hier das schlimmste Next.js-Projekt aller Zeiten. Deine Orte.

00:48:59.639 --> 00:49:03.779
Das war ja gar kein Next-JS-Projekt, akzeptiere ich.

00:49:03.899 --> 00:49:08.859
Es ist ein Next-JS-Projekt und das musste irgendwie von, jetzt bildlich gesprochen,

00:49:09.239 --> 00:49:15.159
Version 5 von der generellen Idee des Memes auf Version 7, die der generellen

00:49:15.159 --> 00:49:16.659
Idee des Memes überführt werden.

00:49:16.879 --> 00:49:20.939
Mit halt allerlei Inkompatibilitäten, die da so drin sind.

00:49:21.099 --> 00:49:23.639
Es ist jetzt nicht wirklich eine Version 5 und eine Version 7,

00:49:23.819 --> 00:49:28.079
aber der Versionssprung befand sich so innerhalb dieser Bandbreite.

00:49:28.599 --> 00:49:31.919
Ja, und um es mit deinen Worten zu fassen, es war ja nicht nur ein Meme involviert,

00:49:31.999 --> 00:49:34.179
sondern irgendwie auch noch eine Verschwörungstheorie mit dabei,

00:49:34.519 --> 00:49:36.739
die das Ganze nochmal komplexer gemacht hat, aber ja weiterreden.

00:49:36.919 --> 00:49:39.799
Ja, gut, das hat ja hauptsächlich euer Mann geregelt, den ganzen State-Management-Kram.

00:49:39.899 --> 00:49:43.759
Ich habe ja nur den ganzen Rest gemacht.

00:49:44.219 --> 00:49:46.499
Wo dann halt unter anderem halt auch so Sachen waren, wie so,

00:49:46.799 --> 00:49:51.979
also das ist ja zum Beispiel auch in meinen 95 Thesen da in dem Slack-Channel

00:49:51.979 --> 00:49:53.739
zum Ausdruck gekommen. Den Punkteplan.

00:49:54.079 --> 00:49:58.079
Dass ich ja, Fünfjahresplan genau, Genau, dass ich ja vehement widersprochen

00:49:58.079 --> 00:50:02.639
habe der Idee, dass React stabil sei, was ja eine so eine Idee war,

00:50:02.719 --> 00:50:04.259
die, glaube ich, Stefan rausgebracht hat.

00:50:04.759 --> 00:50:07.259
Und unsere unterschiedliche Einschätzung kam, glaube ich, daher,

00:50:07.399 --> 00:50:10.719
dass tatsächlich Stefan meint, React die Software, wo das ja geht mit,

00:50:10.959 --> 00:50:13.019
du kannst weiter Klassen verwenden, als wäre noch 2013,

00:50:13.539 --> 00:50:16.939
versus meine gelebte Realität, die da sagte, okay, wunderbar,

00:50:17.319 --> 00:50:21.739
in diesem gewaltigen Jenga-Turm aus React-Komponenten gibt es da jetzt irgendwie

00:50:21.739 --> 00:50:25.839
so die unterste Ebene und die ist weiterhin stabil, aber sowohl der Keller,

00:50:25.839 --> 00:50:29.419
wo wir Next.js rangeflanscht haben, als auch alles, was da oben drauf baut,

00:50:29.879 --> 00:50:31.839
ist halt eben nicht stabil.

00:50:31.959 --> 00:50:35.159
Und wenn ich jetzt so React begreife als das Meme, dann kann ich das schlecht

00:50:35.159 --> 00:50:39.039
als stabil bezeichnen, nur weil da halt einzelne Bestandteile unveränderlich dran sind. Ja.

00:50:41.375 --> 00:50:49.935
Ja, aber ich bin ja PHP-Entwickler gebürtig und PHP ist ja bekannt für hohe Code-Qualität.

00:50:50.595 --> 00:50:55.335
Und ich habe gehofft, dass Peter sich den Kaffee übers T-Shirt schüttet,

00:50:55.375 --> 00:50:57.215
hat nicht geklappt. So gerade.

00:50:58.495 --> 00:51:00.775
Also das habe ich ja jetzt auch gerade so als Meme und als Gag erzählt.

00:51:00.835 --> 00:51:05.615
Aber es ist schon so, dass es in der PHP-Community eine relativ große Bubble

00:51:05.615 --> 00:51:10.195
gibt von Leuten, die sich sehr für Softwarequalität einsetzen und die auch an

00:51:10.195 --> 00:51:12.435
der Stelle nicht, so wie das JavaScript-Ökosystem,

00:51:12.595 --> 00:51:15.555
alles immer neu erfinden, sondern sich halt umgucken, was gibt es für etablierte

00:51:15.555 --> 00:51:19.795
Best Practices und was gibt es für Muster, die gut oder auch schlecht sind und so weiter.

00:51:20.375 --> 00:51:23.435
Und da komme ich her, da bin ich sozialisiert worden. Und das ist so eine der

00:51:23.435 --> 00:51:27.755
Grundregeln, die ich im Backend gelernt habe, ist, Third-Party-Bibliotheken

00:51:27.755 --> 00:51:28.875
werden wegabstrahiert.

00:51:29.375 --> 00:51:33.435
Du setzt nicht eine Third-Party-Bibliothek so ein, dass sie in jeder deiner

00:51:33.435 --> 00:51:37.515
Klassen verwendet wird, sondern es gibt eine Abstraktionsschicht, die die wegkapselt.

00:51:38.115 --> 00:51:43.735
Da wir uns in JavaScript immer alles neu erfinden und noch niemand das erfunden

00:51:43.735 --> 00:51:46.295
hat, ist das halt etwas, was in JavaScript sehr wenig passiert.

00:51:47.175 --> 00:51:52.275
Und der Fairness halber, ich wüsste nicht, wie ich eine Frontend-Anwendung ohne

00:51:52.275 --> 00:51:57.255
Web-Components bauen sollte, die auf React aufsetzt, die ich einfach mal auf

00:51:57.255 --> 00:51:58.695
Angular umstellen könnte.

00:51:59.235 --> 00:52:02.715
Also das heißt, so dieses zugrunde liegende Framework wegzuabstrahieren ist,

00:52:02.775 --> 00:52:03.595
glaube ich, illusorisch.

00:52:03.755 --> 00:52:08.455
Aber so Sachen wie einen Router oder auch eine State-Management-Bibliothek oder

00:52:08.455 --> 00:52:13.495
den HTTP-Client würde ich halt immer weg abstrahieren in einer Anwendung,

00:52:13.635 --> 00:52:15.155
die länger als ein Jahr leben soll.

00:52:16.500 --> 00:52:20.540
Dann reduziere ich das Problem. Das sind etablierte Dinge. Es ist cool,

00:52:20.580 --> 00:52:22.700
dass du das erwähnst, weil tatsächlich ist ja auch das die Lösung,

00:52:22.800 --> 00:52:24.380
die wir jetzt anstreben und,

00:52:24.980 --> 00:52:27.960
warum ich auch jetzt den Grundgedanken habe, naja, also das,

00:52:28.040 --> 00:52:31.640
was wir jetzt von React noch verwenden und als solches verwenden,

00:52:31.660 --> 00:52:35.280
ist stabil, weil wir bieten jetzt unser eigenes Framework an.

00:52:35.540 --> 00:52:40.060
Also wir haben gesagt, okay, einfach nur so freilaufen lassen und ein paar Tooling-Endpunkte

00:52:40.060 --> 00:52:42.120
anbieten, dass du das Ding shippen kannst, reicht nicht.

00:52:42.720 --> 00:52:45.800
Wir abstrahieren jetzt Routing.

00:52:46.500 --> 00:52:52.240
Wir haben Navigation mit unseren eigenen Elementen. Wir abstrahieren die Backend-Kommunikation

00:52:52.240 --> 00:52:55.500
mit unseren eigenen Sachen, dass du um möglichst wenig kümmern musst.

00:52:57.340 --> 00:53:03.240
Optimiert für den Anwendungsfall, der dahinter steht. der zum Beispiel bei unserer

00:53:03.240 --> 00:53:06.920
Timeseries-Datenbank ganz anders ist, als wie bei irgendeinem Dokument,

00:53:07.080 --> 00:53:09.900
das man aus der Datenbank findet.

00:53:10.520 --> 00:53:12.480
Also aus der anderen, aus der Dokumentendatenbank.

00:53:13.640 --> 00:53:16.980
Und das ist irrsinnig viel Arbeit. Das ist, also zu verstehen,

00:53:17.080 --> 00:53:20.540
welche Konzepte und Abstraktionen du da dahinter brauchst und die Schnittstelle

00:53:20.540 --> 00:53:22.500
richtig anzubieten, das ist nicht leicht.

00:53:22.640 --> 00:53:25.480
Und das ist viel Arbeit und das ist voll mit der Breite an Entwicklerinnen und

00:53:25.480 --> 00:53:30.180
Entwicklern, die wir gerade haben drauf. Wir haben ja mehrere hunderte Leute, die damit arbeiten.

00:53:30.560 --> 00:53:36.360
Das ist schon ein gigantischer Aufwand.

00:53:36.580 --> 00:53:40.300
Aber meiner Meinung nach auch der einzige Weg, wie man das wieder lösen kann,

00:53:40.560 --> 00:53:43.620
dass man eben auf diesen stabilen Grundkern kommt und wir eben sagen,

00:53:43.720 --> 00:53:48.420
die anderen Sachen, die werden angeboten und können von dir verwendet werden.

00:53:48.420 --> 00:53:51.300
Witzigerweise, und das ist jetzt irgendwie die Ironie dahinter,

00:53:51.800 --> 00:53:56.080
sehr inspiriert von dem, was NextJS initial eigentlich macht,

00:53:56.180 --> 00:53:58.840
dass du dort einen API-Folder hast, einen Pages-Folder hast.

00:53:59.080 --> 00:54:03.480
Also diese Endpunkte auf Folderebene anbieten, damit nachher unser Framework

00:54:03.480 --> 00:54:06.060
dahinter die richtigen Komponenten rauszieht, richtig aufhängt,

00:54:06.260 --> 00:54:10.400
richtig branden und aufrufbar macht. Genau das ist die Idee.

00:54:11.964 --> 00:54:16.184
Okay, das heißt, was du jetzt hast, ist ja im Prinzip, wenn React unser Meme

00:54:16.184 --> 00:54:19.144
ist, dann verwendest du das ja gar nicht mehr, sondern dann hast du jetzt ja

00:54:19.144 --> 00:54:21.964
bloß eine Spicy-Template-Engine am Start.

00:54:22.584 --> 00:54:27.024
Ja, genau. Und er verwendet ja auch. Das liegt irgendwo dazwischen.

00:54:28.624 --> 00:54:32.524
Und er benutzt ja React auch im Zweifelsfall, um diese High-Level-Abstraktionsschichten

00:54:32.524 --> 00:54:34.484
zu schaffen. Insofern ist es schon so.

00:54:34.824 --> 00:54:38.964
Also damit wird React halt so benutzt, wie es gedacht ist, nämlich als Low-Level-Werkzeug,

00:54:38.964 --> 00:54:42.044
nein, sorry, wie es in meiner Fantasie mal gedacht war, als Low-Level-Werkzeug

00:54:42.044 --> 00:54:46.044
um High-Level-Frameworks oder Bibliotheken. Vor zehn Jahren,

00:54:46.384 --> 00:54:47.604
deswegen taugt es mir noch.

00:54:48.704 --> 00:54:52.844
Und dann würde ich halt sagen, für diesen Kontext ist React eben sehr stabil.

00:54:53.184 --> 00:54:58.284
Und da glaube ich, dass das bei, sorry, auch für deine Fantasie,

00:54:58.404 --> 00:55:01.864
bei Angular nicht unbedingt so war, weil bei Angular meiner Wahrnehmung nach

00:55:01.864 --> 00:55:04.544
sich in den letzten paar Jahren durchaus was geändert hat, wie man strukturell

00:55:04.544 --> 00:55:05.544
Komponenten entwickelt.

00:55:05.724 --> 00:55:08.764
Und ja, es gibt bei React neue Wege, aber wie wir gerade schon mehrfach festgehalten

00:55:08.764 --> 00:55:10.024
haben, die alten funktionieren immer noch.

00:55:10.684 --> 00:55:13.844
Und sorry, ich wollte jetzt gar nicht in so eine React- versus Angular-Diskussion.

00:55:13.884 --> 00:55:19.724
Wir sind ja eher in einer React- und Angular gegen irgendwie so komisches Zeug, was Peter machen will.

00:55:22.084 --> 00:55:27.664
Aber einmal Angular-Seite, das ist natürlich dann die andere Gefahr,

00:55:27.764 --> 00:55:31.684
in der du laufst, ist, dass wenn dir das Framework zu viele Schnittstellen anbietet,

00:55:31.944 --> 00:55:35.904
weil sie möglichst viele Dinge von dir abstrahieren will, was ja...

00:55:36.945 --> 00:55:40.925
Wie gesagt, was ja ein sinnvoller Weg sein kann, dann läuft es natürlich Gefahr,

00:55:41.005 --> 00:55:43.285
dass wenn sich das Framework in einem anderen Rhythmus oder in einer anderen

00:55:43.285 --> 00:55:48.385
Geschwindigkeit weiterentwickelt, wie du deine Applikation, dass du dann dort den mehr Aufwand hast.

00:55:48.585 --> 00:55:50.665
Und ich kenne das auch. Also wie gesagt, wir haben auch einen Angular-Client,

00:55:50.905 --> 00:55:54.205
der läuft nach wie vor, den wir auch nicht so schnell wegkriegen werden,

00:55:54.265 --> 00:55:59.145
weil da sind viele, viele Stunden reingelaufen und das ist ja alles wertvoller

00:55:59.145 --> 00:56:01.785
Code, wertvolle Features, die wir entwickelt haben.

00:56:03.845 --> 00:56:09.725
Wir pausieren trotzdem die Entwicklung zweimal im Jahr, um Framework-Updates

00:56:09.725 --> 00:56:12.585
zu machen und schauen, dass das Ding nachher wieder läuft und wieder stabil ist.

00:56:12.745 --> 00:56:18.005
Also das ist beeindruckend, wie viel Zeitaufwand das ist, wo.

00:56:20.471 --> 00:56:24.191
Die gesamte Company sagt, jetzt ist Upgrade-Zeit, hold your horses,

00:56:24.671 --> 00:56:28.791
keine Features entwickeln, wir setzen das Framework ein und dann da man koordiniert

00:56:28.791 --> 00:56:31.431
mit euch, schauen, was bricht und fixen das.

00:56:31.931 --> 00:56:36.911
Und das kann mehrere Sprints in Anspruch nehmen bei der Applikation dieser Größe, die wir haben.

00:56:37.351 --> 00:56:39.871
Und da reden wir noch nicht davon, dass das Framework alleine dort gar nicht

00:56:39.871 --> 00:56:42.691
auskommt, sondern du brauchst ja dann auch wieder ein Tooling-Lehrer rundherum,

00:56:42.771 --> 00:56:46.871
damit du irgendwie deine Applikation sauber strukturieren kannst. Also, ja.

00:56:47.311 --> 00:56:49.831
Ja, und ihr habt es ja insofern noch ein bisschen leichter, als dass ja,

00:56:49.971 --> 00:56:53.871
naja, also keine Ahnung, die Plattform, die ihr supporten müsst,

00:56:54.191 --> 00:56:56.771
naja, okay, das ist irgendwie groß oder so, aber das geht ja mit der Zeit.

00:56:57.151 --> 00:57:01.191
Also ich habe da so manche Kundschaft schon so in Industriebereichen gehabt,

00:57:01.391 --> 00:57:06.431
die Produkte fertigen, die ihr garantiert mehrfach pro Tag irgendwie seht,

00:57:06.551 --> 00:57:08.951
wenn nicht gar besitzt, wenn ihr da so durch die Gegend eiert.

00:57:09.131 --> 00:57:13.291
Und da gibt es halt einen großen Bedienbildschirm drin und der ist mit Angular gebaut.

00:57:13.391 --> 00:57:17.591
Und das Problem ist halt, die Entwicklungszyklen der Zulieferer sind da mehr

00:57:17.591 --> 00:57:19.791
so, alle zehn Jahre kriegt er einen neuen Chip.

00:57:20.211 --> 00:57:24.931
Aber die Bildschirme in diesem Device werden halt immer größer und die Angular-Versionen,

00:57:25.131 --> 00:57:27.511
mit denen die halt eben da arbeiten müssen, gehen davon aus,

00:57:27.791 --> 00:57:30.811
Computer werden halt so irgendwie einigermaßen tendenziell schon schneller.

00:57:31.091 --> 00:57:34.871
Und das trifft halt bei denen gar nicht zu. Und die sind halt dann sehr doll

00:57:34.871 --> 00:57:38.331
am Rudern, weil es gibt halt einfach diesen vorgegebenen Upgrade-Takt.

00:57:38.931 --> 00:57:42.231
Und den mitzugeben macht halt einerseits diesen Engineering-Aufwand,

00:57:42.311 --> 00:57:45.491
den sie halt haben, weil sie auch so ihre eigenen Abstraktionen geschaffen haben,

00:57:45.591 --> 00:57:48.531
aber die sind halt teilweise auch aus der Not erwachsen,

00:57:48.751 --> 00:57:52.511
irgendwie das Ding noch auf der alten Hardware mit den immer größeren UIs,

00:57:52.551 --> 00:57:54.791
die sie rendern müssen, irgendwie zum Funktionieren zu bringen.

00:57:55.031 --> 00:57:58.851
Also auch da wäre vielleicht eine andere Technologie eine schlauere gewesen.

00:57:58.951 --> 00:58:04.471
Wahrscheinlich wäre selbst React besser gewesen als das da. Ähm.

00:58:06.671 --> 00:58:08.371
Man kann es so oder so machen, ne?

00:58:08.551 --> 00:58:13.311
Es ist am Ende... Ich habe auf ein Marc-Uwe-Kling-Zitat von dir gehofft.

00:58:13.371 --> 00:58:15.891
Ich bin enttäuscht. Ich bin nicht ganz so der Kling-Head.

00:58:16.431 --> 00:58:18.831
Du kannst es gerne nachführen. Ich bin nicht immer mehr. Marc-Uwe-Kling.

00:58:20.011 --> 00:58:23.891
Zitiert sie mir. Da machen wir mal beiseiten eine Folge. Was?

00:58:30.411 --> 00:58:35.191
Working Draft. Der Politik-Podcast. Das ist nicht Working Draft,

00:58:35.311 --> 00:58:39.031
sondern das ist Blueprint, weil das nämlich dann so die Bauanleitung für die Guillotine ist.

00:58:44.066 --> 00:58:48.026
Also wir waren gerade bei stabil und wir haben jetzt Peter überzeugt,

00:58:48.086 --> 00:58:50.806
dass React stabil ist. Ist das so das Fazit vom letzten Punkt?

00:58:51.586 --> 00:58:58.806
Ah, neben Angular gibt es viele Dinge und Personen, die vergleichsweise stabil wirken.

00:58:58.966 --> 00:59:01.486
Unter anderem, welche deren Webseiten wir bereits vorhin besprochen haben.

00:59:01.486 --> 00:59:04.986
Nee, also jetzt muss ich dann Angular verteidigen.

00:59:05.086 --> 00:59:07.486
Es ist ja ein Problem des JavaScript-Ökosystems.

00:59:07.726 --> 00:59:09.066
Es ist nicht nur Angular.

00:59:09.386 --> 00:59:12.306
Wir hauen jede Woche eine neue BC-Break raus.

00:59:12.626 --> 00:59:15.666
Ich weiß nicht, ob ihr schon mal von ESLint oder von Webpack gehört habt.

00:59:15.806 --> 00:59:20.886
Also was ich da für Schmerzen mit. Die haben ein komplett neues Config-Format eingeführt.

00:59:22.646 --> 00:59:27.266
Also insofern, es ist ja auch toll. Wir entwickeln uns weiter als Ökosystem.

00:59:27.806 --> 00:59:30.566
Ganz viele andere Programmiersprachen standen, glaube ich, sehr lange sehr viel

00:59:30.566 --> 00:59:34.646
mehr still als JavaScript, aber trotzdem ist es schon was Schönes zu sehen,

00:59:34.706 --> 00:59:37.146
dass es halt in dem JavaScript-Ökosystem auch jemanden gibt,

00:59:37.226 --> 00:59:39.626
der sich dafür interessiert, dass Code von vor zehn Jahren heute noch läuft.

00:59:40.506 --> 00:59:43.466
Ja, also Moment, Moment, also Moment.

00:59:45.446 --> 00:59:48.566
Also einmal, jemand interessiert sich dafür, dass der Code noch läuft.

00:59:48.646 --> 00:59:51.386
Ich meine, das ist der Naturzustand vom Webbrowser. Der muss ja jede Webseite

00:59:51.386 --> 00:59:52.686
anzeigen, die jemals existiert hat.

00:59:53.126 --> 00:59:55.726
Das ist einfach sozusagen qua Naturgesetz so.

00:59:56.806 --> 01:00:01.006
Wir machen uns das kaputt, indem wir sagen, okay, super, lass uns mal eine JavaScript-Lasagne

01:00:01.006 --> 01:00:04.886
machen mit irgendwie sieben Schichten und jede von denen bröselt einzeln weg.

01:00:05.106 --> 01:00:09.986
Und dann irgendwie sagen, dieses ganze Dependency-Toberwo, das wir so in unserem

01:00:09.986 --> 01:00:12.246
Node-Modules vorfinden, hätte was mit Fortschritt zu tun.

01:00:12.466 --> 01:00:16.706
Da bin ich ja ein bisschen am Zweifeln dran, weil ich gestern ja kurz mal recherchiert

01:00:16.706 --> 01:00:20.066
habe, was ist denn eigentlich mit diesen ganzen Mikro-Packages, die da so rumliegen?

01:00:20.166 --> 01:00:24.306
Und ich habe mir mal angeguckt, was so die Download-Zahlen von so NPM-Packages

01:00:24.306 --> 01:00:26.346
sind, die Array-IsArray re-implementieren.

01:00:28.123 --> 01:00:31.783
Nur so als Beispiel für, es gibt ja Weiterentwicklungen, es gibt Fortschritt,

01:00:31.823 --> 01:00:35.303
hast du nicht gesehen, die steigen. Also das wird mehr.

01:00:35.783 --> 01:00:39.303
Diese Packages verzeichnen wöchentlich mehr Downloads und nicht weniger.

01:00:39.463 --> 01:00:45.683
Und es gibt mehrere von denen, der größte ist in einem dreistelligen Millionenbereich

01:00:45.683 --> 01:00:46.963
von wöchentlichen Downloads.

01:00:47.663 --> 01:00:51.283
Also hier ist irgendwas kaputt und irgendwie eine Korrelation zwischen diesen

01:00:51.283 --> 01:00:55.443
ganzen Dependencies und Fortschritt auch nur anzureißen, würde ich so nicht mitgehen.

01:00:55.543 --> 01:00:57.863
Ich würde eher sagen, das sind zwei parallel passierende Phänomene,

01:00:58.043 --> 01:00:59.283
die miteinander nichts zu tun haben.

01:01:00.443 --> 01:01:03.403
Ich habe überhaupt keine Ahnung, welche beiden Phänomene, also Fortschritt und

01:01:03.403 --> 01:01:06.903
die. Wer von uns hat das mit den vielen Dependencies als, das ist der Grund

01:01:06.903 --> 01:01:07.783
für Fortschritt genannt?

01:01:09.703 --> 01:01:14.403
Ich hatte das jetzt so rausgelesen aus so irgendwie Weiterentwicklung und die

01:01:14.403 --> 01:01:16.223
Größe des Ökosystems und ähnliches.

01:01:17.672 --> 01:01:21.492
Nee, das war gar nicht der, also wenn du das aus meiner Aussage rausgezogen

01:01:21.492 --> 01:01:23.992
hast, das ist für mich gar nicht der Punkt,

01:01:24.972 --> 01:01:29.412
sondern es ist ein Riesen-Ökosystem und es entwickelt sich weiter,

01:01:29.832 --> 01:01:33.832
aber halt ständig mit BC-Breaks und ständig mit, du musst hier ein Update machen

01:01:33.832 --> 01:01:35.372
und dafür deine halbe Codebase anpassen.

01:01:35.372 --> 01:01:41.812
Und da ist für mich React als Library eine sehr positive Ausnahme,

01:01:41.972 --> 01:01:44.452
weil eben ein React-Code von vor zehn Jahren heute noch läuft.

01:01:44.512 --> 01:01:47.272
Und ja, du hast recht, dass es im Browser auch so ist, dass der Großteil des

01:01:47.272 --> 01:01:49.792
Codes, den ich vor zehn Jahren für den Internet Explorer 6 geschrieben habe,

01:01:49.792 --> 01:01:53.812
heute noch in Safari 26, keine Ahnung, funktioniert.

01:01:55.072 --> 01:01:59.612
Aber nicht im JavaScript-Ökosystem. Aber jetzt habe ich dich genau da,

01:01:59.632 --> 01:02:00.292
wo ich dich haben wollte,

01:02:00.492 --> 01:02:04.912
weil, pass auf, wenn du jetzt sagst, ich kann weiter diesen alten React-Code

01:02:04.912 --> 01:02:08.412
schreiben, wie realistisch ist das jetzt tatsächlich, wenn du in einer Welt

01:02:08.412 --> 01:02:12.672
lebst, in der du einer von, sagen wir mal so drei Prozent der React-Entwicklerschaft,

01:02:12.732 --> 01:02:13.672
sagen wir mal fünf Prozent bist,

01:02:13.952 --> 01:02:17.452
die das tatsächlich machen wollen, weil jedes Code-Beispiel,

01:02:17.592 --> 01:02:19.692
das du findest, jede Dokumentation und jedes Snippet,

01:02:19.992 --> 01:02:23.192
das dir die nette KI von nebenan rausrendert, davon ausgeht,

01:02:23.492 --> 01:02:25.272
dass du auf dem allerneuesten Stand bist.

01:02:25.272 --> 01:02:28.332
Das war nämlich genau das, was mich bei unserem schönen Projekt teilweise so

01:02:28.332 --> 01:02:32.632
fertig gemacht hat, von wegen, ich muss jetzt irgendwie diese alte Library mit

01:02:32.632 --> 01:02:36.252
diesem neuen React-Code verknuppern, aber ich finde halt kein einziges Code-Beispiel,

01:02:36.452 --> 01:02:38.432
das sozusagen diese beiden Aspekte,

01:02:38.832 --> 01:02:41.652
alle Library-Version und modernes React-Pattern miteinander verbindet.

01:02:42.824 --> 01:02:46.124
Sodass ich halt eben mich da ab dem Zeitpunkt tatsächlich ab dem Projekt gefragt

01:02:46.124 --> 01:02:49.504
habe, okay, diese Library bekommt so keine Breaking Changes,

01:02:49.704 --> 01:02:56.344
aber effektiv habe ich da nichts von, wenn ich kein einziges Material dazu habe, das damit arbeitet.

01:02:56.624 --> 01:02:59.384
Hey, nimm diese Library. Okay, die Dokumentation sagt mir jetzt nicht,

01:02:59.464 --> 01:03:02.544
wie ich das in einer Hook-Welt zum Beispiel, wie ich das in einer Klassenwelt

01:03:02.544 --> 01:03:05.264
verwenden kann. Und vielleicht bin ich ja Nerd genug und Oll genug,

01:03:05.424 --> 01:03:07.984
um das jetzt manuell rüber übersetzen zu können.

01:03:08.144 --> 01:03:11.244
Aber das macht mir das Leben doch signifikant schwieriger.

01:03:11.664 --> 01:03:15.464
Also geht das tatsächlich? Ist allein durch den Umstand, dass es keine Breaking

01:03:15.464 --> 01:03:19.864
Changes in der Software gibt, die Stabilität des gesamten Memes gewährleistet?

01:03:21.144 --> 01:03:25.144
Also ich würde sagen, du hast schon einen Punkt dabei. Das ist am Ende der Punkt,

01:03:25.304 --> 01:03:31.064
in dem Moment, wo man nicht das macht, was alle machen, hat man mehr Aufwand,

01:03:31.144 --> 01:03:36.084
weil man nicht so viel existierendes Material findet.

01:03:36.084 --> 01:03:40.324
Das ist halt genauso, wie wenn du jetzt mit Vanilla JavaScript dein eigenes

01:03:40.324 --> 01:03:43.404
Frontend-Framework schreiben würdest, dann hättest du genau das gleiche Problem,

01:03:44.064 --> 01:03:47.624
weil das heute nicht der weitesten verbreitete Weg ist.

01:03:47.684 --> 01:03:50.724
Und insofern hast du absolut recht, wenn du heute noch Klassenkomponenten in

01:03:50.724 --> 01:03:56.524
React machst, wirst du Herausforderungen bekommen, dass eben alles andere Dinge,

01:03:56.624 --> 01:03:59.304
die im Internet entstehen, nicht mehr auf Klassenkomponenten setzt.

01:03:59.304 --> 01:04:04.504
Aber trotzdem funktionieren sie noch und du musst sie nicht von heute auf morgen alle umstellen.

01:04:06.144 --> 01:04:08.564
Und ich habe ja eben schon gesagt, also ich würde jetzt halt auch nicht bei

01:04:08.564 --> 01:04:11.624
Klassenkomponenten bleiben, aber ich würde auch nicht dahergehen und meine komplette

01:04:11.624 --> 01:04:14.604
Codebase von Klassen auf funktionale Komponenten umstellen, sondern,

01:04:14.884 --> 01:04:17.404
sorry, das ist das Falschwort, aber egal, auf Funktionskomponenten.

01:04:17.424 --> 01:04:19.884
Das ist übrigens ein Argument war in dieser Diskussion, die wir gehabt haben.

01:04:20.044 --> 01:04:23.244
Also du musst nicht nur, weil ReactiveStone das Prinzip einführt,

01:04:23.424 --> 01:04:24.884
sofort die gesamte Codebase ändern.

01:04:25.424 --> 01:04:27.244
Also das ist absolut nicht nötig.

01:04:27.980 --> 01:04:31.840
Du musst nicht, aber die sozusagen Ströme der fortschreitenden Zeit,

01:04:31.940 --> 01:04:34.960
die Gesellschaft an sich, schiebt dich ja schon in eine gewisse Richtung.

01:04:35.220 --> 01:04:38.980
Wenn du eine Komponente, eine bestehende Klassenkomponente relevant anpassen

01:04:38.980 --> 01:04:42.040
musst, dann solltest du sie wahrscheinlich auf eine Funktionskomponente umstellen.

01:04:42.280 --> 01:04:46.320
Haken dran, bin ich bei dir. Aber du musst eben nicht dahergehen und deine Codebase,

01:04:46.360 --> 01:04:48.680
die von hunderten Entwicklern in den letzten fünf Jahren geschaffen wurde,

01:04:49.360 --> 01:04:52.000
komplett umstellen, um jetzt die nächsten zwei Major-Releases mitzunehmen.

01:04:53.760 --> 01:04:56.980
Und, das möchte ich auch noch dazu sagen, diese Grundabstraktion,

01:04:57.080 --> 01:05:00.020
die der React anbietet, nämlich, dass du es in den Komponenten bocken kannst,

01:05:00.600 --> 01:05:01.500
die bleibt ja weiterhin.

01:05:01.760 --> 01:05:06.420
Also die Komponente und wie du die aufrufst, das ist ja das Grundinterface.

01:05:06.840 --> 01:05:10.940
Und das ist in der Klassenkomponente wie in der funktionalen Komponente komplett gleich.

01:05:11.440 --> 01:05:15.320
Und das ist schon mal alleine ein guter Punkt, wo du Teile deiner Software abtrennen

01:05:15.320 --> 01:05:17.880
kannst, die du vielleicht nicht mehr warten musst oder nicht mehr angreifen musst.

01:05:17.960 --> 01:05:21.620
Wenn ich jetzt, keine Ahnung, in meiner Administrationshüberschule vielleicht

01:05:21.620 --> 01:05:24.260
irgendein Dashboard habe, das da sagt, wie viele Änderungen,

01:05:24.280 --> 01:05:27.740
das es gegeben hat in, keine Ahnung, Zugriffen, was auch immer.

01:05:28.260 --> 01:05:30.860
Und das funktioniert und das passt und da brauche ich nichts mehr machen.

01:05:31.580 --> 01:05:35.860
Dann lasse ich das so. Das geht. Das kann ich reinlegen, das kann ich aufrufen, das funktioniert.

01:05:36.540 --> 01:05:39.440
Und ich arbeite mit dem neuen Shit und einer anderen stehe weiter.

01:05:39.620 --> 01:05:40.820
Und das ist absolut legitim.

01:05:43.020 --> 01:05:45.760
Ja gut, man müsste jetzt natürlich mal hinterfragen, ob das Komponentenmodell

01:05:45.760 --> 01:05:46.700
ein besonders gutes ist.

01:05:48.260 --> 01:05:52.080
Naja, die örtliche API des Komponentenmodells, ist, glaube ich,

01:05:52.300 --> 01:05:55.820
eins, wo ich relativ gelassen bin und sagen würde, das passt schon so.

01:05:56.180 --> 01:05:59.460
Also das ist jetzt... Die ist auch stark inspiriert vor harte Welt,

01:05:59.640 --> 01:06:01.340
nicht? Das hat sich ja auch ein bisschen bewährt, nicht?

01:06:02.620 --> 01:06:04.820
Ja gut, aber es ist nicht das, ne?

01:06:06.366 --> 01:06:11.526
Also weil ich meine, wenn es das wäre, also jetzt spinne ich mal komplett,

01:06:11.606 --> 01:06:15.566
wenn ich jetzt irgendwie sage, React, ich baue eine Komponente irgendwo ein

01:06:15.566 --> 01:06:20.006
mit Spitzklammer auf und hier ist eine Komponente hier mit großem Anfangsbuchstaben

01:06:20.006 --> 01:06:20.746
und hast du nicht gesehen,

01:06:21.086 --> 01:06:23.986
das Ding ist ja virtuell, im Sinne von, das schlägt sich ja nicht im Markup

01:06:23.986 --> 01:06:29.066
nieder, außer durch das, was es laut seiner Renderlogik an Diffs ausspuckt.

01:06:31.826 --> 01:06:35.606
Was halt ganz praktisch wäre, was ich halt so für mich mit meinem seltsamen

01:06:35.606 --> 01:06:38.666
Zeug rausgefunden habe, ist, wenn man tatsächlich native HTML-Elemente hat,

01:06:38.706 --> 01:06:42.606
ist das voll einfach, da andere native APIs dran zu klemmen,

01:06:42.746 --> 01:06:46.246
die dann schöne Effekte haben können.

01:06:46.246 --> 01:06:50.006
Also ich bin ein sehr großer Freund davon geworden, einfach so per Default an

01:06:50.006 --> 01:06:52.566
Web Components immer einen Intersection Observer dran zu bauen,

01:06:52.686 --> 01:06:56.686
um halt so das Rerendering-Problem andersweitig in den Griff zu kriegen.

01:06:56.986 --> 01:07:01.166
Weil man könnte ja hingehen und man könnte sich dem State Management halt eben

01:07:01.166 --> 01:07:04.146
gefügig machen und sagen, ja, ich mache jetzt hier Immutable Data und passe

01:07:04.146 --> 01:07:06.926
bei meinen Updates ganz groß auf, dass ich nichts falsch mache und hast du nicht gesehen.

01:07:07.266 --> 01:07:10.626
Und der große, teure Neurenderschritt passiert halt nur dann,

01:07:10.786 --> 01:07:12.406
wenn ich auch weiß, dass es neue Daten gibt.

01:07:12.406 --> 01:07:16.186
Aber genauso gut könnte man es ja auch machen, dass man nur die Dinge neu rendert,

01:07:16.686 --> 01:07:19.666
also die so zu sehen sind, so auf

01:07:19.666 --> 01:07:22.986
dem Bildschirm gerade aktuell angezeigt werden und den Rest halt nicht.

01:07:23.346 --> 01:07:26.286
Ein Performance-Budget ist ja ein Budget, das ist ja zum Ausgeben da und das

01:07:26.286 --> 01:07:29.306
kann man entweder ausgeben, indem man sehr effizient die Sachen updatet,

01:07:29.366 --> 01:07:33.706
die nicht zu sehen sind oder indem man weniger effizient die Dinge updatet,

01:07:33.746 --> 01:07:37.066
von denen man was hat und man dann insgesamt weniger Hassle hat mit,

01:07:37.346 --> 01:07:40.186
hm, ist das jetzt ein Update und habe ich den Object Spread richtig gemacht,

01:07:40.406 --> 01:07:42.426
ist Structure Clone schnell genug oder nicht? Vielen Dank.

01:07:43.761 --> 01:07:48.161
Aber das Ding ist, wie kriegst du dann mit, wenn die Komponente,

01:07:48.161 --> 01:07:51.441
die gerade nicht auf dem Bildschirm ist, dem User einen Notify,

01:07:51.561 --> 01:07:53.621
einen Alert, irgendwas anzeigen soll?

01:07:54.321 --> 01:07:57.121
Das funktioniert. Dann zählt das Ding als im Viewport. Es sei denn,

01:07:57.301 --> 01:08:00.381
diese Notification kommt aus dem Shadow DOM, aber das musst du ja nicht verwenden,

01:08:00.441 --> 01:08:03.661
beziehungsweise ich habe noch nicht raus, ob das ein Browser-Bug ist oder intendiertes

01:08:03.661 --> 01:08:05.541
Verhalten. Das ist Gegenstand der aktuellen Forschung.

01:08:05.841 --> 01:08:09.421
Aber grundsätzlich geht das. Wenn du da was rauspoppst, ist das eine Intersection.

01:08:09.981 --> 01:08:13.581
Okay, das heißt, du musst dann explizit irgendwie, aber die Daten werden ja

01:08:13.581 --> 01:08:16.521
gar nicht gepollt die ganze Zeit, oder? Wenn die nicht im Viewport ist,

01:08:16.641 --> 01:08:17.761
oder würdest du das trotzdem machen?

01:08:18.921 --> 01:08:22.221
Du kannst sie ja pollen, wenn das Ding im Viewport kommt. Aber die Notification

01:08:22.221 --> 01:08:24.721
soll ja auch auftauchen, wenn es gerade nicht im Viewport ist,

01:08:24.761 --> 01:08:26.221
weil das ist ja eine sehr wichtige Notification.

01:08:27.401 --> 01:08:31.641
Dann muss man sich dafür was einfallen lassen. Und dann kommt man bei der Verschwörungstheorie

01:08:31.641 --> 01:08:33.901
relativ schnell an, glaube ich, und baut man ein State Management.

01:08:34.701 --> 01:08:38.881
Na, ich weiß halt nicht, ob die Notification nicht tatsächlich eine eigene Komponente wäre.

01:08:39.561 --> 01:08:42.581
Im Sinne von, du hast ein Container-Element, welcher Art auch immer,

01:08:42.821 --> 01:08:45.361
das enthält die Notification und die Notification ist die Komponente,

01:08:45.401 --> 01:08:48.761
die dann angezeigt wird im Viewport, die wird gerendert und der Container als

01:08:48.761 --> 01:08:51.781
Wrapper um alles drumherum ist ja eh per Definition da. Weißt du, was ich meine?

01:08:52.361 --> 01:08:54.961
Du bist ja kein Entwickler, wie du so schön sagst.

01:08:55.601 --> 01:08:58.861
Definitiv nicht. Ich glaube, es gibt das Konzept der Kapselung,

01:08:58.941 --> 01:09:01.301
das habe ich als PHP-Entwickler mal gelernt, dass sowas hilfreich ist.

01:09:01.961 --> 01:09:04.761
Ich will ja, dass der Code, also wenn ich halt diese eine Komponente habe,

01:09:04.901 --> 01:09:08.801
die lädt die Daten und pollt die meinetwegen und in Sonderfällen soll die mal

01:09:08.801 --> 01:09:12.521
eine Notification aufklöpfen lassen, weil es jetzt ein Monitoring-Incident gibt.

01:09:12.621 --> 01:09:15.441
Ich bilde mir jetzt Sachen ein, die ich aus Stefans-Konferenz vorstellen würde.

01:09:19.601 --> 01:09:23.581
So, dann will ich halt, dass dieser Code, der den aktuell ist alles in Ordnung,

01:09:23.701 --> 01:09:30.701
Dialog anzeigt und der das der aus den dafür gefetchten Daten die Notification-Bubble

01:09:30.701 --> 01:09:32.561
aufplotten lässt. Der soll nah beieinander liegen.

01:09:33.202 --> 01:09:36.922
Ich will nicht hier an der einen Stelle was mit Fetch mal den aktuellen Status

01:09:36.922 --> 01:09:38.162
und hier ganz woanders nochmal.

01:09:38.402 --> 01:09:41.342
Das will ich ja zusammenführen, weil ich will es ja auch zusammen löschen können.

01:09:41.842 --> 01:09:45.302
Ah ja, okay, das ist dann also der gleiche Kram wie das, was man bei React dann

01:09:45.302 --> 01:09:50.902
so als den Provider-Schildwall immer so hat.

01:09:50.982 --> 01:09:54.342
Wenn ich so durch die äußeren Verteidigungsringe irgendwo ist was zu debuggen,

01:09:54.402 --> 01:09:57.502
muss ich erstmal so durch 17 Provider durch, die irgendwas providen,

01:09:57.562 --> 01:10:01.082
damit 17 DOM-Levels weiter unten irgendwas hochpoppen kann. Also so willst du das haben.

01:10:01.482 --> 01:10:03.682
Nee, das ist gar nicht für mich der entscheidende Punkt, sondern für mich ist

01:10:03.682 --> 01:10:06.902
der entscheidende Punkt, dass Code, der fachlich viel miteinander zu tun hat,

01:10:07.062 --> 01:10:08.362
auch direkt nebeneinander liegen sollte.

01:10:08.482 --> 01:10:10.782
Da hat für mich jetzt nichts mit irgendwelchen React-Providern.

01:10:11.182 --> 01:10:15.862
Also da kannst du auch eine globale Variable haben, in der du dein State-Management

01:10:15.862 --> 01:10:18.442
reinpackst und einen globalen Notification-Bus tut man ja auch.

01:10:18.622 --> 01:10:20.222
Also das muss jetzt nicht irgendwas mit Providern sein.

01:10:20.442 --> 01:10:23.742
Aber ich möchte halt, dass diese Komponente, die gerade off-screen ist,

01:10:23.842 --> 01:10:28.002
die eventuell verursacht, dass die Daten geladen wird, auch Sachen machen kann,

01:10:28.102 --> 01:10:29.322
wenn sie nicht im Bildschirm zu sehen ist.

01:10:29.362 --> 01:10:33.242
Und da kann man natürlich so Sachen machen, wie diese Komponente darf auch arbeiten,

01:10:33.362 --> 01:10:35.002
wenn sie gerade nicht zu sehen ist.

01:10:35.782 --> 01:10:37.482
Aber da glaube ich halt, das werden dann ganz schnell wieder Bugs,

01:10:37.582 --> 01:10:39.302
die eingebaut werden, dass Leute das vergessen.

01:10:39.582 --> 01:10:42.722
Oder dann kommen wir an so ein, jetzt würde ich das Begriff Meme verwenden.

01:10:42.982 --> 01:10:46.182
In React gibt es irgendwie so eine kleine Bestrebung von Menschen,

01:10:46.262 --> 01:10:49.442
die sagen, du musst eben alles Use Memo drumherum packen.

01:10:50.562 --> 01:10:53.942
Was halt so eine kleine Performance-Optimierung ist, die manchmal hilfreich

01:10:53.942 --> 01:10:57.082
ist und manchmal Performance kostet und immer Boilerplate erzeugt.

01:10:58.842 --> 01:11:03.502
Und da wird nämlich bei deinem Ansatz irgendwann die Best Practice entstehen,

01:11:03.562 --> 01:11:06.142
an jede Komponente dran zu schreiben, dass sie auch auf Screen gerendert werden

01:11:06.142 --> 01:11:07.702
darf, weil ansonsten macht man aus Versehen Fehler.

01:11:09.082 --> 01:11:11.022
Insofern glaube ich, das wird auch nicht alle Probleme lösen,

01:11:11.062 --> 01:11:15.142
was du dir ja vorstellst. Also keine Ahnung, ich habe also.

01:11:16.998 --> 01:11:19.478
Ich stelle mir das ja nicht vor, also so mache ich das ja persönlich.

01:11:19.718 --> 01:11:22.598
Sorry, ich war ja gerade bei der Beleidigung. Du bist ja kein Entwickler,

01:11:22.678 --> 01:11:23.378
sorry, da wollte ich mal Warte machen.

01:11:23.598 --> 01:11:26.538
Du entwickelst ja für dich alleine deine kleinen Pet-Projects.

01:11:26.638 --> 01:11:31.578
Also meine Vermutung ist, dass du das, was für dich gut funktioniert,

01:11:31.998 --> 01:11:35.418
nicht auf Stefans mehrere hundert Personen-Team anwenden solltest,

01:11:36.858 --> 01:11:40.358
weil die werden das nicht alles verstehen und verinnerlichen.

01:11:41.798 --> 01:11:45.258
Ja gut, ich meine, mit dem gleichen Argument könnte man ja auch gegen UseEffect

01:11:45.258 --> 01:11:47.698
zu Felde ziehen Und zum anderen finde ich es halt immer noch,

01:11:47.878 --> 01:11:51.358
also das mag ja sein, dass das dann irgendwie zu kompliziert und zu fiddly ist, aber trotzdem,

01:11:51.858 --> 01:11:58.758
warum willst du Sachen irgendwie, das Rendering von Sachen updaten, die keiner sehen kann?

01:11:59.458 --> 01:12:02.658
Also ich meine, niemand ist im Wald, warum würdest du den Baum umfallen lassen?

01:12:02.738 --> 01:12:07.938
Da hat doch keiner was von. Ja, weil wir an der Stelle wahrscheinlich das Laden

01:12:07.938 --> 01:12:10.878
und Behandeln von Daten nicht vom Darstellen getrennt haben.

01:12:11.058 --> 01:12:13.098
Also ich weiß nicht, wie deine Anwendung wirklich funktioniert,

01:12:13.178 --> 01:12:15.858
aber meine These wäre jetzt, dass halt in dieser Web-Component dann auch der

01:12:15.858 --> 01:12:18.458
Code drinsteckt, der die Daten vom Backend lädt.

01:12:18.818 --> 01:12:21.438
Bin ich nicht sicher, ob das tatsächlich so ist, aber das wäre jetzt meine Erwartung.

01:12:22.438 --> 01:12:25.978
Es existiert leider, weil ich auch ein Sucker bin, eine Art von State Management.

01:12:27.458 --> 01:12:31.738
Das heißt, das Ding enthält eine Notification. Jo, hier, da hat sich was geändert,

01:12:31.858 --> 01:12:32.658
du solltest vielleicht mal.

01:12:32.998 --> 01:12:35.338
Und dann gibt es da halt eben in der Basisklasse eine Logik drin,

01:12:35.478 --> 01:12:37.818
die sagt, if off-stream, then gekacken.

01:12:37.998 --> 01:12:41.058
Also wenn du ein State Management hast, was sich zentral darum kümmert zu entscheiden,

01:12:41.158 --> 01:12:44.398
welche Daten wann wie geladen werden müssen und es nur um das eigentliche Rendering

01:12:44.398 --> 01:12:45.598
geht, dann bin ich ja bei dir.

01:12:46.198 --> 01:12:49.998
In wie vielen Fällen du damit relevant Performance sparst, wäre was,

01:12:50.218 --> 01:12:53.978
was ich aber auch vorsichtig in Frage stellen würde.

01:12:54.018 --> 01:12:57.398
Nicht sagen, das ist kompletter Bullshit, aber die Menge in Fällen,

01:12:57.518 --> 01:13:00.878
wo das, was du da machst, relevant Performance spart, glaube ich,

01:13:00.898 --> 01:13:03.518
ist auch nicht riesig. Vielleicht gebe das Budget halt woanders aus, ne?

01:13:07.131 --> 01:13:12.671
Ja, würde man eine Aussage stehen lassen. Ne, ne, ne, in Summe macht das wahrscheinlich

01:13:12.671 --> 01:13:13.531
keinen großen Unterschied.

01:13:13.671 --> 01:13:16.491
Und ich meine, am Ende ist es ja sozusagen Performance-Budget,

01:13:16.611 --> 01:13:18.551
Performance-Limbo. Man muss ja nur unter der Stange durchkommen,

01:13:18.631 --> 01:13:20.891
sodass es sich gut genug anfühlt und dann passt das schon.

01:13:22.451 --> 01:13:27.031
Aber ich denke halt nur so, weil die Implementierung tatsächlich von dem Ganzen so trivial war.

01:13:27.091 --> 01:13:30.231
Weil ich einfach irgendwann gesagt habe, ah, okay, klemm ein Intersection-Observer

01:13:30.231 --> 01:13:34.111
an das Ding, was ohnehin das Sprachkonstrukt ist, an das ich sowas dranklemmen

01:13:34.111 --> 01:13:34.891
kann, nämlich ein Element.

01:13:34.891 --> 01:13:38.331
Dann kriegst du ein Boolean raus, Visible oder nicht und dann machst du einfach

01:13:38.331 --> 01:13:44.591
um dein ganzes Rendering einfach ein einziges If drumherum versus die anderen Sachen,

01:13:44.751 --> 01:13:47.851
die auf den gleichen Effekt rauskommen, womit ich ja im Vergleich wahrscheinlich

01:13:47.851 --> 01:13:50.331
bei der Performance ungefähr gleich viel Schwierigkeiten habe,

01:13:50.851 --> 01:13:54.271
ungefähr gleich viel irgendwie Edge Cases habe, um die man drumherum workarounden

01:13:54.271 --> 01:13:56.491
muss, aber wofür ich halt eben keinen Code schreiben musste,

01:13:56.591 --> 01:13:59.731
sondern buchstäblich ein Intersection Observer und dann If Else.

01:14:02.478 --> 01:14:06.198
Warum würde man die aufwendigere Variante wählen, wenn man doch auch die einfachere haben könnte?

01:14:06.498 --> 01:14:09.718
In React würde ich halt eine Higher-Order-Component drüber herumrappen oder

01:14:09.718 --> 01:14:11.018
sowas, dann wäre das Ganze auch erledigt.

01:14:11.198 --> 01:14:15.458
Und meine Erfahrung mit Intersection-Observer-Arbeiten ist immer Pain gewesen.

01:14:15.578 --> 01:14:18.938
Das mag meine Inkompetenz sein, aber ich hatte da nie viel Freude mit.

01:14:21.238 --> 01:14:26.198
Also insofern, auch mit React kann das ein sehr einfacher Weg sein.

01:14:26.258 --> 01:14:28.298
Auch mit Angular kann das ein sehr einfacher Weg sein und so weiter.

01:14:28.498 --> 01:14:33.198
Also das, glaube ich, ist relativ unabhängig.

01:14:36.558 --> 01:14:39.578
Mit dem, wie React heute häufig gemacht wird, wird es ein schwieriger Weg,

01:14:39.618 --> 01:14:42.418
die Daten dann noch im Hintergrund zu laden. Aber ich will jetzt ja nicht wieder

01:14:42.418 --> 01:14:43.678
gegen React argumentieren.

01:14:44.818 --> 01:14:49.358
Ich meine, unsere Unstimmigkeit kommt halt eben auch zum Teil daher aus dem

01:14:49.358 --> 01:14:51.098
React-Meme, was ist eine Komponente.

01:14:51.758 --> 01:14:56.578
Und in React ist das ja sozusagen das singuläre, konstituierende Element der Realität.

01:14:57.898 --> 01:15:02.978
Es gibt nichts, was du nicht als Komponente ausdrückst. Und das könnte man ja

01:15:02.978 --> 01:15:04.278
theoretisch auch anders machen.

01:15:04.498 --> 01:15:09.438
Man könnte ja theoretisch auch Konstrukte haben, die nicht die Form von diesen

01:15:09.438 --> 01:15:15.858
virtuellen DOM-Tree-Elementen haben und das auch nutzen, um die Applikation zu stützen.

01:15:18.178 --> 01:15:20.598
Und da wollte ich eigentlich darauf hinaus, ob dieses Komponentenmodell und

01:15:20.598 --> 01:15:26.058
dieses One-Size-Fits-All tatsächlich immer noch allen fittet in der Welt,

01:15:26.098 --> 01:15:27.038
wie sie sich heute darstellt.

01:15:27.198 --> 01:15:30.058
Das war durchaus anfangs nicht als toll, sondern als ernsthafte Frage gemeint

01:15:30.058 --> 01:15:31.878
an diejenigen, die sich auskennen damit.

01:15:36.830 --> 01:15:41.330
Ich habe da so eine Hassliebe zu dem Punkt. Also ich halte es für extrem wertvoll.

01:15:41.470 --> 01:15:45.150
Du hast dich gerade über diese Provider-Kiste, das halt jede Anwendung auf oberster

01:15:45.150 --> 01:15:48.010
Ebene plötzlich Provider registriert, nervt mich auch regelmäßig.

01:15:48.610 --> 01:15:52.750
Und nichtsdestotrotz halte ich es für einen gar nicht so blöden Ansatz.

01:15:54.610 --> 01:15:58.650
Dass in PHP habe ich mal gelernt, dass Singletons doof sind.

01:15:59.050 --> 01:16:02.750
Das scheint eine Sache zu sein, die irgendwie ein, zwei objektorientierte Community-School

01:16:02.750 --> 01:16:04.250
so sehen und der Rest nicht.

01:16:04.510 --> 01:16:11.470
In diesem Apple React-Ding das, wo man heutzutage UIs auf iOS und Co. entwickelt.

01:16:12.310 --> 01:16:14.990
Ja, nee, ich suche so ein UI-Kit oder so. Ich habe keine Ahnung.

01:16:15.050 --> 01:16:17.630
Die haben irgendwie so eine Komponentenstruktur, die sehr ähnlich ist zu der

01:16:17.630 --> 01:16:18.810
React-Komponentenstruktur.

01:16:20.510 --> 01:16:23.510
Nicht identisch, aber sehr ähnlich. die setzen überall auf Singletons.

01:16:23.850 --> 01:16:28.230
Und das ist sowas, mir bereitet das Bauchschmerzen und das ist eine der logischen Alternativen dazu.

01:16:28.310 --> 01:16:31.810
Man könnte den Angular-Weg gehen und sagen, hey, wir haben so einen Dependency-Injection-Container,

01:16:32.650 --> 01:16:34.530
und der löst uns das Problem.

01:16:35.490 --> 01:16:38.470
Aber da finde ich diesen Komponentenbaum-Ansatz viel schöner,

01:16:38.650 --> 01:16:42.770
weil Teilbereiche meiner Anwendung unterschiedliche Services brauchen.

01:16:43.170 --> 01:16:45.490
Und da finde ich es total schlüssig, zu sagen, hey, wir orientieren uns da an

01:16:45.490 --> 01:16:49.550
dem Komponentenbaum und nicht, wir führen Scopes im Dependency-Injection-Container

01:16:49.550 --> 01:16:51.230
ein. Keine Ahnung, ob Angular sowas hat, aber ich halte das,

01:16:51.250 --> 01:16:51.810
finde ich unwahrscheinlich.

01:16:52.630 --> 01:16:55.570
Es klingt auf jeden Fall wie etwas, was ChatGPT generieren würde,

01:16:55.650 --> 01:16:57.490
wenn er nicht wirklich weiß, ob es das in Angular gibt.

01:16:58.778 --> 01:17:04.978
So, ja, diese Antwort war nicht ChatGPT generiert.

01:17:05.058 --> 01:17:10.738
Also ich habe mich ja mit ChatGPT auf diesen Podcast vorbereitet, aber nicht in der Form.

01:17:12.398 --> 01:17:16.238
Also was ich damit sagen will, ist, ich finde es durchaus nervig mit diesem

01:17:16.238 --> 01:17:19.618
Provider-Gedöns ganz oben, aber ich verstehe, wo es herkommt und ich halte es

01:17:19.618 --> 01:17:21.398
für eine der sinnvollsten Lösungen an der Stelle.

01:17:21.398 --> 01:17:24.638
Und auch dieses Alles ist eine Komponente, was ja auch nicht ganz stimmt,

01:17:24.778 --> 01:17:31.538
aber fast, hat schon sehr viel Charme und macht, dass man auf architektureller

01:17:31.538 --> 01:17:33.658
Ebene weniger Konzepte hat.

01:17:33.898 --> 01:17:36.978
Für den einfachen Entwickler, der gerade erstmal anfängt loszulegen,

01:17:37.058 --> 01:17:39.978
dann wird es halt komplett unintuitiv, was wir alles in Komponenten packen.

01:17:42.598 --> 01:17:47.518
Und deswegen total zwiegespaltene Hassliebe von mir also ich sehe da Vorteile

01:17:47.518 --> 01:17:51.498
drin, aber ähnlich wie mit UseEffect,

01:17:52.858 --> 01:17:55.958
UseEffect hat viele Vorteile gegenüber dem alten Ansatz aber es ist halt komplett

01:17:55.958 --> 01:18:00.798
unintuitiv und es ist Quell vieler Fehler und genauso glaube ich ist dieses

01:18:00.798 --> 01:18:02.718
alles Komponente in React eben auch so,

01:18:03.738 --> 01:18:07.958
hat gute Seiten, aber verursacht leider auch viele Fehler, weil man muss die

01:18:07.958 --> 01:18:13.438
Denke die React-Denke parat haben, intuitiv greifbar haben, dauerhaft präsent haben.

01:18:15.738 --> 01:18:18.518
Und wie gut klappt das so deiner Erfahrung nach? Ich habe ja so manchmal den

01:18:18.518 --> 01:18:22.078
Eindruck, niemand inklusive meiner selbst kann UseEffect korrekt benutzen.

01:18:25.038 --> 01:18:27.378
Stefan. Du zuerst. Nee, mach.

01:18:28.918 --> 01:18:33.598
Du hast recht, niemand kann UseEffect korrekt benutzen und das ist letzte Woche

01:18:33.598 --> 01:18:38.158
passiert, also für die Mithörenden jetzt, die Woche vom 23.

01:18:38.378 --> 01:18:47.058
September 2025, wo Cloudflare sich selbst gedetost hat, weil sie das Dependency-Array

01:18:47.058 --> 01:18:48.678
in UseEffect falsch befüllt haben.

01:18:49.318 --> 01:18:55.058
Und das ist erstens, Use Effect Falsch Benuss kann diesen Effekt haben,

01:18:55.138 --> 01:18:57.598
aber zweitens, dass das Cloudflare betrifft,

01:18:58.598 --> 01:19:05.378
das wir alle verwenden, um weniger DDoS-Angriffe zu haben, ist einfach pinnacle irony.

01:19:05.618 --> 01:19:09.378
Also ich bin so begeistert von dieser Geschichte, es ist so herrlich,

01:19:10.638 --> 01:19:15.498
ich habe es eingangs erwähnt in der Vorbesprechung, also mein Stand zu ihm ist

01:19:15.498 --> 01:19:18.658
ja eh schon dead inside, das ist mir eigentlich wurscht, was wir machen,

01:19:18.798 --> 01:19:21.558
weil es gibt sowieso nichts, was hundertprozentig gut funktioniert.

01:19:21.998 --> 01:19:25.518
Aber das ist wieder eine Geschichte, die mich begeistert, zu wissen,

01:19:25.618 --> 01:19:29.658
dass Software so super fehlschlagen kann, dass die Leute, deren Hauptaufgabe

01:19:29.658 --> 01:19:34.738
es ist, DDoS-Protection zu machen, das ist deren Produkt, das ist das,

01:19:34.918 --> 01:19:36.478
für das sie bezahlt werden.

01:19:37.758 --> 01:19:42.858
Sich selbst DDoSen, weil das User-Factor eh falsch ist, das kannst du dir nicht

01:19:42.858 --> 01:19:45.338
ausdenken. Also wirklich, das ist für mich ein.

01:19:46.878 --> 01:19:50.718
Gehört in der Internetgeschichte festhalten. Das ist göttlich.

01:19:51.178 --> 01:19:55.638
Also Use-Effekt war ein Fehler, meiner Meinung nach. Ja.

01:19:57.598 --> 01:20:01.618
Use ist der nächste Fehler in meinen Augen. Vor allen Dingen des Namens wegen,

01:20:01.818 --> 01:20:02.678
aber das ist eine andere Kiste.

01:20:03.198 --> 01:20:07.758
Also Use-Effekt war ein Fehler und ich finde es total witzig, dass diese,

01:20:09.118 --> 01:20:14.578
Designentscheidung in einer Frontend-Library eine solche Low-Level-Funktion

01:20:14.578 --> 01:20:20.078
so bereitzustellen, dazu führt, dass einer der besten DDoS-Verteidiger sich selber DDoS.

01:20:21.118 --> 01:20:25.158
Das ist wirklich so ein I-Tipfelchen von Internet, bin ich bei dir.

01:20:27.318 --> 01:20:32.578
Und ich, um zu Peters Frage zurückzukommen, das ist ein Problem,

01:20:32.818 --> 01:20:39.138
dass ganz viele Leute React machen, ohne das React-Mindset verinnerlicht zu haben.

01:20:39.278 --> 01:20:43.318
In meinen Augen ist dieser Fall, also ich sehe so eine 50-50-Chance,

01:20:43.458 --> 01:20:46.498
damit irgendwer hat da was gevibecoded und im Backend-Engineer hat man eben

01:20:46.498 --> 01:20:47.898
eine Kleinigkeit im Frontend geändert.

01:20:48.018 --> 01:20:50.418
Das sind so meine Fantasien, wie so eine Geschichte passiert ist.

01:20:50.538 --> 01:20:53.338
Ich habe nie recherchiert, eventuell gibt es Fakten, die dem widersprechen,

01:20:53.358 --> 01:20:55.418
aber das ist so meine Fantasie dahinter.

01:20:55.578 --> 01:21:00.218
Und ich glaube, das ist durchaus ein Problem von React, dass ganz viele Leute

01:21:00.218 --> 01:21:04.098
das nicht verinnerlichen und ich stehe immer wieder vor Bugs im Kundencode,

01:21:04.358 --> 01:21:08.158
wo UseEffect oder UseState falsch benutzt wurden, am besten in Kombinationen

01:21:08.158 --> 01:21:09.338
zusammen falsch benutzt wurden.

01:21:09.758 --> 01:21:11.738
Also das ist ein Problem in der Realität.

01:21:13.560 --> 01:21:16.780
Aber das ist auch ein Problem, was viele Technologien haben,

01:21:17.420 --> 01:21:20.820
dass, wenn man sich nicht mit beschäftigt, sondern sie einfach benutzt,

01:21:21.080 --> 01:21:23.480
sie Probleme bereiten. Ich bin ja PHP-Entwickler.

01:21:24.320 --> 01:21:26.760
PHP ist eine der wichtigsten Programmiersprachen im Internet.

01:21:26.880 --> 01:21:28.500
Ich weiß, ich habe es heute immer noch so, ist aber lange die,

01:21:28.600 --> 01:21:30.220
die die meisten Websites gepowert hat.

01:21:31.420 --> 01:21:33.460
Und es ist gleichzeitig wahrscheinlich die Programmiersprache,

01:21:33.560 --> 01:21:36.860
die für die meisten Sicherheitslücken verantwortlich war, weil einfach Leute

01:21:36.860 --> 01:21:40.900
PHP gemacht haben, ohne zu verstehen, was sie da tun und ohne sich über irgendwas Gedanken zu machen.

01:21:43.120 --> 01:21:46.880
Und idealer wäre eine Technologie, die einen davor schützt, die sich Mühe gibt,

01:21:47.080 --> 01:21:48.380
solche Fehler zu verhindern.

01:21:48.540 --> 01:21:52.100
Ich glaube, dass Angular da durchaus an ein paar Stellen den besseren Kurs in

01:21:52.100 --> 01:21:53.300
der Richtung zum Beispiel einschlägt.

01:21:53.500 --> 01:22:01.040
Ich glaube nicht, dass im Browser mitgelieferte Technologien da der bessere

01:22:01.040 --> 01:22:04.600
Weg sind für den Durchschnittsentwickler, keine schlimmen Fehler zu machen.

01:22:05.520 --> 01:22:08.900
Nee, das habe ich auch nicht gesagt. Ich wollte jetzt wirklich nur Bar-Context

01:22:08.900 --> 01:22:09.920
auf Use-Effect eindreschen.

01:22:10.520 --> 01:22:15.720
Also gänzlich jetzt unfair vorgehen. Einfach nur, weil, sagen wir mal so,

01:22:16.120 --> 01:22:18.840
Use-Effect falsch verwenden wegen des Dependency-Arrays.

01:22:18.980 --> 01:22:21.480
Okay, gut, das nennt sich bei mir Mittwoch, wenn ich irgendwas mit React mache.

01:22:21.700 --> 01:22:24.540
Das passiert immer, beziehungsweise im Idealfall bin ich so paranoid,

01:22:24.920 --> 01:22:28.200
dass ich immer auf einem Bildschirm da nochmal aufhabe eine Tabelle mit so,

01:22:28.260 --> 01:22:29.380
wenn du das willst, mach das da.

01:22:29.800 --> 01:22:32.500
Weil sonst weiß ich halt nicht, ob ich es hinkriege. Aber ich finde tatsächlich

01:22:32.500 --> 01:22:34.360
ja die subtileren Sachen eigentlich viel spannender.

01:22:34.620 --> 01:22:40.140
Wie zum Beispiel, was ich in unserem schönen Next.js-Migrationsprojekt gesehen

01:22:40.140 --> 01:22:46.880
habe, wo die Entwickler versucht haben, Hooks zu verwenden in Callback-Funktionen.

01:22:47.715 --> 01:22:51.695
Was halt nicht funktioniert. Naja, es funktioniert, es führt noch zu unerwarteten

01:22:51.695 --> 01:22:53.755
Problemen. Ja gut, dann müssen wir jetzt darüber reden.

01:22:55.515 --> 01:22:59.375
Im Age of AI kann man das natürlich auch noch unter Funktionieren rubrizieren.

01:22:59.535 --> 01:23:01.095
Ich hätte jetzt gesagt, das ist kaputt.

01:23:02.055 --> 01:23:06.595
Aber sagen wir mal so, wenn es nötig ist, diese API zu haben,

01:23:07.175 --> 01:23:10.595
weil man halt eben sich der Doktrin des funktionalen Programmierens mit den

01:23:10.595 --> 01:23:14.195
algebraischen Effekten verschrieben hat und die einzige Möglichkeit das ist,

01:23:14.295 --> 01:23:16.995
das zu haben, du hast jetzt gerade gesagt, Use-Effekt wäre ein Fehler gewesen.

01:23:18.055 --> 01:23:20.055
Wie könnte eine Alternative aussehen?

01:23:20.215 --> 01:23:25.035
Weil ich würde jetzt ja schon erwarten, dass du Effekt in maximal generisch

01:23:25.035 --> 01:23:30.315
ja brauchst, weil du ja nicht für jeden Use Case einen Hook mitliefern kannst.

01:23:30.635 --> 01:23:33.875
In meinen Augen, vielleicht, sorry, wenn ich sage Use Effect war ein Fehler,

01:23:34.135 --> 01:23:39.535
ich glaube, dass sie Use Effect heißt, eventuell wäre Use Side Effect oder Use

01:23:39.535 --> 01:23:40.935
Run an Effect after rendering.

01:23:41.115 --> 01:23:44.315
Also Name ist, glaube ich, für mich das ein Problem an der Stelle.

01:23:44.655 --> 01:23:47.195
Use Dangerous Effect or You Will Be Fired, wie wäre es damit?

01:23:47.195 --> 01:23:51.975
Ja, geht für mich in die richtige Richtung, weil in meinen Augen hätten halt

01:23:51.975 --> 01:23:54.475
die High-Level-Hooks auch mitkommen sollen.

01:23:54.675 --> 01:24:00.375
Also es hätte zehn High-Level-Hooks geben sollen mit, für den Effekt aus,

01:24:00.515 --> 01:24:04.055
wenn die Komponente gerendert oder für was aus, nachdem die Komponente reingehängt

01:24:04.055 --> 01:24:06.335
wurde, für was aus, nachdem die Komponente gerendert wurde,

01:24:06.895 --> 01:24:10.115
für was aus, bevor die Komponente rausfliegt oder sowas in der Richtung.

01:24:10.115 --> 01:24:15.895
Und auch führe etwas aus, was von den Props abhängt oder was von,

01:24:16.035 --> 01:24:17.175
ich weiß nicht was, was abhängt.

01:24:17.315 --> 01:24:22.375
Und ich glaube, das wäre sinnvoll gewesen, wenn es sowas in der Richtung in

01:24:22.375 --> 01:24:27.675
React gegeben hätte, wenn man eben anerkennen will, dass React nicht nur von

01:24:27.675 --> 01:24:31.155
Leuten, die ihr ganzes Leben noch funktionale Programmierung machen, gemützt wird.

01:24:32.515 --> 01:24:37.795
Deswegen meine ich UseEffect, so war ein Fehler. Und ich habe das vorhin mit

01:24:37.795 --> 01:24:41.215
der Abstraktionsschicht gesagt, also für mich ist es durchaus ganz oft ein Code-Smell,

01:24:41.315 --> 01:24:44.595
in Anführungszeichen, wenn ich sehe, dass Use-Effekt überall in der Codebase

01:24:44.595 --> 01:24:45.995
verwendet wird, weil...

01:24:47.004 --> 01:24:50.244
Use Effect ist ja eindeutig der Punkt, wo diese Welten brechen.

01:24:50.504 --> 01:24:55.784
Also das, was die React an Idee gibt, wie Applikationen zu rendern sind und

01:24:55.784 --> 01:25:01.204
dem, was im Browser passiert, mit dem gesamten Asynchron-Lifecycle,

01:25:01.424 --> 01:25:03.584
um Partner zu kriegen oder sonst irgendwas zu machen,

01:25:04.384 --> 01:25:05.904
da clashen die beiden Dinge.

01:25:05.904 --> 01:25:11.004
Und das wird nicht eindettiger als bei der gesamten API von Use Effect,

01:25:11.124 --> 01:25:13.364
weil da versuchen wir, diese Welten zu verheiraten.

01:25:13.704 --> 01:25:16.804
Da hast du dieses Dependency Rate, das schon das erste Mal ist.

01:25:17.404 --> 01:25:21.884
Also das schreit ja nach potenziellen Problemen, auch wenn du das wegaufstrierst.

01:25:22.144 --> 01:25:26.884
Und zum Zweiten, dass du zum Schluss für so ein Use Effect die Aufräummethode

01:25:26.884 --> 01:25:31.104
zurückgeben musst, damit alles, was du jetzt in der Parallelwelt gemacht hast,

01:25:31.144 --> 01:25:32.664
dann wieder ordentlich beenden kannst.

01:25:32.984 --> 01:25:37.284
Das ist schon krass eigentlich. Und es wird nirgendwo stärker sichtbar,

01:25:37.444 --> 01:25:39.784
dass diese Welten eigentlich sehr schwierig zum Verheiraten sind.

01:25:40.684 --> 01:25:43.844
Ja, ich meine, andererseits ist es, wie gesagt, wenn du diesen Weg beschreiten

01:25:43.844 --> 01:25:47.544
willst, ist das Ding notwendig. Das ist halt so wie Any in TypeScript.

01:25:47.904 --> 01:25:52.224
Das kannst du nicht nicht haben. Es ist notwendig, dass das irgendwo existiert.

01:25:52.304 --> 01:25:55.124
Das ist halt nicht notwendig, dass es in jeder zweiten Komponente auftaucht.

01:25:56.024 --> 01:26:00.004
Ja, gut, das stimmt. Also unter der Haube benutzt wird, meinetwegen,

01:26:00.144 --> 01:26:06.124
aber das ist halt, wenn du die Usages von UseEffect auf Minimum reduzierst und

01:26:06.124 --> 01:26:10.904
high-levelige APIs anbietest, reduzierst du die Gefahr aus solcher Fehler wie bei Cloudflare.

01:26:11.124 --> 01:26:14.184
Es gibt eine große Ausnahme dafür, aber grundsätzlich würde ich das jetzt erstmal

01:26:14.184 --> 01:26:15.064
trotzdem so stehen lassen.

01:26:15.844 --> 01:26:19.864
Aber da würde mich jetzt deine Sicht der Dinge interessieren. Warum?

01:26:20.870 --> 01:26:23.030
Machen das nicht einfach mehr Entwicklerinnen und Entwickler,

01:26:23.090 --> 01:26:24.970
dass sie eigene Hooks schreiben,

01:26:25.490 --> 01:26:28.230
die auf diese Basis-Hooks aufbauen, weil tatsächlich sind ja Hooks,

01:26:28.250 --> 01:26:32.610
wie sie eingeführt worden sind, mit der Idee präsentiert worden,

01:26:32.750 --> 01:26:36.530
dass du die genauso kombinieren kannst, wie du Komponenten kombinieren kannst.

01:26:36.530 --> 01:26:40.890
Also das ist eigentlich schön von der Darstellung und vom Konzept dahinter,

01:26:41.050 --> 01:26:46.250
dass das, was gerendert wird und das, was dann tatsächlich dafür sorgt,

01:26:46.390 --> 01:26:48.150
dass du das richtige hast zum Rendern,

01:26:48.770 --> 01:26:52.070
genau gleich kombiniert werden kann und composited werden kann.

01:26:52.330 --> 01:26:55.470
Aber meiner Meinung nach macht es keiner. Sie komponenten das einmal 20,

01:26:55.610 --> 01:26:59.030
ich würde alternativ tatsächlich auch nehmen, jetzt irgendwie so,

01:26:59.110 --> 01:27:03.150
es gäbe das jQuery oder Lodash der Hooks, wo du wirklich davon ausgehen kannst,

01:27:03.330 --> 01:27:07.250
ich hüpfe in ein random Projekt rein und dann ist das einfach da als eine gegebene Größe.

01:27:07.370 --> 01:27:09.930
Die Wahrscheinlichkeit ist größer 90 Prozent, dass es da ist.

01:27:10.230 --> 01:27:12.050
Weil das wäre die Alternative zu Schreibhalt alles selber.

01:27:12.430 --> 01:27:15.490
Also das Einzige, was ich da kenne, ist JustQuery. Das verwendet quasi jeder noch.

01:27:15.890 --> 01:27:19.910
Ja, genau. Das wollte ich auch sagen. Ich glaube, das ist das React-Query oder 10-Stack-Query.

01:27:20.810 --> 01:27:25.830
Im Prinzip generell, die 10-Stack-Sachen versuchen das. Also wir haben diese

01:27:25.830 --> 01:27:27.610
10-Stack-Table im Einsatz.

01:27:28.650 --> 01:27:32.170
Und die ist spannend, weil das Einzige, die gibt es ja noch ein paar Hooks,

01:27:32.230 --> 01:27:35.150
damit du Tabellendaten managen kannst. nicht, dass du das Ordering machst,

01:27:35.250 --> 01:27:37.090
dass du das Virtual Scrolling machst und solche Dinge nicht.

01:27:37.650 --> 01:27:41.390
Das Markup machst immer nur du und dann setzt du halt den Output der Hooks an

01:27:41.390 --> 01:27:44.010
die richtige Stelle, nicht? Das ist schon ziemlich elegant.

01:27:44.230 --> 01:27:45.630
Und ich kann dir vorstellen, Peter würde jetzt gleich fragen,

01:27:45.670 --> 01:27:47.790
warum mache ich das nicht einfach alle selber? Die Frage würde ich jetzt einfach

01:27:47.790 --> 01:27:50.850
übergehen und einfach auf Stefans Frage antworten und dann kann Peter vielleicht nochmal.

01:27:52.910 --> 01:27:55.130
Es tut mir so leid, dass das hier keine Videoaufzeichnung gibt.

01:27:55.430 --> 01:27:57.990
Peters Gesicht ausdruckt hat, aber wurde da eben schon. Also.

01:27:59.210 --> 01:28:01.590
Es gibt eine Videoaufzeichnung, aber die sieht hinterher nur die KI,

01:28:01.710 --> 01:28:05.730
die die Snippets für Social Media macht. Die heißt nicht Sabine, diese KI?

01:28:06.530 --> 01:28:08.570
Nein, Sabine ist eine NI. Okay.

01:28:09.690 --> 01:28:11.990
Also Stefans Frage, warum machen Leute das nicht?

01:28:13.687 --> 01:28:16.987
Ich mache ja Schulung und Beratung mit React und das ist für mich eine der primären

01:28:16.987 --> 01:28:19.647
Fragen, dass ich das nicht so richtig verstehe, warum ich die Leute,

01:28:19.947 --> 01:28:22.167
das ist auch im ehrlichsten meine Einstiegsschulung von React,

01:28:22.267 --> 01:28:26.007
das zu 50 Prozent heutzutage schreibt mal eigene Hooks, was keine Herausforderung

01:28:26.007 --> 01:28:28.367
ist, aber es machen Menschen nicht.

01:28:29.107 --> 01:28:32.627
Und so richtig verstehe ich es nicht. Eine Argumentation, die ich dazu habe,

01:28:32.807 --> 01:28:37.747
ist, es ist der allerletzte Punkt im React-Tutorial, ist, wie mache ich eigene Hooks?

01:28:37.827 --> 01:28:41.147
Also es gibt irgendwie so eine Sektion Edge Cases. Nee, wie heißt das?

01:28:42.247 --> 01:28:46.907
Escape Hatches. Also es gibt eine Sektion Escape Hatches, wo in meinen Augen

01:28:46.907 --> 01:28:48.947
Use Effect reingehören wird, aber andere Sache.

01:28:49.087 --> 01:28:52.987
Und der allerletzte Punkt von Escape Hatches ist Reusing Logic with Custom Hooks.

01:28:53.127 --> 01:28:56.367
Halte ich für komplett die falsche Stelle. Vielleicht ist das Teil der Ursache.

01:28:57.007 --> 01:29:00.307
Der nächste Punkt ist, Menschen copy und pasten halt Sachen aus einer Anleitung

01:29:00.307 --> 01:29:02.967
an die Stelle, wo sie es gerade brauchen und machen sich keine Gedanken über

01:29:02.967 --> 01:29:06.167
Kapselung, Abstraktionsschichten, Code auftrennen und so weiter.

01:29:06.407 --> 01:29:10.307
Und das ist kein React-spezifisches Problem, würde ich sagen,

01:29:10.467 --> 01:29:14.107
sondern ich habe auch schon jQuery-Code gesehen, der 5000 Zeilen in einer Datei ist.

01:29:14.727 --> 01:29:18.947
Und ich glaube, dass das ich habe auch PHP-Klassen gesehen, die so lange sind.

01:29:19.167 --> 01:29:21.367
Also das passiert da leider immer wieder.

01:29:21.727 --> 01:29:26.607
Der relevante Unterschied für mich ist, in PHP und in jQuery-Kapseln die Leute

01:29:26.607 --> 01:29:27.807
das dann zumindest in Funktion.

01:29:28.467 --> 01:29:33.007
Und das passiert halt in React auch nicht. Aber warum so wenig Custom-Fucks

01:29:33.007 --> 01:29:34.527
geschrieben werden, ist eine berechtigte Frage.

01:29:36.148 --> 01:29:38.408
Naja, vielleicht hat das ja was mit dem Gedankengebäude zu tun,

01:29:38.508 --> 01:29:42.228
dass alles, was in React als tragende Substanz existiert, eine Komponente ist.

01:29:42.708 --> 01:29:46.168
Schreibe ich Code, kommt da in die Komponente und Hooks sind halt irgendwie

01:29:46.168 --> 01:29:49.648
so, ja, das gibt es halt auch noch, aber das ist ja sowieso irgendwie seltsam.

01:29:49.888 --> 01:29:52.308
UseEffect ist so kompliziert, dass ich mir da jedes Mal mit ins Knie schieße.

01:29:52.488 --> 01:29:53.768
Das fasse ich lieber gar nicht an.

01:29:54.548 --> 01:29:57.248
Vielleicht ist das durchaus diese Sorge, ich habe UseEffect gesehen,

01:29:57.308 --> 01:30:00.468
das ist so schwierig und dann muss es auch schwer sein, eine Custom Hook zu schreiben.

01:30:00.848 --> 01:30:03.548
Vielleicht ist das durchaus ein relevanter Faktor an der Stelle.

01:30:04.748 --> 01:30:08.088
Also das sind vor allem, ihr seht auch in jeder Schulung Berührungsängste,

01:30:08.248 --> 01:30:10.948
dass Leute, die seit einem Jahr React machen, sich nicht trauen,

01:30:11.008 --> 01:30:11.908
eine eigene Hook zu schreiben.

01:30:12.588 --> 01:30:14.168
Verstehe ich nicht. Das ist.

01:30:15.668 --> 01:30:19.108
Müssen wir irgendwas didaktisch als Community falsch gemacht haben. Glaube ich nicht.

01:30:19.348 --> 01:30:22.528
Ich glaube, was halt React echt geholfen hätte, wäre, wenn sie weiter in ihrer

01:30:22.528 --> 01:30:25.428
komischen funktionalen Programmiersprache geblieben wären, wo sie ursprünglich mal herkamen.

01:30:26.488 --> 01:30:29.648
Dann würden 90% aller Probleme, die wir jetzt hier besprochen haben,

01:30:29.748 --> 01:30:32.728
weggehen, wenn sie weiterhin in OCaml oder so existieren wollten, was das war.

01:30:33.708 --> 01:30:37.188
Und dann hätte man da einfach einen Transpiler vorgeklemmt und gut ist.

01:30:37.708 --> 01:30:41.128
Dann wäre ja dieser ganze, wir machen Workarounds und wir haben diesen Clash,

01:30:41.208 --> 01:30:44.028
auf den Stefan ja wiederholt hingewiesen hat, das wäre halt eben alles nicht

01:30:44.028 --> 01:30:45.188
da, wenn die halt tatsächlich,

01:30:45.668 --> 01:30:49.768
mit ihrem Paradigma auf einer Plattform existieren würden, die das Paradigma

01:30:49.768 --> 01:30:52.388
implementiert und wo man nicht gegen die Plattform kämpfen muss,

01:30:52.528 --> 01:30:54.548
um irgendwie das Paradigma durchzusetzen.

01:30:55.008 --> 01:30:59.928
Es gibt aber ein paar Programmiersprachen, die das versuchen,

01:31:00.088 --> 01:31:02.448
die auch aus der Facebook-Geggen kommen.

01:31:02.668 --> 01:31:09.748
Riesen-ML ist eine davon. Das ist ja OCaml im Browser, eine sehr starke React-Verbindung.

01:31:10.728 --> 01:31:18.048
Und man hört das andere, das heißt Elm. Ja, Elm ist ja Husky im Browser und

01:31:18.048 --> 01:31:21.988
hat ein ähnliches Komponenten-Konzept wie React, aber halt, ich glaube,

01:31:22.228 --> 01:31:23.508
weiß nicht, ob das kompatibel ist oder so.

01:31:24.668 --> 01:31:26.108
Ja, hat sich auch alles nicht wirklich durchgesetzt.

01:31:26.988 --> 01:31:32.268
Weil auf einmal musste ich dann nämlich wirklich zu 100% diesen Konzepten verschreiben

01:31:32.268 --> 01:31:34.508
und hast überhaupt keinen Weg mehr, dass du ausbrechen kannst.

01:31:35.388 --> 01:31:38.448
Naja, aber dann ist halt die Notwendigkeit halt eben auch geringer.

01:31:38.508 --> 01:31:41.308
Du brauchst halt dann sozusagen nicht das ausbrechen, sondern du musst halt

01:31:41.308 --> 01:31:45.368
wirklich irgendwie commit to the bit machen und sagen, das ist ja jetzt funktional

01:31:45.368 --> 01:31:47.548
und da gibt's jetzt kein if else, deal with it.

01:31:48.148 --> 01:31:51.408
Was ja offensichtlich geht, nur da muss man halt eben zu einem sehr viel größeren

01:31:51.788 --> 01:31:53.148
Maße den Geist frei machen.

01:31:53.228 --> 01:31:55.728
Es ist halt die Frage, ob es schwieriger ist, sich in die Welt reinzufressen,

01:31:56.548 --> 01:31:59.688
versus ständig diesen Kontext-Switch zu machen, den du jetzt ja mehrfach angesprochen

01:31:59.688 --> 01:32:01.548
hast. Das ist ja nun auch nichts, was für free kommt.

01:32:02.128 --> 01:32:04.808
Das ist jetzt schon sehr vergebend in Wirklichkeit nicht.

01:32:05.008 --> 01:32:09.188
Also du kannst lang laufen, ohne dass du merkst, dass keine Schurken mehr anhast

01:32:09.188 --> 01:32:10.648
und auf Stachel rennst nicht. Also.

01:32:13.723 --> 01:32:19.123
Ist okay. Ich überlege gerade, wir hatten gerade 17 Mal schon TenStack Query,

01:32:19.203 --> 01:32:20.703
ob nicht eigentlich diese Hooks,

01:32:21.643 --> 01:32:25.863
auch genau das sind, das Verhindern des Bruchs und ob das nicht einfach so,

01:32:25.963 --> 01:32:29.383
wir haben ja uns darauf geeinigt, dass wir React als Ökosystem betrachten und

01:32:29.383 --> 01:32:32.643
dann würde ich jetzt einfach mal gesetzt annehmen, jede Anwendung nutzt ja sowas,

01:32:33.463 --> 01:32:36.803
wie TenStack Query und dann hast du diesen krassen Bruch halt nicht mehr.

01:32:39.403 --> 01:32:43.463
Tut das jede Anwendung? Also in unserem Fantasie-Projekt-Dings da,

01:32:43.523 --> 01:32:45.843
hatte ich das nicht gesehen. Da habe ich eine Menge gesehen, aber nicht das.

01:32:46.683 --> 01:32:50.323
Ja, das hat andere Gründe. Die nutzen ja Next.js.

01:32:50.423 --> 01:32:54.683
Das ist der andere Weg, wie du dann das auseinander bekommst.

01:32:55.623 --> 01:32:59.263
Ah, warte mal. Also 10Stack Query ist also jetzt die jüdische Volksfront und

01:32:59.263 --> 01:33:03.543
wir haben die Volksfront von Judea gar spielt und die hätten eine andere Library

01:33:03.543 --> 01:33:06.043
gehabt, die das gleiche macht, aber die haben wir nicht benutzt. Nee, nee, nee.

01:33:07.143 --> 01:33:10.303
Es macht auch durchaus Sinn 10Stack Query mit Next.js zu kombinieren.

01:33:10.303 --> 01:33:14.303
Insofern ist das irgendwie einer der Volksfront.

01:33:14.623 --> 01:33:16.723
Kannst du mir mal kurz TenStack Query erklären? Ich bin ja kein Entwickler.

01:33:16.823 --> 01:33:17.523
Ich habe das noch nie benutzt.

01:33:18.423 --> 01:33:23.163
Du hast Wurstbrot gleich Use Query und dann übergibst du eine Funktion,

01:33:23.263 --> 01:33:27.183
die ein Promise zurückgibt und den kümmert sich halt darum, dass du die Daten daraus bekommst.

01:33:27.263 --> 01:33:29.183
Du musst also kein Use State, du musst keinen Use Effect machen,

01:33:29.303 --> 01:33:32.223
sondern du kriegst die Daten, die du haben willst.

01:33:32.603 --> 01:33:35.563
Also mein Ersatz für Await in einer React-Komponente.

01:33:35.963 --> 01:33:39.763
Das ist das Await auf React-Syntax. Für alle, die das kennen,

01:33:39.843 --> 01:33:41.743
ich weiß, wie falsch das war, was ich hier gerade gesagt habe,

01:33:41.803 --> 01:33:45.743
aber ich muss das ja auf Peters Sprache übersetzen.

01:33:45.823 --> 01:33:48.363
Dass das Code-Beispiel sieht konzeptionell so aus, als wäre es das.

01:33:48.503 --> 01:33:51.123
Also ich glaube, man kann das im Rahmen der Messungenauigkeit verstritten.

01:33:51.483 --> 01:33:55.243
Es macht aber nette andere Sachen, wie dass du zum Beispiel ähm.

01:33:56.710 --> 01:34:00.190
Dieses Dale-Weil-Revalidate-Konzept drinnen hast, das heißt,

01:34:00.370 --> 01:34:04.230
du kriegst schon mal Daten zurück, ohne dass du eine neue Quere absetzt.

01:34:04.750 --> 01:34:08.930
Du hast Caching-Mechanismen drinnen und solche Sachen. Also da ist schon viel

01:34:08.930 --> 01:34:10.530
Wissen drinnen und das macht es ja auch so nett.

01:34:10.890 --> 01:34:14.830
Und das macht, also ich habe tatsächlich gerade mit einem Team auch die Diskussion,

01:34:14.910 --> 01:34:17.230
in meinen Augen gehört das halt in jede React-Anwendung rein,

01:34:17.350 --> 01:34:19.890
die HTTP-Requests macht, außer sie haben irgendeinen anderen sinnvollen Weg,

01:34:19.970 --> 01:34:20.790
wie zum Beispiel Next.js.

01:34:21.330 --> 01:34:25.450
Aber ein HTTP-Request in einer React-Anwendung, die ein paar Monate leben soll

01:34:25.450 --> 01:34:29.610
und ein paar Hunden ein bisschen größer werden soll, macht man nicht von Hand

01:34:29.610 --> 01:34:32.910
mit Use-Date und Use-Effect, sondern da setzt man bitte eine Bibliothek an.

01:34:32.990 --> 01:34:34.730
Das muss dann auch nicht das 10th-Decquery sein.

01:34:35.390 --> 01:34:39.810
Gibt bestimmt noch Wettbewerber. Aber ja, das gehört für mich zum guten Ton

01:34:39.810 --> 01:34:41.810
dazu. Und trotzdem hast du recht, nicht alle machen das.

01:34:42.350 --> 01:34:44.370
Ja, wir wollten gerade sagen, dann erfüllt das ja nicht das,

01:34:44.390 --> 01:34:47.430
was ich haben wollte, nämlich die Rolle des jQuery und des Lodash,

01:34:47.510 --> 01:34:53.110
des quasi automatisch mit Gemeinden, das, wovon man einfach immer ausgehen kann, dass es da ist.

01:34:53.250 --> 01:34:57.310
Aber ich kenne ja den Grund und das liegt tatsächlich wenn man schon ein bisschen,

01:34:58.010 --> 01:35:01.310
ich glaube, wir haben uns schon in die Richtung bewegt, wir haben es aber noch

01:35:01.310 --> 01:35:04.810
nicht benannt, das liegt ein bisschen an dem, wie wir als Community dann drüber reden.

01:35:05.090 --> 01:35:07.750
Also ich meine, prinzipiell gibt es zwei Lager, entweder es gibt es.

01:35:08.880 --> 01:35:14.520
Uns Kritiker, die dann generell einmal sehr missfallend über diese Dinge sprechen.

01:35:14.680 --> 01:35:20.140
Oder es gibt die, die sich komplett dem Verschreiben, aber dann nicht die Probleme

01:35:20.140 --> 01:35:23.000
ansprechen, die existieren, sondern da wird eh über coole Bibliotheken,

01:35:23.120 --> 01:35:24.820
coole Features, coole Produkte geredet.

01:35:25.760 --> 01:35:30.140
Die Direktwelt ist sehr, sehr kapitalistisch. Du hast ja viele Projekte,

01:35:30.140 --> 01:35:35.780
die existieren in dem Umfeld, sind finanziell gepackt, entweder als Bootstrap-Startup.

01:35:35.880 --> 01:35:41.020
Das ist ja das, was Tenstack macht. Das ist ja nicht der Output oder das Nebenprodukt

01:35:41.020 --> 01:35:43.980
von einer Firma, die etwas anderes macht, sondern das ist das Produkt und da

01:35:43.980 --> 01:35:45.320
gibt es halt eine Bezahlschiene dazu.

01:35:45.760 --> 01:35:49.380
Oder du hast NextChase, das ist ja auch nichts anderes, als wie ein Funnel zu

01:35:49.380 --> 01:35:54.360
dieser Visell-Plattform. Und natürlich redest du dann nicht über Probleme, die existieren können.

01:35:54.480 --> 01:35:57.900
Du redest nur über neue Features, neue Lösungen, neue Sachen,

01:35:58.340 --> 01:36:00.640
anstatt dass es mal wen gibt, der sagt, hey, und ich bin jetzt,

01:36:01.160 --> 01:36:04.720
keine Ahnung, Softwarearchitekt, Rat oder irgendwas und ich versuche jetzt dieses,

01:36:04.980 --> 01:36:10.880
ich versuche Code-Qualität beizubringen, ich versuche Design-Patterns zu etablieren.

01:36:11.000 --> 01:36:13.740
Das existiert in der Community de facto nicht.

01:36:14.700 --> 01:36:18.580
Ich würde auch tatsächlich sagen, dass Burst Cord ein eines meiner Lieblingsprodukte

01:36:18.580 --> 01:36:22.580
benutzt, wenn ich über diesen ganzen Raum spreche, nämlich Produkt tatsächlich.

01:36:23.380 --> 01:36:26.540
Nicht nur jetzt, weil jetzt einige da tatsächlich kommerzielle Unternehmungen

01:36:26.540 --> 01:36:28.660
sind, sondern ich würde tatsächlich behaupten, auch die nicht kommerziellen

01:36:28.660 --> 01:36:31.920
Unternehmungen sind nicht zu unterscheiden von denen, die keine sind,

01:36:32.000 --> 01:36:33.920
weil die nach den exakt gleichen Mechanismen operieren.

01:36:34.720 --> 01:36:37.860
Die haben diese Hochglanz-Webseiten, wo ich glaube, wir auch schon mal drüber

01:36:37.860 --> 01:36:41.360
geredet haben, dass irgendwie so ein Random-Open-Source-Projekt einfach mal

01:36:41.360 --> 01:36:44.120
ein bisschen so sich besser verkaufen müsste.

01:36:45.120 --> 01:36:49.860
Die haben halt irgendwie Leute, die vielleicht nicht direkt von dem Projekt

01:36:49.860 --> 01:36:54.460
bezahlt werden, aber die halt als ihre Rolle als Evangelist in diesem Universum

01:36:54.460 --> 01:36:56.360
das hauptberuflich bestreiten.

01:36:56.460 --> 01:36:59.200
Und wo die am Ende dann halt ihr Butterbrot mitschmieren, ist ja letztlich egal.

01:36:59.200 --> 01:37:03.260
Also die operieren halt eben alle wie Produkte und deswegen halt eben auch in

01:37:03.260 --> 01:37:04.180
dieser Wettbewerbssituation.

01:37:05.424 --> 01:37:07.764
Ich wollte bloß erwähnen, dass das halt einfach so, glaube ich,

01:37:07.844 --> 01:37:10.884
was ist, was man auf die alle ausdehnen kann, inklusive derer,

01:37:10.964 --> 01:37:14.624
wo jetzt der unmittelbare Geldgenerierungsmechanismus so nicht zutrifft.

01:37:16.624 --> 01:37:19.244
Also einfach nur eine interessante Feststellung auch und ich sehe das halt eben

01:37:19.244 --> 01:37:22.324
genauso, dass das halt mehr so Fanclubs dann sind.

01:37:22.484 --> 01:37:26.844
Ich bin jetzt hier bei den React-Ultras und das da hinten sind dann die Angular-Hooligans

01:37:26.844 --> 01:37:31.704
und im besten Fall setzt man sich mal zusammen und ist sich uneins.

01:37:33.644 --> 01:37:38.584
Aber es gibt ja keinerlei Ergebnis, zu dem man da groß kommen kann.

01:37:40.084 --> 01:37:44.924
Nein, es ist spannend. Mir fällt das vor allem in der JavaScript-Community im

01:37:44.924 --> 01:37:47.324
Allgemeinen, aber ganz besonders in der React-Community auf,

01:37:47.384 --> 01:37:50.144
dass das unter anderen Vorzeichen läuft.

01:37:50.444 --> 01:37:54.164
Es fällt mir vor allem jetzt wieder auf, wo ich lange, lange Zeit in der Rust-Community

01:37:54.164 --> 01:37:55.624
war, wo das ganz, ganz anders funktioniert.

01:37:55.804 --> 01:38:00.204
Also da versucht ja jeder irgendeine Open-Source-Konsortium zu machen und irgendwie

01:38:00.204 --> 01:38:05.144
Dinge kollaborativ zu erledigen und weit weniger stark Firmen getrieben.

01:38:05.724 --> 01:38:08.444
Und das haben wir einmal gehabt, das war Deutsche Queere genauso und deswegen

01:38:08.444 --> 01:38:14.424
ist es ein Untergang auch nicht, weil das Ziel war ja, dass das Ding irgendwann einmal obsolet wird.

01:38:15.144 --> 01:38:17.784
Und da muss ich auch dazu sagen, ich wäre halt auch voll fein damit,

01:38:17.824 --> 01:38:19.444
wenn das das Ergebnis von React ist.

01:38:19.604 --> 01:38:23.064
Also wenn wir in fünf Jahren, realistisch in zehn Jahren hier sitzen und alle

01:38:23.064 --> 01:38:25.184
noch Web Components machen und React tot ist,

01:38:25.704 --> 01:38:27.784
das wäre ja voll fein für mich und ich glaube halt trotzdem,

01:38:28.004 --> 01:38:31.244
dass Status Quo ist, es gibt eine Existenzberechtigung für diese Frameworks

01:38:31.244 --> 01:38:35.284
und es ist gut, dass nicht jede Firma ihr eigenes Web Components-Dings umbaut.

01:38:35.904 --> 01:38:40.124
Gut, dass Leute wie Peter das machen und damit so ein bisschen Fortschritt auch

01:38:40.124 --> 01:38:43.544
forcieren, aber ich würde jetzt halt nicht sagen,

01:38:44.719 --> 01:38:49.559
die durchschnittliche Softwareentwicklungsbude auf die Idee kommen sollte,

01:38:49.559 --> 01:38:53.839
sich das alles selber auszudenken oder auf Basis von Web Components sich ganz

01:38:53.839 --> 01:38:56.799
viel selber auszudenken, sondern ich glaube, dass es für die einfach einen enormen Mehrwert bietet,

01:38:56.979 --> 01:38:59.839
auf React oder sonst was zu setzen.

01:39:01.219 --> 01:39:05.139
Tja, und ich bin halt nicht ganz so sicher, dass notwendigerweise die Kombination

01:39:05.139 --> 01:39:11.319
von der Facebook-Kokspipeline und dem Jahr 2013 jetzt dann der Quell der Weisheit

01:39:11.319 --> 01:39:13.959
gewesen sein muss, der Gipfel der Entwicklung, das kann natürlich sein,

01:39:14.079 --> 01:39:16.139
aber ich würde mal sagen, das warten wir mal noch ab.

01:39:17.639 --> 01:39:22.199
Ich finde ein bisschen schade, wie wenig du auf diesem Das Ding ist ja von 2013 rumgeritten hast.

01:39:23.259 --> 01:39:26.399
Weil, also ich habe ja schon vorher gesagt, ich habe deine Nachricht nicht gelesen,

01:39:26.479 --> 01:39:29.279
weil die mir zu lang war für mein ADHS-Gehirn. Du hättest das irgendwie so ein

01:39:29.279 --> 01:39:31.239
paar Spiez packen müssen oder so.

01:39:31.379 --> 01:39:35.159
Deswegen machen wir lieber einen Zwei-Stunden-Podcast. Genau, genau, genau.

01:39:36.839 --> 01:39:39.939
Da fällt es mir leichter. So, also ich habe das nur noch halb gelesen.

01:39:40.019 --> 01:39:42.539
Aber die eine Sache, die ich mich halt erinnere, ist, dass du irgendwie gesagt

01:39:42.539 --> 01:39:46.899
hast, das ist ja jetzt auch irgendwie schon ganz alt und irgendwie ja nicht mehr zeitgemäß.

01:39:47.159 --> 01:39:52.399
Und ist das in Ordnung so als Zusammenfassung oder lege ich dir damit was komplett ins Wort?

01:39:53.099 --> 01:39:57.699
Ich finde es eine zulässige Vereinfachung. Ich würde halt auch hier darauf hinweisen,

01:39:57.819 --> 01:40:02.439
dass sozusagen mein Kritikpunkt Nummer 0 in diesem 95-Punkte-Programm tatsächlich

01:40:02.439 --> 01:40:08.819
mehrdimensional war und jetzt den spezifischen Schnittpunkt der Zeitachse mit

01:40:08.819 --> 01:40:12.719
der Facebook-Achse, mit der Problemachse, die sie da lösen wollten, beschreibt.

01:40:12.719 --> 01:40:15.179
Das ist ja tatsächlich mehrere Dinge, die zusammengekommen sind,

01:40:15.559 --> 01:40:17.299
um genau dieses Projekt zu erschaffen,

01:40:17.479 --> 01:40:21.159
das dann ja noch von OCaml back in JavaScript transponiert wurde.

01:40:22.359 --> 01:40:25.839
Und ich habe dir jetzt nur so halb zugehört, weil das irgendwie nur so halb

01:40:25.839 --> 01:40:27.659
interessant war, weil du hast das ja alles schon mal gesagt gehabt.

01:40:29.379 --> 01:40:33.819
Und geschrieben. Geschrieben, ja. Ich habe eventuell dem her gelesen,

01:40:33.879 --> 01:40:36.019
was du geschrieben hast, aber ich habe versucht, dir auch zuzuhören.

01:40:36.659 --> 01:40:39.159
Ich glaube, dass ich halt diesen Standpunkt irgendwas ist alt und abgehangen

01:40:39.159 --> 01:40:44.439
an der Stelle einfach für also du fährst auch immer noch Fahrrad, oder? Oder Eisenbahn.

01:40:45.647 --> 01:40:50.047
Ja, aber die Drohne ist doch viel neuer. Nee, das Flugtaxi ist viel neuer.

01:40:50.827 --> 01:40:54.887
Das ist aber offensichtlich nicht praktikabel, um die 10-Minuten-Fahrradstrecke

01:40:54.887 --> 01:40:56.407
zwischen Wohnung und Büro zu überwinden.

01:40:56.567 --> 01:40:59.567
Und ich glaube, genauso wenig ist es halt praktikabel, dass die durchschnittliche

01:40:59.567 --> 01:41:04.907
Firma anfängt, auf Basis von Web-Components in 2025 ihre riesen für 10 Jahre

01:41:04.907 --> 01:41:08.547
stabil bleibende Front-Ed-Dingsbums aufbaut.

01:41:09.147 --> 01:41:13.367
Nee, ist es auch nicht. Das Problem ist, mit JavaScript primär anzurücken.

01:41:13.467 --> 01:41:17.587
Für besagte Firma ist es wahrscheinlich eine super Idee, PHP oder Java zu nehmen,

01:41:17.767 --> 01:41:21.387
View-Transitions draufzuschmeißen und hin und wieder mal ein bisschen kleinseitiges

01:41:21.387 --> 01:41:25.427
JavaScript da reinzustreuseln, wo es notwendig ist, weil nicht alle den Facebook-Newsfeed

01:41:25.427 --> 01:41:27.807
von da haben wir es wieder, 2013 nachbauen müssen.

01:41:28.087 --> 01:41:32.147
Aber wie viele Leute findest du denn, die da Erfahrung haben?

01:41:33.507 --> 01:41:36.747
Mit PHP-Seite rauszuhren? Nee, mit View-Transitions. Ich glaube,

01:41:36.827 --> 01:41:39.247
ich habe das hier schon mal in diesem Podcast gehabt, das wurde ja noch nie gehört.

01:41:40.747 --> 01:41:45.227
Also jetzt wirklich, wie viele Entwickler findest du, die Erfahrung haben,

01:41:45.647 --> 01:41:47.067
Frontend-Anwendungen mit,

01:41:47.771 --> 01:41:50.751
View-Transitions und was noch irgendein anderes Ding benutzen.

01:41:50.911 --> 01:41:52.391
Das sind halt einfach nicht viele.

01:41:52.571 --> 01:41:53.991
Ich will damit ja nicht sagen, es ist schlechte Technologie.

01:41:53.991 --> 01:41:56.271
Du darfst ja nicht die Enterprise-Latenz vergessen. Genauso viele,

01:41:56.391 --> 01:41:58.811
wie ich finde, die Use-Effect-Correct benutzen können.

01:41:59.791 --> 01:42:01.911
Nein, aber du darfst ja nicht die Enterprise-Latenz vergessen.

01:42:02.011 --> 01:42:04.991
Nicht nur, weil die Technologie existiert und cool ist und so weiter dauert.

01:42:05.051 --> 01:42:08.371
Das hat einmal, bis das in die Produktionszyklen von den Unternehmen kommt.

01:42:09.431 --> 01:42:11.691
Und drei, vier Jahre ist es wahrscheinlich eh wirklich das Gescheitere.

01:42:11.831 --> 01:42:15.231
Und dann steht der eine Java-Entwickler drin, der gesagt hat,

01:42:15.311 --> 01:42:16.391
ich habe es euch auch gleich gesagt.

01:42:17.871 --> 01:42:20.091
Ich halte es auch für möglich, dass die Konsequenz sein wird,

01:42:20.211 --> 01:42:23.471
dass die Frontend-Frameworks immer schmaler werden, weil sie halt weniger Dinge

01:42:23.471 --> 01:42:27.091
vom Browser wegabstrahieren müssen und sich auf andere Sachen konzentrieren können.

01:42:27.331 --> 01:42:30.351
Ich meine, dass sowas wie Tense, wir haben es gerade ein paar Mal React-Query

01:42:30.351 --> 01:42:33.411
genannt, also wenn wir React-Query oder Use-Query oder Tense-Stack-Query sagen,

01:42:33.511 --> 01:42:37.431
meinen wir immer das Gleiche und das hieß halt früher mal React-Query,

01:42:37.671 --> 01:42:40.091
die sind mittlerweile aber Framework-agnostisch und es gibt auch für andere Dinge.

01:42:40.211 --> 01:42:42.931
Wahrscheinlich kannst du das für Web-Components benutzen. Und das ist halt was,

01:42:42.971 --> 01:42:46.391
was ich durchaus für plausibel für die Zukunft halte, dass viele Dinge aus dem

01:42:46.391 --> 01:42:49.891
Ökosystem weiter existieren werden und eine Relevanz haben werden,

01:42:50.011 --> 01:42:56.171
aber dieses Wegabstrahieren von der DOM-API wird sicher immer weniger wichtig.

01:42:58.207 --> 01:43:02.587
Ach, das weiß ich gar nicht. Wenn ich jetzt nicht so meinen inneren Contrarium,

01:43:02.587 --> 01:43:04.887
wenn ich den irgendwie auch nur halbwegs versuchen würde, einzuhegen,

01:43:05.087 --> 01:43:08.687
würde ich ja durchaus irgendwie sagen, so JSX für das Templating von Web Components

01:43:08.687 --> 01:43:09.547
wäre halt nicht verkehrt.

01:43:10.627 --> 01:43:13.587
Das muss man jetzt nicht mit Strings machen, sondern da könnte man wunderbar

01:43:13.587 --> 01:43:15.527
Proactoren einbauen und das würde niemandem wehtun.

01:43:16.567 --> 01:43:19.307
Ich würde mich tatsächlich dann ja, weil ich tatsächlich außerhalb der Syntax

01:43:19.307 --> 01:43:23.087
nix von dem ganzen Rest benutzen würde, mich ja außerhalb dieses Meme-Universums

01:43:23.087 --> 01:43:27.367
bewegen, aber das ist ja durchaus, das sehe ich jetzt ja nicht ganz so brutal.

01:43:27.367 --> 01:43:31.787
Ne, also das, wogegen ich anargumentiere, ist jetzt nicht irgendwie spezifisch

01:43:31.787 --> 01:43:34.147
React und ich argumentiere jetzt nicht spezifisch für,

01:43:34.327 --> 01:43:38.327
man ersetze jedes Feature von React durch halt Web-Components,

01:43:38.487 --> 01:43:42.827
sondern man ersetze diesen ganzen, wir schreiben erstmal 20 Megabyte JavaScript durch,

01:43:43.107 --> 01:43:46.887
hau das Ding halt vom Server raus, sieh zu, dass das halt schnell lädt und ergänze

01:43:46.887 --> 01:43:51.147
das halt ein bisschen an den Stellen, wo das halt eben nicht reicht,

01:43:51.327 --> 01:43:54.187
weil das ist der Kreis, den Stefan so beschrieben hat.

01:43:54.187 --> 01:43:59.007
Es geht ja einmal ringsum und wir sind von der kleinseitigen Web-Anwendung hin

01:43:59.007 --> 01:44:01.367
wieder zu Server-Site-Rendering gekommen.

01:44:02.207 --> 01:44:04.987
Schleppen halt alles mit, was wir bis dahin aufgesammelt haben.

01:44:06.867 --> 01:44:09.527
Statt einfach zu sagen, weißt du was, war früher nicht alles schlecht,

01:44:09.767 --> 01:44:14.667
lass mal einfach hier ein PHP-Template rausrendern, wie mein Freund mit der Laborverwaltung.

01:44:14.667 --> 01:44:18.627
Der hatte jetzt einen etwas besonders einfachen Fall, dass der halt dann auch

01:44:18.627 --> 01:44:21.707
willens und in der Lage war, zu Fuß, Drag-and-Drop JavaScript zu machen,

01:44:21.787 --> 01:44:23.147
was ich jetzt zum Beispiel auch nicht machen würde.

01:44:24.447 --> 01:44:29.307
Aber so mehr davon und weniger von dem JavaScript first, das ist eigentlich

01:44:29.307 --> 01:44:32.047
das, wo ich so wirklich gegen zu Felde ziehe.

01:44:34.763 --> 01:44:39.863
Und React ist halt einfach nur so ähnlich wie KI gerade, der größte Kerl, der da rumsteht.

01:44:39.983 --> 01:44:42.863
Und ich als Clownhau natürlich, trete natürlich dem gegen das Schienenbein.

01:44:43.703 --> 01:44:48.123
Ich würde da halt dann auch zustimmen, also einen goldenen Hammer zu haben und

01:44:48.123 --> 01:44:51.763
den auf jedes Problem zu werfen, ist, glaube ich, halt einfach pauschal nicht klug.

01:44:51.863 --> 01:44:55.223
Das trifft sowohl auf React oder Single-Page-Applications zu,

01:44:55.303 --> 01:45:00.403
im React-Ökosystem trifft es auf Redux zu, es trifft auf Docker zu, es trifft auf KI zu.

01:45:00.403 --> 01:45:03.723
Also das ist so, keine Lösung, die wir irgendwie heute haben,

01:45:03.863 --> 01:45:05.883
löst alle Probleme und ich glaube, es macht schon Sinn zu gucken,

01:45:05.983 --> 01:45:12.463
welches Problem hat man und welche Lösung passt dann zum Problem und zum Team und zum Unternehmen.

01:45:13.363 --> 01:45:17.543
Stefan hat das mit Enterprise Delay, nee, was war das Wort? Enterprise Latenz. Latenz.

01:45:17.863 --> 01:45:22.163
Ja, das ist definitiv das Ding und ich bleibe auch dabei, wenn du halt einen

01:45:22.163 --> 01:45:26.503
Haufen von EntwicklerInnen hast, die unbedingt React machen wollen und da Jahre

01:45:26.503 --> 01:45:31.463
Erfahrung haben, dann wird es ein Fehler sein, den Vanilla Web Components aufzuzwingen.

01:45:32.123 --> 01:45:35.643
Bin ich fest von überzeugt. Es sei denn, du kriegst dir davon überzeugt vorher.

01:45:36.043 --> 01:45:39.003
So, wenn du es in den Verkauf kommst, gut, aber sonst darf ich schon das schief

01:45:39.003 --> 01:45:41.323
gehen. Ich würde zum Abschluss nochmal darauf hinweisen wollen,

01:45:41.383 --> 01:45:44.743
dass Vanilla Web Components als 1 zu 1 React-Ersatz es spezifisch nicht das

01:45:44.743 --> 01:45:45.763
ist, wofür ich argumentiere.

01:45:46.543 --> 01:45:50.843
Nee, da würde ich Web Components weglassen, das ist einfach mit DOMAP. Was? Entschuldigung.

01:45:52.343 --> 01:45:59.643
Serverseitigem Zeug. HTML, Java, PHP, View Transitions. Ja, da kannst du mich mit zitieren.

01:46:01.329 --> 01:46:04.589
Ja. Damit hat er jetzt nicht gerechnet. Jetzt ist er endgültig glatt.

01:46:04.809 --> 01:46:08.009
Da quatsche ich die ganze Zeit darüber, wie doof React ist und der hält hier

01:46:08.009 --> 01:46:11.729
standhaft seine Position, aber sobald ich sage, PHP ist akzeptabel,

01:46:12.009 --> 01:46:13.469
weiß er nicht mehr weiter.

01:46:13.469 --> 01:46:16.549
Doch, auch da,

01:46:16.889 --> 01:46:21.369
ich glaube, also ich habe halt PHP-Anwendungen gesehen, die einfach dann ein

01:46:21.369 --> 01:46:25.689
JQuery-Monster draufgesetzt bekommen haben, weil sie nicht rechtzeitig gemerkt

01:46:25.689 --> 01:46:29.189
haben, dass ihre Anwendung in eine Richtung sich entwickelt,

01:46:29.489 --> 01:46:33.869
dass sie eigentlich vor allen Dingen eine Rich-Internet-Application,

01:46:33.909 --> 01:46:36.009
haben wir früher gesagt, was sagt man heute, Single-Page-Application,

01:46:36.109 --> 01:46:37.189
Desktop-Like, was auch immer.

01:46:37.749 --> 01:46:39.909
Also das passiert dann auch durchaus mal.

01:46:41.609 --> 01:46:45.689
Ähm, ja. Ich bleibe dabei, alles nicht pauschal damit die richtige Antwort,

01:46:45.809 --> 01:46:48.589
auch für E-Commerce, was ja in diesem Beispiel war, was du genannt hast,

01:46:49.309 --> 01:46:53.709
Autodesch-Display, also ich würde definitiv nicht eine PHP-Anwendung des Armaturenbrett

01:46:53.709 --> 01:46:56.129
von einem Auto rendern lassen, bei React können wir da schon drüber reden.

01:46:56.789 --> 01:46:59.229
Also die Displays im ICE sind PHP gerendert, ne?

01:47:00.029 --> 01:47:03.849
Natürlich habe ich exklusiv Auto gesagt, wobei, nee, aufgrund der Echtzeit-Anforderungen

01:47:03.849 --> 01:47:05.889
würde ich das halt alles nicht mit Web-Technologien machen, aber.

01:47:07.208 --> 01:47:10.828
Ja, gut, aber dann dafür beleben wir dann Flash wieder, darüber reden wir dann

01:47:10.828 --> 01:47:13.348
nächstes Mal. Ja. Okay, cool.

01:47:14.208 --> 01:47:16.848
Dann würde ich sagen, ich weiß nicht, ob wir zu einem Ergebnis gekommen sind,

01:47:16.948 --> 01:47:21.028
aber es war mir auf jeden Fall ein Vergnügen. Ja, das kann ich unterschreiben.

01:47:21.888 --> 01:47:23.428
Ich habe das hier wieder letztes Mal schon gesagt.

01:47:24.468 --> 01:47:27.808
Ich werde euch auch sein Feedback interessiert. Ich habe das Gefühl,

01:47:27.848 --> 01:47:30.608
wir haben anderthalb Stunden umgelabert. Oh nee, die Uhr sagt eine Stunde, 51.

01:47:30.868 --> 01:47:33.148
Anderthalb Stunden wird ja ganz viel rausgeschnitten.

01:47:33.548 --> 01:47:36.708
Ich habe keine Ahnung, ob das irgendjemand was bringt. Das wäre dich super interessant mal zu hören.

01:47:37.228 --> 01:47:40.588
Ihr habt ja den Community-Slack. Ich wäre da super interessiert,

01:47:40.688 --> 01:47:43.108
was zu hören. Sorry, Peter, ich habe dich unterbrochen.

01:47:43.508 --> 01:47:45.808
Ja, nee, aber du hast mich nicht unterbrochen, du hast mir Arbeit abgenommen.

01:47:45.908 --> 01:47:49.628
Ich hätte nämlich jetzt auch das übliche Like und Subscribe und Ab in den Community-Slack gesagt.

01:47:49.908 --> 01:47:53.208
Aber dafür habe ich ja natürlich mittlerweile in meinem gehobenen Alter meine

01:47:53.208 --> 01:47:55.208
Leute, die das für mich machen. Wunderbar.

01:47:55.728 --> 01:48:00.168
Meine Herren, ich danke Ihnen. Das war sehr insightful und oder unterhaltsam.

01:48:00.988 --> 01:48:06.588
Wir danken euch fürs Zuhören. Und weil unser Sendungsplan mittlerweile komplett

01:48:06.588 --> 01:48:08.868
dekompensiert ist, habe ich nicht auch nur den Hauch einer Ahnung,

01:48:09.088 --> 01:48:12.148
wann das hier erscheint oder was nächste Woche dann dran ist.

01:48:12.268 --> 01:48:13.908
Aber ich bin sicher, es wird super interessant.

01:48:14.128 --> 01:48:17.828
Also schalten Sie auch wieder ein, wenn es heißt, herzlich willkommen zu Working Draft.

01:48:18.168 --> 01:48:20.788
Dankeschön, bis zum nächsten Mal und tschüss. Ciao.

