1
00:00:00,160 --> 00:00:03,120
Sie lauern in der 
Softwareentwicklung überall Anti

2
00:00:03,120 --> 00:00:06,080
Patterns, die heimlichen 
Saboteure eurer 

3
00:00:06,080 --> 00:00:08,720
Softwareprojekte. 
Sie tarnen sich als schnelle 

4
00:00:08,720 --> 00:00:11,280
Lösungen, führen aber geradewegs
den technische Schulden und 

5
00:00:11,280 --> 00:00:14,720
meistens auch Chaos. 
In dieser Folge reden wir über 

6
00:00:14,720 --> 00:00:18,320
die gefährlichsten Anti 
Patterns, reden darüber, wie sie

7
00:00:18,320 --> 00:00:21,320
in der Literatur genannt werden 
und zeigen euch, warum sie nicht

8
00:00:21,320 --> 00:00:24,320
nur euren Code, sondern 
vielleicht auch eure Projekte 

9
00:00:24,320 --> 00:00:31,920
komplett ruinieren können. 
Und damit ganz, ganz herzlich 

10
00:00:31,920 --> 00:00:35,680
willkommen zu einer 
nigelnagelneuen Folge vom to do 

11
00:00:35,680 --> 00:00:41,160
Cast, dem Developer Podcast auf 
Deutsch mit Malte Lantin und mit

12
00:00:41,160 --> 00:00:45,760
mir Robin Manuel Thiel. 
Heute geht's um Anti Patterns 

13
00:00:45,760 --> 00:00:47,760
Anti Patterns kommt so ein 
bisschen drauf an, ob man's 

14
00:00:47,760 --> 00:00:50,040
deutsch oder Englisch ausspricht
und ich glaube, wir alle haben 

15
00:00:50,040 --> 00:00:52,800
sie schon ganz oft gesehen oder 
vielleicht auch nicht gesehen 

16
00:00:52,800 --> 00:00:56,760
oder ist so was begegnet? 
Wir haben beide so bisschen in 

17
00:00:56,760 --> 00:00:58,560
der Recherche von dieser Folge 
gesagt, Hey. 

18
00:00:59,040 --> 00:01:01,760
Lustig, dass diese Dinge, die 
uns im Alltag schon häufiger 

19
00:01:01,760 --> 00:01:03,840
begegnet sind, tatsächlich 
irgendwie einen, teilweise auch 

20
00:01:03,840 --> 00:01:07,080
lustige Namen haben. 
Bin ich mal gespannt, da gehen 

21
00:01:07,080 --> 00:01:10,720
wir gleich ein Paar mit euch 
durch, bevor wir einsteigen, 

22
00:01:10,720 --> 00:01:13,880
aber wie immer ein kleiner 
Rückblick auf die letzten, die 

23
00:01:13,880 --> 00:01:16,400
letzte Woche und die letzten 
Wochen und dann Dankeschön, 

24
00:01:16,560 --> 00:01:21,600
Dankeschön erstmal an Rainer 
Rainer hat uns nämlich 5 Kaffee 

25
00:01:21,600 --> 00:01:25,000
spendiert. 
Vielen Lieben Dank, das freut 

26
00:01:25,000 --> 00:01:26,960
uns immer sehr, wenn ihr uns 
Kaffee ausgebt, wenn ihr auch so

27
00:01:26,960 --> 00:01:30,400
cool sein wollt wie Rainer, dann
und euch die Folge gefallen hat,

28
00:01:30,400 --> 00:01:33,360
dann findet ihr unter jeder 
Folge auch so einen kleinen Link

29
00:01:33,360 --> 00:01:37,360
zu Bimir Coffee tut es wie 
Rainer und ladet uns auf einen 

30
00:01:37,360 --> 00:01:38,800
Kaffee ein, da freuen wir uns 
immer sehr. 

31
00:01:39,440 --> 00:01:41,840
Dankeschön. 
Und dann vielleicht noch ein 

32
00:01:41,840 --> 00:01:45,440
kleiner Rückblick auf das, was 
zwischen der letzten Folge, wo 

33
00:01:45,440 --> 00:01:48,720
wir über AI Coding Assistance 
gesprochen haben und heute 

34
00:01:48,720 --> 00:01:51,280
passiert ist. 
Wir haben nämlich zum ersten Mal

35
00:01:51,280 --> 00:01:55,840
ein kleines Video separat von 
einer Folge aufgenommen, weil 

36
00:01:56,080 --> 00:01:59,520
ihr habt sicher alle 
mitgekriegt, die große Welle 

37
00:01:59,520 --> 00:02:04,640
durch die Tech Industrie ging 
als aus China das neueste 

38
00:02:04,640 --> 00:02:10,160
Sprachmodell Dpcr One kam. 
Und das hat natürlich den ganzen

39
00:02:10,160 --> 00:02:12,360
Markt erschreckt. 
Wir haben uns das uns natürlich 

40
00:02:12,360 --> 00:02:15,200
auch angeschaut und wir wollten 
das gern n bisschen einordnen, 

41
00:02:15,280 --> 00:02:18,040
haben wir gedacht, wenn wir da 
ne ganze Folge dazu machen, ist 

42
00:02:18,040 --> 00:02:20,160
es vielleicht schon zu spät, das
interessiert sich keiner mehr 

43
00:02:20,160 --> 00:02:23,640
dafür oder ihr habt ohnehin 
schon alles gehört und von da 

44
00:02:23,640 --> 00:02:26,760
haben wir gesagt wir machen n 
kurzes Video lasst uns gerne 

45
00:02:26,760 --> 00:02:29,720
wissen ob Ihr das Video gesehen 
habt, wir haben es auf unseren 

46
00:02:29,720 --> 00:02:32,160
Social Media Kanälen Tik tok, 
Instagram, linkedin 

47
00:02:32,160 --> 00:02:34,800
veröffentlicht. 
Und sagt uns gerne, ob ihr es 

48
00:02:34,800 --> 00:02:38,680
gesehen habt, ob wir auch mehr 
solche ad hoc Videos mal machen 

49
00:02:38,680 --> 00:02:42,560
sollen zwischen den Folgen, weil
wir fanden es sehr wichtig das 

50
00:02:42,560 --> 00:02:46,240
Thema einfach kurz einzuordnen, 
auch für euch noch mal ein 

51
00:02:46,240 --> 00:02:50,160
Update zu geben, bevor wir jetzt
heute in die nächste Folge 

52
00:02:50,160 --> 00:02:53,720
einsteigen können. 
Genau das ist so unsere Methode.

53
00:02:53,720 --> 00:02:55,960
Oder soll vielleicht noch mal 
unsere Methode werden, so wie 

54
00:02:55,960 --> 00:02:59,320
malte ja gesagt hat, so kleine 
News, die irgendwo passieren 

55
00:02:59,320 --> 00:03:01,600
noch mal einzuschieben, wo es 
entweder zu lange dauert, bis 

56
00:03:01,600 --> 00:03:03,440
wir das nächste Mal eine Folge 
machen oder die vielleicht auch.

57
00:03:03,920 --> 00:03:06,200
Gar keine ganze Folge füllen. 
Ich weiß nicht, ob wir in einem 

58
00:03:06,200 --> 00:03:11,200
developer Podcast wirklich 2030 
Minuten lang nur dann über Deep 

59
00:03:11,200 --> 00:03:13,040
Sea R One reden wollen, deswegen
haben wir so ein bisschen 

60
00:03:13,040 --> 00:03:14,760
eingeordnet. 
Warum war denn da eigentlich die

61
00:03:14,760 --> 00:03:16,960
Timeline voll, ist es ja 
vielleicht auch mehr als nur 

62
00:03:16,960 --> 00:03:19,520
wieder ein anderes Model, was 
irgendwie gut war. 

63
00:03:19,520 --> 00:03:22,960
Ja, würden wir uns super freuen 
auf Feedback dann weil wir haben

64
00:03:22,960 --> 00:03:26,800
Lust sowas auch irgendwie öfter 
zu machen, lasst uns das gerne 

65
00:03:26,800 --> 00:03:30,080
mal wissen. 
Und deswegen auch jetzt hier 

66
00:03:30,080 --> 00:03:34,800
diese Folge mal ein Thema glaube
ich ganz ohne AI, auch weil 

67
00:03:34,800 --> 00:03:38,680
malte mir verboten hat hier jede
Folge mit euch über KI zu reden.

68
00:03:40,800 --> 00:03:44,920
Ich wir hatten so eine 
Diskussion EY hier malte Deep 

69
00:03:45,200 --> 00:03:47,440
Sea One ich ich will eine Folge 
dazu machen und du hast mich 

70
00:03:47,440 --> 00:03:50,000
dann direkt gebremst und gesagt 
ich weiß nicht ob das eine ganze

71
00:03:50,000 --> 00:03:52,080
Folge ist und darauf kam dann 
auch irgendwann diese Idee 

72
00:03:53,120 --> 00:03:56,640
deswegen. 
Ja, eine eine nicht KI folge. 

73
00:03:56,640 --> 00:03:59,200
Das ist ja auch selten geworden 
in der aktuellen Zeit. 

74
00:03:59,680 --> 00:04:02,680
Ich merk aber auch gerade als 
malte mich darauf aufmerksam 

75
00:04:02,680 --> 00:04:04,400
gemacht hat, dass wir schon sehr
viel über KI reden und da 

76
00:04:04,400 --> 00:04:07,200
irgendwie, dass es so wahnsinnig
viele Neuerungen gibt, auch 

77
00:04:07,200 --> 00:04:09,880
wahnsinnig viele Neuerungen, die
uns als Entwicklerinnen und 

78
00:04:09,880 --> 00:04:12,640
Entwickler betreffen, dass ich 
auch so n bisschen KI müde 

79
00:04:12,640 --> 00:04:14,800
geworden bin irgendwie, ich hab 
das mit diesem Deep Seek Modell 

80
00:04:14,800 --> 00:04:17,800
auch gemerkt, so ja es ist n 
weiteres Modell und ich fand das

81
00:04:17,800 --> 00:04:20,000
Modell eigentlich überhaupt also
0,0 spannend. 

82
00:04:20,360 --> 00:04:21,839
Was spannend war, war alles so 
drumherum. 

83
00:04:21,839 --> 00:04:24,240
Es kommt aus China, so, und das 
ist der erste Auftakt für die in

84
00:04:24,240 --> 00:04:27,000
dieses, dieses Rattenrennen von 
irgendwelchen Modellen, das hat 

85
00:04:27,000 --> 00:04:29,480
ne Zensur, es war so n bisschen,
es gab so n bisschen so ne so ne

86
00:04:29,480 --> 00:04:32,400
backstory drumherum, die hat 
mich sehr interessiert, aber ob 

87
00:04:32,400 --> 00:04:35,840
das Modell jetzt irgendwie 0,2% 
besser in irgendwelchen 

88
00:04:35,840 --> 00:04:39,040
Benchmarks ab irgendwie 
abschneidet als andere ist 

89
00:04:39,040 --> 00:04:41,760
eigentlich relativ irrelevant, 
dass das deutlich günstiger 

90
00:04:41,760 --> 00:04:43,720
macht und warum, das ist glaub 
ich schon eher relevant, das 

91
00:04:43,720 --> 00:04:44,760
haben wir in dem Short auch noch
mal. 

92
00:04:44,760 --> 00:04:47,280
Dann irgendwie so n bisschen 
thematisiert, aber was ich 

93
00:04:47,280 --> 00:04:48,960
eigentlich sagen will ist, dass 
bei mir so ne. 

94
00:04:49,200 --> 00:04:51,520
So eine kleine AI Müdigkeit 
irgendwie einsetzt. 

95
00:04:51,520 --> 00:04:55,120
Und wenn da jetzt nicht 
irgendwie was, also was 

96
00:04:55,120 --> 00:04:57,880
Bahnbrechendes passiert und da 
immer nur so kleine Tropfen 

97
00:04:57,880 --> 00:05:00,360
irgendwie, jetzt kann das 
irgendwie ein ganz kleines 

98
00:05:00,360 --> 00:05:03,800
bisschen was mehr bin ich auch. 
Manchmal merke ich gerade ich 

99
00:05:03,800 --> 00:05:05,920
komme an so einen Punkt wo ich 
das so ein bisschen leid oder 

100
00:05:05,920 --> 00:05:09,240
satt bin, geht's dir da ähnlich?
Ja, also mir geht's absolut 

101
00:05:09,240 --> 00:05:12,000
genauso, insbesondere weil das 
ganze Thema sich ja so schnell 

102
00:05:12,000 --> 00:05:15,360
weiterentwickelt, dass irgendwie
wirklich jede Woche irgendwelche

103
00:05:15,360 --> 00:05:17,760
Neuigkeiten kommen und es auch 
super schwer ist da. 

104
00:05:18,320 --> 00:05:22,000
Jederzeit irgendwie to date zu 
bleiben, aber ihr merkt es. 

105
00:05:22,000 --> 00:05:24,560
Wir haben jetzt schon wieder 
fast 5 Minuten über KI 

106
00:05:24,560 --> 00:05:26,000
gesprochen. 
Du hast gerade noch gesagt, wir 

107
00:05:26,000 --> 00:05:29,960
machen eine Folge ohne KI, 
eigentlich sollte, sollte es am 

108
00:05:29,960 --> 00:05:32,720
Anfang nur der Aufruf sein, 
folgt uns gerne auch auf unseren

109
00:05:32,720 --> 00:05:35,760
Social Media Kanälen, damit ihr 
auch solche vielleicht aktuellen

110
00:05:35,760 --> 00:05:40,320
Themen zwischen den Folgen 
mitbekommt und lasst uns gerne 

111
00:05:40,320 --> 00:05:43,920
wissen, ob das etwas ist, was 
wir mehr machen sollen, einfach 

112
00:05:43,920 --> 00:05:46,600
mal. 
Tagesaktuelle Dinge aufgreifen 

113
00:05:46,600 --> 00:05:49,920
und mal einfach außer der Reihe 
ein kurzes Video aufnehmen? 

114
00:05:51,040 --> 00:05:53,040
Dann lass uns ins Thema 
einsteigen. 

115
00:05:53,040 --> 00:05:56,960
Wir hatten gesagt, wir sprechen 
heute über Anti Patterns, sprich

116
00:05:57,440 --> 00:05:59,680
Dinge, die in der 
Softwareentwicklung immer und 

117
00:05:59,680 --> 00:06:02,760
immer wieder gemacht werden, die
aber eigentlich negativ und 

118
00:06:02,760 --> 00:06:04,720
schädlich für unsere Projekte 
sind. 

119
00:06:05,040 --> 00:06:07,920
Und diese Folge soll niemanden 
irgendwie an den Pranger 

120
00:06:07,920 --> 00:06:10,440
stellen, sondern es geht darum, 
einfach ein Verständnis zu 

