Latest / Coding Buddies | Tech & Dev-Mindset / Clean Code #5 - Theorie vs Praxis
Transcript
- 0:00Ja, dann mach ich das. Halt trotzdem ne, aber trotzdem
- 0:02würde ich zumindest im Team einmal.
- 0:06Challenge. Genau.
- 0:07Und. Dann ist halt wieder die Frage 1
- 0:09gegen 20. Coating Boys, Dein Podcast rund
- 0:14um Softwareentwicklung und aktueller Technews.
- 0:16Herzlich Willkommen. Herzlich Willkommen zur neuen
- 0:31Coding. Buddies Podcast Folge Es geht
- 0:34wieder los. Dabei ich der Fabi und natürlich
- 0:38nicht zu vergessen der fantastische Dino Dino.
- 0:42Grüße dich. Moin Moin Fabi, Was geht ab?
- 0:45Was geht denn ab? Ja, das geht noch.
- 0:49Lass mal ne neue Podcastfolge aufnehmen.
- 0:53Wir hatten ja im Vorfeld mal schon n bisschen drüber
- 0:55gequatscht, was wir machen. Ich werde es mal kurz mal auf
- 0:59den Punkt bringen, worum es heute geht.
- 1:01Und zwar hatten wir ja schon mal n paar folgen bisher über
- 1:04Cleancode gemacht, ich glaube 4 folgen sind es bisher insgesamt
- 1:08über Cleancode. Und das ist ja immer alles schön
- 1:13und gut, ne, also man sagt ja auch zum Beispiel OK Mensch,
- 1:16hier macht bei Cleancode, dies macht bei Cleancode das wir
- 1:18haben ja schon mal so n bisschen darüber geredet, wie man
- 1:19Variablen und Funktionen benennt.
- 1:23Beziehungsweise wie man vielleicht auch Funktionen
- 1:25aufbauen sollte. Oder zum Beispiel, wie es laut
- 1:29Cleancode zum Beispiel auch. Kommentare also mit Kommentaren
- 1:34im Code, sozusagen. Wie es sich damit verhält.
- 1:37Und zusätzlich, was auch irgendwie find ich n bisschen
- 1:40mit da rein spielt, darüber haben wir auch schon mal geredet
- 1:43über Refactoring von Code und ich find das immer alles ganz
- 1:46interessant, weil rein theoretisch weiß man ja oder
- 1:50kann man ja theoretisch sagen ey es gibt.
- 1:53Prinzipien, die du vielleicht anwendest über n Paar, wie die
- 1:56ich gerade genannt hab, haben wir ja schon gesprochen, werden
- 1:59ja noch weitere folgen, aber prinzipiell kann man ja sagen,
- 2:01OK, das sind Best practices und wenn man jetzt zum Beispiel
- 2:04sagt, OK, MAN kennt diese Best practices, sie existieren.
- 2:08Aber wieso zum Beispiel findet man denn trotzdem immer wieder
- 2:12Code, schreibt selber mal wieder Code, die sich eben nicht an
- 2:16diese Best practices oder an diesen Cleancode halten, halten
- 2:20so, also wieso muss man zum Beispiel immer wieder.
- 2:23Trotzdem noch mal refect, dann etwas verändern im Code, obwohl
- 2:27man ja eigentlich weiß, OK, das und das, so funktioniert es
- 2:31richtig, das ist quasi best practice, darüber können wir
- 2:35heute mal n bisschen quatschen, oder?
- 2:37Der ist eigentlich ein ganz cooles Thema, vor allem auch so
- 2:39als kleines Zwischenfazit. Schon finde ich das cool, also
- 2:44man kann ja im Prinzip sagen, wir haben jetzt schon 4 folgen
- 2:47die Theorie erklärt. Oder wie man theoretisch clean
- 2:51und Code schreibt. Und können ja jetzt mal so n
- 2:54bisschen auf die Gefahren in der realen Praxis eingehen.
- 2:58Genau, warum es denn halt doch nicht so einfach ist, einfach
- 3:01diese Theorie umzusetzen. Ja, das find ich eigentlich ganz
- 3:04cool, dann lass uns doch schauen, ob wir da einfach so
- 3:06verschiedene Punkte herauskristallisieren können,
- 3:08vielleicht so aus unserer eigenen Erfahrung.
- 3:10Ja, da fallen mir jetzt auch. Schon so mindestens 23 ein, was
- 3:15ich so aus in meinen eigenen Projekten oder in unseren
- 3:18Projekten so erlebt habe. Das finde ich cool.
- 3:23Unter dem Motto Theorie versus Praxis.
- 3:30Genau, ich hau einfach mal den ersten Punkt raus, weil ich
- 3:33denke, denen werden viele kennen, die sich in die gleiche
- 3:36Situation hineinversetzen können oder schon mal waren.
- 3:39Ist so dererste.in meinen Augen, dass es ganz oft mit Zeitdruck
- 3:43zu tun hat. In dem Moment, wenn ich zum
- 3:46Beispiel mein Projekt wirklich enorm Zeitdruck bekomme und
- 3:50Sachen fertigstellen muss, also fertig programmieren muss, dass
- 3:53ich dann geneigt bin, dazu eventuell nicht mehr alles nach
- 3:57Best Practice zu Cohen und so super clean arbeite, sondern
- 4:00anfange, Sachen rein zu zufrieden, sage ich mal, also
- 4:06erstmal so dieses typische, naja, das geht ja erst mal so,
- 4:09das ist jetzt erstmal eine Lösung und dann kümmern wir uns
- 4:12irgendwann darum. Dieses Problem haben wir auch
- 4:14schon öfter mal besprochen. Aber ich finde, das greift hier
- 4:17auch wieder als Grund, warum es in der Praxis nicht so einfach
- 4:21ist, immer wirklich cleancode umzusetzen.
- 4:24Mind. Catsulator Equels Never oder
- 4:26was? Machen wir erstmal so machen wir
- 4:28es. Später, das ist denn das
- 4:29Folgeproblem, was daraus entsteht, da hatten wir ja mal
- 4:32ne Folge zu gemacht, aber ich finde, dass Zeitdruck halt oft n
- 4:35Grund ist, überhaupt in diese Situation zu kommen, dass man
- 4:39sagt, OK, das ist jetzt eigentlich nicht mehr so nach
- 4:41Lehrbuch. Aber es geht halt gerade nicht
- 4:44anders. Dieses typische ja, aber wir
- 4:46können es gerade nicht anders machen, weil wir die Zeit nicht
- 4:48haben. Deswegen finde ich so der erste
- 4:50Big Point, da ist halt Zeitdruck, wie siehst denn du
- 4:53das? Ja, ich, ich kenne das Problem,
- 4:55was du gerade ansprichst. So den den den Punkt.
- 4:58Weil das ist mir auch in einem alten Projekt schon mal
- 5:00begegnet, dass man. Ja, wurden halt auch bestimmte
- 5:05Sachen sollten. Schnell umgesetzt werden und das
- 5:09haben wir dann auch im Team gemacht.
- 5:11Das hat dann auch soweit alles funktioniert und irgendwann
- 5:15bisschen später n bisschen Zeit es quasi ins Tal geflossen, sagt
- 5:20man glaub ich so ne. Die ja genau jeder.
- 5:24Kennt den das Sprichwort? Und dann ging es irgendwann
- 5:30wirklich mal wieder an ne weil. Man hat es halt manchmal.
- 5:35Man kommt nicht drum herum, das ist ja genau das, worüber es
- 5:38hier gerade geht. Einfach mal wieder was zu refact
- 5:40dann und haben dann einfach genau aus diesem Grund gemerkt,
- 5:42OK, weil wir haben uns wieder bestimmte Files, bestimmte
- 5:46Klassen angeguckt mit bestimmten Funktionsnamen, was auch immer
- 5:49und haben uns mal überlegt okay. Was?
- 5:51Passiert da eigentlich. Also es hat zwar funktioniert,
- 5:55es war auch abgetestet, aber es war halt wirklich schwer
- 5:58durchzusteigen durch den Code was da genau und wieso warum
- 6:01überhaupt das passiert. Also du hast ja vielleicht in
- 6:03deinem Code hast du ja bestimmte.
- 6:06Wie sagt man Fachlichkeiten, die abgebildet werden?
- 6:09Und wenn du diese Fachlichkeiten eigentlich überhaupt nicht
- 6:12greifen kannst in deinem Code mehr, also zum Beispiel
- 6:15irgendeine Funktionalität im groben und Ganzen, was dieser,
- 6:18was deine Anwendung zum Beispiel machen soll.
- 6:20Also ich sage jetzt mal, wenn du irgendwo, wenn sich irgendwo in
- 6:23deiner Anwendung sozusagen den Login widerspiegelt, du aber
- 6:26überhaupt nicht verstehst im Code, was da eigentlich
- 6:29passiert, obwohl es ja eigentlich sowas sein müsste,
- 6:31wie, ah ja, hier ist der Login, dann wird es halt wirklich
- 6:33schwierig. Das ist natürlich jetzt n
- 6:35einfaches Beispiel was ich genannt hab, aber in dem Fall
- 6:38war es komplexer, aber es war auf jeden Fall diesem Zeitdruck
- 6:41schon irgendwo geschuldet. Dass eben sowas aufgetreten ist,
- 6:46dass wir uns irgendwann, auf dass wir irgendwann auf diesen
- 6:49Code gestoßen sind und gesagt haben, boah, ich weiß gar nicht
- 6:51mehr, was da los ist, was genau passiert da eigentlich?
- 6:54Ne, das, das war schwierig. Aber aber ist das dann entstand
- 6:58dadurch, dass sie wirklich schnell das machen musstet, oder
- 7:01ist das so Iterativ gewachsen? Und dann habt ihr euch
- 7:04irgendwann gefragt, sag mal, was machen wir hier eigentlich oder
- 7:07gab es denn so zum Beispiel von außen Druck sowas wie, ja das
- 7:11muss echt morgen fertig sein, weil.
- 7:13Unser Kunde XY das jetzt braucht zum Beispiel nur mal so als
- 7:17Beispiel, also kam da wirklich so Druck, also Pressure von
- 7:19außen sage ich mal oder? Na ja, es ist so n bisschen
- 7:25beides gewesen. Also es war jetzt nicht wirklich
- 7:27so eine Art Deadline, aber man hat natürlich schon irgendwie,
- 7:30sage ich jetzt mal. Einen gewissen Anspruch, wann
- 7:35etwas oder wie wie schnell sozusagen Software wachsen
- 7:38sollte, sag ich jetzt mal. Kam halt schon ne Menge rein und
- 7:43es musste irgendwie auch umgesetzt werden und manchmal
- 7:45hast du ja auch Momente wo du sagst, OK wir würden das gerne
- 7:47anders machen, vielleicht aber zu dem Zeitpunkt existiert
- 7:51vielleicht noch nicht die konkrete Idee, wie man es besser
- 7:53macht. Beziehungsweise hat man halt
- 7:56eben. Nicht die Zeit, weil das ganze
- 7:58Team irgendwie an bestimmten Baustellen sitzt und daran
- 8:02arbeitet. Es war aber noch glaube ich auch
- 8:04noch n anderer Punkt, was sozusagen dazu geführt hat und
- 8:07ich finde, dass es auch n sehr essentieller Punkt, wenn es
- 8:11darum geht. Zu sagen, OK, du hast die
- 8:14Theorie, wie du es sozusagen gut machst, aber die Praxis grätscht
- 8:17manchmal ein bisschen dazwischen.
- 8:20Und das war zum Beispiel, das waren sich sich verändernde
- 8:23Anforderungen. Ne also.
- 8:27Du hast zum Beispiel eine ne Anwendung und möchtest quasi
- 8:30irgendwie es soll n bestimmtes Feature in diese Anwendung
- 8:33reingebracht werden und jemand sagt dir dann OK, mach das
- 8:37Feature so und so und dann baust du es sozusagen genauso ein wie
- 8:41die Anforderung ist und dann auf einmal ändert sich die
- 8:44Anforderung vielleicht nicht um 180 Grad, aber vielleicht sag
- 8:46ich jetzt mal um 90 Grad, also schon, dass sich quasi
- 8:50grundlegend was ändert und dann musst du halt da drin irgendwie
- 8:54was verändern und das ist teilweise auch wirklich
- 8:56schwierig finde ich, weil. Wie möchtest du Sachen
- 9:01verändern? Damit es sozusagen erstmal
- 9:05funktioniert, weil manchmal ist es ja dann auch so.
- 9:08Ja komm, können wir das nicht mal eben so und so machen und
- 9:11dann steht man finde ich auch so, da sitzt man zwischen 2
- 9:14Stühlen, weil man sich dann sagt, Na ja gut okay, du willst
- 9:17es zwar schnell haben, aber deine Änderung klingt vielleicht
- 9:19trivial in diesem Moment. Code technisch ist da aber
- 9:23einiges zu ändern, weil quasi die Ursprungsanforderungen.
- 9:26An diese Software, die du schreiben solltest, ne ganz ganz
- 9:29andere war und manchmal manchmal klingen Sachen relativ einfach
- 9:34von außen so, ja dann. Weiß ich nicht.
- 9:38Füg doch vielleicht noch n Attribut hinzu, ne und dann hast
- 9:41du aber vielleicht das Problem, dass dieses Attribut vielleicht
- 9:44oder oder pack das Attribut von Objekt A zu Objekt b.
- 9:47Aber wenn deine Datenbankstruktur und deine
- 9:49Relation sozusagen in dieser Datenbank ist, jetzt n bisschen
- 9:52weit ausgeheult, aber wenn die jetzt zum Beispiel dann sich
- 9:55komplett verändern, weil irgendwelche Constraints darauf
- 9:57liegen, dann wird es irgendwann schwierig.
- 10:00Also diese Anforderungen, die vorher da waren.
- 10:03Falls. Du verstehst, was ich meine.
- 10:07Da jeder Mitkauft das ist. Natürlich sehr bedient du und
- 10:09ich auch noch dabei sind bei fabis Erklärungen, aber ich
- 10:12denke schon. Ja, ich finde, das ist ein ganz
- 10:15cooler Punkt mit diesen ändernden oder geänderten
- 10:18Anforderungen, weil man ja oft dazu neigt.
- 10:23Diese neue Änderung oder diese Abänderung der Anforderungen
- 10:26dann noch quasi on top mit rein zu coden, dass man sagt okay,
- 10:30ich hab jetzt ein Feature entwickelt, das hat sich jetzt
- 10:32geändert, also passe ich das an, aber man geht meistens nicht
- 10:37zurück und da spielt ja wieder dieser Zeitdruck oft rein das
- 10:41man so weit zurückgeht noch mal zu hinterfragen ob dieser
- 10:43gesamte Grundansatz den man gewählt hat sage ich mal
- 10:48überhaupt jetzt noch intakt ist. Also ist das jetzt wirklich noch
- 10:51die beste Lösung, das zu implementieren, oder ist das
- 10:53Feature vielleicht jetzt doch so abgewandelt, dass man es hätte
- 10:57ganz anders angehen müssen und dann geht man oft halt nicht den
- 11:01Schritt zu sagen. Alles weg, mal radikal gesagt
- 11:04und wir machen das jetzt neu, weil es ist n echt n anderes
- 11:07Feature geworden und wir können das anders implementieren,
- 11:10sondern neigt dazu zu sagen, OK wir nehmen das was wir haben und
- 11:13ändern das ab und das ist oftmals nicht die optimale
- 11:16Lösung dann am Ende. Ja, aber ich find wie gesagt, da
- 11:19sind halt 22 Sachen die halt. Die ja auch gegeneinander
- 11:24spielen. Ne, weil auf der einen Seite
- 11:25hast du diesen zeitlichen Aspekt, weil auf der einen Seite
- 11:29ne, man kann ja verstehen, dass man zum Beispiel sagt so.
- 11:31Wir würden das gerne so und so umbauen.
- 11:33Ne kommt die Anforderungen und dann sagst du ja klar können wir
- 11:35gerne machen, aber das dauert dann vielleicht 3 Monate.
- 11:38Ich übertreib jetzt n bisschen ne und dann heißt es na ja 3
- 11:41Monate nee können wir gar nicht machen so und dann kommt ja
- 11:44vielleicht auch noch sowas wie ja warum dauert das denn so
- 11:47lange? Naja weil die Anforderungen sich
- 11:49derart geändert haben ja gut, aber dann habt ihr aber eure
- 11:54Software nicht so designt, dass sie wirklich gut maintenable ist
- 11:57oder so. Und das ist dann auch wieder
- 12:00fies. Weil also das ist, das ist halt
- 12:03eine sehr, sehr schwierige Angelegenheit, weil klar auf der
- 12:07einen Seite möchtest du deine Software natürlich so designen,
- 12:09dass sie möglichst gut wartbar, erweiterbar ist und vielleicht
- 12:13auch veränderbar, was auch immer, dass man halt quasi
- 12:15schnell auf Änderungen reagieren kann.
- 12:18Aber das funktioniert ja nicht immer.
- 12:22Also anhand dieser Anforderungen.
- 12:24Wenn jetzt wirklich die sich die Anforderungen so komplett
- 12:26ändern, dann wird es halt unter Umständen wirklich schwierig.
- 12:31Aber das ist ja die Front, kenne ich ja es.
- 12:32Wird halt nicht immer. Es wird halt nicht immer so
- 12:36gesehen, dann von außen ne, weil man hat natürlich auch wenn man
- 12:39jetzt zum Beispiel nicht im Entwicklerteam drin steckt, dann
- 12:42ist es natürlich teilweise schwierig das dann vielleicht
- 12:44nachzuvollziehen auf der technischen Ebene, aber sowas
- 12:48kommt natürlich hinzu. Ja klar, also Änderungen, die
- 12:52oftmals trivial klingen, können halt einen großen Impact haben
- 12:54auf die Gesamtsoftware und wenn du dann halt wirklich nach
- 12:56Cleancode entwickeln willst, bist du eigentlich gezwungen,
- 12:59denn halt auch dementsprechend das komplett durch zu refectern
- 13:02und den Code anzupassen und das ist dann halt von außen oftmals
- 13:07nicht gerne gesehen oder nicht verständlich, gerade weil das
- 13:11deswegen auch meine Frage vorhin kam.
- 13:13Dieser Zeitdruck von außen, weil oftmals hast du ja einen
- 13:16Stakeholder der sagt so okay ich hätte gerne das und das bis da
- 13:19und da so Deadlines typisch. Und wenn jetzt von da auch
- 13:24dieser Änderungswunsch kommt und gleichzeitig diese Deadline
- 13:27irgendwie eingehalten werden muss oder gesetzt wird, dann
- 13:29wirst du natürlich auch auf wenigen Verständnis treffen.
- 13:32Wenn du sagst, kann ich machen, das klingt jetzt trivial, die
- 13:35Änderung. Deutet aber n paar Wochen
- 13:37Entwicklungszeit. Ja.
- 13:39Dann wird das halt nicht nicht sehr positiv aufgenommen, denk
- 13:42ich mal. Pass auf, mir fällt, mir fällt
- 13:45Grad n Beispiel ein um um das irgendwie mal n bisschen
- 13:47greifbar zu machen, weil ich dachte mir so alles was man so
- 13:49erklärt ist irgendwie so sehr sehr auf einer Metaebene
- 13:52irgendwie bisher. Aber stell dir mal vor, jemand
- 13:55sagt okay wir haben wir haben ne Software und es gibt zum
- 13:57Beispiel bestimmte. Entitäten sage ich jetzt mal,
- 14:01oder bestimmte Objekte oder was auch immer, wo man sagt Okay
- 14:05diese Entitäten sind. Wirklich unique, also die kann
- 14:09es nur einmal geben, das ist unsere Anforderung.
- 14:12Und jetzt kommt zum Beispiel irgendwie eine neue Anforderung
- 14:15rein und dann heißt es, wie wäre es, wenn wir auch Entitäten
- 14:18kopieren können, so, und dann stehst du halt auf einmal in
- 14:22einem irgendwo in einem so einem State, wo du dir denkst, also
- 14:27erst hieß es, das soll Einheit, also wirklich Unix sein, also
- 14:30wirklich einzigartig, so eine Entität sage ich jetzt mal.
- 14:32Ne, zum Beispiel ein Username oder was auch immer, der darf
- 14:36nur einmal vorkommen und dann kommt zum Beispiel jemand und
- 14:38sagt ja gut, aber es wäre doch eigentlich auch okay, wenn man
- 14:41irgendwie dann sozusagen user kopieren könnte, dann wäre es
- 14:44halt einfacher die neu anzulegen oder was auch immer, weißt du
- 14:46sowas? Und dann dann.
- 14:48Dann ist es am Ende nicht nur ne copy Funktion zu implementieren,
- 14:51sondern du musst halt durch deine gesamte Software gehen und
- 14:54überhaupt diese ganze sag mal diese Prämisse verändern da drin
- 14:58ne, weil dein ganzer Code basiert ja darauf, dass Sachen
- 15:01nur einmal existieren können. Genau, aber die aber die Idee
- 15:04also wie du es aussprichst ist halt super easy, dass du einfach
- 15:08sagst, wie wäre es denn, wenn wir einfach auch jetzt user
- 15:10kopieren können oder oder diese Entitäten, was auch immer man
- 15:12dahinter hat, aber das klingt halt super trivial.
- 15:17Aber unter Umständen ist es das eben nicht.
- 15:18Und das ist halt manchmal so ein bisschen, finde ich die
- 15:20Schwierigkeit, wo man dann zum Beispiel vielleicht sagt, Ey,
- 15:23wir arbeiten nach Best Practice und versuchen alles, und dann
- 15:26verändert sich auf einmal irgendetwas und dann kannst du
- 15:29das Ganze nicht. Also dann kannst du es nicht
- 15:35quasi nachhaltig so aufbauen, dass irgendwie alle Best
- 15:38Practices cleancode auch mit Reinspielen und du musst es halt
- 15:41auch Refect am Ende. Also genau, du kannst nicht
- 15:46sagen wir mal nicht so schnell und das ist dann halt auch
- 15:48oftmals wieder das Problem. Also es ist halt n enormer
- 15:52Aufwand, denn wieder so n clean Zustand.
- 15:55Mit dieser neuen Anforderung zu erreichen.
- 15:57Indem man aber auch gehen sollte.
- 15:59Ja. Nach Lehrbuch wirst wie gesagt
- 16:01in der Praxis ist halt immer die Frage, darfst du diesen Weg zum
- 16:03Beispiel gehen oder hast du die Zeit diesen Weg zu gehen.
- 16:07Das ist halt wirklich, also oftmals kommt es ja immer wieder
- 16:10darauf zurück, dass man vielleicht nicht diese Zeit hat,
- 16:14oder? Es ja also, dass sie, sag ich
- 16:18mal, diese Anforderungsänderung auch regelmäßig kommen.
- 16:23Das klingt jetzt vielleicht auch ein bisschen komisch, dass man
- 16:25sagt, ja, wieso, du hast doch, du weißt doch, wie die Software
- 16:27sein soll, aber in der Realität ändern sich so eine Anforderung
- 16:30ja auch öfter, das heißt, im Worst Case hast du es
- 16:34implementiert, ein Feature, dann ändern sich die Anforderungen,
- 16:37wie zum Beispiel lass doch mal diese Entitäten kopieren können,
- 16:42es gibt die nicht nur einmal, wir können sie kopieren, dann
- 16:44denkst du dir, Oh Mann ey, jetzt ja okay mache ich bau.
- 16:49Alles um und worst case. Wie heißt das 4 Wochen später?
- 16:53Ja nee war Quatsch, nee nee, das war Quatsch, ich mein dann hast
- 16:56du vielleicht noch das Glück, weil wir ja auch schon so über
- 16:59Versionierung gesprochen haben, dass du es vielleicht
- 17:01zurücksetzen kannst, aber es vielleicht ist es ja auch nicht
- 17:04war Quatsch, setzt zurück sondern war Quatsch, man kann
- 17:06nur gewisse kopiert oder irgendwas weißte und dann bist
- 17:11du ja in so einem Hamsterrad und jagst eigentlich immer diesem
- 17:13clean Zustand hinterher und das ist halt echt schwierig manchmal
- 17:16ja richtig aber. Da kommt ja zum Beispiel.
- 17:20Jetzt gerade dabei sind und sagen, OK, es gibt jetzt zum
- 17:22Beispiel vielleicht irgendwelche Änderungen und jetzt kommt neuer
- 17:25Entwickler oder ne neue Entwicklerin in diesen in in
- 17:28dieses Team rein und du hast gerade quasi so ne Änderung
- 17:32eingebaut, die komplett gegen andere Anforderungen sozusagen
- 17:37entgegenarbeiten und der neue Entwickler oder ne Entwicklerin
- 17:41denkt sich was ist was ist das denn hier also kommt in quasi in
- 17:45irgendeinem Bereich, also irgendwo rein, vielleicht auch
- 17:48an der Ecke wo der Code schon ein bisschen älter ist, also
- 17:50sozusagen eine gewisse Art von Legacy Code.
- 17:54Die aus der Vergangenheit irgendwie existiert.
- 17:57Vielleicht genau aus solchen Änderungen.
- 18:00Und dann heißt es vielleicht sowas wie Leute, was habt ihr
- 18:02denn hier gemacht? Ne, also das ist ja, das ist ja
- 18:06Kraut und Rüben und dann denkt man sich zum Beispiel vielleicht
- 18:09keine Ahnung, irgendwer. Anders zum Beispiel N
- 18:12Projektmanager Heavy warte mal, ich hab gerade gehört, dass
- 18:14Kraut und Rüben. Was habt ihr denn da gemacht?
- 18:18Erkennt ihr, seid ihr keine guten Entwickler oder
- 18:21Entwicklerinnen, dass dass sowas da rumliegt weißt du sowas kann
- 18:23ja auch zum Beispiel auftreten. Ne, also dass solche.
- 18:28Situationen auf einmal da sind und man dann vielleicht
- 18:32irgendwie denkt, so warte mal was, dann hast du vielleicht
- 18:34irgendwie Anschuldigungen, die irgendwie in der Luft stehen
- 18:36oder was auch immer. Ja, weißt du was ich meine?
- 18:41Ja, ja, ja, was heißt Anschuldungen?
- 18:43Manchmal kommt man ja auch so stellt man sich ja, so sage ich
- 18:46mal selbst vor das Gericht, ich kann das halt auch ganz gut,
- 18:49dass du durch den Code schaust und immer wieder so einen Code
- 18:52Passagen vorbei kommst, du dir denkst.
- 18:56Das muss ich noch machen. Du, du siehst es ja selbst so,
- 18:59der hat das nicht schön, das nicht cool, das muss man, ich
- 19:02mein, das kennen wir ja auch aus unserem Projekt, dass wir so n
- 19:05bisschen durch n Code gucken und oftmals so stellen finden, dass
- 19:08es fast auch immer die gleiche denn.
- 19:10So ja übrigens hier ne. Ja ja müssen wir noch machen.
- 19:14Ja Scheiße schaffen wir jetzt nicht, ah müssen wir aber noch
- 19:17machen, dann ist wieder dieses Later Equix Never Prinzip und
- 19:20ich hoffe, dass es nicht greift, da dass wir es noch machen.
- 19:24Aber das ist halt genau dieser Klassiker, dass man ja auch
- 19:27selbst genervt ist davon. Ne, man will ja selbst auch
- 19:30wirklich sauber coden und ne geile Software schreiben und es
- 19:33passiert trotzdem und ich davon muss man mich erstmal
- 19:37überzeugen, dass das niemals bei anderen passiert, das glaube ich
- 19:40nicht, ehrlich gesagt, aber es kommt nämlich immer wieder zu
- 19:43diesem Punkt, dass man echt mal wirklich unsauber arbeitet, weil
- 19:46halt irgendwelche Randbedingungen denn so
- 19:48reinkicken, dass man sagt ich kann's, ich schaff's jetzt nicht
- 19:50das zu machen, oder? So einen anderen Punkt, den wir
- 19:54jetzt noch nicht so so ausführlich besprochen haben,
- 19:56die würde ich jetzt auch noch mal in den Ring werfen, ist
- 19:59nicht nur Zeitdruck oder ändernde Anforderung, sondern
- 20:01auch das Problem ja auch in eine enorme Komplexität haben können,
- 20:06dass man einfaches in dem Moment gar nicht schafft, ist so simpel
- 20:10und clean runter zu brechen, dass da richtig geiler Code
- 20:13rauskommt, sondern man vielleicht gerade nur auf eine
- 20:16Lösung kommt, wo man schon weiß, das schmeckt mir eigentlich
- 20:19nicht so richtig, es ist nur okay, es funktioniert.
- 20:23Man kann es auch abtesten, aber irgendwie ist es noch nicht
- 20:27geil. Diesen Punkt kenn ich auch, ich
- 20:30weiß nicht wie es bei dir ist, aber das sind halt so Momente,
- 20:34damit lebt man dann erstmal. Aber eigentlich nervt es auch.
- 20:37Aber ich find, da kommt auch tatsächlich.
- 20:40Also ich finde es greifen halt also dieses Problem was wir hier
- 20:43in dieser Folge besprechen finde ich ist ein sehr sehr
- 20:46übergreifendes Problem aus vielen Punkten bei Angelegen.
- 20:50Du hast angenommen du hast ein komplexes Projekt angenommen, du
- 20:53musst dafür vielleicht auch mal eine neue Technologie verwenden.
- 20:58Und du kommst irgendwann vielleicht an den Punkt.
- 21:02In der Entwicklung dieser Software oder dieser Anwendung,
- 21:06dass du dir denkst, wie du gerade meintest, was haben wir
- 21:09denn da gemacht oder was habe ich da gemacht, vielleicht sogar
- 21:12oder was hat keine Ahnung, Teamkollege und Teamkollegin da
- 21:15gemacht, ist ja auch immer die Frage.
- 21:19Erfahren ist man zum Beispiel. In dem Bereich also wenn du
- 21:25sagst es ist n komplexes komplexes Projekt, was ja
- 21:29vielleicht auch ne bestimmte. Ne bestimmte Domain mitbringt,
- 21:33wo man vielleicht noch gar nicht so erfahren ist.
- 21:35Vielleicht bietet das neue Framework, was man verwendet,
- 21:40vielleicht ist man selber oder andere Teamkollegen Kolleginnen
- 21:43doch gar nicht so erfahren da drin ne, dass man sozusagen
- 21:46anhand von mangelndem Wissen gar nicht in der Lage ist eine Best
- 21:50Practice zu zu erzeugen oder zu kreieren und dann hinterher
- 21:55guckst du wieder drauf und denkst dir so vielleicht über
- 21:58den eigenen Code was. Denn da gemacht ne, aber es kann
- 22:02halt durchaus sein, dass man vielleicht auch einfach
- 22:04logischerweise sich in bestimmten Punkten auch einfach
- 22:06weiterentwickelt. Genauso wie man zum Beispiel
- 22:10vielleicht anfängt zu programmieren, ne sagen wir mal
- 22:13du bist NN Anfänger und fängst an Software zu programmieren und
- 22:17kennst vielleicht bestimmte Theorien wie irgendwas
- 22:21funktionieren könnte. Und versuchst es umzusetzen.
- 22:24Aber kriegst es vielleicht noch nicht perfekt hin.
- 22:26Also ich meine du kannst es dir auch so vorstellen, ne wenn du
- 22:29jetzt keine Ahnung zum Beispiel Tennis spielst und jemand sagt
- 22:32ja guck mal so funktioniert eine absolut perfekte Vorhand, das
- 22:35ist die Technik, die Theorie dahinter genau so.
- 22:38Legst du eine perfekte Vorhand und du gehst hin, dann wirst du
- 22:42ja nicht dich auf den Platz stellen.
- 22:43Sagen ja, ja, ich weiß ja, wie es geht, zack und ne perfekte
- 22:45Voranschlagen so also du musst ja.
- 22:48Klar, das Beispiel hast du schon mal irgendwann gebracht, oder?
- 22:50Das kommt mir sehr bekannt vor mit einer perfekten Vorhand, ich
- 22:52wag. Ich wag das Beispiel einfach.
- 22:56Ne Zeit lang Tennis gespielt, aber.
- 22:58Ah, jetzt kommt es raus. Jetzt kommt es raus, nein, aber
- 23:00ich find ich find das ist immer n gutes Beispiel, das kannst du
- 23:02ja theoretisch auf jede Sportart oder auf irgendwas was du lernst
- 23:05kannst du es anwenden weil du hast ja ne gewisse Theorie und
- 23:08du weißt vielleicht ja klar so funktioniert das auf jeden Fall,
- 23:11ist ja gar kein Problem. Aber das heißt ja noch lange
- 23:14nicht, dass man es hinkriegt, also zum Beispiel keine Ahnung,
- 23:17wir können ja auch mal aus dem Nähkästchen plaudern, du hast
- 23:20jetzt beim Snowboarden ein bisschen versucht, Switch zu
- 23:23fahren, so, und das ist natürlich, du weißt okay, ich
- 23:27kann die normale, quasi deine normale Frage.
- 23:29Jetzt hier nicht bloßstellen. Okay.
- 23:31Nein, aber deine normale Fahrtrichtung, das kennt ja
- 23:33jeder. Die normale Fahrtrichtung ist
- 23:35ganz easy, aber die andere Fahrtrichtung ist erst mal am
- 23:38Anfang ein bisschen schwieriger, weil man sich denkt, okay, ich
- 23:41weiß doch, wie es funktioniert, aber das heißt ja noch lange
- 23:43nicht, dass ich es auf Anhieb First try umsetzen kann.
- 23:46Ja, das stimmt absolut klar. Also du kannst es sogar quasi
- 23:50auf Variante a kannst du es, du kennst auch die Theorie und
- 23:54trotzdem wenn du was änderst, dann ist es auf einmal wieder
- 23:57komplett ungewohnt oder geht nicht am Anfang.
- 24:00Ja, weißt du, hast du recht? Auf jeden Fall.
- 24:02Ich weiß jetzt nicht, ob jeder sich jetzt was mit Switchfahren
- 24:04vorstellen kann, aber. An die Snowboarderin und
- 24:09Snowboarder da draußen, die Wissen denke ich mal genau, was
- 24:11wir meinen. Ja, absolut.
- 24:14Also ich weiß genau, was du meinst.
- 24:15Das ist halt, es ist auch ne Übungssache einfach um das mal
- 24:20so n Überpunkt zu geben. Also man kann jetzt sich zum
- 24:23Beispiel unsere Podcast folgen zum Cleancode anhören.
- 24:29Das auch verstehen und es ist greifbar.
- 24:33Das hoff ich zumindestens, dass es greifbar ist, was wir hier
- 24:36jetzt definitiv gibt uns Feedback ansonsten in beide
- 24:40Richtungen sowohl positiv als auch kritisch.
- 24:45Aber es ist trotzdem ne übungssache, weil wie gesagt
- 24:47jeder Code ist anders und dann ist die Komplexität
- 24:50unterschiedlich. Hoch.
- 24:52Und am Ende ist es dann die Übung, die dabei hilft, diese
- 24:56Probleme zum Beispiel runter zu brechen und dann wirklich nen
- 24:59Clean Code zu schreiben. Das kommt auch nicht von heute
- 25:02auf morgen, das kommt nicht dadurch, dass man ein Buch
- 25:04liest, zum Beispiel über Cleancode, falls ihr da gerne
- 25:08Empfehlungen haben wollt, können wir das auch gerne mal in die
- 25:10Show Notes packen. Oder halt diesen Podcast hört
- 25:15oder mit anderen drüber redet. Also es ist am Ende halt
- 25:18wirklich practice und deswegen ja auch diese Folge, dass man,
- 25:23dass wir jetzt halt wirklich mal aufzeigen und sagen okay, es ist
- 25:28halt Theorie und Praxis und in der Praxis kann man nicht immer
- 25:31perfekt diese Theorie umsetzen. Richtig.
- 25:34Und deswegen war uns das ja auch wichtig, jetzt diese Folge mal
- 25:37aufzunehmen zu dem Thema und ich finde, das ist halt auch
- 25:40wirklich wichtig, dass man da keine falsche Vorstellung von
- 25:42kriegt so. Ja, ich weiß doch, wie Cleancode
- 25:45funktioniert. Und trotzdem ist das hier
- 25:47irgendwie Käse was ich mache. Ja dann fehlt da vielleicht
- 25:49einfach noch n bisschen Übung oder es sind halt wirklich jetzt
- 25:53gerade so diese Randbedingungen, die wir besprechen, die dann
- 25:56halt dazu führen, dass es erstmal und wohlgemerkt erstmal
- 26:00Käse ist, weil du musst dir dann halt auch die Zeit nehmen und da
- 26:03sind wir wieder bei refactern dir zu sagen, mir gefällt das so
- 26:07nicht, ich weiß, das geht noch besser, ich investiere jetzt
- 26:10nochmal Zeit da rein. Richtig, also, es ist ja zum
- 26:12Beispiel auch tatsächlich nicht nur, wenn man jetzt mal ganz
- 26:15kurz noch mal ein bisschen die Codebene verlassen möchte.
- 26:19Um das Ganze noch mal ein bisschen auszuweiten, weil das
- 26:21finde ich auch sehr interessant. Das sind Sachen, die ich auch
- 26:23schon oft im Gespräch gehört habe mit anderen, dass es zum
- 26:27Beispiel um sowas geht wie also man weiß ja zum Beispiel, dass
- 26:31eine Best Practice ist, dass man zum Beispiel Tests automatisiert
- 26:34durchlaufen lässt, dass man das ICD Pipeline hat, dass man zum
- 26:37Beispiel eine gewisse Release oder die Pleuelstrategie hat,
- 26:42und trotzdem kommt es immer wieder mal vor, dass auch
- 26:45durchaus man sozusagen auf Leute trifft, die sagen, ja, klar, ich
- 26:49weiß, dass das so wichtig ist und dass das ne gute Praxis ist,
- 26:52aber bei uns im Projekt zum Beispiel funktioniert es so
- 26:55nicht so ne. Und dann ist es halt auch
- 26:59manchmal so klar, es kann auf der einen Seite sein, dass es
- 27:01dann eher vielleicht ne Ausrede ist, auf der anderen Seite kann
- 27:05es sein, dass mangelndes Wissen an der Stelle da ist im Sinne
- 27:07von wie setze ich das konkret bei meinem Projekt um.
- 27:11Aber vielleicht funktioniert es tatsächlich auch einfach so
- 27:14nicht, ne wie bestimmte Sachen eigentlich optimal sein sollen.
- 27:19Und das ist halt find ich immer super, super interessant, aber
- 27:23trotzdem find ich kann man immer gibt es find ich immer so diesen
- 27:26diesen Gewissen so n gewissen Leitspruch den man sich
- 27:29irgendwie selber immer mal so als Mantra sagen kann, wenn man
- 27:32zum Beispiel irgendwie an den Punkt kommt wo man sagt das geht
- 27:35so nicht und es ist halt besser zu sagen okay aber wie könnte
- 27:38ich denn mein Wunschzustand herstellen?
- 27:41Also wirklich mal mit dem mit dem Wörtchen wie darüber
- 27:46nachdenken was eigentlich? Wichtig wäre, wo will ich hin
- 27:50und wie kann ich das umsetzen und nicht das geht halt nicht.
- 27:55Das ist ein wirklich guter Punkt, den du da ansprichst,
- 27:57weil dieser Satz ist mir halt auch sehr oft schon begegnet,
- 28:00wenn es so um. So genau um solche Themen wie
- 28:07Cicd Testing geht so ja, wir verstehen.
- 28:12Dass zum Beispiel auch Test Driven arbeiten ne coole Sache
- 28:15ist. Aber und dann kommt immer dieses
- 28:17berühmte aber. Ja, das ist wichtig.
- 28:21Aber bei uns geht das nicht. Weil unser Problem oder unser
- 28:27Projekt ist so unglaublich komplex und anders als alle
- 28:30anderen, dass es am Ende nicht funktioniert.
- 28:33Wir können das nicht umsetzen, wir können keiner automatisierte
- 28:37Integration und die Ploimentstrategie.
- 28:39Gefahren wir können nicht testen.
- 28:43Also weißt du, und da denk ich mir halt immer so OK ich, ich
- 28:49kann mich da super hineinversetzen, weil zum
- 28:51Beispiel unser Projekt Fabi ist ja auch.
- 28:54Nicht gerade so simpel gestrickt, dass man alles
- 28:58perfekt umsetzen kann, wie es das Lehrbuch will.
- 29:00Aber und jetzt n Positives aber. Wir haben so vieles geht um was
- 29:06wirklich geht, Wege gefunden, es umzusetzen, um einfach auch
- 29:10beispielsweise automatisiert testen zu können, automatisiert
- 29:13deployen zu können. Ich verstehe absolut, dass jedes
- 29:17Projekt seine eigene Anforderung hat und thematisch gesehen auch
- 29:20in einem eigenen, in der eigenen Landschaft unterwegs ist.
- 29:23Was man nicht vergleichen kann, nehmen wir beispielsweise.
- 29:28Embedded projects irgendwas Hardware, Hardware getriebenes
- 29:32und Web Applikationen. Natürlich ist das leichter.
- 29:38Im Bereich Web Applikation umzusetzen, ohne jetzt hier
- 29:41irgendwie no Front, aber es ist natürlich auch eine gewisse
- 29:44Zusatzkomplexität wenn du sagst, ja, aber meine Software läuft
- 29:47auf irgendeinem Steuergerät beispielsweise oder auf
- 29:50irgendeinem Mikrocontroller allgemein gesagt ich.
- 29:55Darauf testen ist ja was anderes als wenn ich unit Test in meiner
- 29:58IDE laufen lasse. Mal als Beispiel, nur definitiv
- 30:02alleine. Aber nicht heißt, dass das eine,
- 30:04da geht es um, bei dem anderen geht es auf keinen Fall.
- 30:07So wie geht es ja genau, sondern wie mache ich es möglich und es
- 30:11gibt auch für alles Lösung und auch Frameworks die angeboten
- 30:15werden. Man muss dann halt nur diesen
- 30:17Aufwand betreiben, das umsetzen zu wollen.
- 30:20Ich glaube, das schwierige oder was zum Beispiel auch manchmal
- 30:24nicht unbedingt einfach greifbar ist, ist der Punkt, dass man man
- 30:29versucht, also wie wie wir zum Beispiel auch wir, wie du schon
- 30:33gesagt hast, ne, das sind Sachen dabei, die sind vielleicht nicht
- 30:36immer trivial und wir versuchen ja auch immer möglichst nach
- 30:40Best practice irgendwas umzusetzen, was auch manchmal
- 30:43ein bisschen mehr Zeit in Anspruch nimmt.
- 30:46Nur wichtig ist, glaube ich, dass man vielleicht doch nicht
- 30:48damit rechnen sollte, dass die Reise dann irgendwann vorbei
- 30:51ist, sondern das ist halt ein fortwährender Prozess.
- 30:56Also Best Practices verändern sich ja auch und wichtig ist,
- 30:59dass man dann zum Beispiel auch, würde ich sagen, zum Beispiel
- 31:01auch mit der Zeit geht und sagt Okay welche Best Practice haben
- 31:04wir jetzt, also, wo sind wir gerade, in welche Richtung
- 31:07Steuern wir, was müssen wir umbauen, an welchem Nerv der
- 31:10Zeit müssen wir gerade arbeiten, und das ist halt wichtig, weil
- 31:15ich habe letztens auch zum Beispiel mitgekriegt.
- 31:18Zum Beispiel? Keine Ahnung, es gibt ja auch
- 31:20gerne diese, diesen dieses Mindset, so okay.
- 31:24Wo kann ich zum Beispiel weiß ich nicht wissen ergattern, sage
- 31:28ich jetzt mal, was auf jeden Fall sage ich jetzt mal best
- 31:33practice, zeitlos ist ne, das ist schwierig, gerade in der
- 31:37Softwareentwicklung, weil es gibt quasi eigentlich
- 31:41fortwährend Weiterentwicklungen, genauso über Best Practices.
- 31:45Genauso ist zum Beispiel Cleancode vielleicht also dieses
- 31:49cleancode Buch beispielsweise ist sicherlich ein guter Ansatz,
- 31:53eine gute, gutes Wissen, auf dem man aufbauen kann, aber das
- 31:56bedeutet noch lange nicht, dass das jetzt das Ende.
- 32:00Eines guten Codes ist also, wer weiß denn was in 5 in 10 in 20
- 32:07Jahren für Code. Quasi existieren.
- 32:11Das ist wichtig. Ja.
- 32:16Weil also gerade das Thema Cleancode sind ja auch Ansätze,
- 32:20die man verfolgen kann, und jeder muss ja sich für sich
- 32:24selbst entscheiden, welche Ansätze er davon gut findet und
- 32:27umsetzen möchte. Also alles, was wir hier so
- 32:30besprechen in dieser Podcast Folgenreihe Cleancode sind ja
- 32:35auch, sage ich mal, Ansätze, die wir gut finden, also das hat ja
- 32:40alles eine Diskussionsgrundlage, es gibt auch Leute, wir hatten
- 32:44ja auch den Kommentar. Jetzt an der Cleancode
- 32:47Kommentarfolge. Dass ein Entwickler sehr gerne
- 32:53Kommentare anschreibt an Code Blöcken, um zu beschreiben, was
- 32:57da passiert. Und es ist ja auch absolut
- 32:59legitim, wir haben ja quasi unsere Meinung dazu gesagt,
- 33:02haben gesagt okay, wir finden es halt besser, wenn der Code sich
- 33:04selbst beschreibt, was er aber nicht heißt, dass wenn jetzt ein
- 33:08Entwickler. Oder in einem Entwicklerteam.
- 33:11Das ist ja auch immer so ne Teamüber, also ne
- 33:13teamgeschichte. Man muss sich im Team dadrauf
- 33:15einigen wie man entwickeln möchte, weil wenn jeder einer
- 33:19Machtkommentar ran, der andere nicht und der dritte macht n
- 33:22beiden Mix aus beidem und keine Ahnung, dann hast du ja wieder
- 33:25Chaos, das ist ja so ne so n Commitment im Team.
- 33:28Wie möchte man das machen und wenn die Person zum Beispiel
- 33:32sagt, ja wir im Team schreiben aber Kommentare daran um zu
- 33:35erklären was die Funktion macht, dann ist es ja auch wieder in
- 33:38Ordnung, wenn wenn das halt wirklich im gesamten Projekt so
- 33:41ist. Ist doch cool, wenn wenn jemand
- 33:44zu mir sagt, ja schön, dass du dabei bist und hier mit Codest.
- 33:47Aber wir haben die Konvention, dass wir über eine Funktion
- 33:50erklären, was Eingabe und Ausgabe ist.
- 33:53So diese typischen doxygen Formate zum Beispiel.
- 33:56Ja, da mache ich das halt. Trotzdem, aber trotzdem würde
- 33:59ich zumindest im Team einmal. Challengen.
- 34:03Genau dann ist halt wieder die Frage 1 gegen 20.
- 34:09Nein, aber ich würde es auf jeden Fall auch challengen ja
- 34:10klar, bei ist ja mein Standpunkt und den vertreten wir ja auch
- 34:14hier im Podcast. Aber wie gesagt, um das noch mal
- 34:18abzurunden, es sind halt Ansätze und wie du schon meintest, in 10
- 34:22Jahren können die anders sein, dann sieht die Welt vielleicht
- 34:25schon wieder ganz anders aus. Trotzdem würde ich zum Beispiel
- 34:27sagen, dass dieses cleancode Buch.
- 34:31Ja, wir sollten es auf jeden Fall verlinken, damit jeder
- 34:34weiß, mit welches Buch wir reden.
- 34:37Ist für mich trotzdem in gewisser Weise zeitlos, weil die
- 34:41Ansätze wären, also diese Anregung, die man da drin
- 34:44kriegt, finde ich sind zeitlos, sich mal darüber Gedanken zu
- 34:48machen. Definitiv.
- 34:49Also man muss quasi. Also ich glaube, dass es
- 34:51sinnvoll ist, also dass es durchaus Literatur gibt, die auf
- 34:57jeden Fall eine wichtige Grundlage für irgendwas schafft.
- 35:00Die Frage ist, wenn du zum Beispiel sagst, es ist zeitlos,
- 35:04klar im Sinne von würde ich auch so sehen, dass man sagt im Sinne
- 35:07von. Du hast es.
- 35:10Das ist sozusagen eine Grundlage, auf der man aufbauen
- 35:12kann. Und dann ist nur die Frage, in
- 35:14welche Richtung entwickelt sich zum Beispiel entwickeln sich zum
- 35:18Beispiel neue Theorien, die aber sehr wahrscheinlich auf anderen
- 35:21guten Theorien aufbauen? Aber das ist halt, es ist eine
- 35:25sehr philosophische Frage am Ende aber wie gesagt, im
- 35:29Endeffekt ist es ist es einfach wichtig, dass man da sein.
- 35:33Seine eigene Linie findet aber natürlich trotzdem offen ist für
- 35:39sage ich mal neue Ideen, weil zum Beispiel, um noch mal dein
- 35:44Beispiel aufzugreifen, wenn ein Team sagt, ja, wir machen das,
- 35:47aber so zum Beispiel, weil es schon immer so gemacht wurde, es
- 35:51ist durchaus sehr, sehr wichtig, mit neuen Ideen auch noch mal
- 35:55alte, sage ich mal, muss da auch noch mal zu challengen das ist
- 36:00ein Auto. Das stimmt.
- 36:04Wir sind jetzt auch ein bisschen abgedriftet und so ins
- 36:06Philosophische gekommen, deswegen würde ich noch einen
- 36:09letzten Punkt anbringen zu dem Thema, warum Praxis und Theorie
- 36:13manchmal auseinanderdriften, bevor wir quasi die Folge dann
- 36:16mal beenden, fabi. Was ich finde auch, also was ein
- 36:21wichtiger Punkt ist oder ein Grund dafür, dass halt, Theorie
- 36:24und Praxis manchmal auseinander laufen, ist halt dann auch das
- 36:28Thema Code Reviews und Feedback. Wenn ich nämlich quasi für mich
- 36:33allein entwickelt und es gibt keine.
- 36:35Code Reviews oder ich kriege kein Feedback zu meinem Code,
- 36:39dann wird es halt genauso schwer wieder in diese Best Practice
- 36:43Richtung zu kommen, gerade als vielleicht noch nicht so
- 36:46erfahrener Entwickler, weil ich ja nie darauf hingewiesen werde.
- 36:51Pass auf das was du da gecoded hast funktioniert.
- 36:53Das ist auch cool, aber man könnte es an der und der Stelle
- 36:56vielleicht noch vereinfachen. Ja oder oder oder allein schon
- 37:00Feedback so zu bekommen. Ja sag mal an der Stelle, das
- 37:03verstehe ich nicht so ganz was du machst.
- 37:05Ich sehe an den Tests es funktioniert, aber ich verstehe
- 37:07den Code nicht, ist ja auch schon eine Anzeichen dafür, dass
- 37:10es vielleicht einfach noch zu komplex ist.
- 37:12Und ich sage ich mal so einfach Runtergebrochen wurde der Code,
- 37:16dass andere Entwickler es sofort verstehen.
- 37:20Und deswegen finde ich, ist das halt noch ein wichtiger Punkt,
- 37:23wenn man den gut lebt. Reviews, Feedback, Kultur, dass
- 37:28man so die Praxis und Theorie auch wieder mehr ein aneinander
- 37:31bekommt. Ich hoffe du weißt wie ich das
- 37:33meine, ich weiß was. Du meinst, der Austausch darf
- 37:35nicht fehlen an der Stelle? Genau, und das ist halt für mich
- 37:38auch so ein super wichtiger Punkt.
- 37:40Und da wir ja im Pair Programming Modell arbeiten und
- 37:45dadurch quasi eh zusammen coden und am Ende bevor wir
- 37:50Änderungen. Einpflegen ja auch immer noch
- 37:52mal n Review zusammen machen. Gut, jetzt kann man sagen OK es
- 37:55gibt keine unabhängige Person die das Review ja OK das Fass
- 37:57machen wir jetzt nicht auf, aber wir gucken es uns immer noch mal
- 38:01wirklich noch mal Review technisch zusammen an und merken
- 38:04ja da auch noch mal Punkte. Sowas wie hier meinst du nicht,
- 38:08dass man das vielleicht noch ändern kann, oder?
- 38:12Quasi angenommen, du hast entwickelt und ich hab mit drauf
- 38:14geguckt. Merke dann so, na ja, Pass auf,
- 38:17Pass auf, dass das das geht noch anders.
- 38:18Mir ist gerade eingefallen, wir könnten das so und so machen.
- 38:21Und dadurch steigerst du ja auch wieder die Codequalität und
- 38:23kommst halt noch mehr in diese cleancode Richtung.
- 38:26Ist jedenfalls meine Erfahrung dabei.
- 38:27Ich hoffe deine auch wenn es umgedreht ist.
- 38:31Aber das. Wald ist n sehr sehr wichtiger
- 38:34Punkt dabei. Ja, geh ich mit.
- 38:39Ja, ansonsten hast du noch einen.
- 38:41Also das wären jetzt ich kann es nochmal zusammenfassen, wenn du
- 38:45möchtest. Was waren denn so Punkte, die
- 38:48jetzt die Praxis von der Theorie trennen?
- 38:51Also als allerersten Punkt hatten wir auf jeden Fall.
- 38:54Zeitdruck und ich finde, das ist auch eigentlich meistens der
- 38:57Grund, der zumindestens immer mit rein spielt.
- 38:59In Kombination mit den anderen Punkten, die wir genannt haben,
- 39:02weil sobald Druck aufkommt. Wird man unsauber oder ist
- 39:07oftmals gezwungen, unsauber zu arbeiten?
- 39:10Man will das nicht wahrhaben und ja, man ist irgendwie der Owner
- 39:13des Codes und verantwortlich dafür, das Leben wir auch und
- 39:17versuchen das ja auch so gut wie möglich umzusetzen, aber es
- 39:19kommt immer mal der Punkt, kannst du mal bitte schnell hier
- 39:21die und die Änderungen einbauen und wenn schon in dieser in
- 39:24diesem Wunsch kannst du mal schnell drin steckt, da müssten
- 39:28schon die Alarmglocken angehen, dass man dann halt auch dazu
- 39:30geneigt ist wirklich schnell irgendwie, wir passen das an
- 39:33okay jetzt haben wir 5 rote Tests, die machen wir noch
- 39:35schnell grün und dann rein damit, so weißt du.
- 39:38Da muss man auf jeden Fall auf die Verantwortung bauen, die man
- 39:41eben hat, wenn man. Und das ist halt, das ist halt
- 39:45genauso das Problem. Genau dann hatten wir was,
- 39:48hatten wir noch gesagt, Ach so, ändern der Anforderungen war der
- 39:51zweite Punkt von dir, den fand ich auch richtig richtig gut,
- 39:54weil das ist ja genau das. Kannst du mal bitte schnell, das
- 39:58war irgendwie nicht richtig von mir was ich dir letzte Woche da
- 40:01als Feature Wunsch genannt habe, das muss jetzt anders sein und
- 40:04du denkst dir ja gut ich wollte gerade das abschließen jetzt
- 40:08muss ich noch mal umbauen so und dann hast du genau das Thema,
- 40:10dass du dann anfängst das nicht von vorne aufzuräumen zu sagen
- 40:14okay ich habe ein neues Feature wie muss ich das umsetzen,
- 40:17sondern ich habe ein geändertes Feature und ich versuche jetzt
- 40:19meine Implizierung anzupassen, die denn oftmals nicht optimal
- 40:23Ist manchmal also. Es ist ja auch nicht immer ein
- 40:25mach mal eben schnell sozusagen diese.
- 40:28Ändern Anforderungen es kann auch eine einfach nur ändern.
- 40:31Anforderungen sein, die sich aber sehr stark durch den Code
- 40:33zieht und dann hat man natürlich durchaus eventuell wieder n
- 40:37Problem, was natürlich wichtig ist.
- 40:39An dieser Stelle bestimmte Anforderungen wirklich auch zu
- 40:41durchdenken und wirklich auch als Entwicklerteam sag ich jetzt
- 40:45mal mit. Zu besprechen und nicht einfach
- 40:49nur abzunicken. Was dann auch schon der dritte
- 40:53Punkt war, dass wenn die Komplexität recht groß ist, dass
- 40:56es halt schwierig ist, das immer alles so runterzubrechen, dass
- 40:59du halt diesen Cleancode erreichst, dass du manchmal halt
- 41:02auch gar nicht in dem Moment Lösungen findest, die nach
- 41:06Lehrbuch cleancode sind. Ne, das war ja noch so n Punkt
- 41:12und dann fand ich den Punkt von dir noch ziemlich cool für die
- 41:16Zusammenfassung jetzt noch mal die mangelnde Erfahrung von Best
- 41:19Practices, genau auch sehr wichtig, weil nur weil man die
- 41:24Theorie kennt, kann man nicht sofort praktisch auch super
- 41:27geilen Code schreiben, es ist halt eine Übungssache und man
- 41:30muss da auch fair zu sich selbst sein, wenn es halt am Anfang
- 41:33noch nicht so toll ist und andere man vielleicht in das
- 41:36Feedback bekommt ja hier nee das ist irgendwie nicht so geiler
- 41:39Code, dann ist es oftmals halt auch eine mangelnde Übung.
- 41:43Und das kommt mit der Zeit. Übung macht den Meister.
- 41:49Genau, und da ist ja auch wirklich n wichtiger Punkt, den
- 41:51du noch meintest am Ende. Ich glaube ich.
- 41:53Ich hoffe, ich hab das jetzt nicht ganz durcheinander
- 41:55geworfen. Aber der nee, das wär auch der
- 41:58letzte. Hau ihn.
- 41:59Raus nämlich der Punkt, dass man halt zum Beispiel auch Code
- 42:02Reviews macht und sozusagen den Austausch eben hat, der einem
- 42:05genau auch hilft. Natürlich logischerweise.
- 42:09Ich sag mal mangelndes wissen sozusagen aufzuholen.
- 42:12Ja, und von anderen Leuten zu lernen.
- 42:15Genau. Das ist halt wirklich wichtig
- 42:16dabei. Ja, Fabi, dann würde ich sagen,
- 42:20haben wir das doch ganz cool besprochen.
- 42:22Hat mir auf jeden Fall wieder mega Spaß gemacht, sowohl Punkte
- 42:25zu nennen, die Theorie und Praxis auseinandertreiben, als
- 42:28auch unser kurzes Off top weg. Was ja aber auch um Cleancode
- 42:33ging und damit doch Teil der Folge war.
- 42:36Ich. Sagen, ich beende die Folge oder
- 42:39hast du noch was? Ich bin durch.
- 42:41Du bist durch sowohl mental als auch mit dem Thema.
- 42:44Das hast du alles rausgehauen, was dir dazu eingefallen ist.
- 42:49Sehr gut, sehr gut. Na ja, dann habe ich auch nichts
- 42:50mehr hinzuzufügen. Liebe zu liebe Zuhörer, ich
- 42:53hoffe, dir hat die Folge gefallen.
- 42:55Falls du Anmerkungen dazu hast oder vielleicht noch weitere
- 42:58Punkte hast oder Erfahrung gemacht hast, wo du dir
- 43:01dachtest. So OK, ja nach Lehrbuch müsste
- 43:04man so entwickeln, aber in der Praxis komplettes Chaos.
- 43:07Stein, was soll ich nur tun oder was habt ihr dann getan?
- 43:10Wie auch immer, melde dich gerne bei uns über unsere Podcast Mail
- 43:15oder über die anderen Plattformen, die links findest
- 43:17du wie immer in den Shownotes für alle Zuhörerinnen und
- 43:21Zuhörer, die jetzt Interesse an dem Cleancode Buch, was wir
- 43:24empfohlen haben oder genannt haben, sage ich mal den Link
- 43:28hauen wir euch natürlich auch noch in die Show Notes dazu sei
- 43:31noch angemerkt, kurze Eigenwerbung, wir sind jetzt mit
- 43:34Thalia in der Partnerschaft und ihr könnt uns da gerne
- 43:37unterstützen, wenn ihr euch das Buch dann übertallia über den
- 43:40genannten Link holt, würde uns sehr freuen.
- 43:43Würde ich sagen, hören wir 3 uns beim nächsten Mal wieder.
- 43:46Bis dahin habt noch n schönen Tag deine Coding Buddies
- 43:50gemeinsam besser.