121
00:06:10,440 --> 00:06:13,120
schaffen. 
Welche Anti Patterns gibt es, 

122
00:06:13,120 --> 00:06:16,000
welche haben wir gesehen, auch 
in der Vorbereitung auf dieser 

123
00:06:16,000 --> 00:06:19,600
Folge, welche werden in der 
Literatur besprochen, wie werden

124
00:06:19,600 --> 00:06:23,760
diese in der Literatur genannt, 
um damit das Verständnis zu 

125
00:06:23,760 --> 00:06:27,440
schaffen, was es gibt und 
natürlich auch darauf aufmerksam

126
00:06:27,440 --> 00:06:30,960
zu machen, wie man diese. 
Probleme auch vermeiden kann 

127
00:06:31,040 --> 00:06:34,640
bevor sie uns, unsere 
Softwareprojekte und natürlich 

128
00:06:34,640 --> 00:06:38,080
auch unseren Code kaputt machen.
Von daher lass uns kurz 

129
00:06:38,080 --> 00:06:40,800
einsteigen, erstmal mit einer 
Begriffsdefinition. 

130
00:06:40,800 --> 00:06:43,920
Was sind Anti Patterns? 
Ich glaube, das ist wichtig, 

131
00:06:43,920 --> 00:06:46,400
dass wir da irgendwie uns kurz 
alle alle einig sind, worüber 

132
00:06:46,400 --> 00:06:48,720
wir da reden. 
Und soweit ich weiß, kommt der 

133
00:06:48,720 --> 00:06:52,080
Begriff als so ein Gegenbegriff 
zu Design patterns. 

134
00:06:52,080 --> 00:06:55,200
Da hat ja, glaube ich, jeder 
schon mal von gehört, dass es so

135
00:06:55,200 --> 00:06:59,120
gewisse Entwurfsmuster heißt, 
das Glaube ich auf im Deutschen.

136
00:06:59,760 --> 00:07:02,400
Für die Softwareentwicklung 
gibt, da gibt es bestimmte 

137
00:07:02,400 --> 00:07:05,680
Dinge, die empfohlen sind, auf 
eine bestimmte Art und Weise zu 

138
00:07:05,680 --> 00:07:08,880
tun. 
Man kennt so Single 

139
00:07:08,880 --> 00:07:15,040
Responsibility Patterns und 
Kapselungen und also also 

140
00:07:15,040 --> 00:07:17,440
Sachen. 
Und dann sind, glaube ich, im 

141
00:07:17,440 --> 00:07:19,680
Laufe der Zeit aber vielen 
Menschen aufgefallen, dass es 

142
00:07:19,680 --> 00:07:23,440
aber auch Dinge gibt, die nicht 
explizite dus sind, sondern 

143
00:07:23,440 --> 00:07:26,080
explizite Donts sind, also nicht
sagen, Hey, guck mal, das, so 

144
00:07:26,080 --> 00:07:28,960
sollte man es machen, dann kann 
es trotzdem passieren, dass man 

145
00:07:28,960 --> 00:07:32,320
sich an all diese Design 
patterns hält und trotzdem Code 

146
00:07:32,320 --> 00:07:36,080
schreibt, der dann am Ende 
technische Schulden hervorruft, 

147
00:07:36,080 --> 00:07:39,520
die Produktivität reduziert, 
dadurch auch das Team 

148
00:07:39,520 --> 00:07:42,920
demotiviert. 
Und es ist einfach so so, dass 

149
00:07:42,920 --> 00:07:44,760
gewisse Fallstricke einfach in 
der es in der 

150
00:07:44,760 --> 00:07:48,880
Softwareentwicklung gibt, die zu
vermeiden sind, und die haben 

151
00:07:48,880 --> 00:07:51,040
teilweise, das haben wir in der 
Intro gesagt, haben wir gerade 

152
00:07:51,040 --> 00:07:54,400
gelernt, lustige Namen, aber die
sind bestimmt vielen von uns 

153
00:07:54,400 --> 00:07:57,920
auch schon mal begegnet und ich 
glaube, das ist so, da kommt der

154
00:07:57,920 --> 00:08:01,840
Begriff werden ein Anti Pattern,
wo ein Pattern sagt, so solltest

155
00:08:01,840 --> 00:08:05,440
du im Idealfall, wenn du in 
dieser und jeder Situation bist 

156
00:08:05,760 --> 00:08:09,240
und das und das mit Code lösen, 
sagt das Anti Pattern das. 

157
00:08:09,720 --> 00:08:12,080
Das solltest du explizit 
versuchen zu vermeiden, wenn du 

158
00:08:12,080 --> 00:08:13,920
Code schreibst. 
Genau. 

159
00:08:13,920 --> 00:08:17,280
Ein wesentlicher Punkt ist hier 
auch, dass es trotzdem immer 

160
00:08:17,280 --> 00:08:20,960
wieder dazu kommt, dass wir als 
Developer in diese Muster 

161
00:08:20,960 --> 00:08:24,440
verfallen, ohne es vielleicht zu
wollen, weil es einfach 

162
00:08:24,440 --> 00:08:27,920
vielleicht auch in der Natur des
Menschen liegt, Probleme einfach

163
00:08:28,000 --> 00:08:30,880
möglichst schnell lösen zu 
wollen oder auf eine bestimmte, 

164
00:08:31,120 --> 00:08:35,360
einfach nachvollziehbare Art 
vielleicht zunächst einfache 

165
00:08:35,360 --> 00:08:38,120
Art. 
Und dementsprechend treten diese

166
00:08:38,120 --> 00:08:41,200
Patterns immer wieder auf und 
wir gehen jetzt einfach mal ein 

167
00:08:41,200 --> 00:08:44,880
Paar von denen durch, die wir 
auch aus unserem Alltag kennen 

168
00:08:44,960 --> 00:08:49,040
und schauen mal, wie kann man 
diese auch abgrenzen, wie kann 

169
00:08:49,040 --> 00:08:52,720
man sie benennen und wie kann 
man sie letzten Endes auch 

170
00:08:52,720 --> 00:08:54,720
vermeiden? 
Ja, steigen wir ein. 

171
00:08:54,720 --> 00:08:57,640
Genug der Vorrede, das erste, 
wie könnte es anders sein, ich 

172
00:08:57,640 --> 00:08:59,600
glaube, das haben die meisten 
auch schon mal gehört, ist der 

173
00:08:59,600 --> 00:09:05,600
gute alte Spaghetti Code. 
Ich glaube, das kommt aus einer 

174
00:09:05,600 --> 00:09:08,960
Zeit, in dem irgendwie keine 
Ahnung, alte 

175
00:09:08,960 --> 00:09:11,680
Programmiersprachen, so die von 
oben nach unten abgearbeitet 

176
00:09:11,680 --> 00:09:14,080
wurden. 
So go to statements drin hatten.

177
00:09:14,080 --> 00:09:16,720
Da konnte man dann früher sagen,
wenn du an der Stelle bist vom 

178
00:09:16,720 --> 00:09:19,840
Code, dann spring jetzt zur 
Zeile 45. 

179
00:09:20,120 --> 00:09:23,200
Und wenn du das abgearbeitet 
hast, mach ich n IF Statement 

180
00:09:23,200 --> 00:09:26,080
und wenn das so und so ist, dann
springe zur Zeile 500 ansonsten 

181
00:09:26,240 --> 00:09:28,960
springe zur Zeile 30 so hat man 
früher so n bisschen vermieden, 

182
00:09:28,960 --> 00:09:32,120
dass man ne Code duplikation hat
und das wurde natürlich immer 

183
00:09:32,120 --> 00:09:34,800
total unübersichtlich und man 
hat sich irgendwie gedacht, OK, 

184
00:09:35,040 --> 00:09:37,120
wenn ich das jetzt irgendwie 
aufzeichne, also wenn ich ne 

185
00:09:37,120 --> 00:09:38,640
früher wurde Code auch viel 
einfach noch ausgedruckt wenn 

186
00:09:38,640 --> 00:09:43,600
ich da aufzeichne mit einem 
Kugelschreiber von wo man nach 

187
00:09:43,600 --> 00:09:46,720
nach wo alles springt, also 
diese beiden diese go to Zeile 

188
00:09:46,720 --> 00:09:50,320
45 dann mit einer Linie zur 
Zeile 45 verbindet und dann 

189
00:09:50,320 --> 00:09:52,440
sieht das am Ende irgendwann aus
wie ein großer Teller Spaghetti 

190
00:09:52,440 --> 00:09:54,880
und daher kommt dieser Name 
Spaghetti Code. 

191
00:09:55,280 --> 00:09:58,160
Heute gibt es natürlich arbeiten
wir natürlich in modernen 

192
00:09:58,160 --> 00:09:59,920
Programmiersprachen und 
Frameworks sehr, sehr wenig mit 

193
00:09:59,920 --> 00:10:04,480
diesem Go to Statements, es ist 
aber geblieben als Bezeichnung 

194
00:10:04,480 --> 00:10:08,880
einfach für unstrukturierten und
dadurch schlechte wartbaren Code

195
00:10:08,880 --> 00:10:11,600
ohne eine klare Modularität, 
also sehr sehr, sehr 

196
00:10:11,600 --> 00:10:14,800
verschachtelter Code, auch man 
schon mit vielen, irgendwie mit 

197
00:10:14,800 --> 00:10:19,120
mit vielen IF else conditions. 
Einfach Code, der sehr 

198
00:10:19,120 --> 00:10:21,760
verschachtelt ist, der nicht gut
auf verschiedene Dateien 

199
00:10:21,760 --> 00:10:24,240
aufgeteilt ist, der nicht klar 
lesbar ist, der nicht einer 

200
00:10:24,240 --> 00:10:27,760
klaren Struktur folgt, dem man 
beim Lesen nicht klar versteht, 

201
00:10:27,760 --> 00:10:30,880
was passiert eigentlich hier, 
wann und in welcher Reihenfolge.

202
00:10:32,080 --> 00:10:34,400
Das ist, glaube ich, bis heute 
der Begriff geblieben für 

203
00:10:34,640 --> 00:10:37,280
Spaghetti Code. 
Und letzten Endes macht das mein

204
00:10:37,280 --> 00:10:40,040
Code wirklich schlecht wartbar 
und dementsprechend 

205
00:10:40,040 --> 00:10:42,560
fehleranfällig. 
Wir können auch den Code 

206
00:10:42,560 --> 00:10:45,760
schlecht debuggen, wenn wir in 
unserer Anwendung Probleme 

207
00:10:45,760 --> 00:10:49,120
finden und wir weichen 
dementsprechend dann auch von 

208
00:10:49,280 --> 00:10:54,000
solchen Architekturprinzipien 
wie Solid und Kiss ab, das 

209
00:10:54,000 --> 00:10:57,240
heißt, wir haben es halt nicht 
simpel klar strukturiert, Single

210
00:10:57,240 --> 00:10:59,920
Responsibility, sondern wir 
haben halt irgendwelche 

211
00:10:59,920 --> 00:11:03,600
riesengroßen klassischen. 
Lassen und Objekte, die alles 

212
00:11:03,600 --> 00:11:05,760
Mögliche tun und bei denen der 
Code halt furchtbar 

213
00:11:05,760 --> 00:11:09,760
verschachtelt ist und 
dementsprechend auch unlösbar. 

214
00:11:10,000 --> 00:11:12,880
Und damit kommen wir eigentlich 
auch schon zu unserem zweiten 

215
00:11:13,120 --> 00:11:15,760
Anti Patterns, was wir gefunden 
haben, was damit eng verwandt 

216
00:11:15,760 --> 00:11:19,120
ist und ich habe es gerade schon
gesagt, das ist das Anti Pattern

217
00:11:19,120 --> 00:11:22,880
des sogenannten God objects, das
heißt, ich habe irgendwie in 

218
00:11:22,880 --> 00:11:25,160
meiner Anwendung. 
In dem Fall einer 

219
00:11:25,160 --> 00:11:28,640
objektorientierten Anwendung 
eine riesige Klasse oder ein 

220
00:11:28,640 --> 00:11:33,040
riesiges Modul, was 1000 Dinge 
tut und wo ich vielleicht viel 

221
00:11:33,040 --> 00:11:36,680
zu viel Logik an einer Stelle 
zusammenführe und 

222
00:11:36,680 --> 00:11:41,000
dementsprechend es wiederum 
super schlecht wartbar ist und 

223
00:11:41,000 --> 00:11:43,680
wir gar nicht mehr ganz klar 
Verantwortlichkeiten zuweisen 

224
00:11:43,680 --> 00:11:45,200
können. 
An welcher Stelle passiert 

225
00:11:45,200 --> 00:11:49,680
eigentlich was und am Ende 
einfach dieser eine Bestandteil 

226
00:11:49,680 --> 00:11:51,840
meiner Anwendung immer weiter 
wächst? 

227
00:11:52,080 --> 00:11:56,640
Und häufig dann auch in 
Kombination mit solchem sehr 

228
00:11:56,640 --> 00:12:01,360
verschachtelten Code einfach 
dazu führt, dass wir diese Dinge

229
00:12:01,360 --> 00:12:04,360
auch einfach innerhalb von 
dieser Anwendung und anderen 

230
00:12:04,360 --> 00:12:06,200
Anwendungen einfach auch nicht 
wieder verwenden können, weil 

231
00:12:06,200 --> 00:12:08,720
alles irgendwie an einer Stelle 
zusammen gepflanzt wird. 

232
00:12:09,360 --> 00:12:12,320
Wie man sowas vermeidet ist dann
tatsächlich so ein bisschen mit.

233
00:12:12,400 --> 00:12:14,200
Das hat auch dann wieder ein 
bisschen was mit dem Spaghetti 

234
00:12:14,480 --> 00:12:18,520
Code zu tun, nämlich mit Single 
Responsibility ist einer von 

235
00:12:18,520 --> 00:12:21,520
diesem Solid, was malte eben 
schon erwähnt hat, das ist ein. 

236
00:12:21,920 --> 00:12:25,840
Design Pattern also das ist ein 
gutes Pattern, das also gerade 

237
00:12:25,840 --> 00:12:29,200
bis hier Solid und Kiss hatten 
wir eben eben erwähnt, ich 

238
00:12:29,240 --> 00:12:31,120
glaube, da kann man eine ganz 
eigene Folge zu machen. 

239
00:12:31,120 --> 00:12:33,680
Es ging, ging, deswegen gehen 
wir jetzt nicht ganz tief drauf 

240
00:12:33,680 --> 00:12:36,080
rein, haben am Ende auch noch 
ein paar Literaturempfehlungen 

241
00:12:36,080 --> 00:12:40,080
für euch, also das sind positive
Patterns und zum Beispiel das S 

242
00:12:40,080 --> 00:12:42,960
im Solid steht für Single 
Responsibility und damit kann 

243
00:12:42,960 --> 00:12:46,720
man eben auch versuchen diese 
deutsche Gott Objekte zu 

244
00:12:46,720 --> 00:12:49,040
vermeiden. 
Indem man nämlich ganz klar 

245
00:12:49,040 --> 00:12:54,160
sagt, Hey, in meinem Code ist 
eine bestimmte Klasse, wenn ich 

246
00:12:54,160 --> 00:12:56,800
Objekt orientiert, programmiere 
oder eine oder eine bestimmte 

247
00:12:56,800 --> 00:12:59,680
Datei oder eine bestimmte 
Funktion dafür verantwortlich, 

248
00:12:59,680 --> 00:13:02,720
eine einzige Sache zu lösen und 
die gut zu machen. 

249
00:13:03,200 --> 00:13:07,040
Und ich habe nicht diese eine 
große Klasse, die irgendwie 

250
00:13:07,200 --> 00:13:09,840
sämtliche Abfragen in sämtliche 
Datenbanken oder sowas 

251
00:13:09,840 --> 00:13:13,520
übernimmt, sondern kann das eben
auf Kleinigkeiten, auf kleinere 

252
00:13:13,520 --> 00:13:16,320
Teile runterbrechen. 
Das hat den sehr, sehr großen 

253
00:13:16,320 --> 00:13:20,400
Vorteil, und das ist ja für mich
die also also neben dem, dass es

254
00:13:20,400 --> 00:13:22,560
klar Verantwortlichkeiten 
trennt, dass ich genau weiß, 

255
00:13:22,560 --> 00:13:24,240
wenn ich mir diese klasse 
angucke, was sie macht, dass die

256
00:13:24,240 --> 00:13:28,240
Klassen dadurch kleiner werden, 
was sie übersichtlicher macht. 

257
00:13:29,360 --> 00:13:32,800
Die größte Auswirkung ist für 
mich aber halt die Wartbarkeit, 

258
00:13:32,800 --> 00:13:36,960
die die ein, die ich eben nicht 
habe, wenn ich ein solches, ein 

259
00:13:36,960 --> 00:13:40,800
solches Gott Objekt baue. 
Und natürlich auch die geringe 

260
00:13:40,800 --> 00:13:42,920
Wiederverwendbarkeit. 
Na, ich habe eine S. 

261
00:13:42,920 --> 00:13:45,600
Man nennt das Kopplung in der in
der Programmierung, das heißt 

262
00:13:45,840 --> 00:13:49,280
ich habe dann sehr viele 
Referenzen auf dieses eine große

263
00:13:49,280 --> 00:13:52,680
Gott Objekt oder dieses große 
Gott Objekt holt sich ganz viele

264
00:13:52,680 --> 00:13:56,000
andere Referenzen rein wie den 
Klein für die Datenbank, weil es

265
00:13:56,000 --> 00:13:59,680
mit der reden will und 
referenziere alle möglichen 

266
00:13:59,680 --> 00:14:03,200
weiteren Klassen und hat noch 
ganz viel unter Logik irgendwie 

267
00:14:03,200 --> 00:14:05,520
drin, das heißt es wird super 
schwierig zu testen ich kann es 

268
00:14:05,520 --> 00:14:09,760
fast nicht wieder verwenden und.
Ich weiß meistens schon 

269
00:14:09,760 --> 00:14:14,120
irgendwie, wenn eine wenn eine 
Coding Datei mehr als was ich 

270
00:14:14,120 --> 00:14:18,720
sag mal 2 300 Zeilen lang ist, 
dann ist das ein ganz gutes 

271
00:14:18,720 --> 00:14:22,720
Indiz dafür, dass ich hier 
vielleicht au aufbreche in 

272
00:14:23,360 --> 00:14:26,920
kleinere Klassen, in kleinere 
unter Funktionen und Dateien, 

273
00:14:26,920 --> 00:14:31,840
wenn ich nicht mit Klassen 
arbeite und die dann einzeln 

274
00:14:31,840 --> 00:14:34,720
teste, wo brauchen dann ein Test
zu schreiben eine Sache von 5 

275
00:14:34,720 --> 00:14:37,360
Minuten ist und nicht dadurch 
natürlich. 

276
00:14:38,360 --> 00:14:40,640
Durch diese Single 
Responsibility Pattern Gott 

277
00:14:40,640 --> 00:14:44,560
Objekte vermeiden und deutlich 
wartbaren oder deutlich 

278
00:14:44,560 --> 00:14:50,320
wartbareren Code bauen kann. 
Und ich glaube, gerade heute 

279
00:14:50,320 --> 00:14:52,720
müssen wir da auch noch mal ein 
besonderes Augenmerk darauf 

280
00:14:52,720 --> 00:14:55,880
legen, dass wir nicht solche 
überbordenden 

281
00:14:55,880 --> 00:14:59,840
Verantwortlichkeiten an einer 
Stelle aufbauen, weil wir häufig

282
00:14:59,840 --> 00:15:03,240
mittlerweile mit diesen KI 
Developer Tools arbeiten und die

283
00:15:03,240 --> 00:15:07,400
häufig nicht die Fähigkeit 
Mitbringstand heute bestimmte 

284
00:15:07,400 --> 00:15:10,160
Architektur muss. 
Muster und die Trennung in 

285
00:15:10,160 --> 00:15:14,000
verschiedene Komponenten zu 
befolgen und man damit natürlich

286
00:15:14,000 --> 00:15:16,840
verführt, ist an der Stelle, an 
der man gerade unterwegs ist, 

287
00:15:16,840 --> 00:15:19,040
einfach immer noch mehr 
einzubauen, was einem die KI 

288
00:15:19,040 --> 00:15:22,320
vorschlägt und die KI mir 
natürlich auch die Möglichkeit 

289
00:15:22,320 --> 00:15:26,960
gibt, sehr große Dateien einfach
schnell zu verstehen und zu 

290
00:15:26,960 --> 00:15:28,960
überblicken. 
Und ich glaube, da müssen wir 

291
00:15:28,960 --> 00:15:31,040
tatsächlich auch ein bisschen 
vorsichtig sein. 

292
00:15:31,440 --> 00:15:34,480
Ich möchte gerade hier eine 
kurze Pause bei diesem Podcast 

293
00:15:34,480 --> 00:15:38,840
machen und für das Protokoll. 
Erwähnen, einfügen, dass malte 

294
00:15:38,840 --> 00:15:45,040
gerade dreimal KI erwähnt hat 
und es dadurch eine K auch eine 

295
00:15:45,040 --> 00:15:47,360
KI Frau geworden ist. 
Dass das nicht immer nur ich 

296
00:15:47,360 --> 00:15:49,360
bin. 
Danke. 

297
00:15:50,880 --> 00:15:55,240
Okay machen wir weiter mit dem 
mit dem nächsten Antipattern und

298
00:15:55,240 --> 00:15:56,840
da wusste ich, das war zum 
Beispiel 1, da wusste ich nicht,

299
00:15:56,840 --> 00:15:58,520
dass es so heißt. 
Es gibt das Antipattern das 

300
00:15:58,520 --> 00:16:01,920
nennt sich Cargo Cult 
Programming. 

301
00:16:02,680 --> 00:16:06,080
Und was sich dahinter verbirgt, 
haben vor allem viele, die in 

302
00:16:06,080 --> 00:16:08,640
einem Team programmieren, 
bestimmt schon mal gesehen. 

303
00:16:09,040 --> 00:16:13,600
Das ist, da wird ein Kult, dass 
er daher kommt, auch auch dieser

304
00:16:13,600 --> 00:16:20,880
Name herum oder fast schon einen
Kult um ein bestimmtes Pattern 

305
00:16:21,040 --> 00:16:26,240
oder eine bestimmte Library oder
irgendwas geschaffen, die jetzt.

306
00:16:26,800 --> 00:16:30,960
Verwendet werden soll, weil sie 
ja, wie wie das oft auch auch in

307
00:16:30,960 --> 00:16:35,440
so Kulten ist, als der 
Heilsbringer angepriesen wird, 

308
00:16:35,840 --> 00:16:38,320
ohne dass ich ein tiefes 
Verständnis dafür entwickel, was

309
00:16:38,320 --> 00:16:41,160
denn die, dass die 
zugrundeliegenden Probleme sind,

310
00:16:41,160 --> 00:16:43,480
die ich damit lösen will, oder 
warum ich denn überhaupt, ob 

311
00:16:43,480 --> 00:16:46,560
jetzt dieses Pattern einsetze, 
also ne von all den 

312
00:16:46,560 --> 00:16:48,240
Antipatterns, die wir hier 
reden, gibt es eben auch diese 

313
00:16:48,240 --> 00:16:50,800
positiven Patterns, und um viele
von diesen Patterns und. 

314
00:16:51,680 --> 00:16:54,920
Das wird man gerade merken, wenn
man in in größere Teams kommt, 

315
00:16:54,920 --> 00:16:56,320
wo es viele verschiedene 
Meinungen gibt. 

316
00:16:56,640 --> 00:17:00,320
Gibt es tatsächlich so ganze 
Kulte um diese Patterns herum? 

317
00:17:02,960 --> 00:17:06,040
Klassische Beispiele sind 
irgendwie, es gab ne ganze Zeit,

318
00:17:06,040 --> 00:17:09,319
da musste man alles mit 
Microservices lösen, egal ob 

319
00:17:09,319 --> 00:17:11,640
vielleicht n Monolith gebraucht 
wurde oder oder nicht oder ob 

320
00:17:11,640 --> 00:17:13,599
man das überhaupt in 
Microservices aufbrechen musste,

321
00:17:13,599 --> 00:17:16,920
was ja auch Komplexität bringt. 
Oder es gibt Verfechter von 

322
00:17:16,920 --> 00:17:19,640
Domain driven Design, die sagen,
das ist die einzig richtige Art 

323
00:17:19,640 --> 00:17:21,760
und Weise, Software zu 
entwickeln, weil ich da mal ne 

324
00:17:21,760 --> 00:17:24,880
Podcast Folge zugehört habe. 
Deswegen, wenn ihr diesen 

325
00:17:24,880 --> 00:17:28,000
Podcast hört, geht, tut euren 
Kollegen den Gefallen und 

326
00:17:28,000 --> 00:17:30,720
prangert dann die Sachen die ihr
hört, nicht als nicht kultartig 

327
00:17:30,720 --> 00:17:32,720
an und sagt es muss jetzt so 
gemacht werden, sondern seht, 

328
00:17:32,720 --> 00:17:36,320
dass er als Staat sich damit 
tiefer zu beschäftigen und dann 

329
00:17:36,320 --> 00:17:38,880
zu schauen, ob das auch wirklich
auf die ja zugrundeliegenden 

330
00:17:38,880 --> 00:17:42,560
Probleme passt. 
Und auch ganz oft, wie 

331
00:17:42,560 --> 00:17:45,360
eigentlich überall im Leben, 
gibt es mehr als eine Antwort 

332
00:17:45,360 --> 00:17:47,280
und mehr als einen Weg zum zum 
Erfolg. 

333
00:17:47,600 --> 00:17:50,200
Und das wird ganz oft in der 
Softwareentwicklung, gibt es 

334
00:17:50,200 --> 00:17:52,400
dann aber so religiöse 
Tendenzen, die sagen, das muss 

335
00:17:52,400 --> 00:17:55,200
aber mit müssen das Domain 
driven oder wenn nicht Test 

336
00:17:55,200 --> 00:17:58,680
driven entwickelt, der hat keine
Ahnung und sowas und ich glaube 

337
00:17:58,680 --> 00:18:00,800
das versteht sich unter diesem 
Cargo Kult programming. 

338
00:18:01,680 --> 00:18:04,000
Ja, ohne den Begriff zu kennen, 
musste ich in den letzten Jahren

339
00:18:04,000 --> 00:18:07,480
häufig drüber nachdenken, als 
halt das ganze Thema Cubinetis 

340
00:18:07,480 --> 00:18:09,760
immer populärer wurde und man 
dann in immer mehr Projekte 

341
00:18:09,760 --> 00:18:12,560
reinkam und es nicht mehr darum 
ging. 

342
00:18:12,560 --> 00:18:16,000
Wie können wir das Problem am 
besten lösen, sondern es ging 

343
00:18:16,000 --> 00:18:18,400
nur darum, wie bauen wir eine 
Anwendung, die wir nachher auf 

344
00:18:18,400 --> 00:18:21,000
Cubinetis laufen lassen können. 
Da fragt man sich. 

345
00:18:21,680 --> 00:18:25,280
Löst das euer Problem, dass ihr 
diese Betriebsplattform wählt? 

346
00:18:25,360 --> 00:18:28,520
Nein, aber es war dieser Kult, 
entstanden rund um Kubernetis 

347
00:18:28,520 --> 00:18:30,560
und man hatte irgendwie das 
Gefühl, das ist die Lösung für 

348
00:18:30,560 --> 00:18:32,400
alle unsere 
Infrastrukturprobleme in der 

349
00:18:32,400 --> 00:18:36,800
Zukunft und das führt natürlich 
dazu, dass man häufig 

350
00:18:37,120 --> 00:18:40,600
überdimensionierte Lösungen hat,
die vielleicht für die Lösung 

351
00:18:40,600 --> 00:18:42,880
des Problems gar nicht 
angemessen sind. 

352
00:18:43,360 --> 00:18:46,800
Und ganz häufig ist es einfach 
ein blindes übernehmen dieser 

353
00:18:46,800 --> 00:18:49,000
Muster, die man bei anderen 
sieht und die vielleicht 

354
00:18:49,000 --> 00:18:51,280
wirklich kultartig zelebriert 
werden. 

355
00:18:51,440 --> 00:18:54,760
Und man ist natürlich sehr 
empfänglich dafür, gerade wenn 

356
00:18:54,760 --> 00:18:56,720
man nicht die entsprechende 
Erfahrung mitbringt, weil dann 

357
00:18:56,720 --> 00:18:59,640
kann man das gar nicht so gut 
bewerten und man geht dann 

358
00:18:59,640 --> 00:19:02,320
einfach davon aus, weil es alle 
so machen muss das die Lösung 

359
00:19:02,320 --> 00:19:06,000
sein und dementsprechend folgt 
man dann diesem Muster und ich 

360
00:19:06,000 --> 00:19:08,200
glaube man kann das einfach 
umgehen, indem man sich einfach 

361
00:19:08,200 --> 00:19:11,320
noch mal die Zeit nimmt das 
Problem zu verstehen und zu 

362
00:19:11,320 --> 00:19:14,960
sagen okay was. 
Was sind jetzt die möglichen 

363
00:19:14,960 --> 00:19:18,600
Lösungen und dann jeweils die 
auszuwählen, die für meinen 

364
00:19:18,600 --> 00:19:21,040
Anwendungsfall der beste Weg 
nach vorne ist? 

365
00:19:21,120 --> 00:19:23,440
Ja, zumal diese 
überdimensionierten Lösungen ja 

366
00:19:23,440 --> 00:19:25,840
oft auch wahnsinnig viel 
Komplexität mit reinbringen. 

367
00:19:25,840 --> 00:19:28,200
Ich bin ein riesen Verfechter 
von Cubanitis, das ist ein ganz,

368
00:19:28,200 --> 00:19:31,400
ganz tolles Werkzeug, aber man 
kann nicht wegdiskutieren, dass 

369
00:19:31,400 --> 00:19:35,160
es A eine wahnsinnig steile 
Lernkurve hat und b einfach sehr

370
00:19:35,160 --> 00:19:36,480
viel Komplexität reinbringt, 
die. 

371
00:19:36,960 --> 00:19:40,160
Gar nicht jedes Problem braucht,
wenn ich irgendwie also ne 

372
00:19:40,160 --> 00:19:44,320
unsere kleine Podcast Website 
Landing Page, die muss nicht auf

373
00:19:44,320 --> 00:19:46,760
Cobonitis gehostet sein, die ist
nicht mehr in einem Container 

374
00:19:47,120 --> 00:19:50,760
und ja, ich glaube diese 
Komplexität unterschätzt man 

375
00:19:50,760 --> 00:19:52,920
oft, weil es dann auch irgendwie
schnell gehen muss oder weil man

376
00:19:52,920 --> 00:19:55,200
auf einer Konferenz war und da 
in jedem zweiten Talk über 

377
00:19:55,200 --> 00:19:57,280
Cobonitis gesprochen wurde, 
müssen wir das jetzt auch machen

378
00:19:57,600 --> 00:19:59,280
und ich glaube diesen einen 
Schritt weiter zu gehen, zu 

379
00:19:59,280 --> 00:20:02,800
verstehen, OK was bedeutet das? 
Was hat das für Implikationen, 

380
00:20:02,800 --> 00:20:05,040
vor allem auf die Komplexität? 
Und löst das wirklich unser 

381
00:20:05,040 --> 00:20:06,840
Problem oder haben wir das 
Problem gar nicht? 

382
00:20:06,840 --> 00:20:10,160
Was Kuranides löst, würde 
vermeiden, in diesen Carco cool 

383
00:20:10,160 --> 00:20:13,120
Programming Anti Patterns 
gefangen zu sein. 

384
00:20:15,040 --> 00:20:20,400
Dann weitergehend zum Thema 
Dinge ohne Sinn und Verstand 

385
00:20:20,520 --> 00:20:24,160
übernehmen, haben wir gefunden. 
Den Begriff Copy paste 

386
00:20:24,160 --> 00:20:25,920
Programmierung. 
Wir beide haben erst mal gedacht

387
00:20:25,920 --> 00:20:28,240
okay. 
Ganz klar, das bedeutet, ich 

388
00:20:28,240 --> 00:20:30,360
gehe ins Internet, gehe auf 
Stack Overflow und kopiere 

389
00:20:30,360 --> 00:20:33,280
irgendeinen Text, aber 
letztendlich letzten Endes wird 

390
00:20:33,280 --> 00:20:36,800
in der Literatur damit 
beschrieben, dass man innerhalb 

391
00:20:36,960 --> 00:20:40,240
seiner eigenen Anwendung den 
Code immer wieder copy pasted 

392
00:20:40,320 --> 00:20:44,680
und das ist ja etwas, was, 
glaube ich, wir alle schon mal 

393
00:20:44,680 --> 00:20:46,600
irgendwann gemacht haben, weil 
wir gesagt haben, okay, es geht 

394
00:20:46,600 --> 00:20:49,440
jetzt schneller einfach 20 
Zeilen Code von A nach b zu 

395
00:20:49,440 --> 00:20:52,600
kopieren statt irgendwie nicht. 
Ein Modul zu bauen, welches ich 

396
00:20:52,600 --> 00:20:54,640
dann an der anderen Stelle 
aufrufen kann, um dann 

397
00:20:54,640 --> 00:20:57,440
Wiederverwendung in meiner 
Anwendung zu haben und unter 

398
00:20:57,440 --> 00:21:02,320
damit dem DRY Prinzip zu folgen.
Don't repeat yourself und damit 

399
00:21:02,720 --> 00:21:06,520
ein positives Design Pattern zu 
übernehmen, sondern wir gehen 

400
00:21:06,520 --> 00:21:08,120
halt einfach hin und sagen, OK, 
wir haben jetzt gerade keine 

401
00:21:08,120 --> 00:21:09,680
Zeit dafür, das machen wir dann 
irgendwann vielleicht mal 

402
00:21:09,680 --> 00:21:12,280
ordentlich und dann übernehmen 
wir einfach die 20 Zeilen Code 

403
00:21:12,280 --> 00:21:15,920
von a nach b. 
Und irgendwann refactoren wir an

404
00:21:15,920 --> 00:21:18,320
der einen Stelle was, und dann 
haben wir 2 voneinander 

405
00:21:18,320 --> 00:21:20,080
abweichen. 
Implementierungen der gleichen 

406
00:21:20,080 --> 00:21:24,800
Sache und haben am Ende einen 
Anwendungscode, der super schwer

407
00:21:24,800 --> 00:21:26,080
wartbar ist. 
Letzten Endes ja. 

408
00:21:26,400 --> 00:21:29,160
Das ist ein ganz klassischer 
Anfängerfehler, würde ich sagen.

409
00:21:29,240 --> 00:21:32,880
Dieses, dass man Code von hin 
und her kopiert, anstatt das 

410
00:21:32,880 --> 00:21:36,040
richtig zu Kapseln. 
Also Code gehört dann gekapselt 

411
00:21:36,040 --> 00:21:38,200
und dann wiederverwendbar 
gemacht, das ist eigentlich ein 

412
00:21:38,200 --> 00:21:39,960
Geschenk, wenn ich irgendwo 
merke, Oh guck mal, hier brauche

413
00:21:39,960 --> 00:21:43,080
ich den gleichen Code wieder, 
ist das eigentlich eine. 

414
00:21:43,840 --> 00:21:46,600
Wahnsinnig mit Geschenken, mein 
Ich ist ein gutes Zeichen dafür.

415
00:21:46,600 --> 00:21:48,480
Ach guck mal, das kann ich schon
mal. 

416
00:21:48,480 --> 00:21:50,880
Diesen kann ich schon aus meiner
wahrscheinlich gerade immer 

417
00:21:50,880 --> 00:21:54,160
größer werdenden Datei oder 
klasse rausziehen, weil der wird

418
00:21:54,160 --> 00:21:57,120
ja offenbar noch mal an einer 
anderen Stelle gebraucht, kann 

419
00:21:57,120 --> 00:22:00,120
den da isoliert testen, wenn es 
irgendwie Logik ist oder wenn 

420
00:22:00,240 --> 00:22:02,320
es, wenn es irgendwie konstanten
sind, kann ich sagen, gut, 

421
00:22:02,320 --> 00:22:05,120
vielleicht fange ich mal an 
überhaupt irgendwo konstanten 

422
00:22:05,120 --> 00:22:08,160
zentral abzuspeichern und so und
habe sie dann auch auf einen 

423
00:22:08,160 --> 00:22:11,360
Blick. 
Und sehe ich auch immer wieder, 

424
00:22:11,360 --> 00:22:14,840
vor allem dann deswegen 
Anfängerfehler, weil ich habe 

425
00:22:14,840 --> 00:22:16,400
mich, ich fange gerade 
vielleicht an, mich mit einem 

426
00:22:16,400 --> 00:22:18,600
neuen Framemark zu beschäftigen.
Ich lerne irgendwie gerade go 

427
00:22:18,600 --> 00:22:20,640
oder sowas und weiß noch gar 
nicht, wie ich das Kapsel dann 

428
00:22:20,640 --> 00:22:22,120
kopiere ich das schnell 
irgendwie schnell irgendwie 

429
00:22:22,120 --> 00:22:25,600
rüber und komm laufe dann 
natürlich Gefahr, wie Malte 

430
00:22:25,600 --> 00:22:27,680
gerade gesagt hat, dass ich das 
an irgendwie ein Bug habe, den 

431
00:22:27,680 --> 00:22:30,400
ich an einer Stelle fixe und 
dann verzweifle daran, warum der

432
00:22:30,400 --> 00:22:34,320
nicht gefixt ist und ohne. 
Und nur um dann zu merken, dass 

433
00:22:34,320 --> 00:22:37,240
mein anderes Modul noch eine 
Kopie von meinem Code, wo dieser

434
00:22:37,240 --> 00:22:39,840
Bug nicht gefixt ist, verwendet 
und referenziert. 

435
00:22:40,560 --> 00:22:43,640
Abgesehen davon, dass es 
natürlich ja den ganzen Code 

436
00:22:43,640 --> 00:22:46,000
schwierig zu warten macht, 
schwieriger zu verstehen macht 

437
00:22:46,000 --> 00:22:50,080
und die Lösung ist natürlich, 
wiederverwendbare Funktionen 

438
00:22:50,080 --> 00:22:52,720
oder Bibliotheken zu erstellen, 
wenn ich über mehrere Projekte 

439
00:22:52,720 --> 00:22:56,960
hinweg brauche, diese Logik. 
Gerade wenn wir über 

440
00:22:56,960 --> 00:22:59,800
Wiederverwendung sprechen, da 
reden wir dann nicht nur über 

441
00:22:59,800 --> 00:23:02,800
Wiederverwendung unseres eigenen
Code, sondern auch 

442
00:23:02,800 --> 00:23:05,800
Wiederverwendung von Code, den 
andere geschrieben haben, 

443
00:23:05,800 --> 00:23:09,600
irgendwelche Libraries und 
Frameworks und da gibt es auch 

444
00:23:09,600 --> 00:23:13,680
ein Anti Pattern drumherum, 
nämlich das Not invinted here 

445
00:23:13,920 --> 00:23:16,240
Syndrom. 
Das heißt, wir haben es nicht 

446
00:23:16,240 --> 00:23:18,840
gebaut. 
Wir können es besser und man 

447
00:23:18,840 --> 00:23:21,440
implementiert das gleiche, was 
andere schon erfolgreich 

448
00:23:21,440 --> 00:23:24,600
implementiert haben, wo das 
Problem schon hundertfach gelöst

449
00:23:24,600 --> 00:23:26,680
ist. 
Einfach noch mal, weil man ein 

450
00:23:26,680 --> 00:23:29,280
grundsätzliches Misstrauen 
gegenüber irgendwelchen 

451
00:23:29,280 --> 00:23:30,880
Drittanbietern hat, oder 
vielleicht kostet die 

452
00:23:30,880 --> 00:23:33,440
drittanbietersoftware Geld und 
dann investiert man einfach 

453
00:23:33,440 --> 00:23:37,440
intern viel mehr Geld, weil man 
hat ja die Leute und merkt es 

454
00:23:37,440 --> 00:23:40,400
gar nicht. 
Da rein einfach dieses Problem, 

455
00:23:40,400 --> 00:23:42,960
was eigentlich schon gelöst ist,
noch mal zu lösen und 

456
00:23:42,960 --> 00:23:46,000
verschwendet damit viel Zeit und
hat dann vielleicht am Ende ne 

457
00:23:46,000 --> 00:23:49,600
Lösung, die weniger effizient 
oder weniger wartbar ist als die

458
00:23:49,840 --> 00:23:52,240
Lösung von dritten. 
Es kann aus der Open Source 

459
00:23:52,240 --> 00:23:54,800
Community kommen, es kann ne 
kommerzielle Lösung sein. 

460
00:23:55,280 --> 00:23:58,880
Und das lässt sich natürlich 
auch entsprechend einfach 

461
00:23:58,880 --> 00:24:00,880
vermeiden. 
Und jetzt muss ich tatsächlich 

462
00:24:00,880 --> 00:24:05,200
noch mal KI sagen, weil ich ja 
ganz häufig in dem Umfeld der KI

463
00:24:05,200 --> 00:24:08,240
Softwareassistent unterwegs bin 
und ich habe halt immer wieder 

464
00:24:08,240 --> 00:24:10,560
irgendwelche Unternehmen, mit 
denen ich spreche, die sagen ja,

465
00:24:10,880 --> 00:24:13,200
das, was es da am Markt gibt, 
das ist alles schön und gut, 

466
00:24:13,200 --> 00:24:16,480
aber ich glaube, das erfüllt 
nicht hundertprozentig unsere 

467
00:24:16,480 --> 00:24:18,720
Anwendung, wir stellen jetzt 
einfach mal ein Team von 100 

468
00:24:18,720 --> 00:24:20,800
Leuten ab, die bauen einen 
eigenen KI. 

469
00:24:21,520 --> 00:24:23,920
Coding Assistant und da fragt 
man sich ja genau. 

470
00:24:24,400 --> 00:24:27,200
Glaubt ihr selber, dass ihr das 
besser könnt und dass am Ende 

471
00:24:27,200 --> 00:24:31,600
eure Lösung eure Probleme besser
löst als das, was ihr am Markt 

472
00:24:31,600 --> 00:24:34,080
findet? 
Man mag es anzweifeln, aber das 

473
00:24:34,080 --> 00:24:37,440
passt für mich ganz gut in 
dieses Not invented here 

474
00:24:37,680 --> 00:24:40,480
Mindset, wo man dann sagt, nee, 
ich glaube alles was bei uns 

475
00:24:40,880 --> 00:24:44,080
intern gebaut wird, ist einfach 
vom Prinzip her erstmal besser. 

476
00:24:44,480 --> 00:24:46,560
Ja, die Ursache ist natürlich 
immer sowieso keine Ahnung, 

477
00:24:47,440 --> 00:24:50,040
falscher Stolz. 
Oder halt irgendwie so ein 

478
00:24:50,040 --> 00:24:52,360
Misstrauen gegenüber von 
irgendwelchen Drittanbietern. 

479
00:24:52,360 --> 00:24:55,040
Aber was du gerade sagst, dieses
Beispiel mit diesem, wir bauen 

480
00:24:55,040 --> 00:24:57,960
jetzt selber irgendwie einen KI 
Coding Assistenten, das finde 

481
00:24:57,960 --> 00:25:02,200
ich sehr sehr maßgeblich dafür, 
dass man sich einfach mal fragt,

482
00:25:02,200 --> 00:25:06,080
Okay ist das denn eure 
Expertise, also seid ihr ein 

483
00:25:06,640 --> 00:25:10,640
Coding Assistenten Software 
laden oder seid Ihr vielleicht 

484
00:25:10,640 --> 00:25:13,520
ein Pharmakonzern der Software 
schreibt und einen Coding 

485
00:25:13,520 --> 00:25:15,840
Assistenten braucht, dann müsst 
ihr euch ja also da würde ich 

486
00:25:15,840 --> 00:25:18,600
mich ja immer wirklich fragen, 
können wir das besser und wenn. 

487
00:25:18,600 --> 00:25:21,760
Wenn wir glauben, dass so viel 
besser zu können, warum nehmen 

488
00:25:22,320 --> 00:25:24,960
wir dann nicht an diesem Markt 
der Coding Assistenten teil, 

489
00:25:24,960 --> 00:25:29,040
gründen unser eigenes, unsere 
eigene Ausgründung von unserem 

490
00:25:29,040 --> 00:25:30,760
Unternehmen und bauen da jetzt 
irgendwie den Coding 

491
00:25:30,760 --> 00:25:33,480
Assistenten, der dann irgendwie 
für alle bereitgestellt wird, 

492
00:25:33,480 --> 00:25:35,920
wenn wir wirklich glauben, da 
konkurrenzfähig sein zu können? 

493
00:25:36,800 --> 00:25:39,400
Ich sehe es aber auch, vor allem
wenn eine Software das kann ja 

494
00:25:39,400 --> 00:25:41,160
auch nur irgendwie eine kleine 
Library sein, das muss ja gar 

495
00:25:41,160 --> 00:25:42,920
nicht wieso was Großes sein, 
sobald die irgendwie ein 

496
00:25:42,920 --> 00:25:44,840
bisschen Geld kostet, ein paar 
Euro kostet wahrscheinlich sogar

497
00:25:44,840 --> 00:25:48,200
noch eine Lizenz pro Developer. 
Dann überlegt man sich aber dann

498
00:25:48,200 --> 00:25:49,840
das nicht irgendwie selber 
schreiben kann und vergisst da 

499
00:25:49,840 --> 00:25:53,600
ganz oft was das alles ein 
Rattenschwanz mit sich zieht, 

500
00:25:53,760 --> 00:25:57,320
mit Testen, mit Warten, mit 
Security Updates, mit das 

501
00:25:57,320 --> 00:25:59,760
irgendwo an einer zentralen 
Stelle auch vielleicht 

502
00:25:59,760 --> 00:26:02,640
bereitstellen so inner Source 
mäßig, dass ich wenigstens wenn 

503
00:26:02,640 --> 00:26:05,120
ich ein großes Unternehmen bin, 
sage, wir haben jetzt was cooles

504
00:26:05,120 --> 00:26:08,040
gebaut, das kann auch andere 
gebrauchen, wie stelle ich es 

505
00:26:08,040 --> 00:26:10,280
bereit, wie sorge ich dafür, 
dass wenn jemand das Unternehmen

506
00:26:10,280 --> 00:26:16,640
verlässt, dass das weiterhin 
gewartet wird, und das ist ja in

507
00:26:16,640 --> 00:26:19,360
der Regel Zeitverschwendung. 
Dinge, die es schon gibt, also 

508
00:26:19,440 --> 00:26:22,400
man man sagt im Deutschen so 
schön das Rad neu zu erfinden, 

509
00:26:22,880 --> 00:26:25,840
vor allem nicht, wenn es meine, 
wenn es nicht meine 

510
00:26:25,840 --> 00:26:29,200
Kernexpertise diese ist, Räder 
zu bauen, sondern wenn ich 

511
00:26:29,200 --> 00:26:32,080
Software Software ist ja kein 
Selbstzweck, sondern Software 

512
00:26:32,560 --> 00:26:35,240
will ja immer irgendwie ein 
Problem lösen und wenn ich das 

513
00:26:35,240 --> 00:26:38,080
beschleunigen kann, weil ich da 
mir eine Abkürzung nehme, wo 

514
00:26:38,080 --> 00:26:40,720
jemand anderen schon anders 
schon was gebaut hat, ist das 

515
00:26:40,880 --> 00:26:44,880
ist die Lizenzkost fast immer 
deutlich günstiger als selber zu

516
00:26:44,880 --> 00:26:48,480
bauen. 
Dann vielleicht noch verwandt zu

517
00:26:48,480 --> 00:26:52,640
dem, was wir vorhin besprochen 
haben mit dem Cargo Kult. 2 

518
00:26:52,640 --> 00:26:56,080
weitere Ausprägungen, die sich 
irgendwie in dem Bereich bewegen

519
00:26:56,080 --> 00:27:00,880
und das eine ist das 
silverbullet Syndrom, wo ich das

520
00:27:00,880 --> 00:27:04,120
Gefühl hab, dass. 
Das ist diese Technologie, mit 

521
00:27:04,120 --> 00:27:06,640
der man jedes Problem erschlagen
kann. 

522
00:27:06,800 --> 00:27:10,400
Und das löst halt am Ende alles 
und das kann etwas sein, was 

523
00:27:10,400 --> 00:27:13,600
einfach sich kultartig aufgebaut
hat, aber das kann auch etwas 

524
00:27:13,600 --> 00:27:17,120
sein, was irgendwie einem von 
extern angepriesen wird, dass 

525
00:27:17,120 --> 00:27:20,720
irgendwie ein Zulieferer, ein 
anderer Softwarehersteller kommt

526
00:27:20,720 --> 00:27:22,800
und sagt, hier, wir haben hier 
diese Bibliothek gebaut, und die

527
00:27:22,800 --> 00:27:27,120
löst alle eure Probleme und da 
dann einfach wirklich naiv daran

528
00:27:27,120 --> 00:27:30,080
zu glauben, ist natürlich auch 
etwas, was. 

529
00:27:30,640 --> 00:27:33,440
Unrealistische Erwartungen 
auslöst und am Ende dann zu 

530
00:27:33,440 --> 00:27:36,360
hohen Enttäuschungen führt, weil
man dann am Ende vielleicht dann

531
00:27:36,360 --> 00:27:40,800
doch irgendwie an Grenzen stößt.
Und immer wenn jemand kommt und 

532
00:27:40,800 --> 00:27:45,240
sagt Okay für diese Probleme im 
bestimmten Umfeld haben wir die 

533
00:27:45,240 --> 00:27:49,440
einzig wahre Lösung am Markt, 
dann sollte man glaube ich 

534
00:27:49,520 --> 00:27:54,240
skeptisch sein und ähnlich ist 
es natürlich auch, wenn man. 

535
00:27:54,960 --> 00:27:57,440
Und das ist ein anderes 
Phänomen, was so ein bisschen so

536
00:27:57,520 --> 00:28:00,720
unter dem Namen Kitchen Sync 
oder Swiss Army Knife fällt. 

537
00:28:00,880 --> 00:28:03,760
Wenn jemand kommt und sagt, Wir 
haben hier diese Standardlösung,

538
00:28:03,760 --> 00:28:05,480
damit lösen wir in der Regel 
alle unsere 

539
00:28:05,480 --> 00:28:07,720
Softwareentwicklungsprobleme wir
haben schon immer auf diesem 

540
00:28:07,720 --> 00:28:09,760
Framework aufgebaut und damit 
kann man eigentlich alles 

541
00:28:09,760 --> 00:28:12,640
machen, und ich glaube auch dann
sollte man hellhörig werden, 

542
00:28:12,800 --> 00:28:15,760
weil das natürlich eine 
unrealistische Erwartungshaltung

543
00:28:15,760 --> 00:28:18,400
auf der einen Seite ist, aber 
auf der anderen Seite auch dazu 

544
00:28:18,400 --> 00:28:21,680
führt, dass man. 
Sich verschließt gegenüber 

545
00:28:21,680 --> 00:28:24,560
vielleicht neuen Innovationen, 
die am Markt verfügbar sind, 

546
00:28:24,560 --> 00:28:27,280
neuen Technologien, die 
vielleicht spezifisch für mein 

547
00:28:27,280 --> 00:28:29,520
Problem der bessere Lösungsweg 
wären. 

548
00:28:30,080 --> 00:28:32,080
Ja, das sieht man halt viel auch
mit irgendwelchen Libraries. 

549
00:28:32,080 --> 00:28:34,280
Wenn also gerade so im Fonda 
Bereich, wo dann irgendwie sagt 

550
00:28:34,280 --> 00:28:38,080
okay alles muss React sein und 
wenn das nicht irgendwie und wir

551
00:28:38,080 --> 00:28:42,320
versuchen auch die statische 
Landingpage irgendwie mit React 

552
00:28:42,320 --> 00:28:44,480
zu bauen, sowas sehe ich 
manchmal. 

553
00:28:45,240 --> 00:28:47,280
Viel mehr seh ich es aber 
wirklich mit so 

554
00:28:47,520 --> 00:28:49,400
Programmiersprachen oder oder 
Frameworks. 

555
00:28:49,400 --> 00:28:52,560
Gerade mit diesen großen 
frameworkswie.net im C Sharp 

556
00:28:52,560 --> 00:28:56,840
Bereich oder wie Java, wo dann 
immer erstmal versucht wird, 

557
00:28:56,840 --> 00:28:59,160
weil wir haben ja die Expertise 
dafür im Haus und ich find das 

558
00:28:59,160 --> 00:29:02,640
darf man auch nicht. 
Missachten, das muss man okay 

559
00:29:02,640 --> 00:29:04,560
wenn wir jetzt irgendwie sagen, 
hey, wir bauen jetzt keine 

560
00:29:04,560 --> 00:29:07,360
Ahnung, diese kleine serverless 
function, die ganz kurz 

561
00:29:07,360 --> 00:29:09,480
hochfahren und eine Message 
bearbeiten und dann wieder 

562
00:29:09,480 --> 00:29:13,720
runterfahren soll mit Java, weil
da haben wir die Expertise im 

563
00:29:13,720 --> 00:29:15,120
Haus. 
Vielleicht ist aber gar nicht, 

564
00:29:15,120 --> 00:29:17,280
dass das richtige Framework, 
weil das gar nicht, weil das 

565
00:29:17,280 --> 00:29:21,800
viel langsamer vielleicht 
startet als als jetzt vielleicht

566
00:29:21,800 --> 00:29:24,800
jetzt irgendwie eine kleine Go 
oder Rust Anwendung macht. 

567
00:29:25,480 --> 00:29:27,080
Dann muss man natürlich auch 
irgendwie überlegen. 

568
00:29:27,080 --> 00:29:29,760
Ja, ist das denn wirklich, auch 
wenn wir da so viel Erfahrung 

569
00:29:29,760 --> 00:29:31,440
mit haben und auch wenn wir 
damit irgendwie, wenn das der 

570
00:29:31,440 --> 00:29:33,480
Hammer ist, mit dem wir all 
unsere Nägel oder all so 

571
00:29:33,480 --> 00:29:36,400
Probleme, die wie Nägel 
aussehen, reinschauen, 

572
00:29:38,720 --> 00:29:44,600
reinhauen, nicht reinschauen, 
ist es dann brauchen wir denn 

573
00:29:44,600 --> 00:29:46,560
diesmal wirklich einen Hammer 
oder gucken wir uns das Problem 

574
00:29:46,560 --> 00:29:49,800
noch mal genau an und das sehe 
ich vor allem in so größeren 

575
00:29:49,800 --> 00:29:52,480
Unternehmen, wo ist ja auch 
sinnvoll, ist das irgendwie, 

576
00:29:52,480 --> 00:29:54,920
dass da nicht 45 verschiedene 
Programmiersprachen rumschwirren

577
00:29:54,920 --> 00:29:57,280
und. 
Aber gerade bei so Tools und und

578
00:29:57,280 --> 00:29:59,440
und Frameworks, die dann 
irgendwie alle Probleme lösen 

579
00:29:59,440 --> 00:30:02,800
sollen, hilft es glaube ich, 
dass man sowas vor allem das 

580
00:30:02,800 --> 00:30:06,320
Problem und die Technologie kurz
kurz kritisch evaluiert 

581
00:30:06,320 --> 00:30:11,280
gegeneinander stellt und sagt 
Okay wir haben diesen Hammer im 

582
00:30:11,280 --> 00:30:12,960
Haus, aber ist das überhaupt 
Nagel? 

583
00:30:13,040 --> 00:30:16,000
Und ich glaube, dass das hilft, 
aber man sieht's wirklich oft, 

584
00:30:16,240 --> 00:30:18,160
dass man alles versucht mit 
diesem einen Tool, mit dieser 

585
00:30:18,160 --> 00:30:19,880
einen Programmiersprache, mit 
diesem einen Framework, diese 

586
00:30:19,880 --> 00:30:25,760
einen Library zu lösen. 
Dann haben wir noch 2 letzte 

587
00:30:25,760 --> 00:30:28,920
Anti Patterns hier auf unserer 
Liste, die ich gerne mit dir 

588
00:30:28,920 --> 00:30:31,680
besprechen würde, weil ich 
einfach die Namen toll finde. 

589
00:30:31,920 --> 00:30:38,240
Zum einen Lavaflow, also ein 
Fluss von Lava und den den Boat 

590
00:30:38,240 --> 00:30:43,440
Anker, also den Anker des Bootes
und vielleicht erzählst du mir 

591
00:30:43,440 --> 00:30:46,160
gleich noch mal ein bisschen was
zu dem Boat Anker, aber ich 

592
00:30:46,160 --> 00:30:48,960
finde einfach diesen Lavafluss 
so toll, weil er eigentlich. 

593
00:30:49,400 --> 00:30:52,640
Genau das beschreibt, was wir in
der Realität ganz häufig im 

594
00:30:52,640 --> 00:30:53,920
Rahmen der Softwareentwicklung 
sehen. 

595
00:30:53,920 --> 00:30:57,200
Wir haben irgendwie einen Fluss 
von Code, der tut etwas, er 

596
00:30:57,200 --> 00:30:59,920
fließt in die richtige Richtung,
aber irgendwann erkaltet der und

597
00:30:59,920 --> 00:31:04,040
dann haben wir toten Code, das 
bedeutet, Wir haben Bestandteile

598
00:31:04,040 --> 00:31:06,840
in unserer Software, die einfach
nicht mehr gebraucht werden, wir

599
00:31:06,840 --> 00:31:09,880
haben irgendwie neue 
Funktionalitäten gebaut, wir 

600
00:31:09,880 --> 00:31:12,880
haben Refactoring betrieben, 
aber ganz häufig bleiben 

601
00:31:12,880 --> 00:31:16,080
bestimmte Code Bestandteile 
zurück und. 

602
00:31:16,440 --> 00:31:19,200
Bis auf wenige Leute wissen 
vielleicht viele gar nicht mehr,

603
00:31:19,200 --> 00:31:21,080
dass dieser Code in meiner 
Anwendung gar nicht mehr 

604
00:31:21,080 --> 00:31:23,360
ausgeführt wird. 
Das heißt, den Schlepp ich dann 

605
00:31:23,360 --> 00:31:28,200
vielleicht über viele Jahre noch
mit und niemand weiß mehr, was 

606
00:31:28,200 --> 00:31:30,280
dieser Code tut und dass dieser 
Code eigentlich gar nicht mehr 

607
00:31:30,280 --> 00:31:32,440
in meiner Anwendung ausgeführt 
wird, aber. 

608
00:31:32,520 --> 00:31:36,480
Aber er bläht meine Anwendung 
auf und kann natürlich auch das 

609
00:31:36,480 --> 00:31:39,800
Risiko bergen, dass er dann 
irgendwann wieder von anderen 

610
00:31:39,800 --> 00:31:42,320
Leuten in Betrieb genommen wird 
und dann irgendwelche 

611
00:31:42,320 --> 00:31:44,120
Sicherheitslücken wieder 
reinkommen, die vielleicht 

612
00:31:44,120 --> 00:31:46,480
eigentlich in den letzten Jahren
gar nicht relevant waren. 

613
00:31:46,640 --> 00:31:49,080
Und das kann auch zum Beispiel 
auskommentierter Code sein, den 

614
00:31:49,080 --> 00:31:52,320
man mal schnell rausgenommen 
hat, um was zu testen und der 

615
00:31:52,480 --> 00:31:54,000
wird dann einfach immer 
mitgenommen. 

616
00:31:54,480 --> 00:31:58,520
Und ich glaube, ein Alarmsignal 
ist immer, wenn irgendjemand, 

617
00:31:58,520 --> 00:32:02,240
der jetzt schon einige Zeit auf 
dem Projekt war, dann im Team 

618
00:32:02,240 --> 00:32:06,080
fragt, sagt man, was macht 
eigentlich der Code und warum, 

619
00:32:06,080 --> 00:32:07,840
warum haben wir den überhaupt in
unserer Anwendung. 

620
00:32:07,840 --> 00:32:09,760
Das ist natürlich dann immer ein
Alarmsignal. 

621
00:32:09,840 --> 00:32:13,520
Und wenn dann die Rückmeldung 
kommt, ist Fass den besser nicht

622
00:32:13,520 --> 00:32:15,920
an, weil wir wissen seit Jahren 
nicht, warum der in dieser 

623
00:32:15,920 --> 00:32:18,200
Anwendung ist. 
Ich glaube, dann sollten 

624
00:32:18,200 --> 00:32:20,960
wirklich alle Alarmglocken 
losgehen, dass man da einem 

625
00:32:20,960 --> 00:32:24,040
Antipattern folgt im eigenen 
Unternehmen und das. 

626
00:32:24,360 --> 00:32:28,160
Und ich glaube, das ist etwas, 
was wir alle aber auch schon mal

627
00:32:28,160 --> 00:32:29,600
erlebt haben. 
Und ich fand einfach diesen 

628
00:32:29,600 --> 00:32:31,440
Begriff. 
Dieses Lavafluss ist, der 

629
00:32:31,440 --> 00:32:34,560
irgendwann erkaltet, fand ich 
einfach eine schöne Analogie. 

630
00:32:35,040 --> 00:32:37,240
Ja, stell dir vor, du hast 
diesen diesen Lavafluss und da 

631
00:32:37,240 --> 00:32:39,920
schwimmen aber schon so die 
ersten Magmabrocken so drauf mit

632
00:32:39,920 --> 00:32:43,600
rum, die irgendwie gar nicht 
mehr geformt werden können oder 

633
00:32:43,600 --> 00:32:47,840
die keiner mehr mehr verwendet. 
Ich finde es, ich finde es 

634
00:32:47,840 --> 00:32:49,920
drückt sich dann immer aus wenn 
also. 

635
00:32:50,680 --> 00:32:53,160
Es gibt ja diese es. 
Es gibt ja viele Frameworks, die

636
00:32:53,160 --> 00:32:55,800
einem irgendwie schon in der IDE
anzeigen, Hey, die hier die, die

637
00:32:55,840 --> 00:32:57,520
die Funktion die du hier 
geschrieben hast, die wird gar 

638
00:32:57,520 --> 00:33:00,960
nicht verwendet, da denkt man ja
immer okay dann nehme ich die 

639
00:33:00,960 --> 00:33:02,720
natürlich raus, wenn die nicht 
verwendet wird. 

640
00:33:05,000 --> 00:33:08,720
Jetzt gibt's aber auch oft in so
einer IDE dann halt nicht mehr 

641
00:33:08,720 --> 00:33:11,520
die Möglichkeit, dass ich sage, 
ja die Funktion, die wird 

642
00:33:11,520 --> 00:33:14,480
vielleicht verwendet in der 
Funktion hast du aber irgendwo 

643
00:33:14,480 --> 00:33:19,200
so eine IF Else Abzweigung und 
da drin ist Code, der wurde seit

644
00:33:19,280 --> 00:33:22,480
15 Jahren nicht mehr aufgerufen,
weil das trackt man ganz ganz 

645
00:33:22,480 --> 00:33:24,160
oft irgendwie nicht in 
Produktion und dann auch dann 

646
00:33:24,160 --> 00:33:25,920
weiß man ja nicht ob der nicht 
vielleicht für diesen einen 

647
00:33:25,920 --> 00:33:29,000
Alarm Anwendungsfall ist, der 
vielleicht zum Glück 15 Jahre 

648
00:33:29,000 --> 00:33:30,800
lang nicht aufgerufen würde, 
aber trotzdem noch irgendwie 

649
00:33:30,800 --> 00:33:34,720
super sicher ist und. 
Das ist natürlich relativ 

650
00:33:34,720 --> 00:33:38,000
schwierig, dann solchen Code zu 
erkennen, viel einfacher zu 

651
00:33:38,000 --> 00:33:40,240
erkennen finde ich halt auch das
Beispiel, was du gerade gemacht 

652
00:33:40,240 --> 00:33:42,120
hast. 
Auskommentierter Code, da bin 

653
00:33:42,120 --> 00:33:44,440
ich wirklich fast schon 
allergisch drauf, wenn man 

654
00:33:44,440 --> 00:33:47,160
irgendwo in einem in einem 
polyquest Review oder generell 

655
00:33:47,160 --> 00:33:51,840
irgendwo in einer Codebase große
Stellen oder überhaupt Stellen 

656
00:33:52,080 --> 00:33:53,560
von auskommentiertem Code 
findet. 

657
00:33:53,560 --> 00:33:56,160
Ich finde aus Code 
auszukommentieren ist nur eine 

658
00:33:56,160 --> 00:34:00,200
Technik für lokale Entwicklung, 
wenn ich Code nicht in meinem 

659
00:34:00,200 --> 00:34:03,080
Reportory oder in meinem. 
Bei meinem Endprodukt haben 

660
00:34:03,080 --> 00:34:05,520
möchte, weil er nicht offenbar 
am Endprodukt nicht verwendet 

661
00:34:05,520 --> 00:34:07,880
wird, weil er ist ja 
auskommentiert und ich sag ja, 

662
00:34:08,080 --> 00:34:09,440
vielleicht brauch ich dann aber 
noch, vielleicht muss ich da 

663
00:34:09,440 --> 00:34:12,719
aber auch irgendwas mal wieder 
reverten oder ich hab hier schon

664
00:34:12,719 --> 00:34:15,320
mal was angefangen, das ist aber
noch nicht fertig, deswegen hab 

665
00:34:15,320 --> 00:34:18,719
ich es erstmal auskommentiert 
das gehört nicht in den Code. 

666
00:34:19,239 --> 00:34:21,199
Also reverton. 
Dafür gibt es git. 

667
00:34:21,280 --> 00:34:23,400
Wenn ich mir angucken möchte, 
wie war dieser Code vor 

668
00:34:23,400 --> 00:34:25,679
irgendwie in n paar Klassen wenn
ich sage OK ich habe aber so 

669
00:34:25,679 --> 00:34:28,560
viel umgebaut, dass das in Git 
wahnsinnig umständlich ist, 

670
00:34:28,719 --> 00:34:31,080
gehört das auf nen separaten 
Branch, dann kann man einen 

671
00:34:31,080 --> 00:34:33,760
Branch machen wo man sagt OK das
ist ja unsere Legacy Code 

672
00:34:33,760 --> 00:34:36,000
Version, den halten wir einfach 
ne Zeit lang am Lebenden muss 

673
00:34:36,000 --> 00:34:38,000
man natürlich auch irgendwann 
löschen, sonst wird auch der zu 

674
00:34:38,000 --> 00:34:40,480
Magma in diesem Lava in diesem 
Lavastrom. 

675
00:34:41,080 --> 00:34:43,000
Und wenn man Feature angefangen 
hat, das ist aber noch noch 

676
00:34:43,000 --> 00:34:46,320
nicht ganz fertig, gehört auch 
das auf einen Feature Brunch und

677
00:34:46,320 --> 00:34:48,400
der wird dann erst reingemergt 
wenn das fertig ist. 

678
00:34:48,400 --> 00:34:51,679
Aber ich finde ne Codebasis 
aufzublähen, vor allem mit 

679
00:34:51,679 --> 00:34:54,560
auskommentiertem Code ist n 
riesen antipatter. 

680
00:34:55,679 --> 00:34:58,080
Ich glaube, da gehört halt vor 
allem Erfahrung zu. 

681
00:34:58,080 --> 00:35:00,240
Und du hattest ja auch vorhin 
schon mal gesagt, viele dieser 

682
00:35:00,240 --> 00:35:03,840
Dinge, die passieren, vor allen 
Dingen, wenn man relativ junior 

683
00:35:03,840 --> 00:35:06,200
ist und gerade das, was du 
gerade beschrieben hattest mit 

684
00:35:06,200 --> 00:35:09,160
dem auskommentierten Code, so 
gerade wenn man im Studium ist 

685
00:35:09,160 --> 00:35:11,600
oder gerade vielleicht aus der 
Ausbildung rauskommt, dann 

686
00:35:11,600 --> 00:35:14,560
verfällt man vielleicht viel 
leichter in so ein Pattern und 

687
00:35:14,560 --> 00:35:16,360
da von nehme ich mich selber 
auch nicht aus. 

688
00:35:16,360 --> 00:35:18,480
Ich habe dann auch irgendwelche 
Projekte gehabt, wo? 

689
00:35:18,880 --> 00:35:21,200
Viel auskommentierter Code ist, 
wo man mal was ausprobiert hat 

690
00:35:21,360 --> 00:35:24,880
und man dann vielleicht gar 
nicht entweder die Möglichkeiten

691
00:35:24,880 --> 00:35:27,320
hat oder dieses Pattern gar 
nicht kennt. 

692
00:35:27,320 --> 00:35:30,080
Zum Beispiel Feature Flags zu 
verwenden, dass man sagt okay 

693
00:35:30,320 --> 00:35:32,600
ich aktiviere diese Funktion, 
die vielleicht noch nicht 

694
00:35:32,600 --> 00:35:34,160
hundertprozentig 
durchimplementiert ist, 

695
00:35:34,160 --> 00:35:37,080
vielleicht dann erst später, 
weil sie vielleicht noch in der 

696
00:35:37,080 --> 00:35:41,120
Beta Phase getestet werden muss 
und solche Themen lernt man 

697
00:35:41,120 --> 00:35:43,320
glaube ich im Laufe der Zeit und
da ist es natürlich auch die 

698
00:35:43,320 --> 00:35:47,920
Verantwortung der Erfahreneren, 
die anderen zu coachen und auch 

699
00:35:47,920 --> 00:35:50,320
im Team einfach darüber. 
Darüber zu sprechen und diese 

700
00:35:51,200 --> 00:35:53,600
Good Practices im Unternehmen zu
etablieren. 

701
00:35:53,720 --> 00:35:56,600
Ich muss natürlich auch dazu 
sagen, dass das, was wir von 

702
00:35:56,600 --> 00:35:58,880
professioneller 
Softwareentwicklung reden, wenn 

703
00:35:58,880 --> 00:36:03,160
ihr in eurem Hobbyprojekt mal 
Code eincheckt, dann werde ich 

704
00:36:03,160 --> 00:36:06,760
euch nicht nachts holen kommen, 
sondern das ist eher, das ist 

705
00:36:07,080 --> 00:36:09,480
natürlich immer für, wenn man in
Teams arbeitet, wenn man 

706
00:36:09,480 --> 00:36:12,000
gemeinsam arbeitet. 
So, und ich habe es gerade ja 

707
00:36:12,000 --> 00:36:16,400
noch erwähnt, ein letztes 
Enterpattern den Boat Anker. 

708
00:36:16,720 --> 00:36:20,480
Was verbirgt sich dahinter? 
Ja, das ist eigentlich sehr, 

709
00:36:20,480 --> 00:36:21,720
sehr ähnlich zu diesem Lava 
Flow. 

710
00:36:21,720 --> 00:36:24,080
Nur weil das in diesem Lava Flow
halt nicht mehr verwendeter Code

711
00:36:24,080 --> 00:36:28,080
ist und ein Boat Anker nennt man
Code, der zwar noch verwendet 

712
00:36:28,080 --> 00:36:31,400
wird, der aber keinen richtigen 
Nutzen mehr für das aktuelle 

713
00:36:31,400 --> 00:36:35,440
Projekt hat oder der eben noch 
aus einer alten Zeit kommt, aber

714
00:36:35,440 --> 00:36:38,400
weiterhin Ressourcen bindet. 
Irgendwie klassisches Beispiel, 

715
00:36:38,400 --> 00:36:41,120
man hat man ist jetzt irgendwie 
hingegangen und hat. 

716
00:36:42,560 --> 00:36:46,560
Auf einmal angefangen, dass 90% 
des Codes eventbasiert ist und 

717
00:36:46,560 --> 00:36:48,680
dann hat man sich irgendwie so 
ein Message Bass oder so ein 

718
00:36:48,680 --> 00:36:50,880
Message Broker keine Ahnung, 
Rabbit MQ oder sowas angebunden 

719
00:36:50,880 --> 00:36:54,320
und dann gibt es aber noch 
hinten diese 10% vom Code die 

720
00:36:54,320 --> 00:36:57,240
das nicht sind die noch nie 
irgendjemand umgebaut hat und 

721
00:36:57,240 --> 00:36:59,200
für diese 10% müssen wir aber 
weiterhin irgendwie eine 

722
00:36:59,200 --> 00:37:02,400
Infrastruktur bereithalten oder 
müssen wir weiterhin irgendwas 

723
00:37:02,400 --> 00:37:06,800
machen oder es gibt immer noch 
irgendwo Code der vielleicht 

724
00:37:06,800 --> 00:37:09,680
auch einfach ein Feature ist 
was? 

725
00:37:11,280 --> 00:37:15,040
Niemanden mehr verwendet, der 
aber intern noch irgendwo 

726
00:37:15,440 --> 00:37:18,480
auftaucht oder wo zumindest in 
der UI noch irgendwie was ist. 

727
00:37:18,480 --> 00:37:20,400
Und wir haben durch unsere 
Analysen gemerkt, dass das aber 

728
00:37:20,400 --> 00:37:24,400
nie verwendet wird, dass es aber
trotzdem immer wieder umgebaut 

729
00:37:24,400 --> 00:37:27,040
werden muss, wenn man auf ne 
neue Framework Version updatet 

730
00:37:27,040 --> 00:37:29,400
oder irgendwas. 
Und da muss man sich, weil wenn 

731
00:37:29,400 --> 00:37:32,640
es ein Feature ist, natürlich in
Absprache mit Projektmanagement 

732
00:37:32,720 --> 00:37:35,080
mit den Product Ownern 
überlegen, ob er dieses Feature 

733
00:37:35,080 --> 00:37:37,840
nicht irgendwann rausnimmt, weil
man sagt, das ist ein Teil des 

734
00:37:37,840 --> 00:37:40,960
Codes, der unverhältnismäßig 
viel. 

735
00:37:41,920 --> 00:37:44,600
Maintenance Aufwand mit sich 
zieht, mit sich schleppt, wieso 

736
00:37:44,600 --> 00:37:46,400
ein Anker halt. 
Daher kommt auch dieser Boot 

737
00:37:46,400 --> 00:37:51,760
Anker als als Name und das in 
keinem Verhältnis mehr da zu dem

738
00:37:51,760 --> 00:37:55,280
steht ja was was für einen 
Nutzen das das bringt uns 

739
00:37:55,280 --> 00:37:57,440
eigentlich immer wieder 
irgendwie stoppt oder wir haben 

740
00:37:57,440 --> 00:38:00,160
hier oder wir können hier ein 
klassischer Boot Anker ist auch 

741
00:38:00,320 --> 00:38:04,080
wir können hier seit einem Jahr 
oder sowas nicht auf die neue 

742
00:38:04,080 --> 00:38:06,720
Version von ich sag jetzt mal 
Angular updaten weil wir diese 

743
00:38:06,720 --> 00:38:09,520
eine Library verwenden und die 
irgendwie schon. 

744
00:38:10,000 --> 00:38:13,400
Die so n bisschen verlassen 
scheint, die noch nicht die neue

745
00:38:13,400 --> 00:38:16,240
Version unterstützt und die hält
uns halt irgendwie mal auf und 

746
00:38:16,240 --> 00:38:17,920
dann kann man sich auch 
überlegen, können wir diese 

747
00:38:17,920 --> 00:38:21,160
Library nicht einfach 
rausschmeißen und ja bitte nicht

748
00:38:21,160 --> 00:38:25,000
selber bauen, aber irgendwie 
nach einer nach einer 

749
00:38:25,000 --> 00:38:27,240
Alternative suchen oder wenn sie
halt wirklich nicht viel macht, 

750
00:38:27,240 --> 00:38:29,240
vielleicht auch irgendwie. 
Wenn man das in wenigen 

751
00:38:29,240 --> 00:38:30,960
Zeilencode kann, irgendwie 
selber bauen oder irgendwie 

752
00:38:30,960 --> 00:38:33,240
schauen, brauchen wir das 
wirklich noch, weil es uns 

753
00:38:33,240 --> 00:38:37,120
einfach immer wieder aufhält, 
auf eine neue Version upzudaten 

754
00:38:37,120 --> 00:38:39,040
zum Beispiel oder sowas. 
Dann spricht man von so einem 

755
00:38:39,040 --> 00:38:42,000
Boot encount, die sollte man aus
seinem Projekt entfernen, weil 

756
00:38:42,000 --> 00:38:44,320
es sonst eben natürlich auch 
Agilität und Geschwindigkeit 

757
00:38:44,320 --> 00:38:46,160
kostet. 
Viele der Themen, über die wir 

758
00:38:46,160 --> 00:38:48,720
gerade gesprochen haben, sind ja
eher so Architektur, 

759
00:38:48,720 --> 00:38:50,920
Entscheidungen oder 
Fehlentscheidungen in der 

760
00:38:50,920 --> 00:38:52,760
Architektur. 
Es gibt aber noch ein paar 

761
00:38:52,760 --> 00:38:55,280
Sachen, die sich konkret auch 
auf. 

762
00:38:55,720 --> 00:38:58,680
Das Coding beziehen Du hast ein 
paar Beispiele rausgesucht, 

763
00:38:58,680 --> 00:39:01,480
sollen wir dann noch mal schnell
durchgehen, bevor wir dann zu 

764
00:39:01,480 --> 00:39:04,000
unseren Learnings kommen? 
Ja, können wir gerne machen. 

765
00:39:04,600 --> 00:39:07,760
Es sind, glaube ich, auch mehr 
so typische so Beginner Sachen 

766
00:39:07,840 --> 00:39:11,200
die die ich viel sehe, aber das 
eine ist es nennt sich Magic 

767
00:39:11,200 --> 00:39:15,360
Numbers oder Magic Strings. 
Das sind vor allem hart gecodete

768
00:39:15,360 --> 00:39:18,440
Strings oder Zahlen im Code, wo 
nachher keiner mehr weiß, wo die

769
00:39:18,440 --> 00:39:20,720
herkommen. 
Ich bin bin immer in einem Code 

770
00:39:20,720 --> 00:39:22,120
Review, ich werde immer 
aufmerksam. 

771
00:39:22,120 --> 00:39:24,400
Eigentlich, wenn irgendwo ein 
String hart gecoded ist. 

772
00:39:24,400 --> 00:39:28,400
Also wenn ich irgendwo 
Anführungszeichen sehe, dann ist

773
00:39:28,400 --> 00:39:31,440
das mit einem Code ist das 
meistens kein gutes Zeichen 

774
00:39:31,600 --> 00:39:38,960
warum weil entweder habe ich 
einen zum Beispiel eine Zahl 

775
00:39:38,960 --> 00:39:41,360
irgendwo die meinen die meinen 
Maximum. 

776
00:39:42,600 --> 00:39:45,960
Von irgendwas darstellt wird 
glaube ich recht komplizierter 

777
00:39:45,960 --> 00:39:47,120
Satz. 
Klassisches Beispiel. 

778
00:39:47,120 --> 00:39:49,720
Ich habe ein Upperlimit, wieviel
Objekte man in meinem Shop in 

779
00:39:49,720 --> 00:39:52,320
den Einkaufswagen legen kann und
irgendwo habe ich eine if 

780
00:39:52,320 --> 00:39:55,000
Abfrage wo ich sage wenn die 
Items höher als und dann habe 

781
00:39:55,000 --> 00:39:58,040
ich hier hart gecoatet die 
zahlen 99 sind, dann möchte ich 

782
00:39:58,040 --> 00:40:01,360
irgendwas machen und in 2 Jahren
weiß keiner mehr warum 99. 

783
00:40:01,800 --> 00:40:03,600
Also man kann sich aus dem Code 
noch irgendwie erschließen. 

784
00:40:03,600 --> 00:40:06,880
Das scheint irgendwie nen Limit 
zu sein, aber ist das weil 

785
00:40:07,120 --> 00:40:10,240
unsere Datenbank da sonst nicht 
nicht nicht mehr kann oder warum

786
00:40:10,240 --> 00:40:14,440
99 und nicht 98? 
Was heißt denn diese 99 und die 

787
00:40:14,440 --> 00:40:17,680
Lösung hier ist irgendwo 
entweder in der gleichen Klasse 

788
00:40:17,680 --> 00:40:20,200
oder irgendwo ganz zentral ne 
Konstante zu definieren. 

789
00:40:20,200 --> 00:40:24,320
Diese Konstante nennt man dann 
keine Ahnung, Shopping Card 

790
00:40:24,320 --> 00:40:27,120
Upper Limit. 
Und die setzt man auf 99 und im 

791
00:40:27,120 --> 00:40:31,280
Code sehe ich dann, wenn die 
Anzahl der Items größer ist als 

792
00:40:31,280 --> 00:40:35,440
Shopping Card Upperlimit ah OK, 
das ist das Maxlimit was unser 

793
00:40:35,600 --> 00:40:40,160
was was unser Einkaufswagen 
haben kann und das gleiche wie 

794
00:40:40,160 --> 00:40:42,120
mit irgendwelchen Strings, wenn 
irgendwelche, selbst wenn 

795
00:40:42,120 --> 00:40:44,600
irgendwelche Titel oder jetzt 
gerade in der KI Entwicklung 

796
00:40:44,600 --> 00:40:47,000
damit ich das Wort auch noch mal
gesagt habe, irgendwelche 

797
00:40:47,440 --> 00:40:49,120
Prompts irgendwo halt gekotet 
werden, die gehören 

798
00:40:49,120 --> 00:40:51,600
wahrscheinlich irgendwo an eine 
zentrale Stelle damit ich weiß 

799
00:40:51,600 --> 00:40:55,120
wo habe ich die alle definiert, 
wo habe ich die angepasst also 

800
00:40:55,760 --> 00:40:59,600
hart gecodete zahlen oder 
Strings nennt man Regel Magic 

801
00:40:59,600 --> 00:41:03,520
Numbers idealerweise vermeiden, 
wenn man sie braucht irgendwo 

802
00:41:03,520 --> 00:41:06,000
eine Konstante definieren oder 
Sie zum Beispiel ohne 

803
00:41:06,000 --> 00:41:08,880
Environment Variable festlegen, 
dass man sie eben auch von außen

804
00:41:09,040 --> 00:41:12,560
verändern kann. 
Ein zweites Coding Anti Pattern,

805
00:41:12,560 --> 00:41:16,720
was ich oft sehe, ist, dass 
Objekte zu oft simplifiziert 

806
00:41:16,720 --> 00:41:20,160
werden, also man nennt das 
irgendwie primitive Obsession im

807
00:41:20,160 --> 00:41:25,040
im Englischen was meint das? 
Dass primitive Datentypen wie 

808
00:41:25,040 --> 00:41:28,480
Strings und integer zu oft für 
was missbraucht werden, was sie 

809
00:41:28,480 --> 00:41:29,760
nicht sind. 
Also es gibt dieses klassische 

810
00:41:29,760 --> 00:41:33,600
Beispiel, dass ne Postleitzahl 
nie n integer ist, weil die auch

811
00:41:33,600 --> 00:41:36,480
mit 0 zum Beispiel anfangen 
kann, aber. 

812
00:41:37,080 --> 00:41:39,840
Ganz eigentlich ist eine 
Postleitzahl auch kein String, 

813
00:41:40,080 --> 00:41:42,080
weil eine Postleitzahl, weil ein
String halt einfach ist. 

814
00:41:42,080 --> 00:41:44,720
Ich bin eine Zeichenkette und 
eine Postleitzahl ist keine 

815
00:41:44,720 --> 00:41:47,120
Zeichenkette, die hat eine ganz 
bestimmte Begrenzung. 

816
00:41:47,120 --> 00:41:48,960
Die hat zum Beispiel darf zum 
Beispiel nur eine bestimmte 

817
00:41:48,960 --> 00:41:52,800
Anzahl von Zeichen lang sein 
oder auch eine Adresse ist 

818
00:41:52,800 --> 00:41:55,040
eigentlich nicht in einem String
zu speichern, sondern Adresse 

819
00:41:55,040 --> 00:41:58,720
bricht sich runter auf 
Einestraße, auf eine Hausnummer,

820
00:41:59,040 --> 00:42:02,000
die auch kein integer ist, weil 
sie auf 15 a sein kann. 

821
00:42:03,120 --> 00:42:07,200
Auf eine Postleitzahl, dann 
wieder auf einen, auf auf eine 

822
00:42:07,200 --> 00:42:11,440
Stadt oder einen Ort und so 
weiter und gerade wenn man 

823
00:42:11,440 --> 00:42:15,600
sieht, dass man irgendwie jetzt 
eine eine Klasse, um bei diesem 

824
00:42:16,240 --> 00:42:18,640
um bei diesem E Commerce 
Beispiel zu bleiben, Bestellung 

825
00:42:18,640 --> 00:42:20,280
hat. 
Und da hab ich in der in der 

826
00:42:20,280 --> 00:42:22,400
Bestellung einen String für 
Adresse, einen String für 

827
00:42:22,400 --> 00:42:24,800
Postleitzahl und so weiter dann 
ist das wahrscheinlich auch n 

828
00:42:24,800 --> 00:42:27,760
Zeichen, dass ich das mal in n 
eigenes Objekt runterbreche, was

829
00:42:27,760 --> 00:42:29,600
ich dann auch wieder testen kann
wo ich sagen kann ich hab nen 

830
00:42:29,600 --> 00:42:31,040
Test. 
Ich kann gucken ob man da eine 

831
00:42:31,040 --> 00:42:34,080
Adresse valide ist, weil es 
keine eigene Adressklasse gibt, 

832
00:42:34,400 --> 00:42:37,840
wo die Objekte eben drin sind. 
Also eine Adresse ist kein 

833
00:42:37,840 --> 00:42:40,560
String, eine Adresse ist 
wahrscheinlich ein komplexeres 

834
00:42:40,560 --> 00:42:43,000
Objekt. 
Und so ist es ganz oft so, dass 

835
00:42:43,000 --> 00:42:45,360
ich meine Anwendung 
wahrscheinlich komplexe Objekte 

836
00:42:45,360 --> 00:42:48,080
habe, die ich aber irgendwie in 
Integers oder vor allem in 

837
00:42:48,080 --> 00:42:53,200
Strings, Speicher und das, wenn 
man es ganz sauber programmiert,

838
00:42:53,760 --> 00:42:56,560
gilt es wie alle anderen Anti 
Patterns auch, die wir hier 

839
00:42:56,560 --> 00:43:01,360
genannt haben, zu vermeiden. 
Dann lass uns kurz noch darüber 

840
00:43:01,360 --> 00:43:04,080
sprechen, wie kann ich diese 
Anti Patterns vermeiden 

841
00:43:04,080 --> 00:43:07,600
beziehungsweise wie kann ich sie
identifizieren und dann letzten 

842
00:43:07,600 --> 00:43:10,800
Endes auch aus meiner Software 
rausbekommen. 

843
00:43:11,120 --> 00:43:14,080
Und ein Thema hatte ich gerade 
schon so am Rande erwähnt. 

844
00:43:14,200 --> 00:43:17,560
Man muss voneinander lernen, man
muss gemeinsam lernen und auch 

845
00:43:17,560 --> 00:43:21,600
die erfahreneren müssen denen, 
die relativ neu im Unternehmen 

846
00:43:21,600 --> 00:43:24,480
sind oder relativ frisch in der 
Softwareentwicklung natürlich 

847
00:43:24,480 --> 00:43:28,400
etwas beibringen, und das 
erfolgt in der Regel über Code 

848
00:43:28,400 --> 00:43:31,360
Reviews oder per Programming. 
Wir haben über beides schon mal 

849
00:43:31,360 --> 00:43:34,320
in der Vergangenheit auch in 
verschiedenen Folgen gesprochen,

850
00:43:34,320 --> 00:43:36,080
könnt ihr entsprechend 
nachhören. 

851
00:43:36,560 --> 00:43:40,560
Und da kommt es natürlich drauf 
an, auch mit einer Kultur zu 

852
00:43:40,560 --> 00:43:43,200
arbeiten, wo man jetzt keine 
Anschuldigungen in den Raum 

853
00:43:43,200 --> 00:43:45,680
wirft und den Leuten das Gefühl 
vermittelt, dass sie irgendwie 

854
00:43:45,760 --> 00:43:47,480
dumm sind und sich nicht 
auskennen, sondern wirklich 

855
00:43:47,480 --> 00:43:50,760
konstruktiv zusammenzuarbeiten 
und auch dann den Kolleginnen 

856
00:43:50,760 --> 00:43:52,960
und Kollegen zu erklären, 
welchem. 

857
00:43:53,720 --> 00:43:57,560
Vielleicht vermeintlich einfach 
ein Lösungsweg sie da gefolgt 

858
00:43:57,560 --> 00:44:01,160
sind, der aber nach hinten raus 
mehr Probleme als Lösungen 

859
00:44:01,160 --> 00:44:03,240
bietet. 
Und ich glaube da ist ganz 

860
00:44:03,240 --> 00:44:06,320
wichtig, dass man das auch in 
der entsprechenden Art und Weise

861
00:44:06,320 --> 00:44:08,320
an die Kolleginnen und Kollegen 
kommuniziert da. 

862
00:44:08,560 --> 00:44:10,880
Darf man auch gar nicht böse 
sein, da muss man fast schon 

863
00:44:10,880 --> 00:44:14,440
dankbar sein, wenn da jemand 
einen Code Review von so einem 

864
00:44:14,440 --> 00:44:17,160
Pol Quest drauf hinweist. 
Ich finde das die Kultur muss 

865
00:44:17,160 --> 00:44:20,240
man schon irgendwie schaffen. 
Genauso wie man eine Kultur 

866
00:44:20,240 --> 00:44:23,480
schaffen muss, wo Refactorings 
an der Tagesordnung stehen oder 

867
00:44:23,480 --> 00:44:26,160
wo man sich auch immer mal 
wieder in einem Sprint Zeit 

868
00:44:26,160 --> 00:44:30,080
nimmt, Legacy Code zu refactern 
oder zu evaluieren, ob man 

869
00:44:30,080 --> 00:44:32,600
diesen Code noch braucht, um 
eben diese diese Lavaströme und 

870
00:44:32,600 --> 00:44:37,040
Boot Anker zu vermeiden und 
natürlich viel Kommunikation im 

871
00:44:37,040 --> 00:44:41,360
Team man nicht irgendwie davon 
ausgehen, dass alle alle Coding 

872
00:44:41,360 --> 00:44:44,000
Patterns und alle Anti Patterns 
kennen, sondern sich eben 

873
00:44:44,000 --> 00:44:47,360
gegenseitig. 
Freundlich darauf hinweisen und 

874
00:44:47,360 --> 00:44:49,200
dann gemeinsam lernen oder 
vielleicht auch gemeinsam mal 

875
00:44:49,200 --> 00:44:52,600
irgendwo definieren, was was, 
was man im Team verwendet oder 

876
00:44:52,600 --> 00:44:57,080
was man im Team präferiert, so 
ein bisschen ähnlich wie wir 

877
00:44:57,080 --> 00:44:59,120
hatten mal so eine Folge zu 
Coding Styles gemacht, wo wir 

878
00:44:59,120 --> 00:45:01,680
auch sagen am besten einheitlich
eben. 

879
00:45:03,440 --> 00:45:06,280
Und wenn ihr jetzt das Gefühl 
habt, bei euch im Unternehmen 

880
00:45:06,280 --> 00:45:09,360
oder in euren Projekten kommt. 
Kommen wir immer wieder in 

881
00:45:09,360 --> 00:45:12,480
solche Anti Patterns, dann 
überlegt euch auch, ob ihr 

882
00:45:12,480 --> 00:45:15,360
vielleicht strukturierte 
Weiterbildung braucht in eurem 

883
00:45:15,360 --> 00:45:20,400
Team oder in eurem Unternehmen, 
wo ihr über positive Design 

884
00:45:20,400 --> 00:45:24,160
Patterns und 
Architekturprinzipien lernt und 

885
00:45:24,160 --> 00:45:26,280
wo dann auch diejenigen, die 
vielleicht noch nicht so viel 

886
00:45:26,280 --> 00:45:28,920
Erfahrung haben, auch mal 
strukturiert an solche Themen 

887
00:45:28,920 --> 00:45:31,680
herangeführt werden. 
Natürlich kann man viel per 

888
00:45:31,680 --> 00:45:33,920
Learning by doing und man kann 
sich von den Kolleginnen und 

889
00:45:33,920 --> 00:45:36,400
Kollegen was abschauen. 
Aber manchmal sind tatsächlich 

890
00:45:36,400 --> 00:45:39,760
auch Trainings nicht verkehrt. 
Das heißt, wenn ihr uns zuhört 

891
00:45:39,760 --> 00:45:42,280
und ihr seid irgendwie 
Development lead und habt das 

892
00:45:42,280 --> 00:45:44,880
Gefühl, sowas tritt bei mir im 
Unternehmen immer wieder auf, 

893
00:45:45,760 --> 00:45:48,640
besorgt euch vielleicht auch das
Budget, wenn ihr intern das 

894
00:45:48,640 --> 00:45:51,480
wissen nicht habt, um auch mal 
externe Trainer reinzuholen und 

895
00:45:51,480 --> 00:45:53,160
da vielleicht auch mal einen 
Workshop zuzumachen. 

896
00:45:53,160 --> 00:45:56,880
Natürlich gibt es online 
unbegrenzt viel Material zu 

897
00:45:56,880 --> 00:45:59,960
diesen ganzen. 
Themen Software Design Patterns 

898
00:45:59,960 --> 00:46:03,200
und Architekturprinzipien Wir 
werden auch in den Show Notes 

899
00:46:03,200 --> 00:46:07,040
noch ein paar Bücher verlinken, 
gerade zu den Themen, die wir 

900
00:46:07,040 --> 00:46:09,920
heute besprochen haben, aber 
wenn ihr merkt, wir haben 

901
00:46:09,920 --> 00:46:13,040
wirklich immer wieder Probleme, 
scheut euch nicht davor, auch 

902
00:46:13,200 --> 00:46:16,640
externe Expertise mal 
reinzuholen, das zahlt sich am 

903
00:46:16,640 --> 00:46:20,480
Ende eigentlich immer aus. 
Ja, genau. 

904
00:46:20,480 --> 00:46:22,880
Also ich glaube diese ne, wir 
haben eben über Kultur 

905
00:46:22,880 --> 00:46:25,560
gesprochen, so eine Learning 
Kultur ist auch ganz wichtig, 

906
00:46:25,560 --> 00:46:27,880
die muss natürlich auch bis ins 
Management hoch unterstützt 

907
00:46:27,880 --> 00:46:31,760
sein, weil wie man gerade sagt 
Ne hier der Podcast ist umsonst.

908
00:46:31,760 --> 00:46:33,280
Den könnt ihr natürlich auch 
hören, das ist natürlich 

909
00:46:33,280 --> 00:46:35,400
hoffentlich auch Teil von ein 
bisschen Weiterbildung, 

910
00:46:35,400 --> 00:46:39,120
vielleicht für den einen oder 
oder die andere, aber gerade so 

911
00:46:39,120 --> 00:46:41,560
Trainings wir kennen auch ein 
paar Trainer, also wenn ihr 

912
00:46:41,560 --> 00:46:43,840
irgendwie sagt Hey habe ich gar 
keine Ahnung, schreibt uns 

913
00:46:43,840 --> 00:46:45,520
einfach gerne mal. 
Es gibt eine E Mail Adresse und 

914
00:46:45,520 --> 00:46:48,560
in der Beschreibung dann. 
Sprechen wir gerne ein paar 

915
00:46:48,560 --> 00:46:51,560
Empfehlungen aus, gerade für so 
so Softwarearchitektur und Clean

916
00:46:51,560 --> 00:46:55,040
Code beim Wort Clean Code muss 
ich aber natürlich auch immer an

917
00:46:55,040 --> 00:46:58,320
das an das Buch von Robert C. 
Martin denken, das Clean Code 

918
00:46:58,320 --> 00:47:01,120
heißt und da wird glaube ich auf
den ersten Seiten sogar, wenn 

919
00:47:01,120 --> 00:47:04,520
ich mich richtig erinnere, 
erstmal beschrieben, warum warum

920
00:47:04,520 --> 00:47:06,880
denn überhaupt clean Code und 
was was kostet es vor allem das 

921
00:47:06,880 --> 00:47:09,120
nicht zu haben. 
Also das ist ein Buch was man 

922
00:47:09,120 --> 00:47:12,240
irgendwie in jedem Office mal 
ins Regal stellen kann, das. 

923
00:47:12,760 --> 00:47:14,840
Da geht es um, wie man sauberen 
Wartbaren Code schreibt und 

924
00:47:14,840 --> 00:47:18,200
typische Fehler vermeidet. 
Denn ganz viele Patterns lassen 

925
00:47:18,200 --> 00:47:19,760
sich allein schon dadurch 
vermeiden, dass man die 

926
00:47:19,760 --> 00:47:24,640
positiven, die guten Patterns, 
dass man denen folgt und ja, auf

927
00:47:25,280 --> 00:47:28,560
die kommt man ja nicht einfach 
so, sondern da muss natürlich 

928
00:47:28,560 --> 00:47:32,160
entweder ein Budget oder eine 
Zeit oder so ein Learning Day 

929
00:47:32,160 --> 00:47:34,480
oder eine interne Weiterbildung 
oder man guckt sich irgendwelche

930
00:47:34,480 --> 00:47:37,280
youtube Channels an oder hört 
natürlich Podcasts oder sowas 

931
00:47:37,920 --> 00:47:40,560
und wenn man sich diese Kultur 
hat und da alle auch für offen 

932
00:47:40,560 --> 00:47:43,400
sind. 
Auch sich dem eigenen Code 

933
00:47:43,400 --> 00:47:45,920
gegenüber kritisch mit 
auseinanderzusetzen. 

934
00:47:45,920 --> 00:47:49,120
Dann ist glaube ich, schon viel 
gewonnen. 

935
00:47:49,440 --> 00:47:51,280
Jetzt die Frage auch von unserer
Seite. 

936
00:47:51,280 --> 00:47:54,640
Welche Antipattern seht ihr denn
in der Praxis? 

937
00:47:54,880 --> 00:47:57,160
Schreibt uns gerne eine E Mail 
Robin Manuel hat es gerade 

938
00:47:57,160 --> 00:48:01,040
erwähnt, e Mail Adresse findet 
ihr in den Shownotes auf Spotify

939
00:48:01,040 --> 00:48:04,400
könnt ihr auch direkt zu dieser 
Folge kommentieren, uns würde 

940
00:48:04,400 --> 00:48:08,240
interessieren was begegnet euch 
so, was sind eure Erfahrungen zu

941
00:48:08,240 --> 00:48:11,160
diesem Thema und wie geht ihr 
damit um schreibt. 

942
00:48:11,320 --> 00:48:13,440
Schreibt uns auch gerne auf 
Social Media. 

943
00:48:13,440 --> 00:48:16,400
Wir hatten es am Anfang der 
Folge erwähnt, ihr findet uns 

944
00:48:16,400 --> 00:48:19,440
auf den üblichen Social Media 
Kanälen, dort könnt ihr 

945
00:48:19,440 --> 00:48:22,800
natürlich auch jederzeit unter 
den entsprechenden Shorts, die 

946
00:48:22,800 --> 00:48:25,840
wir da veröffentlichen oder auf 
Youtube unter der ganzen Folge 

947
00:48:26,000 --> 00:48:29,440
kommentieren und uns auch einen 
Einblick in euren Alltag geben. 

948
00:48:30,520 --> 00:48:33,280
Generell gilt, wenn euch die 
Folge gefallen hat und es war ne

949
00:48:33,280 --> 00:48:35,280
lange Folge, wenn ich jetzt 
irgendwie auf die Uhr gucke, ich

950
00:48:35,280 --> 00:48:37,400
glaub außergewöhnlich lang. 
Normalerweise versuchen wir uns 

951
00:48:37,400 --> 00:48:39,360
hier n bisschen girlzer zu 
fassen, aber wir haben auch viel

952
00:48:39,360 --> 00:48:41,160
Content mitgebracht, wir haben 
auch irgendwie viel hier in 

953
00:48:41,160 --> 00:48:45,200
unserem in unserem Notion Board 
gehabt, dann gilt. 

954
00:48:45,640 --> 00:48:47,600
Lasst uns gerne gute Bewertungen
da, wenn es euch gefällt. 

955
00:48:47,600 --> 00:48:52,000
Auf den gängigen Plattformen wie
Apple Podcast und Spotify oder 

956
00:48:52,240 --> 00:48:54,400
wenn ihr sagt Ey, ich würde den 
Jungs gern einen Kaffee ausgeben

957
00:48:54,560 --> 00:48:57,600
für den Podcast, dann freuen wir
uns da auch immer wahnsinnig 

958
00:48:57,600 --> 00:48:58,960
drüber. 
Findet ihr einen Link unten in 

959
00:48:58,960 --> 00:49:02,200
der Beschreibung oder wenn ihr 
zu eurem eigenen Kaffee die 

960
00:49:02,200 --> 00:49:04,720
passende Fan Nerd Tasse haben 
wollt, haben wir auch einen 

961
00:49:04,720 --> 00:49:07,440
kleinen To do Shop, schaut da 
auch gerne vorbei. 

962
00:49:08,240 --> 00:49:11,600
Das war's auch schon wieder. 
Wir hören uns in 2 Wochen 

963
00:49:11,600 --> 00:49:14,960
wieder, denn der To do Cast 
erscheint jeden zweiten Montag 

964
00:49:14,960 --> 00:49:17,800
morgens früh frisch in eurer 
Podcast Inbox, wo auch immer ihr

965
00:49:17,800 --> 00:49:23,200
uns hört, bis dahin hat eine 
tolle Zeit, schreibt viel Code 

966
00:49:23,200 --> 00:49:26,160
unter Beachtung der guten 
Patterns und unter Vermeidung 

967
00:49:26,160 --> 00:49:28,560
der Endlay Patterns, vielleicht 
habt ihr in der Folge ein oder 2

968
00:49:28,560 --> 00:49:31,280
mitgenommen, die noch nicht 
kanntet und dann hören uns in 2 

969
00:49:31,280 --> 00:49:35,280
Wochen wieder, bis dahin macht's
gut und bis ganz bald. 

970
00:49:35,680 --> 00:49:37,040
Bis dahin alles Gute.
