WEBVTT

00:00:00.620 --> 00:00:03.580
Ja, hallihallo, herzlich willkommen zum Python-Podcast.

00:00:04.020 --> 00:00:06.780
Heute haben wir ein Jubiläum und wir haben die zehnte Episode.

00:00:07.080 --> 00:00:08.180
Das ist ja hervorragend, cool, ne?

00:00:08.180 --> 00:00:08.460
Hurra!

00:00:08.700 --> 00:00:09.500
Zehn Stück schon geschafft.

00:00:10.100 --> 00:00:11.580
Ja, und es ist noch eine kleine andere Premiere.

00:00:11.880 --> 00:00:14.240
Und zwar haben wir heute das erste Mal eine Remote-Sitzung,

00:00:14.340 --> 00:00:18.440
einen Studiogast quasi, der nicht bei uns im Garten sitzt.

00:00:19.140 --> 00:00:20.440
Wo sitzt du denn, Christian? Hi!

00:00:21.180 --> 00:00:24.100
Hi, ich sitze, ihr sitzt im Garten.

00:00:24.780 --> 00:00:26.020
Das hat sich gar nicht so angehört.

00:00:26.260 --> 00:00:26.940
Ah, okay.

00:00:27.260 --> 00:00:29.180
Ich gucke in meinem Garten, ich sitze in meinem Homeoffice,

00:00:29.180 --> 00:00:30.280
Ich sitze in der Nähe von Stuttgart.

00:00:31.260 --> 00:00:33.240
Ah ja, diese ganz schöne Remote-Verbindung

00:00:33.240 --> 00:00:35.480
hier von Düsseldorf nach Stuttgart, durch die Heimrepublik.

00:00:36.440 --> 00:00:36.800
Wundervoll.

00:00:37.140 --> 00:00:39.000
Was machen wir heute? Wir machen heute DevOps ein bisschen

00:00:39.000 --> 00:00:40.700
und wie man Python so

00:00:40.700 --> 00:00:42.380
ausschickt.

00:00:43.280 --> 00:00:45.460
Wenn man irgendwie Python-Applikationen

00:00:45.460 --> 00:00:46.880
entwickelt hat, dann möchte man ja auch irgendwie die

00:00:46.880 --> 00:00:48.940
sozusagen dann

00:00:48.940 --> 00:00:51.180
produktiv benutzen können, dass andere Leute die sehen und so

00:00:51.180 --> 00:00:53.320
und dann, genau, muss man da auch noch Dinge tun,

00:00:53.440 --> 00:00:54.720
damit das geht und ja.

00:00:55.560 --> 00:00:57.280
Ja, so ein Zirkus.

00:00:57.280 --> 00:00:58.760
Genau, dann

00:00:58.760 --> 00:01:03.460
Ja, genau, vielleicht

00:01:03.460 --> 00:01:04.300
am besten

00:01:04.300 --> 00:01:07.680
stellst du dich einfach mal vor, Christian, und dann

00:01:07.680 --> 00:01:09.380
genau. Genau.

00:01:09.780 --> 00:01:11.640
Ja, kann ich gerne machen. Also ich bin

00:01:11.640 --> 00:01:13.620
Christian, auch bekannt als Toini.

00:01:14.700 --> 00:01:15.520
Das ist dann auch mein

00:01:15.520 --> 00:01:17.140
Twitter-Handle. Und

00:01:17.140 --> 00:01:19.540
ich müsste mich jetzt eigentlich fast als

00:01:19.540 --> 00:01:21.340
Urgestein in der Python-Szene sozusagen

00:01:21.340 --> 00:01:22.740
bezeichnen.

00:01:23.880 --> 00:01:25.700
Deswegen bist du auch in unserer Jubiläumsausgabe

00:01:25.700 --> 00:01:25.940
dabei.

00:01:27.540 --> 00:01:51.320
Mein Herz wird warm. Ich mache Python jetzt seit 99, glaube ich, in der Größenordnung. Ich weiß sogar, dass ich irgendwann 95, 96 als erstes mal Internet hatte, hat mich in irgendeinem obskuren Chatraum damals, das war noch mit AOL oder so, hat irgendwer schon mal Python gesagt. Insofern, mein frühester Kontakt war, glaube ich, mit 14 oder so.

00:01:53.040 --> 00:02:14.960
Ja, also relativ viel mitgemacht. Ich habe die Python User Group aufgebaut, die ja aus der deutschen SOAP User Group damals hervorgegangen ist. Ich habe lange SOAP gemacht, da Kernentwicklung, viel mit den Amerikanern zusammen, habe mal auf diversen Sprints so um die Jahrtausendwende rum mit Guido rumgemacht. Wir haben irgendwelche komischen SOAP Sachen geschrieben, die heutzutage nicht mehr existieren.

00:02:16.020 --> 00:02:18.820
Der war ja auch bei SOAP bei der Firma irgendwie beschäftigt.

00:02:18.820 --> 00:02:24.480
Genau, genau. Soap hat damals tatsächlich eine ganze Zeit lang die Python-Labs bezahlt.

00:02:25.000 --> 00:02:29.840
Die waren komplett von der Soap über zwei oder drei Jahre bezahlt worden.

00:02:30.240 --> 00:02:34.940
So mit Barry Warsaw, der das Mailman macht und diversen anderen Leuten.

00:02:36.200 --> 00:02:39.660
Genau, nee, und da habe ich also jetzt viel in der Python-Szene gemacht,

00:02:39.740 --> 00:02:44.680
selber Software entwickelt für gute 15 Jahre im Sinne von Anwendungsentwicklung

00:02:44.680 --> 00:02:46.500
und ich mache aber seit Ewigkeiten

00:02:46.500 --> 00:02:48.560
halt auch schon, ja, Serverbetrieb

00:02:48.560 --> 00:02:50.580
nebenbei und die Firma, wo ich jetzt

00:02:50.580 --> 00:02:52.440
bin, die verdient, also die ist

00:02:52.440 --> 00:02:53.380
jetzt auch meine Brötchen,

00:02:53.680 --> 00:02:56.040
aber die lassen wir jetzt hier einfach mal fröhlich

00:02:56.040 --> 00:02:57.420
vor, weil wir keine Werbung haben.

00:02:57.780 --> 00:03:00.400
Bei der Python Software Foundation bist du noch, das hat mich noch ein bisschen interessiert,

00:03:00.500 --> 00:03:02.340
was ihr denn da noch so macht, vielleicht kannst du die noch mal

00:03:02.340 --> 00:03:03.860
kurz so ins Spiel bringen und vorstellen.

00:03:04.580 --> 00:03:06.360
Achso, ja, ich habe ja zwei, also es gibt jetzt sozusagen

00:03:06.360 --> 00:03:08.600
zwei, es gibt den Python Software Verband,

00:03:08.940 --> 00:03:09.960
das ist ein

00:03:09.960 --> 00:03:11.540
deutscher Verein und

00:03:11.540 --> 00:03:13.340
wir fördern

00:03:13.340 --> 00:03:15.620
Python im deutschsprachigen Raum, also

00:03:15.620 --> 00:03:17.540
unter anderem durch

00:03:17.540 --> 00:03:19.220
Veranstaltungen, also die

00:03:19.220 --> 00:03:20.280
PyCon.de,

00:03:20.920 --> 00:03:23.520
die richten wir aus. Ich glaube, die PyData

00:03:23.520 --> 00:03:25.140
ist unter unserem

00:03:25.140 --> 00:03:27.300
Schirm, die wandert aber durch Europa

00:03:27.300 --> 00:03:29.600
und wir haben jetzt seit einem

00:03:29.600 --> 00:03:31.880
Jahr, seit einem guten Jahr, ein Förderprogramm.

00:03:32.160 --> 00:03:33.020
Das ist eigentlich auch was, was man

00:03:33.020 --> 00:03:35.620
in dem Podcast hier mal ganz gut platzieren

00:03:35.620 --> 00:03:36.940
kann, weil

00:03:36.940 --> 00:03:39.500
das Förderprogramm ist im Prinzip dafür da,

00:03:39.500 --> 00:03:41.380
dass mehr Leute in der Community

00:03:41.380 --> 00:03:43.320
mal Sachen ausprobieren, wie sie Python

00:03:43.320 --> 00:03:45.480
in Anführungszeichen unters Volk

00:03:45.480 --> 00:03:47.260
bringen. Besser

00:03:47.260 --> 00:03:49.460
eigentlich eher ausgerichtet an so einem

00:03:49.460 --> 00:03:50.840
Diversity-Gedanken, dass wir

00:03:50.840 --> 00:03:53.080
Python selber ist im Mainstream ja

00:03:53.080 --> 00:03:55.300
präsent und angekommen. Also vor

00:03:55.300 --> 00:03:57.560
fünf Jahren, vor zehn Jahren sah das alles noch ganz anders aus,

00:03:57.640 --> 00:03:59.380
aber heutzutage muss man sich ja nicht rechtfertigen

00:03:59.380 --> 00:04:01.280
dafür, dass man Python verwendet oder

00:04:01.280 --> 00:04:03.380
irgendwo einsetzt, sondern das ist dann eher das, was man unter

00:04:03.380 --> 00:04:05.480
Best Practice, so sehr

00:04:05.480 --> 00:04:06.380
ich dieses Wort hasse,

00:04:07.220 --> 00:04:08.820
abhaken kann und dann ist das irgendwie

00:04:08.820 --> 00:04:11.740
erledigt, das ist Chef-approved.

00:04:13.140 --> 00:04:20.440
In den letzten Auswertungen über den Jahreswechsel, was die Beliebtheit von Programmiersprachen angeht,

00:04:20.520 --> 00:04:25.280
ist Python halt weltweit im Prinzip immer unter den Top 5, wenn nicht sogar auch auf Platz 1.

00:04:25.960 --> 00:04:28.280
Deswegen haben wir vom Python-Software-Verband irgendwann gesagt,

00:04:29.200 --> 00:04:32.840
Python einfach nur an sich zu pushen, das braucht es gerade gar nicht mehr, das läuft.

00:04:33.420 --> 00:04:38.480
Was ich aber spannend fände, ist halt tatsächlich neue Zielgruppen und neue Vernetzungen aufzumachen.

00:04:38.480 --> 00:04:41.080
Also zum einen Leute, die mit bestimmten Spezialthemen zu tun haben.

00:04:41.560 --> 00:04:56.340
Da hat jetzt als ein großes Gewicht, früher war es viel Web, jetzt ist es Data Science, aber tatsächlich halt auch in den Embedded-Bereich, in den Bastel-Bereich, in der Maker-Szene, rüber hin zu anderen Gruppen wie Jugendlichen.

00:04:56.340 --> 00:05:02.020
Denn Diversität zum Thema Frauen in die Informatik ist in Python eh so ein großes Feld.

00:05:02.140 --> 00:05:10.580
Die PyCon US war eine der ersten Konferenzen, die über 30 Prozent Frauenbeteiligung sowohl an den Teilnehmern als auch bei den Vortragenden hatte.

00:05:11.080 --> 00:05:17.900
Und unter diesem Rahmen gibt es in diesem Gedanken, Python halt sozusagen in so viele kleine Nischen auch reinzubringen und nicht nur durch den Mainstream.

00:05:19.460 --> 00:05:26.200
Da gibt es jetzt das Förderprogramm, beziehungsweise gibt es seit einem Jahr und man kann dort zum einen einfach mal kleine Veranstaltungen ausprobieren

00:05:26.200 --> 00:05:36.040
Wenn man sagt, ich würde gerne, da haben wir ein paar Leute, die machen an Schulen immer mal was, wo sie Kindern dann Raspberries oder andere kleinere Embedded-Python-Geräte bei einem Workshop in die Hand drücken.

00:05:36.200 --> 00:05:37.540
Ja, das ist cool, das habe ich sogar auch schon mal gemacht.

00:05:37.980 --> 00:05:42.080
Tatsächlich für Kinderkurse mit dem Raspi und dann in Python mit Minecraft oder so Coden.

00:05:42.660 --> 00:05:43.380
Genau, genau.

00:05:44.400 --> 00:05:50.920
Und was halt schön wäre, wäre, wenn man den Kindern das halt auch mitgeben kann, damit sie dann halt zu Hause weitermachen und nicht nur mit hier hast du mal was und in zwei Stunden ist es wieder weg.

00:05:52.100 --> 00:06:14.800
Und für solche Veranstaltungen sponsern wir dann, ich glaube, so eine Pauschale von 400 Euro pro Veranstaltung, beziehungsweise wir brechen das auch runter auf pro Kopf, pro Kopf gibt es 20 Euro und wenn du abwende 10 Leute hast, kannst du die 400 Euro haben und wir machen das ohne groß Formalismus, da kann man einfach an die E-Mail-Adresse, da gibt es eine, habe ich gerade nicht im Kopf, kann man auf der Webseite nachschlagen.

00:06:14.980 --> 00:06:36.740
Ich sage jetzt mal so schön, wie es beim Podcast immer heißt, findet ihr in den Shownotes, können wir da reinpacken, da schreibt ihr eine E-Mail hin, sagt, was ihr machen wollt und dann wird das im Vorstand innerhalb von ein, zwei Wochen beschlossen und dann geht es los und ihr könnt das Geld kriegen, entweder indem ihr uns ein paar Quittungen schickt oder indem wir einen kleinen Sponsoring-Vertrag machen, dann braucht man nicht über irgendwie Kleingruch-Quittungen zu reden.

00:06:37.180 --> 00:06:58.360
Genau, das ist die eine Variante. Die andere Variante ist noch, dass wir auch größere Veranstaltungen ab 50 Personen sponsern. Das ist dann typischerweise sowas wie die JungleCon-Sponsorware. Da gibt es dann irgendwie 1000 Euro einmal glatt, um anderen Leuten halt den Zugang zu Veranstaltungen zu erleichtern. Das geht dann typischerweise in Financial Aid oder Reisekosten oder irgendwie solche Töpfe.

00:06:59.220 --> 00:07:06.920
Und das dritte, was wir noch sponsern, sind dann tatsächlich auch Feature-Entwicklungen oder allgemeine Entwicklungen für Open-Source-Python-Projekte.

00:07:07.940 --> 00:07:23.660
Wenn ihr sagt, wir wollen mal einen Sprint machen und dafür brauchen wir Reisekosten oder wir wollen es mal am Wochenende wegschließen oder ich würde eigentlich gerne mal zwei Tage was machen, aber dann habe ich irgendwie Arbeitsausfall, weil ich keinen Urlaub dafür nehmen kann, dann gibt es dafür Projekte für jede Aktion 500 Euro.

00:07:27.840 --> 00:07:53.580
Genau, und die verteilen wir jetzt. Das ist so ein bisschen nämlich das Thema, wir haben über den Verband halt die Möglichkeit, über Sponsoren und über alles andere eben Geldmittel einzusammeln und haben gesagt, naja, wir wollen jetzt eigentlich, dass die Leute, die in der Community aktiv sind und gerade das Thema Sustainability ist ja auch so ein großes Ding, da wollen wir jetzt nicht, dass die Leute, die Zeit mitbringen, auch noch das Geld mitbringen, sondern dass man das ein bisschen einfach nur als, man nimmt den Leuten ein bisschen Druck weg und lässt sie halt experimentieren.

00:07:54.240 --> 00:07:56.260
mehr Dinge ausprobieren, mehr schauen,

00:07:56.320 --> 00:07:57.560
was funktioniert, was funktioniert nicht

00:07:57.560 --> 00:08:00.060
und ganz ohne den Druck sich irgendwie

00:08:00.060 --> 00:08:02.100
rechtfertigen zu müssen, ob das jetzt wirtschaftlich war oder nicht.

00:08:03.360 --> 00:08:04.280
Klingt super, klingt echt

00:08:04.280 --> 00:08:06.040
toll. Das macht ja echt viel

00:08:06.040 --> 00:08:08.180
Lust, das klingt echt interessant. Also bestimmt

00:08:08.180 --> 00:08:10.140
noch ein paar Interessenten, die das

00:08:10.140 --> 00:08:12.180
zu schätzen wüssten. Genau, definitiv. Also gerade bei

00:08:12.180 --> 00:08:14.420
den Entwicklungs

00:08:14.420 --> 00:08:16.060
Sponsorings ist die

00:08:16.060 --> 00:08:18.120
Soap-Plone-Welt irgendwie sehr

00:08:18.120 --> 00:08:19.540
stark, weil die halt in der ganzen

00:08:19.540 --> 00:08:22.180
Vereins-Community sehr stark vertreten ist.

00:08:22.440 --> 00:08:24.120
Die machen halt viel so Sprints, wo sie

00:08:24.120 --> 00:08:26.100
sich treffen, wo sie halt an

00:08:26.100 --> 00:08:28.280
den Open-Source-Projekten entwickeln

00:08:28.280 --> 00:08:30.220
und die fordern

00:08:30.220 --> 00:08:32.160
das immer mal ein, die muss man eher mal

00:08:32.160 --> 00:08:34.140
bremsen. Dummerweise haben wir niemanden anders,

00:08:34.240 --> 00:08:36.120
auf den wir zeigen können mit, hier, die rufen auch Geld

00:08:36.120 --> 00:08:37.240
ab, aber komm, nicht dran.

00:08:38.060 --> 00:08:39.980
Momentan ist es echt so, dass wir uns eigentlich wünschen würden, dass

00:08:39.980 --> 00:08:42.000
mehr Leute auf uns zukommen, dass wir da mehr Gutes tun können.

00:08:43.120 --> 00:08:44.080
Umgekehrt kann ich natürlich auch

00:08:44.080 --> 00:08:45.840
sagen, jetzt wo ihr wisst, was der

00:08:45.840 --> 00:08:47.640
Verband mit dem Geld macht,

00:08:48.020 --> 00:08:48.820
werdet Mitglied.

00:08:50.300 --> 00:08:51.900
Euer Geld ist gut angelegt.

00:08:53.260 --> 00:08:53.980
Genau, das ist so was,

00:08:54.120 --> 00:08:56.540
so ein bisschen was wie eine organisierte

00:08:56.540 --> 00:09:00.120
Patron-Variante sozusagen dann.

00:09:00.740 --> 00:09:02.560
Aber es ist auch für Unternehmen halt ganz schön.

00:09:03.000 --> 00:09:03.820
Das andere wäre natürlich,

00:09:03.940 --> 00:09:04.780
wenn man sonst sagen kann,

00:09:05.380 --> 00:09:06.900
dann mache ich den Kreis

00:09:06.900 --> 00:09:08.680
mit diesen ganzen Organisationen zu,

00:09:09.000 --> 00:09:11.100
die PSF, die Python Software Foundation,

00:09:11.220 --> 00:09:12.180
das ist die amerikanische,

00:09:13.400 --> 00:09:14.560
wo auch, ich glaube,

00:09:14.640 --> 00:09:17.300
der gehören inzwischen die Copyrights für Python.

00:09:18.000 --> 00:09:19.560
Ich glaube, da sind die hingewandert.

00:09:20.620 --> 00:09:22.580
Die sind natürlich ziemlich groß,

00:09:22.680 --> 00:09:24.460
die haben halt die ganzen Großsponsoren auch,

00:09:24.540 --> 00:09:26.360
die koordinieren halt eher so Sachen mit Google

00:09:26.360 --> 00:09:27.800
und Microsoft etc.

00:09:28.560 --> 00:09:30.300
Die veranstalten ja hauptsächlich auch die große

00:09:30.300 --> 00:09:32.800
PyCon US, haben aber eben auch, die haben auch so ein Förderprogramm

00:09:32.800 --> 00:09:34.380
und da sind wir aber auch dabei

00:09:34.380 --> 00:09:35.480
zuzusehen, dass wir

00:09:35.480 --> 00:09:38.420
die Sachen halt mit koordinieren, dass wir

00:09:38.420 --> 00:09:40.520
dann, wenn jemand sagt, okay, das Förderprogramm,

00:09:40.620 --> 00:09:42.120
was wir haben, das ist eigentlich zu klein,

00:09:42.500 --> 00:09:44.140
ich würde gerne von der PSF noch was holen, dann

00:09:44.140 --> 00:09:45.560
haben wir da halt auch die Kontakte,

00:09:46.140 --> 00:09:48.440
um dann zu sagen, man kennt sich schon und man

00:09:48.440 --> 00:09:50.540
muss es nicht groß ausverhandeln, wer da welchen Papierkrieg

00:09:50.540 --> 00:09:51.580
über den großen Teich schiebt.

00:09:52.580 --> 00:09:53.500
Genau, ja.

00:09:53.940 --> 00:09:56.080
Cool, kurze Leitung, also falls ihr den habt,

00:09:56.160 --> 00:09:57.760
meldet euch da direkt, könnt natürlich auch das alles kommentieren.

00:09:57.760 --> 00:09:58.960
Genau, immer her damit.

00:09:59.300 --> 00:10:00.600
Ja, ich habe es letztens nur gehört,

00:10:00.680 --> 00:10:01.960
dass es bei Django gibt es da auch sowas,

00:10:02.040 --> 00:10:04.140
es gibt halt die Django Software Foundation

00:10:04.140 --> 00:10:07.080
und die bezahlen ja jetzt auch, glaube ich,

00:10:07.320 --> 00:10:09.840
ein oder zwei Vollzeitstellen.

00:10:11.460 --> 00:10:13.340
Aber im Grunde ist das immer so ein Problem,

00:10:13.340 --> 00:10:16.340
dass halt Software die wichtige Infrastruktur

00:10:16.340 --> 00:10:17.460
für ganz viele Projekte ist.

00:10:18.500 --> 00:10:20.840
Dann halt irgendwie so, wo dann, naja, vielleicht so,

00:10:21.140 --> 00:10:22.760
Also bei Django ist es so, dass er, glaube ich,

00:10:22.760 --> 00:10:24.740
ein halbes Dutzend Leute irgendwie so wirklich aktiv

00:10:24.740 --> 00:10:26.660
dran entwickelt und das ist halt eines der

00:10:26.660 --> 00:10:28.680
größten Projekte, aber

00:10:28.680 --> 00:10:30.620
eigentlich ist das ziemlich wenig, wenn man sich überlegt,

00:10:30.740 --> 00:10:32.540
wo das überall eingesetzt wird und

00:10:32.540 --> 00:10:34.600
wie viele Webseiten ja

00:10:34.600 --> 00:10:36.080
darauf angewiesen sind, dass das irgendwie

00:10:36.080 --> 00:10:38.120
weiterentwickelt wird,

00:10:38.500 --> 00:10:40.760
Sicherheitsgeschichten irgendwie

00:10:40.760 --> 00:10:41.680
gehändelt werden und so.

00:10:42.680 --> 00:10:43.260
Das ist,

00:10:43.620 --> 00:10:46.360
das berührt ein total interessantes Thema,

00:10:46.460 --> 00:10:48.700
was jetzt nicht heute mit unserem Tagesthema zu tun hat,

00:10:48.760 --> 00:10:50.420
aber ich habe in der letzten Zeit halt viel

00:10:50.420 --> 00:10:51.680
Gedanken mir gemacht,

00:10:52.560 --> 00:10:53.320
gerade um die sind,

00:10:54.040 --> 00:10:56.360
wie ich an dem Begriff Digitalisierung

00:10:56.360 --> 00:10:58.340
irgendwie

00:10:58.340 --> 00:11:00.300
einen Griff, also wie ich da irgendwie einen Griff dran

00:11:00.300 --> 00:11:01.140
kriege ohne

00:11:01.140 --> 00:11:03.100
bla bla.

00:11:04.860 --> 00:11:06.460
Keiner kann das Wort eigentlich mehr hören

00:11:06.460 --> 00:11:08.240
und wahrscheinlich ist es vom Hype-Cycle her so langsam

00:11:08.240 --> 00:11:10.560
durch und ich habe mich immer gewehrt, es überhaupt einzusetzen.

00:11:11.780 --> 00:11:12.040
Und aber

00:11:12.040 --> 00:11:13.120
dieses, da sind

00:11:13.120 --> 00:11:16.500
so wenig Leute teilweise an so kritischen Sachen dran.

00:11:17.040 --> 00:11:18.400
Aus einer Open-Source-Perspektive

00:11:18.400 --> 00:11:20.180
oder freien Software-Perspektive finde ich das

00:11:20.180 --> 00:11:22.260
überhaupt nicht schlimm. Das eigentliche

00:11:22.260 --> 00:11:24.140
Thema ist nur, es müssen alle, die

00:11:24.140 --> 00:11:26.040
so ein Zeug einsetzen, im Prinzip wissen, sie

00:11:26.040 --> 00:11:28.060
zahlen weniger Geld, als man

00:11:28.060 --> 00:11:30.220
früher in Lizenzkosten in sowas reingesteckt

00:11:30.220 --> 00:11:32.400
hat oder Pflege- und Wartungsverträge.

00:11:33.260 --> 00:11:34.180
Das heißt aber im Prinzip,

00:11:34.280 --> 00:11:35.840
wenn man dann die Sicherheit haben möchte,

00:11:36.020 --> 00:11:37.880
dass einem das nicht unter dem Hintern wegschimmelt,

00:11:38.460 --> 00:11:39.900
muss man halt, muss man eigene

00:11:39.900 --> 00:11:41.940
Kompetenz aufbauen und das

00:11:41.940 --> 00:11:44.000
greift aber genau an dieses Thema ran, was bedeutet

00:11:44.000 --> 00:11:45.640
es eigentlich, wenn immer mehr Dinge

00:11:45.640 --> 00:11:47.740
digitalisiert werden, dann heißt das halt eigentlich,

00:11:47.880 --> 00:11:49.940
ich muss dort mehr Kompetenzen

00:11:49.940 --> 00:11:51.860
selber entwickeln, anstatt das Zeug

00:11:51.860 --> 00:11:54.000
einfach nur blind einzusetzen, blind zu kaufen,

00:11:54.200 --> 00:11:55.960
also fast egal, ob ich es kaufe oder

00:11:55.960 --> 00:11:57.220
als Open Source

00:11:57.220 --> 00:11:59.060
oder freie Softwarelösung habe.

00:11:59.920 --> 00:12:02.020
Ich bin eigentlich darauf angewiesen, wenn das mein Kerngeschäft

00:12:02.020 --> 00:12:03.940
so dermaßen berührt, dass ich genügend

00:12:03.940 --> 00:12:06.080
Kompetenz habe, um wenigstens zu wissen,

00:12:06.180 --> 00:12:07.440
wo meine Risiken sind,

00:12:07.900 --> 00:12:08.820
wenn ich es schon nicht selber

00:12:08.820 --> 00:12:10.600
lösen kann.

00:12:11.300 --> 00:12:14.020
Das ist aber schon wieder so technisches Detailwissen,

00:12:14.220 --> 00:12:15.940
das hat der meiste normale Vorstand

00:12:15.940 --> 00:12:17.620
wahrscheinlich gar nicht mehr auf dem Schirm.

00:12:17.620 --> 00:12:19.440
Der denkt sich dann so, ja, erst Geld ausgeben

00:12:19.440 --> 00:12:21.080
für Software, die wir gar nicht brauchen, also

00:12:21.080 --> 00:12:22.620
wir kaufen ja nicht, warum?

00:12:23.540 --> 00:12:24.200
Ist ja umsonst.

00:12:25.200 --> 00:12:27.720
Ich hab da momentan

00:12:27.720 --> 00:12:28.480
eine Metapher für,

00:12:29.500 --> 00:12:31.460
das ist, Digitalisierung

00:12:31.460 --> 00:12:33.380
wird an der Stelle, also die ist ja total relevant,

00:12:34.020 --> 00:12:34.680
weil

00:12:34.680 --> 00:12:37.360
im Prinzip die alten

00:12:37.360 --> 00:12:39.500
Sprüche, die wir jetzt wahrscheinlich schon seit 20 Jahren

00:12:39.500 --> 00:12:41.160
kennen, sowas wie Marc Andreessen mit

00:12:41.160 --> 00:12:42.380
Software eats the world,

00:12:43.200 --> 00:12:45.260
das heißt, alles wird irgendwie Software sein.

00:12:46.500 --> 00:12:47.480
In einer positiven

00:12:47.480 --> 00:12:49.420
Variante bedeutet

00:12:49.420 --> 00:12:53.260
dass Software ist als so Augmentierungshilfsmittel ständig dabei.

00:12:54.980 --> 00:12:57.940
Nicht im Sinne von verdrängt den Menschen oder ersetzt ihn,

00:12:58.040 --> 00:13:03.140
sondern es wird immer mehr Stellen geben, wo so ein organisches Zusammenwachsen bei Prozessen ist,

00:13:03.200 --> 00:13:05.920
wo ich auf unterschiedliche Teile von Software angewiesen bin,

00:13:06.000 --> 00:13:07.920
mit der ich interagiere und die sich miteinander verbindet.

00:13:08.280 --> 00:13:13.320
Das wird aber so integral sein, dass es tatsächlich im Prinzip wie eine Sprache zu behandeln ist.

00:13:13.920 --> 00:13:16.700
Und ich habe momentan immer den Eindruck, wenn jemand in einem Unternehmen,

00:13:16.700 --> 00:13:39.020
Wenn du jetzt Vorstand sagst, wir machen jetzt irgendwas mit Digitalisierung, dann klingt es in meinen Ohren so, wie der Vorstand kommt daher und sagt, wir stellen jetzt die Unternehmenssprache von Deutsch auf Englisch um und um das richtig hinzukriegen, haben wir jetzt einen Übersetzer und zwei Wörterbücher angeschafft.

00:13:42.000 --> 00:13:54.000
So ungefähr ist es auch. Wir wollen digitalisieren, deswegen kaufen wir jetzt mehr Software ein oder so. Das ist aber ja ein Unternehmen, das im Prinzip wirklich atmen muss. Ich trage da momentan viel mit mir rum und das ist jetzt extrem Python-unspezifisch.

00:13:54.000 --> 00:14:18.900
Ja, echt interessant. Das ist auch überhaupt nicht so richtig, es gibt da auch keine gute Kultur für. Also ich habe da auch schon in diversen Unternehmen, die ja dann oft diese ganzen Sachen einsetzen, also am Anfang war es immer noch schwer, das irgendwie durchzusetzen, dass überhaupt irgendwie Open Source verwendet wird und wieso, wenn das nichts kostet, ist ja doof und so, war diese Haltung noch sehr weit verbreitet.

00:14:18.900 --> 00:14:24.120
Und dann teilweise wurden so Dinge gemacht, wie Weihnachten, als alle im Urlaub waren,

00:14:24.180 --> 00:14:29.180
hat man halt dann die Netscape-Webserver ersetzt durch Linux-Webserver und so.

00:14:31.000 --> 00:14:38.600
Und als dann sichtbar wurde, dass das sehr gut funktioniert und auch besser halt oft als die kommerziellen Varianten,

00:14:39.000 --> 00:14:43.040
dann hat sich das durchaus etabliert, dass man das so macht.

00:14:43.040 --> 00:14:55.940
Aber irgendwie, dass es eine gute Idee wäre, da halt auch selber mit an der Infrastruktur zu arbeiten und dass das natürlich auch Geld kostet oder dass man zumindest Selbstkompetenz aufbauen muss, das ist auch immer noch schwer.

00:14:56.860 --> 00:15:08.540
Die ganzen Unternehmen haben das nicht verstanden, was das bedeutet, was Digitalisierung ist. Das bedeutet für jeden irgendwas anderes und die meisten sind so fern von jeder Digitalisierung, schleppen dann die E-Mails ausgedruckt im Koffer mit sich rum, das funktioniert halt dann noch nicht.

00:15:08.540 --> 00:15:13.100
Und wenn das die Entscheider noch manchmal sind, leider, dann braucht das länger.

00:15:13.440 --> 00:15:17.180
Ja, ich würde mal behaupten, wie war das jetzt mit der PDF-CDU?

00:15:18.340 --> 00:15:23.340
Ich würde jetzt halt behaupten, die E-Mails werden nicht mehr ausgedruckt, sondern es werden PDFs draus gemacht, die kann man sich dann aufs iPad legen.

00:15:24.360 --> 00:15:26.180
Ja, und dann da drinnen irgendwie rummalen.

00:15:26.940 --> 00:15:27.460
Ja, genau.

00:15:30.020 --> 00:15:31.460
Ja, alles andere wird dann einfach verboten.

00:15:31.940 --> 00:15:51.320
Ich meine, genau das, was du beschrieben hast mit den Netscape-Servern, das ist halt auch der Punkt, wo ich es spannend finde. Meine Erfahrung, würde ich halt sagen, ist jetzt auch 20 Jahre Digitalisierung. Das ist mein ganzes Berufsleben im Prinzip seit 99 und der eigentliche Effekt, den wir gesehen haben, das, was man jetzt Digitalisierung nennt, passiert ja seitdem. Das passiert schon seit Ewigkeiten.

00:15:51.480 --> 00:16:02.640
Ich würde sagen, die Jahrtausendwende war tatsächlich so ein Knackpunkt mit Internet, ist explodiert und wir haben damals immer schon Projekte gemacht, wo wir gemerkt haben, du musst Digitalisierung im ganz, ganz, ganz Kleinen umsetzen.

00:16:02.960 --> 00:16:31.320
Und die eigentlich großen Effekte, wenn es halt immer heißt, es ist Time to Market oder alles billiger oder schneller oder effizienter oder individueller, die eigentlichen großen Effekte sind nie aus der Planung heraus entstanden, sondern die sind dann entstanden, wenn wir bei den Projekten beim Kunden vor Ort waren und dann zufällig eine Dame, die da Sachbearbeiterin ist, überhören, wie sie gerade unser Projekt benutzt und sie irgendwie über Excel flucht.

00:16:31.940 --> 00:16:57.660
Und man dann feststellt, okay, was machst du gerade mit Excel? Ja, da hat sie halt so eine Tabelle gehabt, wo sie so eine Statistik mitführen musste, einmal pro Monat. Und da das ja niemand auf die Idee kam, dass das irgendwas mit unserer Software zu tun haben könnte, mündete es darin, dass diese Dame als halbe Stelle, die hat eine halbe Stelle damit verbracht, 20 Stunden pro Woche, eine Zählliste zusammen zu klicken, indem sie sich durch unsere Software durchgeklickt hat.

00:16:58.520 --> 00:17:04.720
Um dann in dieser Excel-Tabelle zu erfassen, wie viele Personen dieses Kriterium, wie viele Personen dieses und wie viele Personen dieses Kriterium hat.

00:17:05.800 --> 00:17:10.820
Und nur weil wir neben ihr saßen, immer über die Schulter geschaut hatten, konnten wir mal mit ihr reden und sagen, du, das kann ich dir da rauslassen.

00:17:11.420 --> 00:17:13.840
Das merkt man dann so, das ist ja alles relativ komplex.

00:17:13.960 --> 00:17:18.480
Und so in Excel kannst du, wenn die Stadt dir so eine Statistik gibt mit tausend Makros drin, dann generierst du das nicht.

00:17:18.560 --> 00:17:21.920
Aber wenn du mit den Leuten ein bisschen Ping-Pong spielst mit, zeig mir mal, was du machst.

00:17:22.580 --> 00:17:25.260
Und siehst, ah, guck mal, die füllt die Daten immer nur in so einem Rechteck aus.

00:17:25.320 --> 00:17:30.220
dann generiere ich dir jetzt eine HTML-Tabelle, die kannst du per Copy & Paste in diese andere Tabelle von der Stadt reinpacken

00:17:30.220 --> 00:17:37.540
und plötzlich ist dein 20-Stunden-Job, also 80 Stunden pro Monat auf 5 Minuten eingedampft.

00:17:38.280 --> 00:17:41.640
Ich hoffe, die Arme hat dann noch da arbeiten dürfen für irgendwas anderes.

00:17:42.120 --> 00:17:47.620
Natürlich, also ihre Vorgesetzte waren halt super glücklich, weil die so viele Themen auf der Pfanne hatten, zu denen sie nie gekommen sind,

00:17:47.720 --> 00:17:50.920
aber Bürokratie drückt dir halt immer die Prioritäten weg.

00:17:51.580 --> 00:17:53.180
Also Bürokratie

00:17:53.180 --> 00:17:54.920
kann ja immer sagen, ich muss gemacht werden,

00:17:55.020 --> 00:17:56.880
zum Termin. Und dann hast du die Leute

00:17:56.880 --> 00:17:58.840
beschäftigt. Und eigentlich wollen die noch tausend andere

00:17:58.840 --> 00:18:00.940
Sachen machen, kommen aber nicht dazu, weil die Bürokratie

00:18:00.940 --> 00:18:01.520
das wegfrisst.

00:18:01.700 --> 00:18:04.960
Das ist halt dann dringend, aber nicht wichtig eigentlich.

00:18:05.240 --> 00:18:06.680
Und die wichtigen Sachen werden dann nicht mehr gemacht.

00:18:07.340 --> 00:18:07.540
Genau.

00:18:08.520 --> 00:18:10.880
Ich habe viel Komplexitätstheorie

00:18:10.880 --> 00:18:12.860
gemacht in den letzten Jahren. Dave Snowden,

00:18:12.960 --> 00:18:14.560
Kenevan und so. Und es gibt

00:18:14.560 --> 00:18:16.600
ein wichtiges

00:18:16.600 --> 00:18:18.600
Ding

00:18:18.600 --> 00:18:20.520
aus der Komplexitätstheorie, was da

00:18:20.520 --> 00:18:22.560
reinspielt, ist, das sind

00:18:22.560 --> 00:18:24.000
die unarticulated needs.

00:18:24.640 --> 00:18:26.760
Das ist, die Welt ist so komplex,

00:18:27.360 --> 00:18:28.580
dass Anwender

00:18:28.580 --> 00:18:30.380
schrägstrich Betroffene

00:18:30.380 --> 00:18:32.660
schrägstrich Bürger, schrägstrich

00:18:32.660 --> 00:18:34.580
Patienten, egal welche

00:18:34.580 --> 00:18:36.440
Teilgesellschaft wir nehmen,

00:18:37.160 --> 00:18:38.640
die haben gar keine Vorstellung mehr

00:18:38.640 --> 00:18:40.640
davon, was überhaupt möglich ist

00:18:40.640 --> 00:18:42.520
oder geschweige denn,

00:18:42.580 --> 00:18:44.560
in welcher Sprache müssten sie ihren Bedarf,

00:18:44.560 --> 00:18:46.400
den sie haben, überhaupt formulieren, dass jemand

00:18:46.400 --> 00:18:48.460
anders angreifen kann, sagen kann,

00:18:48.520 --> 00:18:50.560
hier, da kann ich dir helfen. Die Dame hat das

00:18:50.560 --> 00:18:52.580
halt in völliger Zufriedenheit

00:18:52.580 --> 00:18:54.540
gemacht, sich da monatelang durchzuklicken,

00:18:54.940 --> 00:18:56.260
weil ihr nicht bewusst war,

00:18:57.000 --> 00:18:58.320
dass es da überhaupt

00:18:58.320 --> 00:18:59.820
eine Möglichkeit gibt, das zu lösen.

00:19:01.080 --> 00:19:02.540
Die wusste gar nicht, dass es ein Problem war

00:19:02.540 --> 00:19:04.140
und deswegen ist das nie in der Planung aufgetaucht.

00:19:04.620 --> 00:19:06.620
In Digitalisierungsprojekten musst du im Prinzip

00:19:06.620 --> 00:19:08.740
im ganz Kleinen alle Leute im Unternehmen

00:19:08.740 --> 00:19:10.400
zu befähigen,

00:19:10.700 --> 00:19:12.200
diesen Übersprung zu haben von, hey, Moment,

00:19:12.320 --> 00:19:14.440
das hier ist ein Problem,

00:19:14.520 --> 00:19:16.080
das müsste sich doch in Software erschlagen lassen.

00:19:16.500 --> 00:19:18.400
Und zwar nicht im Sinne eines, oh, wir machen mal

00:19:18.400 --> 00:19:20.440
den großen Aufschlag und dieses ganze

00:19:20.440 --> 00:19:22.520
Unternehmen wird durch KI ersetzt, sondern tatsächlich

00:19:22.520 --> 00:19:24.660
über so ganz völlig blöde

00:19:24.660 --> 00:19:25.880
kleine Teilchen

00:19:25.880 --> 00:19:28.120
und der Herr Wolfram

00:19:28.120 --> 00:19:30.320
von Wolfram Alpha, der hat jetzt

00:19:30.320 --> 00:19:31.880
ein paar Artikel geschrieben, wo er meinte halt

00:19:31.880 --> 00:19:33.200
Computational Thinking,

00:19:33.940 --> 00:19:36.320
wenn wir sagen, in der Schule wird ja Mathematik

00:19:36.320 --> 00:19:37.880
gelehrt, aber da lernst du halt nur rechnen.

00:19:38.340 --> 00:19:40.220
Und Computational Thinking

00:19:40.220 --> 00:19:42.300
wäre tatsächlich total spannend

00:19:42.300 --> 00:19:44.260
aus einer Perspektive zu wissen, wann

00:19:44.260 --> 00:19:46.280
sind so Zahlen

00:19:46.280 --> 00:19:48.120
oder Datenmengen eigentlich für

00:19:48.120 --> 00:19:49.280
Computer zugänglich?

00:19:50.580 --> 00:19:52.080
Also ich habe jetzt so ein Bauprojekt an der Backe,

00:19:52.160 --> 00:19:54.000
weil ich ein privates Haus baue und da fliegen natürlich

00:19:54.000 --> 00:19:55.380
tausend Excel-Tabellen rum und wenn ich,

00:19:55.720 --> 00:19:57.740
dann habe ich es mehrfach gehabt, dass dann Excel-Tabellen

00:19:57.740 --> 00:19:59.660
rausfallen, wo in einer Spalte

00:19:59.660 --> 00:20:01.960
irgendwelche Zahlen drinstehen, aber dann gleichzeitig

00:20:01.960 --> 00:20:03.660
auch noch irgendwelche Worte mit

00:20:03.660 --> 00:20:05.760
entweder einem Kommentar dran oder

00:20:05.760 --> 00:20:07.320
irgendwie unterschiedliche Maßeinheiten,

00:20:08.000 --> 00:20:09.700
wo ich dann auch drauf gucke und sage so, ja gut,

00:20:09.760 --> 00:20:11.980
die kann ich jetzt halt nicht mehr benutzen, um da Formeln drüber zu jagen.

00:20:12.340 --> 00:20:13.200
Das geht so nicht.

00:20:14.160 --> 00:20:15.580
Aber dieses Gefühl halt, wann

00:20:15.580 --> 00:20:17.940
sind Sachen für Rechner zugänglich, das musst du im Prinzip

00:20:17.940 --> 00:20:20.180
kulturell in so ein Unternehmen reinkriegen,

00:20:20.240 --> 00:20:22.120
wenn du Digitalisierung machen möchtest. Und damit

00:20:22.120 --> 00:20:23.920
schlagen wir uns halt seit 20 Jahren rum. Das ist das

00:20:23.920 --> 00:20:26.000
ganze 90er Jahre Schulen ans Netz

00:20:26.000 --> 00:20:27.600
und das ist Neuland und das ist

00:20:27.600 --> 00:20:30.040
Ja, ja, klar. Das ist

00:20:30.040 --> 00:20:31.960
ein großer kultureller Wandel, der

00:20:31.960 --> 00:20:33.600
da nötig ist und die Leute

00:20:33.600 --> 00:20:35.920
müssen, ja, ich meine, es gibt halt so ein paar

00:20:35.920 --> 00:20:37.500
Verrückte irgendwie, die das

00:20:37.500 --> 00:20:39.480
vielleicht dann vorher schon oder

00:20:39.480 --> 00:20:41.880
machen oder sich selber damit so lange beschäftigt

00:20:41.880 --> 00:20:43.860
haben, bis sie es irgendwie können. Aber

00:20:43.860 --> 00:20:46.120
für viele wird es halt so sein, das ist nur dann natürlich,

00:20:46.320 --> 00:20:47.780
wenn man da reingeboren wird.

00:20:47.920 --> 00:20:49.980
Ich glaube, das ist auch gar nicht so, weil ich glaube,

00:20:50.140 --> 00:20:51.900
gerade durch diese Vereinfachung, die man hat,

00:20:52.260 --> 00:20:53.980
man hat jetzt nur noch so ein Pad in der Hand, wo man links und rechts

00:20:53.980 --> 00:20:55.500
wischt, ist das nicht unbedingt zugänglich.

00:20:55.940 --> 00:20:57.980
Also dadurch, dass du diese tollen User-Interfaces hast

00:20:57.980 --> 00:20:59.820
und so, das ist ja... Ja, aber ich glaube, du

00:20:59.820 --> 00:21:01.560
kannst nicht ohne die

00:21:01.560 --> 00:21:03.960
Sicht der Benutzer oder der

00:21:03.960 --> 00:21:05.120
Leute, die sich mit dem

00:21:05.120 --> 00:21:07.560
Bereich, mit der Domäne irgendwie auskennen,

00:21:08.120 --> 00:21:09.200
ohne die kommst du nicht aus.

00:21:10.140 --> 00:21:11.740
Die müssen halt auch sozusagen verstehen,

00:21:11.880 --> 00:21:13.960
wie das, was sie tun... Ja, aber die wachsen ja nicht automatisch

00:21:13.960 --> 00:21:15.720
mit nach, sondern du musst sie ausbilden. Ich glaube

00:21:15.720 --> 00:21:17.820
nicht, dass nur, weil du Digital Native irgendwie bist,

00:21:17.920 --> 00:21:19.880
reingebunden wirst, dass das

00:21:19.880 --> 00:21:21.300
funktioniert, sondern ich glaube, du musst tatsächlich

00:21:21.300 --> 00:21:23.740
mit dieser Brille draufgehen, du wirst jetzt da

00:21:23.740 --> 00:21:25.040
Tech-Experte sein.

00:21:25.700 --> 00:21:27.800
Ich glaube vor allem auch, es gab einen massiven Bruch durch

00:21:27.800 --> 00:21:29.880
die Systeme Android

00:21:29.880 --> 00:21:31.700
und iOS, weil

00:21:31.700 --> 00:21:33.960
bisher, wir können es natürlich sozusagen

00:21:33.960 --> 00:21:35.520
Opa erzählt vom Krieg

00:21:35.520 --> 00:21:36.480
spielen.

00:21:38.060 --> 00:21:39.440
Ein Chapter Mark, Opa erzählt vom Krieg.

00:21:39.540 --> 00:21:40.460
Okay, warte mal, ich mache.

00:21:42.100 --> 00:21:43.820
Das ist mir vorgeworfen

00:21:43.820 --> 00:21:45.820
worden, nein, das ist mir nicht vorgeworfen worden, aber es ist

00:21:45.820 --> 00:21:47.660
irgendwie mit einem zwinkernden Auge auf ein PyCamp

00:21:47.660 --> 00:21:49.860
in Köln konfrontiert

00:21:49.860 --> 00:21:51.640
wurden, wo ich halt auch meinte, guck mal, die Historie,

00:21:51.800 --> 00:21:53.720
ging es um irgendein Stück Technik, wo ich

00:21:53.720 --> 00:21:55.740
nochmal irgendwie nachgezeichnet habe, wie das die letzten 15

00:21:55.740 --> 00:21:57.620
Jahre halt entstanden ist. Und ich meine, ich bin jetzt

00:21:57.620 --> 00:21:59.660
Mitte 30 und werde dann halt von Leuten,

00:21:59.780 --> 00:22:01.660
die gerade im Studium stecken, angeguckt mit, Opa erzählt vom

00:22:01.660 --> 00:22:01.960
Krieg.

00:22:03.620 --> 00:22:05.360
Und es ist aber witzig, weil

00:22:05.360 --> 00:22:07.700
klar, wir haben uns, oder also ich mich,

00:22:08.140 --> 00:22:09.780
ich glaube, wir sind so eine Liga, glaube ich, vom Alter.

00:22:11.280 --> 00:22:11.700
Ich habe

00:22:11.700 --> 00:22:14.020
mich so über die 90er Jahre halt durch Sachen durchgequält,

00:22:14.520 --> 00:22:15.800
wo ich da sagen muss,

00:22:15.860 --> 00:22:17.400
es gab halt nie dort eine Trennung

00:22:17.400 --> 00:22:19.260
zwischen Konsument und Produzent.

00:22:20.460 --> 00:22:22.740
Ich bin, egal ob auf DOS oder Windows,

00:22:23.400 --> 00:22:25.300
dann Mitte der 90er irgendwann Richtung Linux,

00:22:26.340 --> 00:22:29.360
da war halt immer ein, du interagierst mit dem Ding

00:22:29.360 --> 00:22:31.320
und du versuchst irgendwie rauszukriegen selber,

00:22:31.420 --> 00:22:32.920
dass das irgendwie tut, was du willst.

00:22:33.260 --> 00:22:36.580
Und jetzt aber in dem ganzen Umfeld iOS, Android

00:22:36.580 --> 00:22:40.180
hast du fast reine Konsumentengeräte.

00:22:40.380 --> 00:22:45.800
Zumindest auf einer Ebene, wo diese Rekursivität von Rechnern,

00:22:45.800 --> 00:22:59.240
Also von Neumann-Maschine, Daten und Programme sind ja im gleichen Speicher und es ist sozusagen eine Wandelgestalt, ob etwas als Datum oder als Programm interpretiert wird, weswegen wir halt auch solche Dinge wie Viren haben.

00:23:01.440 --> 00:23:14.980
Und das ist ja was, was damals halt dazu geführt hat, dass man ständig, das war wahnsinnig aufwendig, das willst du nicht für jeden. Wir können ja sagen, okay, wir haben uns da durchgekämpft und was einen nicht umbringt, macht einen stärker.

00:23:16.700 --> 00:23:18.220
Aber das ist natürlich nicht die Zugänglichkeit.

00:23:18.360 --> 00:23:22.900
Ich sehe aber tatsächlich, dass Tablets und ganz einfache Systeme,

00:23:23.380 --> 00:23:27.080
eben auch, dass zum Beispiel das Dateisystem sich ja als Metapher aufgelöst hat im Prinzip,

00:23:28.240 --> 00:23:32.400
das macht, dass die Leute diese Universalität der Rechner nicht mehr wahrnehmen,

00:23:32.860 --> 00:23:35.020
sondern es ist nur noch eine Sammlung von Apps,

00:23:35.020 --> 00:23:37.820
die irgendwie, entweder sind sie miteinander integriert oder sie sind es nicht.

00:23:38.640 --> 00:23:43.660
Ja, aber sind wir da nicht vielleicht noch einfach ein bisschen früh dran?

00:23:43.800 --> 00:23:45.620
also wenn man sich jetzt sowas anguckt wie Shortcuts

00:23:45.620 --> 00:23:47.140
oder so auf iOS,

00:23:48.080 --> 00:23:49.760
das geht ja schon so ein bisschen in die

00:23:49.760 --> 00:23:51.660
Richtung, dass man damit dann halt auch Dinge tun kann,

00:23:51.820 --> 00:23:53.600
wie, ja, ich meine, ich übertreibe jetzt ein bisschen,

00:23:53.800 --> 00:23:55.700
aber mit Pipes auf der

00:23:55.700 --> 00:23:56.700
Kommandozeile oder so,

00:23:57.500 --> 00:23:59.860
nur halt in grafisch und mit einem schönen Interface.

00:24:01.860 --> 00:24:02.840
Halt nicht, weil

00:24:02.840 --> 00:24:05.760
das ist halt nicht mehr universal. Es geht halt nur das,

00:24:05.760 --> 00:24:07.880
was dir zugelassen wird, was geht.

00:24:09.440 --> 00:24:09.840
Gut,

00:24:10.000 --> 00:24:11.680
okay, ja, man kann natürlich noch einige

00:24:11.680 --> 00:24:13.640
Sachen selber schreiben, aber das

00:24:13.640 --> 00:24:14.940
ist natürlich dann auch wieder,

00:24:15.380 --> 00:24:17.140
da ist man dann sofort in so einem Profibereich,

00:24:17.240 --> 00:24:18.700
wo man dann irgendwie

00:24:18.700 --> 00:24:20.700
sich registrieren muss bei Apple und so.

00:24:20.700 --> 00:24:22.520
Ja genau und das Modell ist halt nicht

00:24:22.520 --> 00:24:24.540
sehr stark an der Stelle, sondern das ist halt sehr

00:24:24.540 --> 00:24:26.400
darauf angelegt, dass es halt, ich meine,

00:24:26.620 --> 00:24:28.740
Sachen einfach zu machen ist ein schwieriges Problem

00:24:28.740 --> 00:24:30.740
und Computing

00:24:30.740 --> 00:24:32.100
ist ein schwieriges Problem.

00:24:32.660 --> 00:24:34.460
Das wird so nicht halt für jeden zugänglich sein,

00:24:34.540 --> 00:24:36.680
aber es ist halt, wenn ich die Sprachmetapher

00:24:36.680 --> 00:24:38.860
nochmal bemühe, wenn du halt das Unternehmen umstellst

00:24:38.860 --> 00:24:40.740
von Deutsch auf Englisch, dann erwartest

00:24:40.740 --> 00:24:42.100
du ja auch nicht, dass jeder danach

00:24:42.100 --> 00:24:43.960
ein englischer Schriftsteller ist.

00:24:44.840 --> 00:24:46.440
Sondern der Wort ist, dass die Leute halt so ein gewisses

00:24:46.440 --> 00:24:48.480
robustes Set an Sprache halt

00:24:48.480 --> 00:24:50.500
können, mit dem sie halt

00:24:50.500 --> 00:24:52.360
wissen, ah, der Empfang kann zumindest mal sagen,

00:24:52.440 --> 00:24:54.420
wo die Toilette ist und wo es in die Chefetage geht

00:24:54.420 --> 00:24:56.080
und kann dir ein Taxi rufen.

00:24:56.720 --> 00:24:57.960
Kantine. Ja, Kantine,

00:24:58.160 --> 00:24:58.900
auch noch wichtig, genau.

00:25:00.480 --> 00:25:02.340
Aber es ist halt was anderes,

00:25:02.460 --> 00:25:04.380
als wenn du dann sagst, wir bringen jetzt das Unternehmen

00:25:04.380 --> 00:25:06.500
auf Englisch, indem wir halt überall Wörterbücher auslegen.

00:25:07.780 --> 00:25:07.880
Ja.

00:25:08.960 --> 00:25:10.300
Das ist halt. Das funktioniert

00:25:10.300 --> 00:25:11.340
halt einfach nicht, ja.

00:25:13.040 --> 00:25:13.980
Okay, spannend, spannend.

00:25:14.220 --> 00:25:24.520
Ja, aber ich glaube, von diesem generellen Problem der Digitalisierung würde ich uns jetzt mal so ein bisschen wieder wegführen, weil wir können das, glaube ich, heute auch nicht mehr reden oder wir können zumindest noch mindestens zwei Stunden darüber reden, was das alles für Fragen ist.

00:25:24.520 --> 00:25:36.120
Okay, dann mache ich jetzt hier direkt mal eine Kapitelmarke, aber ich würde auch noch gerne eine Sache ansprechen, wo es, ich glaube, da ging es kurz eben drum, aber ich habe es nicht geschafft, da reinzugrätschen.

00:25:37.040 --> 00:25:40.900
Aber nur ganz kurz, weil wir wollen dann auch erklären tatsächlich, wie man das mit Python so machen kann.

00:25:40.900 --> 00:26:04.180
Ja, und zwar ging es da um die Bereiche, in denen Python eingesetzt wird. Ich weiß nicht, habt ihr das mitbekommen, die PyCon US war jetzt erst vor kurzem und die Keynote hat da, glaube ich, Russell Keyes McGee oder so gehalten.

00:26:05.500 --> 00:26:07.600
Ich weiß nicht, ob ihr den Vortrag gehört habt.

00:26:08.240 --> 00:26:08.700
Ich war im Urlaub.

00:26:08.940 --> 00:26:09.160
Achso.

00:26:09.260 --> 00:26:09.360
Nee.

00:26:09.820 --> 00:26:11.400
Nee. Ich hab Kinder.

00:26:12.920 --> 00:26:13.900
Ganz gute Entschuldigung.

00:26:15.040 --> 00:26:15.180
Immer.

00:26:17.600 --> 00:26:19.840
Was ich ja jetzt mittlerweile häufig mache,

00:26:20.160 --> 00:26:20.880
ist, ich,

00:26:21.960 --> 00:26:23.680
die laden ja meistens auf YouTube

00:26:23.680 --> 00:26:25.720
und es gibt in meinem Podcast-Player irgendwie

00:26:25.720 --> 00:26:27.600
so ein, der hat so ein Zeit-Loading

00:26:27.600 --> 00:26:30.100
Share-Sheet-Extension-Dings

00:26:30.100 --> 00:26:31.880
für iOS und dann sage ich auf dem

00:26:31.880 --> 00:26:33.880
YouTube, auf der YouTube-Seite so

00:26:33.880 --> 00:26:35.440
irgendwie, share das mal mit meinem

00:26:35.440 --> 00:26:37.800
Podcast-Player und dann kriege ich das Audio halt dann als

00:26:37.800 --> 00:26:39.420
normale Podcast-Folge sozusagen rein.

00:26:39.820 --> 00:26:46.080
Und das ist ganz, ganz angenehm, wobei man dann halt auch merkt, dass die Audioqualität bei so Vorträgen oft auch nicht so toll ist.

00:26:46.080 --> 00:26:49.640
Und naja, wenn man das Bild halt nicht sieht und die Folien, ist auch schon ein bisschen Information weg.

00:26:49.920 --> 00:26:50.820
Also ganz toll ist es nicht.

00:26:51.240 --> 00:26:58.460
Aber seitdem höre ich mehr Talks, weil ansonsten die Zeit irgendwie vorm Rechner zu sitzen und ein Video zu gucken, das ist einfach nicht.

00:26:59.160 --> 00:27:01.900
Ich kriege das immer nur dann hin, wenn ich noch nebenbei was anderes mache.

00:27:02.460 --> 00:27:03.660
Ansonsten funktioniert das irgendwie nicht.

00:27:04.860 --> 00:27:06.340
Aber zum

00:27:06.340 --> 00:27:08.460
Thema, das war ganz

00:27:08.460 --> 00:27:10.180
interessant und zwar hatte der etwas angesprochen,

00:27:11.500 --> 00:27:12.380
was man halt auch so als,

00:27:12.600 --> 00:27:13.620
der kommt irgendwie aus Australien,

00:27:14.960 --> 00:27:16.460
nach dem Taleb hat man ein Buch geschrieben,

00:27:16.540 --> 00:27:18.300
The Black Swan, und

00:27:18.300 --> 00:27:20.480
genau, das mit den schwarzen

00:27:20.480 --> 00:27:22.320
Schwänen ist auch so ein Ding, was in Australien halt da mal

00:27:22.320 --> 00:27:24.280
aufgefallen ist, man dachte halt bis irgendwie

00:27:24.280 --> 00:27:26.460
vor ein paar hundert Jahren, also bis halt Australien

00:27:26.460 --> 00:27:28.360
irgendwie so richtig entdeckt war, dass es nur

00:27:28.360 --> 00:27:30.240
weiße Schwäne gäbe, weil man hatte noch nie einen schwarzen

00:27:30.240 --> 00:27:32.460
gesehen, aber in Australien

00:27:32.460 --> 00:27:33.560
gibt es tatsächlich wohl schwarze

00:27:33.560 --> 00:27:35.900
schwarze Schwäne und

00:27:35.900 --> 00:27:38.060
ja, dann, als die

00:27:38.060 --> 00:27:39.500
zum ersten Mal jemand gesehen hat, dann

00:27:39.500 --> 00:27:41.500
war sozusagen diese Theorie, dass das

00:27:41.500 --> 00:27:44.100
dass alle Schwäne weiß sind

00:27:44.100 --> 00:27:45.780
halt auf einen Schlag erledigt und

00:27:45.780 --> 00:27:47.940
das sind solche Sachen, die passieren halt

00:27:47.940 --> 00:27:49.800
ab und zu und die kann man sehr schlecht

00:27:49.800 --> 00:27:51.900
vorhersagen und das, ja,

00:27:52.020 --> 00:27:53.900
solche Ereignisse gibt es ja halt nicht nur in der Natur,

00:27:53.900 --> 00:27:55.780
wenn man Natur beobachtet, sondern halt auch

00:27:55.780 --> 00:27:57.920
in diversen anderen Bereichen, es gibt halt irgendwelche

00:27:57.920 --> 00:27:59.620
Finanzkrisen oder so, die auftreten können,

00:28:00.220 --> 00:28:01.940
wo man halt vorher gedacht hat, das geht jetzt immer

00:28:01.940 --> 00:28:03.740
so weiter und

00:28:03.740 --> 00:28:05.640
naja,

00:28:05.800 --> 00:28:07.800
der sprach halt über

00:28:07.800 --> 00:28:09.920
diese Ereignisse, die halt passieren können

00:28:09.920 --> 00:28:12.140
und was das für Ereignisse

00:28:12.140 --> 00:28:13.480
sein könnten, die

00:28:13.480 --> 00:28:15.720
Python, ja, sozusagen

00:28:15.720 --> 00:28:17.920
vielleicht obsolet machen oder schwer

00:28:17.920 --> 00:28:21.080
sozusagen, ja,

00:28:21.720 --> 00:28:23.860
beeinflussen könnten und die man momentan

00:28:23.860 --> 00:28:25.620
nicht so richtig kommen sieht, weil

00:28:25.620 --> 00:28:27.880
auch im IT-Sektor ist das natürlich

00:28:27.880 --> 00:28:29.560
schon ganz oft passiert, irgendwie so der

00:28:29.560 --> 00:28:31.820
PC, der irgendwie aufgetaucht ist, war wahrscheinlich

00:28:31.820 --> 00:28:33.600
für viele Unternehmen, die vorher ganz gut mit

00:28:33.600 --> 00:28:34.480
Ningen gelebt haben,

00:28:35.260 --> 00:28:37.620
so ein schwarzer Spahn, der

00:28:37.620 --> 00:28:39.860
aufgetreten ist und dann plötzlich die ganze Märkte kaputt gemacht hat

00:28:39.860 --> 00:28:41.400
oder irgendwie, ja,

00:28:41.600 --> 00:28:42.700
Smartphones sind halt auch sowas,

00:28:43.540 --> 00:28:44.280
die den ganzen

00:28:44.280 --> 00:28:47.820
PDA-Markt irgendwie aufgerollt

00:28:47.820 --> 00:28:49.280
haben und Nokia irgendwie

00:28:49.280 --> 00:28:51.620
sozusagen in die, naja,

00:28:52.260 --> 00:28:53.480
in den, ja, wie soll man,

00:28:53.480 --> 00:28:55.660
Microsoft-Vorruhestand geschickt haben und

00:28:55.660 --> 00:28:59.520
dass der sagte, also man

00:28:59.520 --> 00:29:01.240
kann inzwischen sehen, was das sein könnte

00:29:01.240 --> 00:29:03.600
und für ihn ist halt interessant rauszukriegen,

00:29:03.660 --> 00:29:04.800
was man dagegen tun kann und

00:29:04.800 --> 00:29:07.160
er meint, dass wäre halt zum Beispiel

00:29:07.160 --> 00:29:09.380
eine ganz schlechte Geschichte

00:29:09.380 --> 00:29:11.500
ist, dass halt eben auf solchen Geräten wie Tablets,

00:29:11.880 --> 00:29:13.480
irgendwie Telefonen oder so, halt

00:29:13.480 --> 00:29:14.940
Python nicht wirklich läuft

00:29:14.940 --> 00:29:17.480
und dass wenn jetzt aber der

00:29:17.480 --> 00:29:19.360
Markt so umkippt, dass halt irgendwie

00:29:19.360 --> 00:29:21.400
Desktop-Computer und auch Laptops nur noch was für

00:29:21.400 --> 00:29:22.280
Profis sind und

00:29:22.280 --> 00:29:25.420
ja, die ganze

00:29:25.420 --> 00:29:27.400
Konsumenten, der ganze Konsumentenmarkt halt

00:29:27.400 --> 00:29:29.200
auf irgendwelchen

00:29:29.200 --> 00:29:31.760
Tablet- oder Smartphone-mäßigen Endgeräten

00:29:31.760 --> 00:29:33.480
ist, dann kann es sein, dass das

00:29:33.480 --> 00:29:35.200
ein sehr großes Problem wird, dass da

00:29:35.200 --> 00:29:37.340
Python halt überhaupt, dass man mit Python überhaupt

00:29:37.340 --> 00:29:38.040
nichts machen kann.

00:29:39.080 --> 00:29:41.460
Und dass es halt auch ein Riesenproblem ist, dass das halt auch nicht

00:29:41.460 --> 00:29:43.400
sich überbrücken lässt durch irgendwie solche Sachen wie

00:29:43.400 --> 00:29:45.380
Web oder so, weil JavaScript wird das

00:29:45.380 --> 00:29:47.380
wahrscheinlich überleben. JavaScript läuft

00:29:47.380 --> 00:29:49.260
halt in Browser, Browser sind auch von den Geräten

00:29:49.260 --> 00:29:51.240
nicht wegzudenken, aber

00:29:51.240 --> 00:29:53.400
Python läuft weder im Browser noch.

00:29:53.400 --> 00:29:54.440
Ja, wobei, was

00:29:54.440 --> 00:29:57.320
mir da mehr durch den Kopf geht, ist, dass

00:29:57.320 --> 00:29:59.460
ich glaube, wir werden dann eher sehen,

00:29:59.580 --> 00:30:00.160
dass es noch

00:30:00.160 --> 00:30:03.380
tatsächlich diese agnostischen Runtimes

00:30:03.380 --> 00:30:05.280
geben wird. Also bei Web

00:30:05.280 --> 00:30:07.180
fällt mir gerade eben WebAssembly ein.

00:30:08.240 --> 00:30:08.280
Das

00:30:08.280 --> 00:30:11.260
finde ich blöd aus einer anderen

00:30:11.260 --> 00:30:13.100
Perspektive, weil dann ist halt ViewSource

00:30:13.100 --> 00:30:14.080
endgültig kaputt.

00:30:15.900 --> 00:30:17.080
Das ist was, womit

00:30:17.080 --> 00:30:19.460
ich halt

00:30:19.460 --> 00:30:21.180
auch wieder aufgewachsen bin. Allein das

00:30:21.180 --> 00:30:22.920
hat es mir ermöglicht, irgendwie vernünftig

00:30:22.920 --> 00:30:25.060
das Zeug überhaupt zu lernen, dass man in Sachen

00:30:25.060 --> 00:30:26.140
reingucken kann. Aber

00:30:26.140 --> 00:30:28.640
sei es mal gespenkt.

00:30:28.660 --> 00:30:30.420
Man kann in jede Webseite reingucken

00:30:30.420 --> 00:30:31.540
und sich angucken, wie das geschrieben ist.

00:30:31.540 --> 00:30:32.080
Ja, genau.

00:30:34.360 --> 00:30:36.060
Das war halt, wobei das auch heute eigentlich,

00:30:36.060 --> 00:30:38.700
es ist praktisch

00:30:38.700 --> 00:30:40.120
tot durch

00:30:40.120 --> 00:30:42.180
Minifizierung etc. Ich meine,

00:30:42.260 --> 00:30:44.200
mit dem Inspector kriegst du dann halt, wenn Mappings da sind,

00:30:44.740 --> 00:30:46.240
beziehungsweise auch noch die Minifier

00:30:46.240 --> 00:30:48.440
und so ein Zeug, aber es ist praktisch

00:30:48.440 --> 00:30:50.420
eh tot, weil die Komplexität zu groß ist. Früher war es

00:30:50.420 --> 00:30:52.560
so, da hast du halt mal deine 10K, 20K

00:30:52.560 --> 00:30:54.140
HTML-Code, bloß ein bisschen JavaScript

00:30:54.140 --> 00:30:56.200
angeguckt und, ah, guck mal, der benutzt das so und so.

00:30:56.580 --> 00:30:58.120
Die Doku war früher auch

00:30:58.120 --> 00:30:59.740
schlechter, heute ist die Doku besser, dadurch

00:30:59.740 --> 00:31:01.480
dämpft das halt vieles wieder.

00:31:02.080 --> 00:31:04.060
Ich glaube aber, dass solche agnostischen Runtimes, also

00:31:04.060 --> 00:31:06.360
zum einen, naja, Profi

00:31:06.360 --> 00:31:08.100
ist halt jetzt wieder, machen wieder die Schleife.

00:31:09.620 --> 00:31:10.180
Wenn nur

00:31:10.180 --> 00:31:12.100
die Profis Software entwickeln sollen

00:31:12.100 --> 00:31:13.940
und Python kommt eigentlich eben aus der Ecke,

00:31:14.040 --> 00:31:15.820
dass nicht nur die Profis das können sollen,

00:31:16.440 --> 00:31:18.180
weil ansonsten haben wir

00:31:18.180 --> 00:31:19.920
ja als Gegenentwurf eben

00:31:19.920 --> 00:31:22.120
in der Android-Ecke haben wir Java und Java

00:31:22.120 --> 00:31:24.300
kommt halt aus diesem extrem ingenieursartigen

00:31:24.300 --> 00:31:26.220
Ansatz für, da ziehst du dir

00:31:26.220 --> 00:31:28.240
bitte einen Laborkittel an, bevor du anfängst zu programmieren

00:31:28.240 --> 00:31:29.480
oder sonst hältst du das nicht aus.

00:31:29.600 --> 00:31:31.880
Du hast doch keinen Kittel angefangen, bevor du angefangen hast.

00:31:33.180 --> 00:31:33.360
Ja.

00:31:34.800 --> 00:31:36.020
Also das ist ja so

00:31:36.020 --> 00:31:37.980
Business-Programmieren, ja. Da stellt man sich

00:31:37.980 --> 00:31:39.980
die Leute vor, die im Laborkittel programmieren und jetzt

00:31:39.980 --> 00:31:42.160
halt mal ordentlich hier, das ist der deutsche Ingenieur,

00:31:42.240 --> 00:31:44.380
jetzt kriegst du gleich Qualitätssoftware, wenn du nicht aufpasst.

00:31:46.400 --> 00:31:48.000
Die, ähm, und Python

00:31:48.000 --> 00:31:49.980
kommt ja von einem anderen Ende und Python kommt eigentlich von

00:31:49.980 --> 00:31:51.980
einem sehr charmanten Ende, nämlich, dass es halt so zugänglich

00:31:51.980 --> 00:31:53.780
ist für Leute, die halt Quereinsteiger sind, die

00:31:53.780 --> 00:31:55.760
noch selber Schüler sind und

00:31:55.760 --> 00:31:58.020
auch da wieder in einer komplexen Welt ist,

00:31:58.400 --> 00:31:59.760
lernen durch Experimentieren, durch

00:31:59.760 --> 00:32:01.820
Experimentieren halt eigentlich genau das

00:32:01.820 --> 00:32:03.740
Richtige, Grenzen austesten. Und dafür

00:32:03.740 --> 00:32:05.620
musst du dir aber sozusagen eine Umgebung,

00:32:05.700 --> 00:32:07.860
einen Weg bereiten und sagen, hier ist

00:32:07.860 --> 00:32:09.240
irgendwie erstmal so grüne Wiese,

00:32:09.660 --> 00:32:11.920
lauf mal los, guck mal. Systeme

00:32:11.920 --> 00:32:13.800
wie Java sind halt wenig ein, hier ist grüne

00:32:13.800 --> 00:32:15.860
Wiese, sondern es sein, so hier kommt jetzt erstmal

00:32:15.860 --> 00:32:17.840
das große Konstruktionstemplate und

00:32:17.840 --> 00:32:19.380
ohne das kannst du nichts tun.

00:32:20.440 --> 00:32:22.820
Mir fällt gerade auf, dass der Christian gerade zum ersten Mal

00:32:22.820 --> 00:32:24.800
den Java Bash gemacht hat, auf den ich die ganze Zeit gewartet

00:32:24.800 --> 00:32:26.660
habe, den wir in Zeitfolge 1 vorgenommen haben.

00:32:27.240 --> 00:32:28.140
Ah, bitteschön. Danke.

00:32:28.340 --> 00:32:30.520
Es ist die zehnte Episode.

00:32:33.300 --> 00:32:34.720
Und ich meine, Java

00:32:34.720 --> 00:32:36.800
leidet an der Stelle, also die leiden ja

00:32:36.800 --> 00:32:38.640
selber unter ihrem Erfolg an der Stelle,

00:32:38.780 --> 00:32:40.720
weil es war ja

00:32:40.720 --> 00:32:42.620
gemacht von

00:32:42.620 --> 00:32:44.820
Sun mit ein bisschen IBM-Unterstützung

00:32:44.820 --> 00:32:46.720
damals, mit

00:32:46.720 --> 00:32:48.880
der Idee, dass Entwickler

00:32:48.880 --> 00:32:49.780
zu teuer waren.

00:32:50.440 --> 00:33:02.360
Ja, also es gibt die eine Story, das ist eine, also es gibt ja mehr Perspektiven da drauf. Das eine ist, es sollte mal dieses Set-Top-Boxen-System sein, Mitte der 90er. Dann wurde es irgendwann zu so einem Server-System, dann wurde es irgendwann zu der Universalen.

00:33:02.360 --> 00:33:31.780
Ja genau, das was heute ein Apple TV ist, wo man halt sich in den 90er Jahren das erste Mal die Finger dran verbrannt hat. Das sind ja häufig so Embedded-Geräte, wo jeder den kompletten Software-Stack mit Betriebssystem selber gebaut hatte und Sun hatte damals mit Java versucht eine Sprache zu bauen, wo ich die gleiche Programmiersprache halt über unterschiedliche Geräteklassen hinweg eben von Mobiltelefonen zu Servern zu Desktop-Rechnern zu Set-Top-Boxen anwenden kann, um die zu programmieren.

00:33:31.780 --> 00:33:58.020
Und ja gut, also jeder, die mal gesehen hat, irgendwie auch dieses Ding von der Telekom hier, diese komische Fernsehgeschichte, die die haben, da kriege ich immer das Gruseln, wenn ich sehe, wie das UI aussieht dazu, weil es halt, ja, weil dort das ganze Ökosystem ist durchdrungen von diesem Ingenieursansatz, ja, von diesem, du musst alles ausdefinieren und aber die wirklich interessanten Sachen, sowas wie, dass das UI geschmeidig ist, das kommt als letztes.

00:33:58.660 --> 00:34:03.620
Und dann stellst du fest, oh, unser UI-Toolkit kann gar keine schönen Übergänge, sondern das geht bloß so hackelig.

00:34:06.220 --> 00:34:11.000
Warte mal, wir kamen von, was hat Python für eine Zukunftsperspektive?

00:34:11.490 --> 00:34:14.010
Python ist ja als Sprache eh darauf angelegt,

00:34:14.090 --> 00:34:15.670
eine Sprachspezifikation zu sein und

00:34:15.670 --> 00:34:17.510
sich unterschiedlichen Runtimes

00:34:17.510 --> 00:34:19.710
gut halt anzudienen und ich würde

00:34:19.710 --> 00:34:22.170
vermuten, dass irgendwann

00:34:22.170 --> 00:34:24.050
der Zeitpunkt, also wir haben halt eben zum

00:34:24.050 --> 00:34:26.130
einen, Web könnte für Python

00:34:26.130 --> 00:34:27.970
halt mit WebAssembly durchaus interessanter werden

00:34:27.970 --> 00:34:30.350
und auf der anderen Seite

00:34:30.350 --> 00:34:32.310
werden wir

00:34:32.310 --> 00:34:33.630
eine Lösung brauchen, wie

00:34:33.630 --> 00:34:35.690
solche Endgeräte,

00:34:35.970 --> 00:34:37.570
die sich ja zum Programmieren auch gar nicht

00:34:37.570 --> 00:34:38.130
eignen,

00:34:39.270 --> 00:35:02.910
Und das ist sozusagen auch eine ganz eigene Schleife zum Thema Digitalisierung und Selbstständigkeit von Anwendern. Da ist ja auch die freie Softwarebewegung als Ganzes im Prinzip dran, dass du sagst, hey, ich will eigentlich, dass die User emanzipiert sind und dass ich nicht um Erlaubnis fragen muss, um Software zu modifizieren oder Software zu verstehen, sondern dass ich halt eben genau Emanzipation mit Kompetenz auch gleichsetze an der Stelle.

00:35:04.790 --> 00:35:06.530
Ja, interessanter Gedanke.

00:35:06.730 --> 00:35:07.970
Ja, das wäre auf jeden Fall sehr schön.

00:35:08.550 --> 00:35:10.750
Momentan geht es leider so ein bisschen in eine andere Richtung.

00:35:11.330 --> 00:35:12.370
Ja, aber ich glaube,

00:35:12.430 --> 00:35:14.450
dass Python da definitiv halt massive

00:35:14.450 --> 00:35:16.490
Chancen hat, aufgrund der Größe,

00:35:16.630 --> 00:35:18.350
aufgrund der Erfahrung auch und aufgrund

00:35:18.350 --> 00:35:20.490
dem Fokus halt als eine freie Sprache,

00:35:20.670 --> 00:35:22.770
die sich so flexibel

00:35:22.770 --> 00:35:24.270
halt in unterschiedlichen Kontexten halt

00:35:24.270 --> 00:35:24.910
einsetzen lässt.

00:35:27.010 --> 00:35:28.210
So, aber jetzt endgültig,

00:35:28.210 --> 00:35:30.350
und jetzt fangen wir an zu erklären,

00:35:30.630 --> 00:35:31.930
wie man das mit Python alles so

00:35:31.930 --> 00:35:33.650
insgesamt machen möchte, wenn man sowas

00:35:33.650 --> 00:35:35.910
DevOps'en

00:35:35.910 --> 00:35:36.210
möchte.

00:35:38.210 --> 00:35:39.810
Was macht man denn da? Was ist das überhaupt?

00:35:39.990 --> 00:35:41.710
Vielleicht fangen wir damit nochmal ganz kurz an, aber diesmal

00:35:41.710 --> 00:35:43.790
jetzt so vielleicht ein bisschen kompakt.

00:35:45.990 --> 00:35:46.610
Wer möchte zuerst?

00:35:48.750 --> 00:35:49.850
Ja, ich kann ja einfach mal

00:35:49.850 --> 00:35:50.390
genau,

00:35:51.430 --> 00:35:53.730
ich habe eben schon mal so kurz überlegt,

00:35:53.830 --> 00:35:55.370
wie man das irgendwie

00:35:55.370 --> 00:35:57.750
anfangen

00:35:57.750 --> 00:35:59.430
könnte und ich dachte, naja, also

00:35:59.430 --> 00:36:01.310
vielleicht einfach

00:36:01.310 --> 00:36:03.950
in der Differenz

00:36:03.950 --> 00:36:05.670
zu anderen Geschichten, die es halt schon lange gab, die Leute

00:36:05.670 --> 00:36:06.990
vielleicht auch kennen, ich weiß nicht so genau.

00:36:08.190 --> 00:36:09.450
Aber so früher war das ja

00:36:09.450 --> 00:36:11.190
so, dass wenn man jetzt, also

00:36:11.190 --> 00:36:13.750
ich nehme jetzt mal den Bereich,

00:36:13.930 --> 00:36:15.570
man möchte jetzt eine Webseite irgendwie haben,

00:36:15.710 --> 00:36:17.490
die irgendwo online

00:36:17.490 --> 00:36:19.490
zu sehen ist, die man nicht nur lokal irgendwie

00:36:19.490 --> 00:36:20.930
anguckt, da kann man auch einfach ein HTML-File

00:36:20.930 --> 00:36:23.570
von einem Editor hinschreiben und dann

00:36:23.570 --> 00:36:25.250
guckt man sich das mal um. Webseite mit Service, also jetzt nicht nur

00:36:25.250 --> 00:36:27.070
meine Visitenkarte. Das kann auch

00:36:27.070 --> 00:36:29.410
einfach nur ein HTML-Datei sein, aber die

00:36:29.410 --> 00:36:31.290
kann ja jemand anders noch nicht sehen, nur wenn

00:36:31.290 --> 00:36:33.350
ich sie auf meinem Rechner mit dem Editor

00:36:33.350 --> 00:36:35.330
abgesorgt habe, dann sollten

00:36:35.330 --> 00:36:37.350
andere Leute die ja hoffentlich erstmal so nicht sehen können.

00:36:37.510 --> 00:36:39.290
Die Frage ist halt, wie kriege ich das hin, dass das Ding

00:36:39.290 --> 00:36:40.630
zum Beispiel weltweit dann halt

00:36:40.630 --> 00:36:42.970
sichtbar ist. Und

00:36:42.970 --> 00:36:44.810
wenn man jetzt

00:36:44.810 --> 00:36:46.790
die ersten Geschichten, die es da gab,

00:36:46.890 --> 00:36:49.330
auch Ende der 90er

00:36:49.330 --> 00:36:51.310
irgendwie PHP und

00:36:51.310 --> 00:36:53.030
irgendwie FTP-Server oder so, da haben

00:36:53.030 --> 00:36:53.650
Leute irgendwie

00:36:53.650 --> 00:36:57.110
quasi so eine Web-Route in einem

00:36:57.110 --> 00:36:58.530
Apache gehabt und dann haben sie da irgendwie

00:36:58.530 --> 00:37:01.150
PHP-Sachen per FTP hochgeladen und dann war das

00:37:01.150 --> 00:37:02.870
irgendwie dann deployed,

00:37:03.390 --> 00:37:04.630
sozusagen. Vielleicht kennt man das.

00:37:05.250 --> 00:37:07.210
Ich war sehr überrascht, als ich letztens gesehen habe, dass Leute

00:37:07.210 --> 00:37:08.750
das heutzutage immer noch so machen.

00:37:09.370 --> 00:37:10.410
Ja, sie machen es.

00:37:10.410 --> 00:37:12.790
Es ist immer wieder...

00:37:12.790 --> 00:37:13.430
Also, ja.

00:37:14.610 --> 00:37:15.770
Sie sterben nicht aus.

00:37:16.350 --> 00:37:18.290
Ja, auf der anderen Seite muss man halt sagen,

00:37:18.590 --> 00:37:20.390
dass es halt so, auch wenn es

00:37:20.390 --> 00:37:22.450
aus diversen

00:37:22.450 --> 00:37:24.390
unterschiedlichen Gründen halt eine sehr problematische

00:37:24.390 --> 00:37:26.350
Geschichte ist, das so zu machen, es ist

00:37:26.350 --> 00:37:28.290
halt irgendwie so ein definierter Weg. Die Leute haben sich

00:37:28.290 --> 00:37:30.430
irgendwie reingewöhnt. Es gibt viele, die kennen überhaupt nichts anderes.

00:37:31.150 --> 00:37:32.690
Und es ist halt so ein Standardweg,

00:37:32.810 --> 00:37:34.310
wie deployed man jetzt irgendwie

00:37:34.310 --> 00:37:36.110
Software mit PHP

00:37:36.110 --> 00:37:38.470
irgendwie, wenn man das jetzt... Funktioniert.

00:37:39.390 --> 00:37:40.450
Ja, naja, für

00:37:40.450 --> 00:37:42.390
bestimmte Werte von

00:37:42.390 --> 00:37:43.190
Funktionieren.

00:37:45.750 --> 00:37:46.570
Und diese

00:37:46.570 --> 00:37:48.530
Geschichte so, wie macht man das jetzt eigentlich,

00:37:48.530 --> 00:37:50.510
wenn man das tun will, gab es für Python

00:37:50.510 --> 00:37:52.250
sozusagen nie. Und das ist

00:37:52.250 --> 00:37:54.430
jetzt halt für Python dann irgendwie, gibt es

00:37:54.430 --> 00:37:56.410
halt sehr viele unterschiedliche Arten,

00:37:56.490 --> 00:37:58.310
das zu tun. Und

00:37:58.310 --> 00:38:00.370
ja, den Leuten ist nicht so richtig bewusst, wie das

00:38:00.370 --> 00:38:02.290
dann überhaupt gehen soll und was irgendwie

00:38:02.290 --> 00:38:04.210
dann so ein bisschen dazu führt, dass sie oft gar keine

00:38:04.210 --> 00:38:06.030
Vorstellungen davon haben, wie man das dann

00:38:06.030 --> 00:38:07.790
macht und

00:38:07.790 --> 00:38:09.410
das dann halt auch nicht so richtig tun.

00:38:10.990 --> 00:38:12.370
Das Schmeinende daran ist, man kann

00:38:12.370 --> 00:38:14.130
jetzt sozusagen mal den Bogen, du hast jetzt wirklich

00:38:14.130 --> 00:38:16.170
das abschreckende

00:38:16.170 --> 00:38:18.150
90er-Jahre-Beispiel ins eine Ende gestellt.

00:38:18.950 --> 00:38:20.210
Ich meine, der Extremwert von dem, was du

00:38:20.210 --> 00:38:21.930
beschrieben hast, ist ja noch, ich kenne auch die Leute,

00:38:22.370 --> 00:38:24.110
die haben das FTP gemountet und editieren

00:38:24.110 --> 00:38:26.050
halt dann mit ihrem Editor direkt

00:38:26.050 --> 00:38:27.790
auf dem, ja genau.

00:38:30.370 --> 00:38:32.710
auch die existieren noch und

00:38:32.710 --> 00:38:34.650
ich durfte auch schon, ich glaube, wir durften

00:38:34.650 --> 00:38:36.390
letztes Jahr auch schon mal aufstehen und

00:38:36.390 --> 00:38:38.630
irgendwie kaputtgegangene Seiten reparieren, weil

00:38:38.630 --> 00:38:40.410
irgendwie sein Editor nicht ordentlich zugemacht hat.

00:38:42.970 --> 00:38:44.810
Das andere Ende davon ist ja jetzt sozusagen,

00:38:44.910 --> 00:38:46.770
wenn man sich heutzutage fragt,

00:38:47.450 --> 00:38:48.570
wenn man das Thema abhaken will,

00:38:48.650 --> 00:38:49.930
dann sage ich jetzt Docker und dann ist irgendwie

00:38:49.930 --> 00:38:51.150
alles vorbei.

00:38:52.310 --> 00:38:54.390
Also das würdest du sagen, also eben das Best Practice,

00:38:54.390 --> 00:38:55.570
dass wir jetzt die Antwort hätten.

00:38:55.570 --> 00:38:57.110
Nee, überhaupt nicht. Nein, gar nicht.

00:38:58.550 --> 00:38:59.550
Weil das halt,

00:38:59.810 --> 00:39:01.630
weil Docker jetzt erstmal ja nur

00:39:01.630 --> 00:39:03.450
ein, auf der einen Seite

00:39:03.450 --> 00:39:05.450
hast du eine Lösung, die ist sozusagen so

00:39:05.450 --> 00:39:07.330
grottig auf so vielen Enden, dass

00:39:07.330 --> 00:39:09.530
die Leute, die sie einsetzen, noch nicht mal verstehen,

00:39:09.690 --> 00:39:10.510
warum es schlecht ist.

00:39:12.250 --> 00:39:13.550
Und am anderen Ende hast

00:39:13.550 --> 00:39:15.630
du ein Ding, das als Totschlag

00:39:15.630 --> 00:39:17.510
Variante macht, dass man auch

00:39:17.510 --> 00:39:19.130
nicht mehr versteht, warum es jetzt gut ist.

00:39:21.770 --> 00:39:23.110
Also Docker hat halt

00:39:23.110 --> 00:39:25.550
löst wahnsinnig viele Probleme, die es da

00:39:25.550 --> 00:39:27.610
so gibt und hat, bringt halt

00:39:27.610 --> 00:39:29.550
eigene große Komplexität mit

00:39:29.550 --> 00:39:31.250
und

00:39:31.250 --> 00:39:33.550
was ich halt spannend finde, wenn wir das Wort

00:39:33.550 --> 00:39:35.650
DevOps eigentlich nehmen, dann kommen wir

00:39:35.650 --> 00:39:36.770
halt in so einen

00:39:36.770 --> 00:39:39.770
auch mit agil, ich muss jetzt meine Buzzword-Matrix

00:39:39.770 --> 00:39:40.350
irgendwo aufmachen,

00:39:41.930 --> 00:39:43.650
dann kommst du halt aber in

00:39:43.650 --> 00:39:45.270
dieses Thema von, wie arbeitet man eigentlich

00:39:45.270 --> 00:39:47.410
in Teams gut zusammen, weil

00:39:47.410 --> 00:39:49.450
wenn ich meine Software alleine baue und ich habe

00:39:49.450 --> 00:39:51.190
meine drei, vier Privatprojekte,

00:39:51.670 --> 00:39:53.630
dann kann ich halt irgendeine technische

00:39:53.630 --> 00:39:55.570
Lösung nehmen, die mir für mich

00:39:55.570 --> 00:39:57.630
alleine löst, dass ich mir

00:39:57.630 --> 00:39:59.530
nicht auf die Füße trete. Die kann so klein oder so

00:39:59.530 --> 00:40:01.070
groß sein, wie ich es halt gerade vertrage.

00:40:01.990 --> 00:40:03.490
Wenn ich aber das Thema habe,

00:40:03.570 --> 00:40:05.550
dass ich eben nicht mehr alleine bin, sondern

00:40:05.550 --> 00:40:07.290
dass ich halt mehrere Leute habe, die

00:40:07.290 --> 00:40:09.670
entwickle oder halt unterschiedliche Zuständigkeiten,

00:40:10.030 --> 00:40:11.510
dass ich mir vielleicht auch mal für

00:40:11.510 --> 00:40:13.230
bestimmte Themen, gerade

00:40:13.230 --> 00:40:15.510
ich mache die kurze Schleife zur Digitalisierung,

00:40:15.610 --> 00:40:17.210
wenn ich halt eben auch Software für mich

00:40:17.210 --> 00:40:19.350
entwickeln lasse, das heißt, ich habe halt irgendwem,

00:40:19.910 --> 00:40:21.390
dem gehört die Software vielleicht nachher, aber

00:40:21.390 --> 00:40:23.450
irgendwer anders, irgendeine Agentur oder irgendein Freelancer

00:40:23.450 --> 00:40:25.410
oder ein Team entwickelt das für mich und dann

00:40:25.410 --> 00:40:27.390
habe ich noch irgendwen, der soll das

00:40:27.390 --> 00:40:28.990
irgendwo betreiben und

00:40:28.990 --> 00:40:39.090
Das wird halt alles relativ schnell komplex und dann ist halt die eigentlich interessante Frage von, was sind denn für solche Szenarien interessante Arten, wie man da zusammenarbeiten kann.

00:40:39.410 --> 00:40:55.470
Weil, wenn man jetzt mal das FTB-Beispiel weglegt und sagt, wie war es sonst im großen Umfeld vielleicht, im professionellen und nicht so in diesem semi-professionellen Umfeld, dann gab es da früher immer diese Metapher des Software-über-den-Zaun-Werfens.

00:40:56.250 --> 00:41:22.150
Das sah dann ungefähr so aus, du programmierst dein Kram runter, packst das alles in eine kleine Kiste, also zum Beispiel ein Tarball oder CVS und danach schreibst du ein Readme und das Ding zusammen, also der Lieferschein und diese kleine Kiste, wirfst du über den Zaun, am anderen Ende steht schon irgendein Admin, der sammelt das dann ein, packt das wieder auseinander, geht dieses Readme durch, stellt fest, dass das vorne und hinten nicht funktioniert.

00:41:22.950 --> 00:41:36.670
Und der Prozess war aber definiert, siehe Wasserfall-Methodik und so, von, wenn ihr fertig mit dem Entwickeln seid, dann gibt es halt den Admins. Und in einer komplexen Welt hast du halt eben nicht mehr solche ganz klaren, harten Interfaces zwischen Leuten.

00:41:36.670 --> 00:41:38.730
Hat der gerade Agile gesagt oder was?

00:41:38.750 --> 00:41:39.870
Oder warst du ja gerade beim Buzzword-Bingo?

00:41:40.130 --> 00:41:40.650
Ja, ja.

00:41:41.450 --> 00:41:43.550
Agile ist schon eine Weile her.

00:41:44.550 --> 00:41:47.990
In einer komplexen Welt hast du halt das Problem,

00:41:48.090 --> 00:41:50.150
dass du die Schnittstellen zwischen unterschiedlichen Leuten,

00:41:51.110 --> 00:41:52.890
unterschiedlichen Teams, unterschiedlichen Prozessen

00:41:52.890 --> 00:41:54.790
halt nicht mehr so glatt definieren kannst à la

00:41:54.790 --> 00:41:58.410
ihr arbeitet bis hierhin und das Werkstück, was da rausfällt,

00:41:58.510 --> 00:41:59.410
gebt ihr dann dem Nächsten.

00:42:00.050 --> 00:42:02.070
Also das kannst du machen, wenn du Auto baust.

00:42:02.390 --> 00:42:04.630
Und Autobauen ist halt tatsächlich ein Ding,

00:42:04.630 --> 00:42:06.730
das können wir heutzutage ingenieursmäßig machen

00:42:06.730 --> 00:42:08.590
eben, dann weißt du, es gibt die

00:42:08.590 --> 00:42:10.630
Station, der dreht die Schrauben rein, dann wandert das

00:42:10.630 --> 00:42:12.510
Auto selbstständig zur nächsten Station,

00:42:12.710 --> 00:42:14.450
der dreht die anderen Schrauben rein, der nächste macht den

00:42:14.450 --> 00:42:16.030
Spiegel dran und so, alle,

00:42:16.530 --> 00:42:18.110
da muss keiner mehr miteinander reden.

00:42:19.090 --> 00:42:20.510
Ja, wobei, wenn ich

00:42:20.510 --> 00:42:22.230
dann noch mal so kurz abschweifen darf, ich

00:42:22.230 --> 00:42:23.010
Bitte, bitte.

00:42:25.030 --> 00:42:26.390
Also das, was wir sozusagen

00:42:26.390 --> 00:42:28.590
dann als Agile

00:42:28.590 --> 00:42:30.570
Methoden ja dann in der Softwareentwicklung

00:42:30.570 --> 00:42:32.370
irgendwie gesehen haben, das kommt ja ursprünglich

00:42:32.370 --> 00:42:33.830
daher. Ich fand das

00:42:33.830 --> 00:42:36.290
letztens beim Abendessen

00:42:36.290 --> 00:42:38.170
haben wir dann mit

00:42:38.170 --> 00:42:40.110
bekannten

00:42:40.110 --> 00:42:42.150
Freunden gesprochen und einer von denen kam

00:42:42.150 --> 00:42:43.210
halt aus der

00:42:43.210 --> 00:42:46.310
Automobilindustrie und beschwerte sich bitterlich,

00:42:46.530 --> 00:42:48.170
was denn dieser komische neue Trend

00:42:48.170 --> 00:42:49.930
sei, der da irgendwie jetzt über sie

00:42:49.930 --> 00:42:52.050
hereinbräche. Irgendwie dieses

00:42:52.050 --> 00:42:53.530
ganze komische Agile-Zeugs

00:42:53.530 --> 00:42:55.910
und dass es da irgendwie, dass

00:42:55.910 --> 00:42:57.790
jetzt plötzlich irgendwie eine tausendmal

00:42:57.790 --> 00:42:59.810
Entwicklungsabteilung irgendwie Agile-Dinge

00:42:59.810 --> 00:43:01.610
machen sollte und dann machen halt alle,

00:43:01.850 --> 00:43:03.530
wird die in Teams aufgeteilt und die machen dann halt alle

00:43:03.530 --> 00:43:05.530
irgendwie Dinge in unterschiedliche Richtungen

00:43:05.530 --> 00:43:07.230
und es passt nichts mehr zusammen, alles ganz furchtbar.

00:43:08.270 --> 00:43:09.630
Und das fand ich irgendwie

00:43:09.630 --> 00:43:11.810
witzig, weil eigentlich kommt das ja

00:43:11.810 --> 00:43:13.090
aus der Automobilindustrie.

00:43:13.350 --> 00:43:13.710
Ja, Toyota.

00:43:15.330 --> 00:43:16.370
Ja, nee, nee, Moment.

00:43:17.910 --> 00:43:19.110
Nein, da muss ich reingrätschen.

00:43:19.570 --> 00:43:19.750
Nein.

00:43:21.090 --> 00:43:23.450
Du hast zwei Sachen. Du hast Agile auf der einen Seite

00:43:23.450 --> 00:43:24.670
und du hast Kanban auf der anderen.

00:43:25.230 --> 00:43:27.390
Und Kanban, das sind

00:43:27.390 --> 00:43:29.390
ähnliche Konzepte. Kanban ist das, was

00:43:29.390 --> 00:43:31.630
Toyota stark gemacht hat.

00:43:32.350 --> 00:43:33.370
Das ist tatsächlich, es kam aus

00:43:33.370 --> 00:43:35.290
so einem produktionsorientierten Thema

00:43:35.290 --> 00:43:37.510
und Produktion hieß

00:43:37.510 --> 00:43:39.450
an der Stelle tatsächlich eine Flussoptimierung,

00:43:40.030 --> 00:43:41.630
dass du machst,

00:43:41.790 --> 00:43:43.490
dass das, also

00:43:43.490 --> 00:43:45.490
wenn du so eine Werkshalle hast mit

00:43:45.490 --> 00:43:46.570
Autos und dieser

00:43:46.570 --> 00:43:50.010
Straße, dieser Fertigungsstrecke,

00:43:50.490 --> 00:43:51.490
dann wandern die Autos

00:43:51.490 --> 00:43:53.450
halt schön durch und ein Thema ist immer,

00:43:54.230 --> 00:43:55.530
dass wenn da irgendwas blockiert,

00:43:55.670 --> 00:43:56.970
dann bleibt halt dieses ganze Band stehen.

00:43:57.110 --> 00:43:57.850
Dann hast du ein sogenanntes

00:43:57.850 --> 00:44:01.230
Stop-the-Line, Head-of-Line-Blocking auch,

00:44:01.330 --> 00:44:03.350
es geht hier hinten nicht weiter, bevor es da vorne nicht

00:44:03.350 --> 00:44:04.570
weitergeht. Und

00:44:04.570 --> 00:44:06.350
Toyota hat ja tatsächlich

00:44:06.350 --> 00:44:09.670
sich Methodiken zurechtgelegt,

00:44:10.250 --> 00:44:11.010
um

00:44:11.010 --> 00:44:13.370
die Planung

00:44:13.370 --> 00:44:14.950
von diesen Abläufen

00:44:14.950 --> 00:44:16.570
möglichst gut zu machen.

00:44:17.090 --> 00:44:18.950
Da gehört Can-Band unter anderem mit dazu.

00:44:19.050 --> 00:44:20.890
Can-Band ist eine Abstraktion von so einem

00:44:20.890 --> 00:44:22.510
Fertigungsstraßending,

00:44:23.050 --> 00:44:25.230
wo du halt sowas hast wie, du hast bestimmte Schritte,

00:44:25.370 --> 00:44:27.410
die werden nacheinander durchlaufen und in jedem

00:44:27.410 --> 00:44:29.270
Schritt dürfen nur maximal so und so viel gleichzeitig

00:44:29.270 --> 00:44:31.310
sein, weil ansonsten verlieren die Leute sich

00:44:31.310 --> 00:44:33.330
halt im Threshing, weil sie ständig Kontextwechsel machen müssen

00:44:33.330 --> 00:44:35.190
und so. Das ist halt mehr das

00:44:35.190 --> 00:44:37.150
Thema, wie kann ich Durchfluss optimieren und das

00:44:37.150 --> 00:44:39.090
geht aber nur, wenn ich möglichst

00:44:39.090 --> 00:44:41.490
einheitliche, möglichst gleichförmige Arbeitsschritte

00:44:41.490 --> 00:44:41.850
habe.

00:44:43.430 --> 00:44:45.150
Wenn ich zu viel unterschiedliche

00:44:45.150 --> 00:44:47.270
Arbeitsschritte habe und deswegen ist Softwareentwicklung

00:44:47.270 --> 00:44:48.790
Agile im Prinzip anders, weil du hast

00:44:48.790 --> 00:44:51.350
völlig unterschiedliche Sachen, die du zwischendurch machst.

00:44:51.770 --> 00:44:53.110
Auf der einen Seite von UIs

00:44:53.110 --> 00:44:55.090
zu Features, zu Bugs, zu einem

00:44:55.090 --> 00:44:56.870
großen Architekturthema, zu einem kleinen

00:44:56.870 --> 00:44:58.790
Usability-Thema. Das geht so alles quer durcheinander

00:44:58.790 --> 00:45:00.910
und bei Canban willst du aber eigentlich, dass

00:45:00.910 --> 00:45:02.690
jedes Teilchen möglichst

00:45:02.690 --> 00:45:04.390
eine einheitliche Größe hat,

00:45:04.850 --> 00:45:06.650
damit du darauf, auch über diese,

00:45:06.870 --> 00:45:08.550
ansonsten würde nämlich die Regulierung

00:45:08.550 --> 00:45:10.930
der Work-in-Progress-Anzahl von Kärtchen

00:45:10.930 --> 00:45:12.510
gar nicht helfen,

00:45:12.570 --> 00:45:14.090
wenn du gar nicht weißt, wie groß das Kärtchen ist.

00:45:14.090 --> 00:45:14.950
Klar, okay, ja.

00:45:15.670 --> 00:45:17.850
Deswegen sind das so zwei, die sind nicht unabhängig,

00:45:17.950 --> 00:45:19.750
also die kann man unabhängig

00:45:19.750 --> 00:45:21.790
und zusammen komplementär einsetzen, aber die haben

00:45:21.790 --> 00:45:23.510
unterschiedliche Eigenschaften. Agile

00:45:23.510 --> 00:45:25.430
war ja eher dafür gedacht,

00:45:26.010 --> 00:45:26.210
um

00:45:26.210 --> 00:45:30.150
die User und die Entwickler

00:45:30.150 --> 00:45:32.070
näher aneinander zu bringen,

00:45:32.170 --> 00:45:34.150
also das ist eher ein Thema von Disintermediation,

00:45:34.690 --> 00:45:35.690
dass du nicht möchtest,

00:45:35.970 --> 00:45:39.030
dass die so weit auseinander sind,

00:45:39.090 --> 00:45:40.490
dass sie keine gemeinsame Sprache sprechen.

00:45:40.490 --> 00:45:42.430
Und das Interessante bei Agile ist,

00:45:42.470 --> 00:45:44.250
weil ich habe das in letzter Zeit auch mal wieder da gehabt,

00:45:44.690 --> 00:45:47.710
dass du, wenn man das Manifest nochmal rausholt

00:45:47.710 --> 00:45:49.230
und diese ur-ur-ur-alte Seite

00:45:49.230 --> 00:45:50.790
und die haben ihr HTTPS nicht im Griff,

00:45:51.990 --> 00:45:59.930
dann ist es halt sehr knapp.

00:46:01.050 --> 00:46:05.070
Es ist halt People over, jetzt muss ich es selber halt raussuchen,

00:46:05.490 --> 00:46:10.310
das war People over Processes, Working Software over Comprehensive Documentation,

00:46:10.530 --> 00:46:14.790
Collaboration over Contract and Negotiation, Responding to Change over Following a Plan.

00:46:15.550 --> 00:46:18.830
Und das Dumme ist, das sind Techniken, die waren entwickelt worden,

00:46:19.530 --> 00:46:22.490
ich glaube, das war ein Chrysler-Projekt und das ist eigentlich gar nicht so gut,

00:46:22.490 --> 00:46:25.990
aber die Techniken an sich haben sich halt durchaus als hilfreich bewiesen,

00:46:26.470 --> 00:46:35.010
dass diese vier Grundsätze ja die Entwickler und die User enger aneinander bringen sollten,

00:46:35.150 --> 00:46:37.230
um die Realität schneller sichtbar zu machen.

00:46:37.710 --> 00:46:41.850
Ansonsten kannst du halt über Dokumentationen, Prozesse und Vertragsverhandlungen und Plangestaltung

00:46:41.850 --> 00:46:46.970
kannst du die Realität dermaßen verzerren, weil du hast halt so viele Ebenen von mittlerem Management

00:46:46.970 --> 00:46:53.630
und halt eben Mediation dazwischen, dass du hast halt stille Post vom Anwender bis zum Entwickler.

00:46:54.090 --> 00:46:55.850
Und damals wurde ja auch immer gesagt, die Anwender sollen nicht

00:46:55.850 --> 00:46:57.810
mit den Entwicklern reden. Und ein

00:46:57.810 --> 00:46:59.850
großes Problem, was die Agile-Community

00:46:59.850 --> 00:47:01.770
hat, meiner Meinung nach, ist, es war eine

00:47:01.770 --> 00:47:03.950
Team-Methode, die war nie dafür

00:47:03.950 --> 00:47:06.130
gedacht, auf ganze Unternehmen angewendet

00:47:06.130 --> 00:47:07.830
zu werden. Also die war

00:47:07.830 --> 00:47:09.690
gedacht für so 10 bis 15 Leute.

00:47:10.290 --> 00:47:12.110
Ja, genau.

00:47:12.430 --> 00:47:13.370
So man sagt auch oft,

00:47:13.550 --> 00:47:15.650
bei neun Leuten ist bei einem Team dann irgendwie Schluss.

00:47:15.930 --> 00:47:17.690
Und irgendwie so eine überzeugende Antwort darauf,

00:47:17.750 --> 00:47:19.610
was man denn jetzt macht, wenn man Projekte hat,

00:47:19.750 --> 00:47:21.790
die sich mit neun Leuten halt nicht

00:47:21.790 --> 00:47:23.370
stemmen lassen,

00:47:23.810 --> 00:47:25.370
habe ich auch nie so wirklich gehört.

00:47:27.490 --> 00:47:28.410
Ja, aber ich meine...

00:47:28.410 --> 00:47:28.670
Mach es kleiner.

00:47:28.970 --> 00:47:29.710
Genau, du musst es halt...

00:47:29.710 --> 00:47:29.930
Mach es kleiner.

00:47:30.450 --> 00:47:32.050
Du teilst dann die einzelnen Teams auch, ne?

00:47:32.050 --> 00:47:32.750
Du machst dann ein Team,

00:47:32.870 --> 00:47:34.010
was für das spezielle Projekt ist.

00:47:34.050 --> 00:47:34.810
Du machst dann ein eigenes Team,

00:47:34.870 --> 00:47:35.330
einen eigenen Raum.

00:47:35.650 --> 00:47:37.050
Die haben ihre eigene Peergroup,

00:47:37.150 --> 00:47:38.250
ihre eigenen Stakeholder.

00:47:38.370 --> 00:47:38.810
Du musst dann gucken,

00:47:38.870 --> 00:47:39.950
wie sich damit klarkommt irgendwie, ne?

00:47:40.450 --> 00:47:41.810
Aber das Interessante an der Stelle ist,

00:47:41.830 --> 00:47:42.570
jetzt hat man halt versucht,

00:47:42.710 --> 00:47:44.010
dann irgendwie da drumherum

00:47:44.010 --> 00:47:44.950
ein Gesamtframework,

00:47:45.010 --> 00:47:47.330
das heißt dann entweder Scaling Agile

00:47:47.330 --> 00:47:48.450
oder Scrum oder was auch immer,

00:47:48.890 --> 00:47:50.370
ein Gesamtframework zu bauen,

00:47:51.270 --> 00:47:52.690
was Unternehmen halt kaufen können.

00:47:53.110 --> 00:48:04.570
Und es ist aber ein massiver Unterschied, ob ich ein Team habe, was aufgrund so einer Methodik, Methodology mit kleinem M, arbeitet und verstanden hat,

00:48:04.570 --> 00:48:13.230
dass diese Aussage zum Beispiel ist, wenn man das Manifest noch eins runterkochen will und sagt, diese vier Sätze sind mir zu viel,

00:48:13.750 --> 00:48:19.230
dann ist die eigentliche Ansage, liebes Team, du hast nicht nur eine Verantwortung, Software abzuliefern,

00:48:19.350 --> 00:48:20.930
sondern du hast auch eine Verantwortung dafür,

00:48:21.030 --> 00:48:22.790
den Prozess zu guter Software zu kommen,

00:48:22.890 --> 00:48:23.650
selbst zu gestalten.

00:48:24.830 --> 00:48:26.870
Und wenn ich dann aber im Gegensatz dazu

00:48:26.870 --> 00:48:28.790
heutzutage immer mal in irgendwelchen Runden bin,

00:48:28.870 --> 00:48:30.490
wo irgendwelche Entwickler sich selbst als,

00:48:30.570 --> 00:48:32.130
ja, ich bin ja nur ein Entwickler,

00:48:32.570 --> 00:48:33.730
bezeichnen, denke ich mir so,

00:48:34.590 --> 00:48:38.810
ey, mein Kindheitsherz bricht gerade,

00:48:38.810 --> 00:48:40.890
weil die Softwareentwicklung selber war das,

00:48:41.070 --> 00:48:42.810
was, als ich groß geworden bin, war mit,

00:48:42.950 --> 00:48:44.150
hey, da ist doch die ganze Power,

00:48:44.270 --> 00:48:45.930
das ist doch was, was attraktiv ist,

00:48:46.010 --> 00:48:46.850
da ist die Gestaltung

00:48:46.850 --> 00:48:48.430
und nicht in irgendwelche Leute

00:48:48.430 --> 00:48:50.790
lassen dich nur noch Tickets abarbeiten.

00:48:52.110 --> 00:48:52.870
Ja, ich

00:48:52.870 --> 00:48:54.630
finde das auch immer total seltsam, wenn Leute da so

00:48:54.630 --> 00:48:56.850
sich so zurückziehen

00:48:56.850 --> 00:48:59.150
auf so eine

00:48:59.150 --> 00:49:00.730
ganz, ganz enge Funktion.

00:49:01.790 --> 00:49:02.990
Ich kann

00:49:02.990 --> 00:49:04.890
das auch nicht so richtig, aber es gibt das natürlich durchaus

00:49:04.890 --> 00:49:06.610
und es gibt auch Leute, die sich total unsicher fühlen,

00:49:06.830 --> 00:49:08.550
wenn sie dann halt da irgendwie

00:49:08.550 --> 00:49:10.450
mit Fragen konfrontiert werden,

00:49:10.770 --> 00:49:12.950
die sie jetzt nicht kompetent

00:49:12.950 --> 00:49:13.290
fühlen.

00:49:14.810 --> 00:49:27.070
Und dann probieren wir mal die Schleife zum DevOps zu machen. Jetzt hast du also mit agilen Methoden eigentlich eine Ansage von, hey Jungs, ihr müsst euch halt Gedanken machen, wie man vernünftig zusammenarbeitet.

00:49:28.130 --> 00:49:43.190
Ich komme immer mal wieder jetzt mit diesem komplexe Welt Thema und ich mache einen kurzen Aufschlag zu, was heißt komplexe Welt. Komplexe Welt heißt, wir haben Beziehungen zwischen Dingen, die wir nicht vorhersagen können.

00:49:44.230 --> 00:49:46.590
Du kannst die Welt einteilen, kannst Systeme einteilen.

00:49:47.250 --> 00:49:49.530
Das ist halt wieder das Kinevin von Dave Snowden.

00:49:49.910 --> 00:49:54.090
Ja, der macht irgendwie Unterschiede zwischen kompliziert, komplex und chaotisch.

00:49:54.550 --> 00:49:55.070
Genau, genau.

00:49:55.450 --> 00:49:59.690
Das ist deine Theorie, an der er seit 30 Jahren arbeitet.

00:49:59.850 --> 00:50:03.130
Und die nimmt jetzt gerade auch ganz gute Formen an, dass er sie finalisiert.

00:50:04.590 --> 00:50:08.330
Der unterscheidet Systeme in Unterschied.

00:50:08.630 --> 00:50:12.150
Du kannst es als Typologie benutzen, du kannst es als Klassifikationssystem benutzen,

00:50:12.250 --> 00:50:15.450
Du kannst es aber auch als exploratives Werkzeug benutzen.

00:50:15.690 --> 00:50:18.870
Und er sagt halt, es gibt zum einen geordnete und ungeordnete Systeme.

00:50:19.690 --> 00:50:24.410
Und geordnete Systeme sind die, wo Ursache-Wirkungs-Prinzipien halt vorhersagbar sind für uns Menschen.

00:50:24.790 --> 00:50:27.770
Die kannst du nochmal unterteilen in offensichtliche Systeme.

00:50:27.830 --> 00:50:31.530
Das heißt, du brauchst kein Fachwissen, um eine Vorhersage zu treffen.

00:50:31.870 --> 00:50:36.310
Beispiel, ich lasse mein Glas runterfallen und dann ist da eine Pfütze auf dem Boden.

00:50:37.110 --> 00:50:41.610
Da weiß ich halt auch ohne Fachwissen, ich hebe das jetzt auf, wische das weg.

00:50:41.850 --> 00:50:43.510
wenn es gesplittert hat, hole ich noch einen Staubsauger.

00:50:43.950 --> 00:50:45.250
Da brauche ich nicht groß irgendwie

00:50:45.250 --> 00:50:47.110
Analyse betreiben.

00:50:49.550 --> 00:50:51.890
In solchen Umgebungen

00:50:51.890 --> 00:50:53.750
kannst du halt auch zum Beispiel... Es gibt Unternehmen, die machen

00:50:53.750 --> 00:50:55.810
genau sowas. Die kaufen sich da ein neues Glas und

00:50:55.810 --> 00:50:57.570
auf dem Boden stammeln sich immer mehr Scherben an.

00:50:58.050 --> 00:50:59.330
Ja, genau. Kann man machen.

00:51:01.390 --> 00:51:02.250
Denn dann

00:51:02.250 --> 00:51:03.750
kompliziert ist, wenn du

00:51:03.750 --> 00:51:05.890
für Vorhersagen

00:51:05.890 --> 00:51:06.790
in einem System

00:51:06.790 --> 00:51:09.270
Analyse betreiben musst. Wenn du sozusagen

00:51:09.270 --> 00:51:11.530
einen Fachmenschen brauchst,

00:51:11.850 --> 00:51:21.690
Der sich ein Problem nimmt und sagt, okay, was sind denn hier jetzt die Parameter, da gehören zum Beispiel sowas wie, jetzt beim Hausbau ein Statiker, ein deutscher Ingenieur, die sind genau für sowas gut.

00:51:22.110 --> 00:51:30.170
Den gibt es ein Problem, was man nicht auf den ersten Blick erkennt, aber wo du weißt, der setzt sich jetzt hin, das dauert dann 10 Stunden, dann rechnet er das durch und dann kommt dein Ergebnis raus.

00:51:30.650 --> 00:51:34.710
Der kann dir das Ergebnis nicht vorab sagen, aber er weiß, wenn er das jetzt macht, dann kommt er halt am Ende raus.

00:51:35.190 --> 00:51:39.050
Und er weiß, wie wird die Tragfähigkeit von dem System sein, bevor ich es baue.

00:51:40.790 --> 00:51:57.570
Kompliziert wiederum ist der Fall, wenn ich Ursache-Wirkungs-Prinzipien eben nicht vorhersagen kann, aber zumindest die Chance hätte, es im Nachhinein zu erklären. Wenn ich nicht mal die Ursache-Wirkungs-Prinzipien im Nachhinein erklären kann, dann sind wir in den sogenannten chaotischen Systemen. Dann habe ich gar keine für Menschen entdeckbaren Zusammenhänge mehr.

00:51:57.570 --> 00:52:16.050
Und es gibt unterschiedliche Handlungsstrategien für diese unterschiedlichen Systeme. Und im komplexen, jetzt muss ich versuchen die Schleife wieder hinzukriegen, wo ich gerade abgeschwiffen bin, in der komplexen Welt ist es eben so, dass ich diese Ursache-Wirkungs-Prinzipien eben nicht vorhersehen kann.

00:52:16.050 --> 00:52:36.490
Und deswegen ist das der Grund, warum starre Methodiken, starre Formen der Zusammenarbeit, starre Formen der Planentwicklung dort niemals funktionieren werden. Und die Leute wundern sich immer, die wenden Techniken an aus einer analytischen Perspektive und sagen, das musst du ja einmal runter definieren, hab aber ein komplexes System und wundern sich dann, warum es nicht funktioniert.

00:52:36.490 --> 00:52:49.750
Und die typische Antwort ist dann ja, wir müssen das nächste Mal einen besseren Plan machen, wir müssen das nächste Mal noch genauer hingucken. Und dabei ist die Aussage, nein, die Welt ändert sich um dich drumherum, während du mit ihr interagierst und sie zeigt sich dir nicht in ihrer Fülle.

00:52:49.870 --> 00:53:10.130
Und das ist so ein massiver Unterschied, weswegen dann nämlich agile Methoden oder DevOps immer mitbringen, du musst die für deinen Kontext, also Kontext ist ein angemessene Kombination herstellen und dafür brauchst du aber eine Auswahl an unterschiedlichen Methodiken, eine Auswahl an unterschiedlichen Fertigkeiten, unterschiedlichen Werkzeugen.

00:53:10.130 --> 00:53:39.010
Und deswegen ist sozusagen beide Extreme, wenn wir drüber reden, FTP-Deployments oder Docker oder Kubernetes eats the world, beide Extreme sind nicht gesund. Beides sind halt Werkzeuge, die kontextabhängig sind. Docker und Kubernetes ist, also gerade Kubernetes ist halt ein riesengroßes Tier. Das ist halt vielleicht nicht angemessen, wenn ich Embedded-Systeme mache, weil ich halt nicht 20 Gigabyte in meinen armen kleinen Raspberry Pi reinkriege.

00:53:39.970 --> 00:53:57.010
Und dafür aber dann halt zu wissen, was sind denn auch die Grundlagentechniken, damit alle, die beteiligt sind, halt Entwickler, User, Businessleute, Opsleute, dass die halt sich in einem Projekt auch zusammenfinden und sagen, so, was ist denn hier jetzt die richtige Kombination für jetzt?

00:53:57.570 --> 00:53:59.410
Weil auch die Zeit ist ja wieder ein Faktor

00:53:59.410 --> 00:54:01.170
da dran. Man fängt ja mit Projekten an und will

00:54:01.170 --> 00:54:02.610
erstmal was basteln und

00:54:02.610 --> 00:54:05.010
das ist eben wieder dieses Thema im Komplexen.

00:54:05.070 --> 00:54:07.130
Du willst so schnell wie möglich experimentieren,

00:54:07.230 --> 00:54:09.370
Ende, Ende, sehen, was tut meine Software

00:54:09.370 --> 00:54:11.350
eigentlich? Kann mein User damit

00:54:11.350 --> 00:54:13.270
irgendwas anfangen? Und da sind wir wieder beim Agilen.

00:54:13.630 --> 00:54:15.430
Warum machen wir eigentlich kleine Zyklen?

00:54:15.830 --> 00:54:17.270
Naja, weil ich so schnell wie möglich vom User

00:54:17.270 --> 00:54:19.090
rausfinden möchte, ob ich überhaupt in die richtige

00:54:19.090 --> 00:54:21.510
Richtung entwickle. Ja, Learn, Process, Learn, Process.

00:54:21.930 --> 00:54:23.170
Genau. Ja, genau. So ein bisschen

00:54:23.170 --> 00:54:24.750
Trial and Error halt.

00:54:24.990 --> 00:54:26.730
Ja, ja, auch Sachen wegwerfen.

00:54:26.730 --> 00:54:53.270
Und ein ganz interessantes Thema halt aus der Komplexität dabei ist wieder, wenn du nicht an die Grenzen kommst, wenn du keine Fehler machst, und das erklärt sich für mich, was bedeutet Fehlerkultur eigentlich, das ist nämlich völlig fehlverstanden, das heißt nicht, ah, man macht was falsch und dann geht was kaputt und deswegen sind wir jetzt alle nicht sauer auf dich, sondern wir müssen eigentlich vorher einen Plan machen, in einer Umgebung, die wir noch nicht vollständig erfasst haben, die Grenzen zu finden.

00:54:53.990 --> 00:55:23.510
Und wie finde ich eine Grenze? Indem man was kaputt gehen lässt. Indem ich was kaputt gehen lasse, weil dann weiß ich nämlich, ah, bis hierher und nicht weiter. Wenn ich die nur nie austeste, dann haben Menschen auch einen, die Menschen, ich bin kein Roboter, dann haben Menschen das Problem, dass sie gerne linear denken und dass sie denken, ah, guck mal, das ging jetzt mit 5, das ging jetzt mit 10, ja, dann geht es halt auch mit 20, 40 und 100.

00:55:23.990 --> 00:55:26.310
dass dann aber vielleicht bei

00:55:26.310 --> 00:55:27.370
elf

00:55:27.370 --> 00:55:30.630
eine abrupte Grenze kommt, wo es halt gar nicht mehr geht,

00:55:30.690 --> 00:55:32.750
das können wir eben nicht vorhersagen. Das ist wieder der Black Swan

00:55:32.750 --> 00:55:34.050
auch, den du halt hattest.

00:55:35.050 --> 00:55:35.910
Und auch

00:55:35.910 --> 00:55:38.650
Taleb im

00:55:38.650 --> 00:55:40.670
Black Swan argumentiert ja für

00:55:40.670 --> 00:55:42.390
den Longtail. Die Menschen

00:55:42.390 --> 00:55:44.830
unterschätzen den Effekt der Risiken

00:55:44.830 --> 00:55:46.610
eines Longtails. Die Fläche

00:55:46.610 --> 00:55:48.630
in dem Rattenschwanz,

00:55:48.790 --> 00:55:50.170
der nur sehr selten kommt,

00:55:50.690 --> 00:55:52.150
ist in Summe aber sehr groß.

00:55:52.730 --> 00:55:54.230
Und deswegen sind die Wahrscheinlichkeiten, dass

00:55:54.230 --> 00:55:56.090
eins dieser unwahrscheinlichen Ereignisse

00:55:56.090 --> 00:55:57.630
eintreten wird, auch extrem hoch.

00:55:58.450 --> 00:56:00.050
Kann ja trotzdem einfach mal irgendwas twittern.

00:56:00.990 --> 00:56:01.990
Ja, ja, ich finde dann auch die

00:56:01.990 --> 00:56:03.870
Arten, damit umzugehen, interessant.

00:56:04.190 --> 00:56:06.270
Also gerade bei Infrastruktur gibt es

00:56:06.270 --> 00:56:08.110
da zum Beispiel bei Netflix gibt es da

00:56:08.110 --> 00:56:08.570
den

00:56:08.570 --> 00:56:11.810
Chaos Monkey. Genau.

00:56:12.250 --> 00:56:13.770
Der halt dann einfach mal irgendwie

00:56:13.770 --> 00:56:15.970
einen Dienst, der halt

00:56:15.970 --> 00:56:17.810
irgendwie den Stecker bei Maschinen zieht

00:56:17.810 --> 00:56:19.590
oder die einfach vom Netz trennt und dann

00:56:19.590 --> 00:56:21.770
guckt man halt, ob die Infrastruktur

00:56:21.770 --> 00:56:23.890
weiterhin lebt. Und wenn sie das nicht tut, dann hat man da irgendwas nicht

00:56:23.890 --> 00:56:25.610
ordentlich gebaut, sozusagen.

00:56:26.390 --> 00:56:27.910
Ja, und das Interessante bei, das unterstützt

00:56:27.910 --> 00:56:30.130
ja diesen psychologischen Effekt. Das unterstützt

00:56:30.130 --> 00:56:31.910
ja dieses, ja, wann kommt denn das schon mal

00:56:31.910 --> 00:56:33.910
vor, dass so eine VM ausgeht? Und wann kommt denn das schon mal

00:56:33.910 --> 00:56:35.790
vor, dass da eine Netzwerkverbindung hakelig ist?

00:56:36.330 --> 00:56:38.030
Und wenn du das umdrehst und sagst,

00:56:38.050 --> 00:56:39.170
das ist nächsten Dienstag,

00:56:39.470 --> 00:56:41.510
dann

00:56:41.510 --> 00:56:43.890
haben die Leute halt ein anderes Händel da dran.

00:56:43.970 --> 00:56:45.890
Dann hast du nicht mehr dieses psychologische, ah, da kann ich

00:56:45.890 --> 00:56:47.850
mich drum rum wickeln. Das ist DevOps.

00:56:47.850 --> 00:56:49.770
Also dann solche Situationen herzustellen und

00:56:49.770 --> 00:56:51.330
die ganze Zeit die Leute zu nerven mit

00:56:51.330 --> 00:56:53.530
Szenarien, die in der Realität irgendwie

00:56:53.530 --> 00:56:55.550
im Wahnsinn auftreten könnten und die man dann realisiert?

00:56:55.890 --> 00:56:57.530
Nee, es ist eher, dass man

00:56:57.530 --> 00:56:59.650
diese Dinge nicht so klar

00:56:59.650 --> 00:57:01.570
voneinander trennen kann. Also auf der einen

00:57:01.570 --> 00:57:03.070
Seite Softwareentwicklung, auf der anderen Seite

00:57:03.070 --> 00:57:04.210
Betrieb

00:57:04.210 --> 00:57:07.190
des Systems. Also früher,

00:57:07.330 --> 00:57:09.250
klassisch war das halt so, Entwicklungsabteilung hat halt

00:57:09.250 --> 00:57:11.670
die Software nach Spezifikationen

00:57:11.670 --> 00:57:13.050
entwickelt, wie auch immer die aussah.

00:57:13.610 --> 00:57:15.030
Und dann

00:57:15.030 --> 00:57:17.370
eine IT-Abteilung war dann halt dafür zuständig,

00:57:17.370 --> 00:57:19.370
also für Sicherheit, Skalierbarkeit

00:57:19.370 --> 00:57:21.230
und dafür, dass das letztendlich irgendwo

00:57:21.230 --> 00:57:22.630
dann läuft, zuständig.

00:57:23.230 --> 00:57:24.970
Ja, die sogenannten nicht-funktionalen Anforderungen.

00:57:25.110 --> 00:57:27.010
Ja, genau. Und

00:57:27.010 --> 00:57:29.090
das ist aber schwer voneinander zu trennen.

00:57:29.290 --> 00:57:30.710
Das ist halt...

00:57:30.710 --> 00:57:32.690
Vor allem, wenn der Manager dann irgendwie kein

00:57:32.690 --> 00:57:33.690
ITler ist wahrscheinlich.

00:57:35.350 --> 00:57:37.130
Bei nicht-funktionalen Anforderungen denke ich mir halt

00:57:37.130 --> 00:57:39.290
auch immer, zum Beispiel Performance,

00:57:39.490 --> 00:57:41.070
da hieß es dann halt, wie groß

00:57:41.070 --> 00:57:42.530
muss die CPU sein, wo das läuft.

00:57:42.810 --> 00:57:45.010
Der Trick ist, wenn ich halt Blödsinn baue am anderen Ende

00:57:45.010 --> 00:57:47.210
und eine Endlosschleife baue, dann kann die CPU

00:57:47.210 --> 00:57:48.290
halt so schnell sein, wie sie will.

00:57:48.450 --> 00:57:49.550
Das wird nicht funktionieren, genau.

00:57:50.890 --> 00:58:13.250
Ja, genau, aber wenn man jetzt Systeme bauen will, die damit umgehen können, dass jetzt so irgendwie so ein Chaos Monkey ab und zu mal da irgendwie nicht deterministische Dinge ausfallen lässt, dann muss man sich halt auch nicht nur, dann reicht es nicht, sich sozusagen auf der IT-Ebene sozusagen damit zu beschäftigen, sondern dann muss man vielleicht auch die Software schon so bauen, dass sie damit irgendwie klarkommt.

00:58:14.990 --> 00:58:37.050
Es ist vor allem extrem teuer, wenn du Sachen, also wie es halt immer auch ist mit dem Thema, wie teuer sind Bugs, je später du sie findest, desto teurer werden sie halt. Und so ähnlich ist es halt auch, wenn ich bestimmte Probleme wie Verfügbarkeit, Performance, Ressourcennutzung, wenn ich die versuche dann erst spät im Prozess, also irgendwo im Betrieb zu lösen, dann bin ich eigentlich nur noch dabei, Duct Tape rauszuholen.

00:58:37.530 --> 00:59:04.770
Also das halt alles wieder zusammenzubinden, was vorne schon mal verrissen wurde. Das sehe ich relativ häufig. Also wir sehen halt immer wieder Anwendungen, die verbraten Unmengen an CPUs und RAM. Und wenn man dann halt feststellt, das hat irgendein Java-Entwickler gemacht, Java-Bashing, der tatsächlich nur irgendwie als Quereinsteiger mal so ein bisschen reingeguckt hat und von algorithmischer Komplexität keine Ahnung hat und sich da ein ON hoch 5 gebaut hat,

00:59:05.550 --> 00:59:30.890
Dann kannst du schon sagen, ja, logisch, dass das explodiert, da brauche ich auch nicht noch mehr Hardware draufwerfen. Und beim DevOps dreht es sich jetzt eher darum, dass du zwischen Leuten, die halt operative Erfahrung haben und Leute, die Entwickler sind und diese beiden als Tagesgeschäft, also diese beiden als unterschiedliche Disziplinen wahrzunehmen, hat jetzt erstmal Wert. Häufig wird DevOps auch so aufgegriffen, dass man sagt, oh, jetzt machen die Devs irgendwie alles. Auch bekannt als NoOps.

00:59:34.670 --> 00:59:41.990
Und die, ich fände es ja, diese Begriffe fallen ja gerne so aus einem von diesen Open-Source-Treffen raus.

00:59:42.290 --> 00:59:44.470
Das Dumme ist, das nimmt irgendein Manager dann halt noch ernst.

00:59:45.130 --> 00:59:46.890
Das sind eigentlich bloß immer irgendwelche Biersprüche.

00:59:50.690 --> 00:59:55.470
Weshalb es so macht, die zu trennen ist, die haben völlig unterschiedliche Tagesabläufe, die Leute.

00:59:56.650 --> 00:59:59.850
Also als Entwickler ist es schon so, ich brauche extrem hohe Konzentration

01:00:00.390 --> 01:00:06.130
und will mich halt auf bestimmte Sachen, die ich entwickeln möchte, konzentrieren.

01:00:06.670 --> 01:00:09.070
Und aus einer Ops-Perspektive hast du aber eher das Thema,

01:00:09.190 --> 01:00:12.770
dass du eben reaktiv, auch Echtzeit-reaktiv,

01:00:12.850 --> 01:00:15.570
auf das Verhalten der Anwendung reagieren können möchtest.

01:00:16.150 --> 01:00:18.770
Und das sind zwei Sachen, die funktionieren nicht gut

01:00:18.770 --> 01:00:22.690
an einem Tag in der gleichen Person, sagen wir es mal so.

01:00:23.170 --> 01:00:25.450
Also du kannst es schon so machen, wenn ich einen Tag mache,

01:00:25.550 --> 01:00:27.790
wo ich sage, ich entwickle jetzt wieder Software bei uns,

01:00:28.090 --> 01:00:29.770
dann versuche ich es möglichst zu vermeiden,

01:00:29.890 --> 01:00:31.630
dass ich irgendwie so OBS-Sachen mache, weil

01:00:31.630 --> 01:00:33.810
OBS-Sachen sind Dinge, die können gerne

01:00:33.810 --> 01:00:35.910
mehrere Stunden dauern, wo du immer mal nochmal hingucken

01:00:35.910 --> 01:00:37.610
musst. Und irgendwie...

01:00:37.610 --> 01:00:39.770
Und dann die grüne und dann bringt die blaue die ganze Zeit

01:00:39.770 --> 01:00:40.850
und dann oh oh. Genau, genau.

01:00:40.950 --> 01:00:43.370
Ja, ja.

01:00:43.850 --> 01:00:45.930
Genau, genau. Und allein deswegen

01:00:45.930 --> 01:00:47.670
macht es Sinn, das als unterschiedliche Rollen halt

01:00:47.670 --> 01:00:48.530
auch aufzufassen.

01:00:49.510 --> 01:00:51.530
Das muss ja noch nicht mal dann sein, dass eine Person

01:00:51.530 --> 01:00:53.130
immer OBS ist, aber dass du halt zum Beispiel weißt,

01:00:53.250 --> 01:00:55.550
das sind unterschiedliche Zuständigkeiten und ich muss mir das halt auch

01:00:55.550 --> 01:00:57.470
unterschiedlich zurechtlegen. Insofern ist eine

01:00:57.470 --> 01:00:59.470
mentale Separierung dieser zwei Rollen und die

01:00:59.470 --> 01:01:01.130
auch so ein bisschen zu klären,

01:01:01.510 --> 01:01:03.230
was haben die eigentlich zu tun? Erstmal

01:01:03.230 --> 01:01:05.330
ganz sinnvoll. Und wenn du es jetzt über

01:01:05.330 --> 01:01:07.550
DevOps als Portmanteau wieder zusammenklatscht,

01:01:07.650 --> 01:01:09.410
bedeutet es halt nur, die beiden müssen

01:01:09.410 --> 01:01:11.450
trotzdem in einem ständigen Austausch miteinander stehen,

01:01:11.530 --> 01:01:13.450
im konstruktiven Austausch miteinander stehen. Auf der einen

01:01:13.450 --> 01:01:15.410
Seite möchtest du, dass operatives Wissen

01:01:15.410 --> 01:01:17.210
in Projekte reinfließt, während die anfangen.

01:01:18.090 --> 01:01:19.390
Und auf der anderen Seite möchtest

01:01:19.390 --> 01:01:20.970
du auch, dass Entwicklung,

01:01:21.250 --> 01:01:23.230
es sind vier Sachen, also auf der einen Seite

01:01:23.230 --> 01:01:24.810
willst du operatives Wissen in Richtung Entwickler

01:01:24.810 --> 01:01:27.170
bei Projektbeginn haben, à la

01:01:27.170 --> 01:01:29.150
okay, was wollten ihr machen, was wollten ihr für Tools

01:01:29.150 --> 01:01:30.910
nehmen, ah, könnt ihr vielleicht statt der MySQL

01:01:30.910 --> 01:01:32.950
über eine Postgres nehmen, könnt ihr vielleicht, was, wofür

01:01:32.950 --> 01:01:34.610
nehmt ihr den Memcache, komm, nehmt ihr den Redis.

01:01:35.590 --> 01:01:36.950
Da wundere ich mich auch schon manchmal, dass

01:01:36.950 --> 01:01:39.110
das eine Ops-Aufgabe

01:01:39.110 --> 01:01:40.970
ist, sowas zu unterstützen, weil eigentlich denke ich

01:01:40.970 --> 01:01:42.970
mir so, hallo, liebe Entwickler, ihr müsst eure

01:01:42.970 --> 01:01:44.070
Tools halt auch kennen, ja.

01:01:44.970 --> 01:01:46.190
Aber anyway, die

01:01:46.190 --> 01:01:48.850
war zumindest mein Entwickleranspruch

01:01:48.850 --> 01:01:50.870
immer. Umgekehrt möchte ich, dass

01:01:50.870 --> 01:01:52.810
Entwickler wissen, von wie tickt diese

01:01:52.810 --> 01:01:54.930
Anwendung intern eigentlich, und da finde

01:01:54.930 --> 01:01:56.830
ich auch so Sprachen wie Python zum Beispiel angenehm, wo

01:01:56.830 --> 01:01:58.870
du den Source-Code eigentlich immer gleich zur Hand hast,

01:01:59.150 --> 01:02:01.750
dass die Ops halt mehr Einsicht kriegen in

01:02:01.750 --> 01:02:03.610
was macht die Anwendung hier eigentlich? Ist das hier

01:02:03.610 --> 01:02:05.630
gerade ein Bug? Ist das Absicht? Was tut denn das?

01:02:05.730 --> 01:02:07.630
Also wir holen da halt gerne dann auch mal gleich den

01:02:07.630 --> 01:02:09.530
Code raus, um zu sehen, warum rechnet

01:02:09.530 --> 01:02:10.750
der hier? Ah, guck mal da drüben.

01:02:11.810 --> 01:02:13.630
Und dass diese Form von Austausch halt

01:02:13.630 --> 01:02:15.450
dann auch macht, dass Ops zum Beispiel mehr lernen,

01:02:15.630 --> 01:02:17.470
okay, was brauchen Entwickler eigentlich aus der

01:02:17.470 --> 01:02:19.610
operativen Perspektive? Und wenn die Entwickler

01:02:19.610 --> 01:02:21.830
das dann halt mitgekriegt haben,

01:02:21.910 --> 01:02:23.530
wie ist denn das mit dem Ops, dass die dann halt besser wissen,

01:02:23.610 --> 01:02:25.590
ah, guck mal, wenn wir folgende Dinge tun, dann bauen

01:02:25.590 --> 01:02:27.530
wir uns halt schon unser eigenes Grab und ich

01:02:27.530 --> 01:02:29.010
vermeide jetzt halt wieder bestimmte...

01:02:29.010 --> 01:02:31.570
Ja, ein beliebtes Beispiel ist halt

01:02:31.570 --> 01:02:33.130
irgendwie, du renderst irgendeine Page raus,

01:02:33.530 --> 01:02:35.590
wenn man halt serverseitiges HTML-Rendering

01:02:35.590 --> 01:02:37.470
macht, du willst irgendeinen Twitter-Feed einbinden

01:02:37.470 --> 01:02:39.170
und redest halt mit der Twitter-API.

01:02:40.770 --> 01:02:41.390
Programmierfehler für

01:02:41.390 --> 01:02:43.310
10 Euro,

01:02:43.970 --> 01:02:45.690
du gehst halt mit einem synchronen

01:02:45.690 --> 01:02:47.630
Socket per HTTP an diese Schnittstelle ran

01:02:47.630 --> 01:02:49.570
und wenn Twitter in dem Moment meint, ich hab keinen Bock, dann bleibt

01:02:49.570 --> 01:02:51.430
halt deine Frontpage stehen. Dann läuft dir dein

01:02:51.430 --> 01:02:53.530
Threadpool für den Anwendungs-Server voll und dann bist du

01:02:53.530 --> 01:02:55.570
halt komplett down. Und das dauert

01:02:55.570 --> 01:02:57.650
halt so ungefähr 30 Sekunden, bis das der Fall ist.

01:02:58.770 --> 01:02:59.570
Es passiert halt

01:02:59.570 --> 01:03:01.410
immer wieder und das

01:03:01.410 --> 01:03:03.650
kriegst du auch nicht raus, weil die Welt halt so komplex

01:03:03.650 --> 01:03:05.610
ist, dass auch Entwickler, die zwar entwickeln gelernt

01:03:05.610 --> 01:03:06.530
haben und selbst die halt

01:03:06.530 --> 01:03:09.510
schon 10, 20 Jahre dabei sind, auch die machen da

01:03:09.510 --> 01:03:11.390
immer mal Fehler dabei und müssen sich ein bisschen mit

01:03:11.390 --> 01:03:13.570
obs reiben, mit was sind denn die

01:03:13.570 --> 01:03:15.730
Fehler, die jetzt halt momentan typischerweise auftreten.

01:03:15.810 --> 01:03:17.570
Es gibt halt bestimmte Fehler, das ist auch

01:03:17.570 --> 01:03:18.830
wieder so ein Thema aus der komplexen Welt,

01:03:19.910 --> 01:03:21.670
die gleichen Fehler treten die zweimal auf

01:03:21.670 --> 01:03:23.490
und bestimmte Probleme,

01:03:23.490 --> 01:03:25.710
die wir dann über sowas wie Root-Course-Analysis

01:03:25.710 --> 01:03:26.750
oder so erschlagen wollen.

01:03:26.850 --> 01:03:29.970
Da kommt immer ein Root-Course-Analysis.

01:03:30.670 --> 01:03:31.670
Das musst du einmal noch mal kurz erklären.

01:03:31.790 --> 01:03:33.270
Das sind einige Hörer, die sind genauso doof wie ich

01:03:33.270 --> 01:03:34.210
und die wissen nicht, was das ist.

01:03:34.810 --> 01:03:36.770
Die Wurzel-Grundanalyse.

01:03:39.130 --> 01:03:39.990
Jetzt weiß ich mehr.

01:03:41.210 --> 01:03:44.490
Was war, du hast halt bei Fehlern,

01:03:45.170 --> 01:03:47.050
wenn Probleme auftreten, hast du ja irgendwann mal ...

01:03:47.050 --> 01:03:48.370
Also welche Zeile, wo das steht.

01:03:49.710 --> 01:03:50.070
Sozusagen.

01:03:50.450 --> 01:03:53.310
Oder halt auch, welche Komponente ist kaputt gegangen,

01:03:53.310 --> 01:03:59.170
Welche Festplatte ist kaputt gegangen? Hat die Putzfrau gerade irgendwie den Server ausgesteckt?

01:04:00.670 --> 01:04:02.950
Okay, also wo ist die Lampe an und warum ist die an vor allen Dingen?

01:04:03.130 --> 01:04:10.430
Ja, genau. Es kann ja so eine Kausalitätskette geben, so eine Kette von mehreren Gründen, die aufeinander aufgelaufen sind, warum dann am Ende irgendwie vorne was umgefallen ist.

01:04:10.710 --> 01:04:13.550
Und diese Kette nachzuverfolgen, das nennt sich halt Root Cause Analysis.

01:04:13.550 --> 01:04:36.890
Und die ist halt aus einer auch wieder sehr analytischen Perspektive von, finde bitte raus, wer schuld ist, erschieß ihn und schaff was Besseres an. Und das Dumme ist aber, wenn du halt eben in sowas wie die Black Swan Theorie reingehst oder in die Komplexität, dann wirst du feststellen, im Prinzip ist im Komplexen der Normalzustand, dass ständig irgendwelche Sachen außerhalb des Optimums laufen.

01:04:37.290 --> 01:05:00.530
Das ist halt der Normalzustand und dein System so zu designen und auch dieses Feedback auf Team-Ebene zu haben von, was ist eigentlich normal und wann darf ich mich nicht zu weit aus dem Fenster lehnen, dafür ein Bauchgefühl zu entwickeln und die Praktiken, die halt heute relevant sind, ich kann nicht alle Praktiken, die es jemals gab, aufaddieren.

01:05:00.530 --> 01:05:09.170
Und so wird aber dieser analytische Ansatz gemacht mit, wir machen jedes Mal, wenn was schief geht, eine Root Cause Analysis und wenn wir alle davon dann fixen, dann kann nie wieder was schief gehen.

01:05:09.170 --> 01:05:24.030
Und die Leute wundern sich dann, warum trotzdem halt regelmäßig was schief geht. Und das ist dann halt eine Technik, ja, aus dem Ops-Bereich gibt es noch die, erkläre ich dann auch gerne, Meantime Between Failure und die Meantime to Recovery.

01:05:26.070 --> 01:05:27.730
Dominik, sagst du bitte, dass ich es erklären soll?

01:05:28.170 --> 01:05:31.710
Ja, ja, müsstest du bitte erklären, wann genau, wie lange man, wie viel Zeit braucht.

01:05:32.010 --> 01:05:41.710
Ja, genau, genau, genau. Also das eine ist, ich kann halt mein System darauf auslegen, möglichst selten kaputt zu gehen. Und das andere ist, ich kann es halt darauf auslegen, möglichst schnell wieder reparierbar zu sein.

01:05:43.810 --> 01:05:46.610
Und Extremwerte sind halt ungünstig.

01:05:46.730 --> 01:05:48.990
Also, wenn man sich die Extremwerte anguckt,

01:05:49.070 --> 01:05:50.490
sage ich, ich will, dass es nie kaputt geht.

01:05:51.310 --> 01:05:52.270
Da wissen wir alle,

01:05:52.690 --> 01:05:54.850
dann musst du so viel Energie vorab reinstecken,

01:05:55.050 --> 01:05:57.310
dass du die Kosten nie wieder reinkriegst.

01:05:57.710 --> 01:05:59.050
Und der Black Swan sagt uns,

01:05:59.090 --> 01:06:00.450
es wird trotzdem auf eine Art kaputt gehen,

01:06:00.470 --> 01:06:01.410
die du nicht vorhergesehen hast.

01:06:01.430 --> 01:06:02.890
Das wäre dann sowas wie Full-Test-Coverage.

01:06:03.790 --> 01:06:06.550
Ja, genau, Full-Test-Coverage mit allen Loops,

01:06:06.670 --> 01:06:08.010
mit allen Grenzbedingungen, mit allen...

01:06:08.010 --> 01:06:09.830
Also formale Verifikationen irgendwie.

01:06:09.830 --> 01:06:12.050
Ja, genau, genau, genau, genau.

01:06:12.510 --> 01:06:16.730
Und das ist halt, das ist halt, jeder Praktiker guckt dich dann halt an und sagt, das geht halt nicht.

01:06:17.130 --> 01:06:19.810
Und das Dumme ist sozusagen, es wird halt sogar irgendwann kontraproduktiv.

01:06:19.870 --> 01:06:24.890
Du steckst dann irgendwann so viel Energie und Zeit rein, Sachen starr zu machen, damit sie nicht kaputt gehen,

01:06:25.290 --> 01:06:30.790
während aber Starrheit gegenüber einer flexiblen Umwelt eine schlechte Idee ist.

01:06:31.690 --> 01:06:35.790
Also das hält halt relativ lange, so lange, bis es dann so richtig gar nicht mehr hält.

01:06:36.610 --> 01:06:41.070
Du willst halt Methodiken haben, die so flexibel sind, dass du frühe Warnsignale kriegst von,

01:06:41.170 --> 01:06:43.110
das ist hier eigentlich nicht mehr okay, aber ich

01:06:43.110 --> 01:06:44.170
explodiere noch nicht,

01:06:45.050 --> 01:06:47.230
damit du dann nämlich die Möglichkeit hast, aus diesen

01:06:47.230 --> 01:06:49.070
kleinen, schwachen Signalen

01:06:49.070 --> 01:06:51.190
schon mal was zu lernen und dein System dann schon mal

01:06:51.190 --> 01:06:53.210
in die richtige Richtung zu bewegen. Das andere

01:06:53.210 --> 01:06:55.450
Ende ist, statt sozusagen die Häufigkeit

01:06:55.450 --> 01:06:56.390
der Fehler zu

01:06:56.390 --> 01:06:59.210
reduzieren, ist zu sagen, naja,

01:06:59.370 --> 01:07:01.270
ich mache mir den Fehlerfall ganz,

01:07:01.470 --> 01:07:03.270
ganz einfach. Das sind dann solche

01:07:03.270 --> 01:07:05.230
Sachen wie Clean Crash Restart,

01:07:05.650 --> 01:07:06.430
also im Sinne von,

01:07:07.370 --> 01:07:09.350
ich mache, dass meine Anwendung extrem schnell starten

01:07:09.350 --> 01:07:11.150
kann. Ich weiß jetzt nicht, wie lange

01:07:11.150 --> 01:07:12.750
Django zum Hochfahren braucht. Soap hat immer

01:07:12.750 --> 01:07:15.010
urlange gebraucht, bis es mal

01:07:15.010 --> 01:07:16.070
einen Port aufgemacht hat.

01:07:17.410 --> 01:07:19.030
Während dann halt neuere Tools,

01:07:19.330 --> 01:07:21.290
also ich habe halt immer viel mit Pyramid zu tun,

01:07:21.730 --> 01:07:22.750
die machen halt nach

01:07:22.750 --> 01:07:24.970
500 Millisekunden oder so den Port auf

01:07:24.970 --> 01:07:26.410
und fangen an, wieder zu arbeiten.

01:07:27.050 --> 01:07:29.050
Was bedeutet, im Ernstfall kann ich so eine

01:07:29.050 --> 01:07:30.890
Anwendung auch einfach abstürzen lassen,

01:07:30.990 --> 01:07:32.470
wenn es in einen unbekannten Zustand kommt,

01:07:33.170 --> 01:07:34.790
weil ich weiß, die ist in 500 Millisekunden

01:07:34.790 --> 01:07:35.730
eh wieder am Start.

01:07:36.530 --> 01:07:38.570
Und wenn ich dann einen Pool von 10 oder so

01:07:38.570 --> 01:07:39.470
davon habe, dann

01:07:39.470 --> 01:07:42.610
mit einem vernünftigen Loadbalancer, dann denke

01:07:42.610 --> 01:07:44.470
ich mir so, klar, die kann jede Nacht einmal abstürzen,

01:07:44.550 --> 01:07:46.330
ist mir völlig egal, weil merkt keiner.

01:07:47.330 --> 01:07:47.970
Merkt keiner.

01:07:48.750 --> 01:07:50.590
Und dann kriege ich aber solche Infos mit,

01:07:50.650 --> 01:07:52.470
oh du, übrigens gestern Nacht sind zwei Sachen

01:07:52.470 --> 01:07:54.630
kaputt gegangen, hier ist der Stacktrace.

01:07:55.930 --> 01:07:56.430
Geh mal gucken.

01:07:56.810 --> 01:07:58.550
Versus, hm, wir haben jetzt ganz

01:07:58.550 --> 01:08:00.350
lange alle Fehler unterdrückt und jetzt ist das ganze

01:08:00.350 --> 01:08:02.170
System stehen geblieben. Viel Spaß.

01:08:04.490 --> 01:08:06.430
Jetzt aber nochmal so eine ganz doofe Frage wieder.

01:08:06.770 --> 01:08:08.250
Was ist denn jetzt eigentlich der Unterschied zu einem

01:08:08.250 --> 01:08:09.370
Administrator dann?

01:08:10.630 --> 01:08:12.310
Ich habe keine Ahnung, Namen sind schon alle drauf.

01:08:12.350 --> 01:08:13.690
Das weiß ich nicht, naja, genau, ich glaube,

01:08:13.690 --> 01:08:15.750
ob es ist nochmal ein bisschen älter,

01:08:16.190 --> 01:08:17.670
irgendwie wurden teilweise auch Opis

01:08:17.670 --> 01:08:19.310
genannt, was ist Opis, oder weiß nicht,

01:08:19.870 --> 01:08:21.690
ja, oder Leute, die dann tatsächlich

01:08:21.690 --> 01:08:22.910
im Rechenzentrum rumlaufen.

01:08:22.990 --> 01:08:24.850
oder so. Und Admin ist schon so ein bisschen

01:08:24.850 --> 01:08:26.670
so, der sitzt dann schon im

01:08:26.670 --> 01:08:27.230
Bürostuhl.

01:08:29.310 --> 01:08:30.810
Naja, ein Admin war

01:08:30.810 --> 01:08:32.870
ja. Auf was sitzt du da gerade, Christian?

01:08:33.910 --> 01:08:34.810
Ich sitze auf einem

01:08:34.810 --> 01:08:35.750
schönen Bürostuhl.

01:08:38.610 --> 01:08:40.650
Ja, also auch da

01:08:40.650 --> 01:08:42.670
wieder, ich rede schon erstmal

01:08:42.670 --> 01:08:44.590
wieder zur Komplexität drüber. Menschen

01:08:44.590 --> 01:08:46.330
haben halt unterschiedliche Facetten.

01:08:46.830 --> 01:08:48.590
Also Leute in

01:08:48.590 --> 01:08:50.690
so eine eindimensionale Perspektive

01:08:50.690 --> 01:08:52.650
zu schieben, macht den Menschen halt

01:08:52.650 --> 01:08:54.610
eher weniger Spaß, also auch

01:08:54.610 --> 01:08:56.150
weniger als Mensch.

01:08:57.130 --> 01:08:58.950
Ich bin gerne mal im Rechenzentrum

01:08:58.950 --> 01:09:00.530
in Arbeitshose unterwegs, weil ich halt

01:09:00.530 --> 01:09:02.570
irgendwie wissen will, wie ist denn das mit diesen blöden Kabeln

01:09:02.570 --> 01:09:04.450
und ach guck mal, da sind immer diese komischen

01:09:04.450 --> 01:09:06.530
Nasen, die da abbrechen, ja genau und wenn du das nicht

01:09:06.530 --> 01:09:08.550
ordentlich machst, dann hast du nach einem halben Jahr plötzlich ein Kabel,

01:09:08.650 --> 01:09:10.610
das rausrutscht und umgekehrt

01:09:10.610 --> 01:09:12.570
weil daraus

01:09:12.570 --> 01:09:14.450
entwickelst du ja auch ein Gefühl zum Beispiel

01:09:14.450 --> 01:09:16.550
von, wie stabil ist

01:09:16.550 --> 01:09:18.450
so ein Kram eigentlich, anstatt ständig nur

01:09:18.450 --> 01:09:20.390
über Abstraktionen zu reden und deswegen ist

01:09:20.390 --> 01:09:22.290
Multidimensionalität und mehr Facetten

01:09:22.290 --> 01:09:24.090
den Menschen

01:09:24.090 --> 01:09:26.110
in ihrem Alltag

01:09:26.110 --> 01:09:27.430
zu erlauben, ja, total wichtig.

01:09:29.350 --> 01:09:29.870
Operator

01:09:29.870 --> 01:09:31.890
ist der ältere Begriff, der

01:09:31.890 --> 01:09:33.970
stammt dann wirklich schon aus

01:09:33.970 --> 01:09:35.790
dem

01:09:35.790 --> 01:09:38.950
Zweiten Weltkrieg.

01:09:38.950 --> 01:09:41.910
Nee, Industrialisierung

01:09:41.910 --> 01:09:43.350
tatsächlich schon. Also du hast halt,

01:09:43.650 --> 01:09:45.850
das war dann eher so Engineering versus Operator.

01:09:46.430 --> 01:09:47.650
Du hast halt Leute, die

01:09:47.650 --> 01:09:49.670
entwerfen eine Maschine und Leute,

01:09:49.810 --> 01:09:51.770
die die Maschine im Tagesbetrieb am Laufen

01:09:51.770 --> 01:09:53.830
halten. Aber auch

01:09:53.830 --> 01:09:56.090
das sind halt immer so ineinandergreifende

01:09:56.090 --> 01:09:57.770
Tätigkeiten gewesen. Also die hatten

01:09:57.770 --> 01:09:59.570
halt ihr begrenztes Feld von, ja, ich weiß,

01:09:59.870 --> 01:10:01.590
hier, die und die Sachen kann ich machen, da hört irgendwo

01:10:01.590 --> 01:10:03.710
meine Kompetenz auf, dann hole ich halt den Ingenieur

01:10:03.710 --> 01:10:05.750
dazu und dann ist der Ingenieur halt auch vom Reißbrett weg

01:10:05.750 --> 01:10:07.910
und muss dann halt mit der Ölkanne an das Ding ran.

01:10:08.510 --> 01:10:09.650
Der kann aber in dem Moment

01:10:09.650 --> 01:10:11.790
überlegen, was gerade die Konstruktionsprinzipien sind.

01:10:11.990 --> 01:10:13.790
Der andere weiß halt, ja, komm,

01:10:13.850 --> 01:10:15.950
das knarzt jeden Dienstag, da rufe ich jetzt nicht an.

01:10:17.030 --> 01:10:17.730
Ja, da würde

01:10:17.730 --> 01:10:19.490
der Ingenieur, dem würde irgendwie der Hut platzen,

01:10:19.610 --> 01:10:21.290
das darf da nicht knarzen und der andere so,

01:10:21.530 --> 01:10:23.110
Das knarzt seit 20 Jahren, das war wurscht.

01:10:24.930 --> 01:10:30.330
Und das ist halt genau dieses Thema, so Alltags-Know-how, wie die Systeme, die designt wurden, sich dann real verhalten.

01:10:30.330 --> 01:10:32.690
Das ist so das, was ich einem Op angeben würde.

01:10:32.790 --> 01:10:39.970
Und ein Admin war immer auch eher einer, der halt aus so einer Systemmanagement, Systemkonfigurationssicht als ein Ingenieur tätig war.

01:10:40.090 --> 01:10:42.190
Als überleg mir das hier einmal und dann tut das irgendwie.

01:10:42.970 --> 01:10:54.970
Ich neige heute mehr zu dem Ops-Begriff, weil es halt so ein bisschen umfassender den gesamten Lebenszyklus auf der Server-Seite dann widerspiegelt.

01:10:56.790 --> 01:10:58.090
Ja, ich meine,

01:10:58.170 --> 01:11:00.030
in der FOPs hat man das ja sowieso dann schon im Namen

01:11:00.030 --> 01:11:00.630
irgendwie mit drin.

01:11:01.470 --> 01:11:04.230
Was ich an der Stelle noch ganz interessant finde, ist, dass halt auch

01:11:04.230 --> 01:11:06.130
wenn man

01:11:06.130 --> 01:11:08.070
jetzt sozusagen das komplett

01:11:08.070 --> 01:11:10.150
voneinander getrennt hat, auch dieses Problem bekommt, dass

01:11:10.150 --> 01:11:12.150
die unterschiedlichen

01:11:12.150 --> 01:11:13.830
ja, sozusagen

01:11:13.830 --> 01:11:15.630
Facetten da

01:11:15.630 --> 01:11:17.690
halt unterschiedliche, also

01:11:17.690 --> 01:11:19.510
der Erfolg wird halt unterschiedlich gemessen.

01:11:19.510 --> 01:11:21.730
Das war halt also, sozusagen, ich war auch

01:11:21.730 --> 01:11:23.190
eine Zeit lang Admin

01:11:23.190 --> 01:11:25.450
und im Rechenzentrum unterwegs und so

01:11:25.450 --> 01:11:27.510
und das Interessante

01:11:27.510 --> 01:11:28.070
ist halt, dass

01:11:28.070 --> 01:11:31.350
sich das halt gegenseitig blockiert, deswegen

01:11:31.350 --> 01:11:33.390
ist es vielleicht auch nicht so eine gute Idee, das voneinander

01:11:33.390 --> 01:11:34.510
zu trennen, weil

01:11:34.510 --> 01:11:37.430
sozusagen der ganze Betriebsbereich,

01:11:37.870 --> 01:11:38.450
also eben

01:11:38.450 --> 01:11:41.490
Administration, die ganzen Infrastruktur-Kram,

01:11:41.610 --> 01:11:43.490
Rechenzentrumsbetrieb, das wird halt

01:11:43.490 --> 01:11:45.610
daran gemessen, dass es halt nicht kaputt geht,

01:11:46.010 --> 01:11:46.650
sozusagen, also

01:11:46.650 --> 01:11:49.550
ja, also ich meine

01:11:49.550 --> 01:11:51.590
über, dass der Strom

01:11:51.590 --> 01:11:53.450
da ist, das feiert niemand, aber wenn er

01:11:53.450 --> 01:11:54.230
ausfällt, ist halt blöd.

01:11:55.130 --> 01:11:58.190
Das heißt, wenn der ganze Kram funktioniert,

01:11:58.350 --> 01:12:00.370
dann wird man nicht wahrgenommen.

01:12:00.510 --> 01:12:02.050
Wenn es kaputt geht, dann ist es blöd.

01:12:02.550 --> 01:12:02.930
Haha.

01:12:03.330 --> 01:12:03.730
Genau.

01:12:04.330 --> 01:12:05.790
Und bei den Entwicklern ist es halt so,

01:12:07.350 --> 01:12:09.290
bei denen schlägt das ja gar nicht so sehr auf,

01:12:09.350 --> 01:12:11.290
wenn das System irgendwie insgesamt nicht mehr funktioniert.

01:12:12.090 --> 01:12:13.390
Und die werden halt daran gemessen,

01:12:13.490 --> 01:12:15.510
wie viele Features sie halt rauskriegen irgendwie.

01:12:15.510 --> 01:12:19.350
Und ob das jetzt irgendwie irgendwas verbessert oder so.

01:12:19.470 --> 01:12:22.610
Das heißt, wenn man dann eine klare Trennung

01:12:22.610 --> 01:12:23.750
zwischen den beiden Geschichten hat,

01:12:23.990 --> 01:12:25.330
sind halt sozusagen

01:12:25.330 --> 01:12:28.570
die optimalen Strategien möglicherweise für Entwickler

01:12:28.570 --> 01:12:30.330
halt möglichst kaputtes Zeug

01:12:30.330 --> 01:12:31.810
einfach raus damit, egal.

01:12:32.610 --> 01:12:34.370
Die werden das schon irgendwie am Laufen

01:12:34.370 --> 01:12:36.170
halten. Vielleicht steht ja nicht mein Name dran oder keiner.

01:12:36.270 --> 01:12:38.250
Genau, weil ich meine, ich werde halt

01:12:38.250 --> 01:12:40.170
nicht dafür bestraft sozusagen, wenn es kaputt geht

01:12:40.170 --> 01:12:41.930
und aber belohnt, wenn

01:12:41.930 --> 01:12:44.210
ich genug Features rausdrücke

01:12:44.210 --> 01:12:46.250
und auf der anderen Seite optimiert

01:12:46.250 --> 01:12:48.350
man halt darauf, möglichst keine Änderungen zuzulassen,

01:12:48.790 --> 01:12:50.090
weil ein System, das

01:12:50.090 --> 01:12:52.150
sich überhaupt nicht ändert, das ist auch relativ stabil

01:12:52.150 --> 01:12:54.230
und dann blockiert man

01:12:54.230 --> 01:12:56.050
einfach alle Anforderungen sozusagen oder

01:12:56.050 --> 01:12:57.450
alle neuen Geschichten so lange,

01:12:58.070 --> 01:13:00.150
ja, bis halt der Strom dann

01:13:00.150 --> 01:13:02.270
nicht ausgefallen ist und man seinen Job erledigt hat

01:13:02.270 --> 01:13:03.690
und, ja,

01:13:04.190 --> 01:13:06.170
hat aber das Problem, dass es insgesamt auch für die

01:13:06.170 --> 01:13:07.870
Firma nicht funktioniert und das war halt...

01:13:07.870 --> 01:13:09.650
Solche neuen modischen Scheiße machen wir nicht.

01:13:10.650 --> 01:13:10.770
Ja.

01:13:12.050 --> 01:13:13.330
Ich meine, die,

01:13:14.170 --> 01:13:15.710
das ist halt auch da wieder,

01:13:16.710 --> 01:13:17.910
zum einen, spannend,

01:13:17.910 --> 01:13:19.870
man, DevOps ist im Prinzip

01:13:19.870 --> 01:13:21.890
in der Lage, dort diese Anreize einmal umzukehren

01:13:22.750 --> 01:13:24.150
Im Prinzip kannst du

01:13:24.150 --> 01:13:25.590
dann halt nämlich sagen,

01:13:25.890 --> 01:13:28.330
erst mal messen

01:13:28.330 --> 01:13:30.270
ist zwar eine gute Sache, aber auch da

01:13:30.270 --> 01:13:32.350
Menschen haben halt so den Vorteil, die können so Systeme

01:13:32.350 --> 01:13:32.970
gut austricksen.

01:13:35.250 --> 01:13:35.710
Und wenn du,

01:13:36.110 --> 01:13:38.170
das Schlimmste, was du eben machen kannst, ist, wenn du halt so

01:13:38.170 --> 01:13:40.250
harte Metriken einführst, weil, was werden die

01:13:40.250 --> 01:13:42.170
Leute machen? Die optimieren da drauf hin

01:13:42.170 --> 01:13:43.930
gnadenlos.

01:13:44.990 --> 01:13:46.070
Gnadenlos. Das ist das Problem,

01:13:46.190 --> 01:13:47.870
warum halt Systeme sich dann immer

01:13:47.870 --> 01:13:49.990
ad absurd führen, weil sie

01:13:49.990 --> 01:13:52.210
versuchen, eine komplexe Welt reduktionistisch

01:13:52.210 --> 01:13:53.370
zu betrachten im Sinne von

01:13:53.370 --> 01:13:55.950
Uptime. Das ist

01:13:55.950 --> 01:13:56.830
unsere Welt, danke.

01:13:58.490 --> 01:13:59.590
Und was man

01:13:59.590 --> 01:14:01.830
tatsächlich, manchmal kann man damit spielen, in so einem System kannst du

01:14:01.830 --> 01:14:04.010
zum Beispiel dann sagen, naja, liebe Admins,

01:14:04.130 --> 01:14:06.130
wir messen euch dran, wie viele Features rausgehen

01:14:06.130 --> 01:14:07.970
und liebe Devs, wir messen euch dran, wie stabil

01:14:07.970 --> 01:14:09.130
das Rechenzentrum ist.

01:14:09.310 --> 01:14:11.750
Sondern wie stabil halt

01:14:11.750 --> 01:14:13.730
die Anwendung draußen ist.

01:14:14.430 --> 01:14:15.950
Und dann kriegst du nämlich plötzlich

01:14:15.950 --> 01:14:17.210
eine ganz andere Bewegung da rein.

01:14:19.830 --> 01:14:21.350
Ja, das wird dann auf jeden Fall dynamisch.

01:14:21.750 --> 01:14:23.490
Dann jagen nämlich die Devs den Admin durchs Haus,

01:14:23.630 --> 01:14:24.830
wenn der Server abgerottet ist.

01:14:24.830 --> 01:14:26.690
Das willst du. Du willst Reibung.

01:14:27.710 --> 01:14:29.570
Du willst Reibung, du willst Dynamik,

01:14:29.710 --> 01:14:31.690
du willst nicht Complacency haben.

01:14:31.770 --> 01:14:33.730
Du willst nicht, dass die Leute zufrieden in ihrer Ecke sitzen

01:14:33.730 --> 01:14:35.710
mit, ah, der Strom ist an.

01:14:36.250 --> 01:14:37.150
Sondern du willst sagen,

01:14:37.730 --> 01:14:39.550
ist ja schön, dass hier der Strom an ist, wo bleiben

01:14:39.550 --> 01:14:40.170
die Features?

01:14:42.610 --> 01:14:43.770
Und das ist halt,

01:14:43.850 --> 01:14:45.530
das ist tatsächlich was, wo DevOps

01:14:45.530 --> 01:14:47.830
eigentlich sich ganz gut positioniert

01:14:47.830 --> 01:14:49.690
an der Stelle. Da sind auch viele Tools

01:14:49.690 --> 01:14:51.410
jetzt eigentlich gut darauf ausgerichtet,

01:14:51.810 --> 01:14:53.590
das eben so zu überlagern, dass man

01:14:53.590 --> 01:14:55.230
dann eben nicht mehr klar trennen kann.

01:14:56.170 --> 01:14:57.590
Okay. Ich würde jetzt sagen,

01:14:57.670 --> 01:14:59.470
der nächste Marker würde jetzt ganz gut passen, weil die

01:14:59.470 --> 01:15:01.530
nächste Frage wäre nämlich, wie macht man das Ganze denn jetzt mit

01:15:01.530 --> 01:15:02.150
Python am besten?

01:15:07.570 --> 01:15:09.230
Mit Python? Okay. Tja.

01:15:10.170 --> 01:15:10.830
Wie macht man das denn?

01:15:12.110 --> 01:15:13.670
Hm. Ja.

01:15:14.150 --> 01:15:15.730
Achso. Ich meine, wenn man

01:15:15.730 --> 01:15:17.650
jetzt über komplette Systeme redet, da ist es

01:15:17.650 --> 01:15:19.430
ja so, dass da gibt es dann halt so, ja,

01:15:19.690 --> 01:15:22.050
diverse Stacks, die man verwenden kann, um halt

01:15:22.050 --> 01:15:24.230
zu komplette Infrastrukturen aufzuziehen.

01:15:24.370 --> 01:15:26.050
Ich weiß aber nicht, ob wir das, also sowas wie

01:15:26.050 --> 01:15:28.110
Ansible oder halt SaltStack oder

01:15:28.110 --> 01:15:29.690
OpenStack oder was auch immer.

01:15:33.970 --> 01:15:34.370
Tja.

01:15:36.250 --> 01:15:37.810
Und einiges davon ist ja auch

01:15:37.810 --> 01:15:39.890
in Python tatsächlich geschrieben. Ja, das wäre, möglicherweise

01:15:39.890 --> 01:15:41.990
ist das halt auch so ein Feld, wo Python relativ stark ist.

01:15:43.570 --> 01:15:44.090
Ich glaube,

01:15:44.090 --> 01:15:45.970
viele der, es gibt irgendwie noch

01:15:45.970 --> 01:15:48.130
ChefPuppet,

01:15:48.470 --> 01:15:50.370
das ist... Chef, Puppet?

01:15:50.890 --> 01:15:52.850
Ja, das sind zwei unterschiedliche

01:15:52.850 --> 01:15:54.170
Geschichten.

01:15:54.630 --> 01:15:56.710
Das ist irgendwie Ruby oder sowas, ich weiß es nicht mehr so genau.

01:15:56.850 --> 01:15:58.470
Ja, Chef und Puppet sind Ruby und

01:15:58.470 --> 01:16:00.410
ich glaube, Salt ist Python

01:16:00.410 --> 01:16:01.930
und der Enzebel ist definitiv auch Python.

01:16:01.930 --> 01:16:03.310
Ist auch Python und OpenStack ist auch Python.

01:16:04.130 --> 01:16:04.490
Also...

01:16:04.490 --> 01:16:07.190
Aber ja, OpenStack ist wahrscheinlich alles mögliche.

01:16:13.810 --> 01:16:16.130
Was ist denn sowas drin? Also für jemand, der es noch nie gehört hat,

01:16:16.170 --> 01:16:17.710
was wäre jetzt in so einem Enzebel denn jetzt drin?

01:16:18.470 --> 01:16:44.310
Ich würde es vielleicht tatsächlich nochmal von einem anderen Ende her holen, weil Ansible ist sozusagen schon ziemlich weit drin. Auf der einen Seite ist Python in diesem ganzen Umfeld erstmal an sich, wir haben jetzt ja zwei Enden, auf der einen Seite können wir darüber reden, dass wir Anwendungen haben, die in Python geschrieben sind, von denen ich irgendwie möchte, dass die raus in die Welt kommen und das andere wiederum ist, dass Python ja selber so eine gute Sprache ist, um Tools zu schreiben, die Dinge automatisieren.

01:16:45.530 --> 01:16:50.830
Und damit habe ich sozusagen so eine kleine Janusköpfigkeit von dem Ökosystem.

01:16:53.090 --> 01:16:55.670
Ja, es ist halt die Frage, von welchem Ende man anfangen möchte.

01:16:56.730 --> 01:17:00.570
Die so große Systeme, ich tue mich schwer, bei so großen Systemen anzufangen.

01:17:00.670 --> 01:17:03.570
Selbst Ansible ist da mental bei mir ein großes System.

01:17:04.610 --> 01:17:07.090
Eher so ein bisschen die Grundlagen anzugucken,

01:17:07.230 --> 01:17:11.590
ein bisschen die kleinsten Einheiten, in die es sich eigentlich verlegt.

01:17:12.230 --> 01:17:15.990
weil ansonsten glauben unsere Hörer,

01:17:16.130 --> 01:17:18.370
glauben die Menschen da draußen halt,

01:17:19.390 --> 01:17:21.830
um den Post zu machen, muss ich irgendwie Kubernetes rausholen.

01:17:22.210 --> 01:17:23.390
Das stimmt halt nicht.

01:17:23.890 --> 01:17:26.350
Das ist halt kontextabhängig.

01:17:28.050 --> 01:17:31.250
Ich meine, man kann vielleicht mal so ein bisschen skizzieren.

01:17:31.650 --> 01:17:34.590
Auf der einen Seite gibt es halt das Problem der Runtime-Umgebung.

01:17:35.930 --> 01:17:38.610
Ich habe halt mein Python-Skript und brauche dann irgendwie einen Interpreter,

01:17:38.710 --> 01:17:41.070
der die richtigen Dependencies alle so hat.

01:17:41.490 --> 01:17:42.210
das ist so ein

01:17:42.210 --> 01:17:44.230
Spielfeld

01:17:44.230 --> 01:17:47.370
und das andere ist dann halt tatsächlich auch

01:17:47.370 --> 01:17:49.250
so diese Mechanik von, wie

01:17:49.250 --> 01:17:51.170
verteile ich das dann halt von meinem

01:17:51.170 --> 01:17:53.130
Entwicklung, wie mache ich das auf meinem Entwicklungssystem,

01:17:53.250 --> 01:17:55.310
wie mache ich das auf dem Staging-System, wie mache ich das

01:17:55.310 --> 01:17:57.110
dann draußen in der Produktion,

01:17:57.970 --> 01:17:59.210
da kann man so die unterschiedlichen,

01:17:59.370 --> 01:18:01.310
das wären also mindestens mal so zwei Perspektiven, aus denen

01:18:01.310 --> 01:18:03.470
man das mal andiskutieren kann.

01:18:05.070 --> 01:18:05.190
Ja,

01:18:05.650 --> 01:18:06.270
ne, finde ich

01:18:06.270 --> 01:18:09.030
im Grunde auch genauso richtig, weil

01:18:09.030 --> 01:18:11.270
ja, also das ist ja auch vielleicht dann tatsächlich das,

01:18:11.350 --> 01:18:13.410
was Leute praktisch als Problem

01:18:13.410 --> 01:18:15.210
haben, wenn sie jetzt

01:18:15.210 --> 01:18:16.690
sich überlegen, okay, ich würde gerne, weiß ich nicht,

01:18:16.810 --> 01:18:19.450
Pyramid oder Django oder Flask oder was auch immer

01:18:19.450 --> 01:18:21.130
anwendigen, würde ich gerne eine Webseite

01:18:21.130 --> 01:18:22.750
oder so bauen und wie kriege ich die jetzt

01:18:22.750 --> 01:18:25.150
sozusagen live?

01:18:26.050 --> 01:18:27.310
Ja, also

01:18:27.310 --> 01:18:28.710
das eine ist natürlich, dass

01:18:28.710 --> 01:18:31.430
Python ein standardisiertes

01:18:31.430 --> 01:18:32.910
Umfeld hat mit den Interpretern.

01:18:33.090 --> 01:18:34.850
Ich meine, die Versionsunterschiede zwischen

01:18:34.850 --> 01:18:37.210
2 und 3,

01:18:37.290 --> 01:18:39.070
ich glaube, das ist jetzt eh gegessen, zumal

01:18:39.070 --> 01:18:40.950
dann machen wir

01:18:40.950 --> 01:18:42.810
ein Begräbnis-Podcast

01:18:42.810 --> 01:18:44.490
Ende des Jahres für Python 2.7?

01:18:45.290 --> 01:18:47.190
Könnte man auf jeden Fall

01:18:47.190 --> 01:18:47.710
machen, ja.

01:18:49.790 --> 01:18:50.850
Ein Python 2.7

01:18:50.850 --> 01:18:51.850
Gedächtnis-Podcast

01:18:51.850 --> 01:18:53.730
zum Jahresausklang.

01:18:54.850 --> 01:18:56.730
Aber auch innerhalb von Python 3 sind die

01:18:56.730 --> 01:18:58.730
Sprachfeatures nochmal so weiter, dass man halt auch da

01:18:58.730 --> 01:19:00.850
zum ersten Mal wissen muss, ah, okay, ich habe eine Anforderung

01:19:00.850 --> 01:19:02.930
von, welche Version vom Interpreter

01:19:02.930 --> 01:19:05.270
brauche ich eigentlich? Da ist die

01:19:05.270 --> 01:19:06.830
Spreizung zwischen 3.3,

01:19:06.950 --> 01:19:08.990
was so die erste vernünftig einsetzbare

01:19:08.990 --> 01:19:10.950
Version war, bis jetzt hoch zu 3.7, in demnächst

01:19:10.950 --> 01:19:12.950
3.8, ja, schon relativ

01:19:12.950 --> 01:19:14.930
heftig, zumal ich auch merke, da waren für mich immer

01:19:14.930 --> 01:19:16.770
wieder Features dabei, die ich

01:19:16.770 --> 01:19:18.830
einsetzen möchte. Also die F-Strings waren

01:19:18.830 --> 01:19:20.810
mit die neuesten Sachen, wo ich sagte,

01:19:20.970 --> 01:19:22.170
oh ja, die will ich unbedingt haben.

01:19:22.210 --> 01:19:23.930
Das Coolen ist sogar schneller als String-Off, ne?

01:19:25.210 --> 01:19:26.390
Das kann sein.

01:19:28.710 --> 01:19:30.690
Und das ist sozusagen schon mal so das erste Thema von,

01:19:30.770 --> 01:19:32.930
okay, ich brauche also irgendwie ein Zielsystem, wo die richtige Version

01:19:32.930 --> 01:19:34.190
von diesem Interpreter vorliegt.

01:19:34.770 --> 01:19:36.890
Das ist dann häufig damit gekoppelt, dass

01:19:36.890 --> 01:19:38.790
ich bestimmte Versionen

01:19:38.790 --> 01:19:40.230
von einem Betriebssystem irgendwo habe.

01:19:41.150 --> 01:19:42.370
Genau. Wenn ich

01:19:42.370 --> 01:19:44.690
Docker nehme, dann ist da typischerweise die Auswahl

01:19:44.690 --> 01:19:46.850
nimm dir irgendwie so ein Basis-Image, wo jemand draufgeschrieben

01:19:46.850 --> 01:19:48.590
hat, das hier ist das mit Python-Version

01:19:48.590 --> 01:19:50.590
so und so oder wo alle Python-Versionen drin sind

01:19:50.590 --> 01:19:51.210
oder was auch immer.

01:19:52.790 --> 01:19:54.530
Aber im Prinzip läuft es halt darauf hinaus, naja,

01:19:54.650 --> 01:19:56.730
ich habe erstmal die Frage, welchen Python-Interpreter

01:19:56.730 --> 01:19:58.890
würde ich gern haben. Ich mache es in letzter

01:19:58.890 --> 01:20:00.570
Zeit so, wenn ich kleinere Projekte mache

01:20:00.570 --> 01:20:03.070
und tatsächlich im Sinne von mal so Command-Line-Skripte,

01:20:03.110 --> 01:20:04.350
das ist bei mir relativ viel dran,

01:20:05.030 --> 01:20:06.130
dann gebe ich mir

01:20:06.130 --> 01:20:08.270
Mühe, dass ich am Anfang

01:20:08.270 --> 01:20:10.170
wenn ich noch rumexperimentiere

01:20:10.170 --> 01:20:12.170
und das teilweise auch verteilte Systeme sind

01:20:12.170 --> 01:20:14.010
dann habe ich meinen Editor

01:20:14.010 --> 01:20:16.030
bei mir ist es dann zufällig der Sublime

01:20:16.030 --> 01:20:18.130
mit einem rsync-Plugin

01:20:18.130 --> 01:20:20.350
mache ein einziges Python-File

01:20:20.350 --> 01:20:22.190
und das kann gerne mal für

01:20:22.190 --> 01:20:24.210
den Anfang bei der Entwicklung 1000, 2000

01:20:24.210 --> 01:20:25.670
4000 Zeilen lang werden

01:20:25.670 --> 01:20:30.730
und habe ein rsync-Plugin

01:20:30.730 --> 01:20:31.970
was mir bei jedem Speichern das auf

01:20:31.970 --> 01:20:33.690
7, 8, 9 Kisten verteilt

01:20:33.690 --> 01:20:36.270
und gebe mir Mühe, dass ich nichts anderes

01:20:36.270 --> 01:20:38.190
außer der Standard-Library benutze

01:20:38.190 --> 01:20:41.910
dann brauche ich mir nämlich

01:20:41.910 --> 01:20:43.870
keine Gedanken machen

01:20:43.870 --> 01:20:46.170
und ich meine

01:20:46.170 --> 01:20:47.930
die Standard Library hat einen Haufen Kram drinnen

01:20:47.930 --> 01:20:48.910
da ist halt

01:20:48.910 --> 01:20:52.090
damit machst du dann keine Webentwicklung mit Django in dem Moment

01:20:52.090 --> 01:20:52.410
aber

01:20:52.410 --> 01:20:55.570
oh ja

01:20:55.570 --> 01:20:56.630
Entschuldigung, ich glaube das war diesmal

01:20:56.630 --> 01:20:59.310
weg da, halben Meter weggeworfen

01:20:59.310 --> 01:21:01.410
lag zu nah am Kabel

01:21:01.410 --> 01:21:02.270
die

01:21:02.270 --> 01:21:05.630
Standard Library bietet ja schon so viele

01:21:05.630 --> 01:21:05.990
Sachen

01:21:05.990 --> 01:21:07.750
von

01:21:07.750 --> 01:21:09.970
JSON zu, hast du nicht

01:21:09.970 --> 01:21:11.990
gesehen, typische Dinge, die dann bei

01:21:11.990 --> 01:21:13.990
mir relativ schnell dazukommen, als Dependencies sind dann halt

01:21:13.990 --> 01:21:16.030
irgendwie Requests oder irgendwas in der

01:21:16.030 --> 01:21:17.570
Art. Aber

01:21:17.570 --> 01:21:19.890
ich baue selbst bei mir die

01:21:19.890 --> 01:21:22.130
Projekte dann immer erstmal von so einem

01:21:22.130 --> 01:21:23.930
ganz kleinen, minimalen Punkt auf und

01:21:23.930 --> 01:21:26.190
ich mache nicht so dieses, oh, ich habe hier mein Projekt-Template

01:21:26.190 --> 01:21:27.110
und jetzt schütte ich erstmal

01:21:27.110 --> 01:21:29.690
ein Megabyte-Template ins

01:21:29.690 --> 01:21:32.010
Repository, sondern

01:21:32.010 --> 01:21:33.930
fange halt gegebenenfalls wirklich mit einer einzelnen Datei

01:21:33.930 --> 01:21:34.210
an.

01:21:35.990 --> 01:21:38.090
blank, völlig blank und kann auf dem Zielsystem

01:21:38.090 --> 01:21:40.010
auch einfach sagen, hier, Python 3.6, da die

01:21:40.010 --> 01:21:41.070
Datei, poof, mach mal.

01:21:41.850 --> 01:21:43.010
Und kann halt, weil

01:21:43.010 --> 01:21:45.930
ich bin immer der Freund von diesem, ich nerv

01:21:45.930 --> 01:21:47.990
meine Kollegen, mit denen ich

01:21:47.990 --> 01:21:50.170
arbeite, auch an der Stelle, ich will eigentlich

01:21:50.170 --> 01:21:51.970
so schnell wie möglich, eigentlich innerhalb von einer Stunde

01:21:51.970 --> 01:21:53.910
oder zwei, irgendeine Ahnung haben,

01:21:53.990 --> 01:21:55.870
wie das, was ich gerade mache, von Ende zu Ende

01:21:55.870 --> 01:21:56.630
funktioniert, ja.

01:21:57.670 --> 01:21:59.990
Also dich interessieren die Knoten dann dazwischen, oder?

01:22:00.810 --> 01:22:01.950
Nee, mich interessiert halt, okay,

01:22:02.050 --> 01:22:03.330
ich will irgendwie x erreichen

01:22:03.330 --> 01:22:05.970
und dann kann man halt entweder sagen, ah, für x muss ich

01:22:05.970 --> 01:22:08.010
erstmal A, B, C und D machen und dann

01:22:08.010 --> 01:22:10.010
fängt jemand an und macht A total hübsch und

01:22:10.010 --> 01:22:12.070
definiert das durch und macht B total hübsch und definiert

01:22:12.070 --> 01:22:13.950
das durch. Am dritten Tag macht er C

01:22:13.950 --> 01:22:15.230
und am vierten Tag macht er D.

01:22:16.090 --> 01:22:18.030
Dann läuft das Skript zum ersten Mal und er stellt

01:22:18.030 --> 01:22:19.150
fest, nee, das brauche ich alles ja auch nicht.

01:22:20.910 --> 01:22:21.970
Und was ich eher haben will,

01:22:22.110 --> 01:22:24.050
ist, ich rotze da A, B, C

01:22:24.050 --> 01:22:26.130
und D einmal so, gerade mal so hin

01:22:26.130 --> 01:22:27.930
in den

01:22:27.930 --> 01:22:29.850
so wenig Zeilen wie nur möglich mit

01:22:29.850 --> 01:22:31.890
auch wenig

01:22:31.890 --> 01:22:33.790
Fehlerbehandlung, also nur den

01:22:33.790 --> 01:22:35.230
der Happy Path im Prinzip.

01:22:35.970 --> 01:22:37.150
So der Idealfall.

01:22:37.210 --> 01:22:38.330
Der Happy Path, war schön.

01:22:38.510 --> 01:22:39.750
Der Happy Path, ja, genau.

01:22:41.310 --> 01:22:44.010
Um tatsächlich zu sehen, ist das, was ich hier baue,

01:22:44.090 --> 01:22:45.150
gerade überhaupt das, was ich will?

01:22:45.470 --> 01:22:47.210
Oder fange ich schon mal an, Zeug zu polieren,

01:22:47.270 --> 01:22:49.670
was ich gleich in zwei Tagen eben wieder wegwerfe?

01:22:50.190 --> 01:22:51.550
Happy, happy, happy.

01:22:51.550 --> 01:22:52.590
Happy, ja, genau.

01:22:54.650 --> 01:22:56.410
Und das erleichtert,

01:22:56.690 --> 01:22:58.930
dadurch kann ich halt auch mit wenig Dependencies anfangen,

01:22:59.010 --> 01:23:01.150
dadurch kann ich halt, oder auch ohne Dependencies,

01:23:01.570 --> 01:23:03.190
und baue das halt komplett inkrementell auf.

01:23:03.270 --> 01:23:04.850
Und das ist wieder für mich auch so ein Ausdruck von,

01:23:05.290 --> 01:23:07.350
Ich beschäftige mich die ganze Zeit mit meinen Tools,

01:23:07.830 --> 01:23:09.390
um zu merken, brauche ich das hier überhaupt?

01:23:09.490 --> 01:23:12.190
Das muss ich halt im Prinzip jedes Mal validieren.

01:23:12.630 --> 01:23:14.430
Kannst du nochmal vielleicht einmal ganz kurz so erklären,

01:23:14.790 --> 01:23:16.170
so einen Abstraction-Layer so drunter,

01:23:16.270 --> 01:23:19.170
was steht denn dann da in dem Skript so konkret da drin?

01:23:19.250 --> 01:23:20.890
Klar, das ist nur die Standard-Library, irgendwelche Sachen,

01:23:21.050 --> 01:23:22.010
aber was macht das?

01:23:22.830 --> 01:23:23.890
Also ich habe zum Beispiel ein Skript,

01:23:23.990 --> 01:23:26.390
mit dem wir bei uns Ceph-Server managen.

01:23:26.390 --> 01:23:28.530
Ceph ist so ein verteiltes Storage-System

01:23:28.530 --> 01:23:32.750
und da hat jede Festplatte, die du in deinem Cluster hast,

01:23:32.970 --> 01:23:34.830
einen Daemon, der da läuft und die Config

01:23:34.830 --> 01:23:36.970
zu generieren und die Teile aufzusetzen

01:23:36.970 --> 01:23:37.990
ist halt nicht so ganz trivial

01:23:37.990 --> 01:23:40.810
und die Tools, die es dafür schon vordefiniert

01:23:40.810 --> 01:23:42.790
gibt, die haben alle so ihre Meinung darüber, wie

01:23:42.790 --> 01:23:44.830
die Umgebung aussehen soll, wo wir leider

01:23:44.830 --> 01:23:46.590
eine andere Meinung haben und

01:23:46.590 --> 01:23:48.810
deswegen habe ich dann halt irgendwann

01:23:48.810 --> 01:23:50.890
ein Tool geschrieben, wir schreiben gerne Tools,

01:23:51.030 --> 01:23:52.650
die andere Tools

01:23:52.650 --> 01:23:54.730
integrieren, wir machen Glue-Code gern selber,

01:23:54.890 --> 01:23:55.850
so Policy-Code

01:23:55.850 --> 01:23:59.010
und versuchen eigentlich Werkzeuge einzusetzen,

01:23:59.130 --> 01:24:00.810
die Standalone für sich irgendeinen

01:24:00.810 --> 01:24:02.770
konkreten Job haben und wir integrieren uns die dann

01:24:02.770 --> 01:24:04.670
halt und dann habe ich halt so ein Tool, der kann

01:24:04.670 --> 01:24:06.930
dann halt irgendwie die Festplattenkontrolle

01:24:06.930 --> 01:24:08.670
angucken und kann sagen, machen wir mal eine

01:24:08.670 --> 01:24:10.610
neue Partition, machen wir diesmal jenes, bauen das

01:24:10.610 --> 01:24:12.710
mal wieder ab, aber eben mit so Policy

01:24:12.710 --> 01:24:14.670
Entscheidungen wie, ja, da

01:24:14.670 --> 01:24:16.650
musst du vorher mal gucken, ob da drüben in den Logs komische Dinge

01:24:16.650 --> 01:24:18.550
auflaufen, weil das ist ein Indikator dafür, dass gerade

01:24:18.550 --> 01:24:20.510
der Cluster überlastet ist und darfst du das so nicht machen

01:24:20.510 --> 01:24:22.670
und solcherlei Dinge und dann ist das halt

01:24:22.670 --> 01:24:24.510
was, da ist dann der ArcParse mit drin und

01:24:24.510 --> 01:24:26.430
da wird dann mit irgendwie so Prozessen geredet,

01:24:26.510 --> 01:24:28.770
da ist JSON-Depoding drin, da ist so

01:24:28.770 --> 01:24:30.450
Glue-Code, um 5, 6

01:24:30.450 --> 01:24:32.650
unterschiedliche Tools und Prozesse aneinander anzubinden

01:24:32.650 --> 01:24:37.190
und den baue ich halt meistens immer wieder erst mal nackt auf

01:24:37.190 --> 01:24:41.150
und erst wenn der eine gewisse Größe hat, setzt dann das Refactoring ein

01:24:41.150 --> 01:24:44.110
und natürlich hat man so eine Standard-Library im Hinterkopf von

01:24:44.110 --> 01:24:47.690
wie abstrahiere ich mir eine bestimmte API, um Subprozesse aufzurufen,

01:24:47.790 --> 01:24:50.710
wie abstrahiere ich mir eine bestimmte API, um HTTP-APIs anzusprechen,

01:24:51.570 --> 01:24:53.950
aber selbst denen gebe ich eigentlich immer wieder die Chance,

01:24:54.410 --> 01:24:58.510
sich nochmal neu zu beweisen, weil Python nun mal eigentlich so einfach ist,

01:24:58.630 --> 01:25:02.010
um den Happy Path mal schnell runterzuschreiben.

01:25:02.570 --> 01:25:04.550
um dann später nochmal mit der

01:25:04.550 --> 01:25:06.470
Zahnbürste hinterher zu gehen und das irgendwie

01:25:06.470 --> 01:25:08.150
blank zu machen und hübsch zu machen.

01:25:10.150 --> 01:25:10.590
Genau.

01:25:10.890 --> 01:25:12.470
Und das heißt, also im ersten Fall bei mir

01:25:12.470 --> 01:25:14.270
habe ich sogar ein Deployment, da

01:25:14.270 --> 01:25:16.390
passiert nichts außer aus meinem Editor raus

01:25:16.390 --> 01:25:17.930
ein R-Sync irgendwo in die Umgebung rein.

01:25:18.890 --> 01:25:20.510
Und ich nehme den Standard

01:25:20.510 --> 01:25:22.630
Interpreter, der vom System halt mir entgegengeworfen wird.

01:25:23.770 --> 01:25:24.730
Das hört sich so ein bisschen an,

01:25:24.730 --> 01:25:26.710
also hast du gar nicht so viele Klassen, die haben los,

01:25:26.770 --> 01:25:27.930
ist das mehr funktional alles?

01:25:28.670 --> 01:25:30.810
Nö, das geht quer durcheinander.

01:25:31.790 --> 01:25:40.030
Also Klassen ziehe ich mir halt dann rein, wenn es halt nötig ist, wenn ich merke, da kristallisieren sich Strukturen raus, die sich halt in Klassen gut abbilden lassen.

01:25:40.070 --> 01:25:43.030
Machst du dann auch ein extra Modul dafür oder packst du das dann trotzdem alles in die?

01:25:43.030 --> 01:25:54.690
So und das ist halt spannend, also wenn ich dann einen gewissen Reifegrad erreicht habe und merke, ich laufe in die richtige Richtung und das, was ich hier baue, fliegt nicht morgen wieder über den Jordan, dann fange ich an, das halt zu systematisieren.

01:25:55.430 --> 01:25:57.250
Und dann mache ich dann aus dem Repository

01:25:57.250 --> 01:25:58.370
halt mal ein gescheites Package

01:25:58.370 --> 01:26:01.170
in Richtung halt, dass da ein Egg rausfallen

01:26:01.170 --> 01:26:02.110
könnte.

01:26:03.870 --> 01:26:05.090
Beziehungsweise Eggs macht man ja nicht mehr.

01:26:05.570 --> 01:26:07.130
Also eine Sauce Dist oder ein Wheel

01:26:07.130 --> 01:26:07.690
oder was auch immer.

01:26:08.910 --> 01:26:10.910
Aber eben irgendwas, wo eine Setup-Pi drin ist

01:26:10.910 --> 01:26:13.010
und wo man diese ganze Kram, dass man es paketieren kann,

01:26:13.090 --> 01:26:14.490
dass man es auf dem Pi-Pi laden kann, etc.

01:26:15.790 --> 01:26:17.170
Und das Zweite ist, dann fängt es

01:26:17.170 --> 01:26:19.170
halt meistens auch an, dass da die ersten Dependencies

01:26:19.170 --> 01:26:19.730
dazukommen.

01:26:20.730 --> 01:26:22.990
Weil das kommt meistens sogar früher, als dass ich ein Package

01:26:22.990 --> 01:26:24.550
draus mache, wenn ich so kleine Sachen habe.

01:26:25.430 --> 01:26:32.410
Was aber mit den Dependencies halt auf jeden Fall kommt, ist, Jochen kann es bestimmt auch aussprechen, was ich jetzt denke.

01:26:33.230 --> 01:26:38.610
Ja, natürlich, Virtual Environments oder irgendeine Art zu isolieren halt die Begebung, die man auch schafft.

01:26:38.970 --> 01:26:48.350
Genau, also verlockende Falle ist halt, aber das ist eigentlich auch schon so eine alte Technik, dass die eigentlich nicht mehr vorkommen sollte, ohne irgendwem von unseren Hörern zu nahe zu treten.

01:26:49.070 --> 01:26:56.930
Man kann natürlich jetzt dem System-Python-Interpreter über Debian-Packaging oder über YAML oder was auch immer

01:26:56.930 --> 01:27:00.990
dann noch zusätzliche Libraries mit rein installieren.

01:27:01.470 --> 01:27:07.510
Aber das Problem ist, dann haben halt alle Programme auf diesem System die gleichen Dependencies.

01:27:08.270 --> 01:27:12.570
Ich meine, das ist so ein altes Problem von Paketierung halt an sich, also auch bei Debian.

01:27:13.110 --> 01:27:18.330
Wenn Debian halt sagt, ich paketiere Version 7 und deine Anwendung braucht Version 8, dann hast du halt verloren.

01:27:19.070 --> 01:27:46.150
Und deswegen macht man sowas nicht, dass man Sachen in den Systeminterpreter rein installiert, sondern dafür gibt es halt die sogenannten Virtual-Envs, die sind seit Python 3 auch kein extra zu installierendes Tool mehr, sondern du kannst ja über Python 3-mv-env und dann Verzeichnisname oder wenn du es in deinem Repo direkt machen willst mit Punkt, erzeugst du dir eine virtuelle neue Python-Installation, in der du dann beliebig Dependencies installieren kannst.

01:27:46.990 --> 01:27:48.530
Und dann installierst du die da halt rein.

01:27:48.830 --> 01:27:52.210
Das kannst du mitmeißeln, also das kannst du imperativ machen,

01:27:52.210 --> 01:27:57.170
indem du dann aufrufst bin-pip-install-requests

01:27:57.170 --> 01:28:01.450
oder du kannst auch ein Requirements-File schreiben,

01:28:01.570 --> 01:28:03.710
was sowas dann deklarativ erfasst, wo du sagst,

01:28:03.810 --> 01:28:06.570
hier, ich hätte gerne Requirements und ich hätte es gerne in folgender Version

01:28:06.570 --> 01:28:09.430
oder ich hätte es gerne zumindest größer als Version X.

01:28:09.670 --> 01:28:10.930
Solche Sachen kannst du dann da ausdrücken.

01:28:11.450 --> 01:28:13.930
Das ist dann ein bisschen ergänzend dazu, dass du dein eigenes,

01:28:14.290 --> 01:28:38.690
wenn du dein Skript selber paketierst und sagst, ich habe einen Package, wo auch Dependencies in der Setup-Pi deklariert sind, dann kannst du die über binpip-e. zum Beispiel installieren, dann zieht er die Dependencies auch, wobei da gibt es halt auch so eine Unterscheidung von, wie drücke ich Versionen in einem Paket aus, da gibt es eigentlich die Heuristik, dass man sagt, dass man nur dort Mindestversionen angibt,

01:28:38.850 --> 01:29:08.830
Dass man sagt, ich brauche mindestens Version XY von der Dependency, weil da gibt es ein Feature drin, was ich halt unbedingt brauche ab der Version, aber ich lasse es dir nach oben hin offen, auch neuere zu nehmen und man macht dann gegebenenfalls noch als zweites dazu einen Requirements-Text-File, wo man dann sagt, okay, aber jetzt für dieses konkrete Release legen wir uns einmal auf einen exakten Satz an Versionen fest, das nennt man dann Version Pinning und dort schreibt man dann nur noch rein, okay, jetzt die Requests in exakt Version 2, 3, 4.

01:29:08.850 --> 01:29:09.590
hier oder was auch immer.

01:29:11.190 --> 01:29:12.830
Genau. Das ist so ein bisschen

01:29:12.830 --> 01:29:14.450
hakelig

01:29:14.450 --> 01:29:16.030
im Sinne von

01:29:16.030 --> 01:29:18.910
das gibt dir kein

01:29:18.910 --> 01:29:20.850
garantiert pures Environment, weil

01:29:20.850 --> 01:29:23.110
du kannst das halt vermixen, dass du sagst, du installierst

01:29:23.110 --> 01:29:25.050
Sachen, Dependencies per Requirements Text

01:29:25.050 --> 01:29:26.670
und kannst dann gleichzeitig

01:29:26.670 --> 01:29:28.830
trotzdem noch mit binpip install dazwischen rum

01:29:28.830 --> 01:29:30.770
vorwerken. Ist da nicht jetzt sogar so eine

01:29:30.770 --> 01:29:32.830
Neuerung geplant, irgendwie in 3.8, dass man das irgendwie

01:29:32.830 --> 01:29:34.970
mit in die Verzeichnisse irgendwie direkt reinkriegen

01:29:34.970 --> 01:29:35.710
kann oder sowas?

01:29:37.510 --> 01:29:39.750
Ja, das wäre jetzt mal interessant, das habe ich jetzt noch nicht auf dem Schirm.

01:29:40.130 --> 01:29:41.610
Ja, das hatten wir irgendwie,

01:29:41.690 --> 01:29:43.450
ich habe es jetzt aber auch nicht mehr so wirklich genau,

01:29:43.770 --> 01:29:45.290
also da ist es auf jeden Fall so, dass man

01:29:45.290 --> 01:29:48.130
PIP irgendwie sagen kann,

01:29:49.410 --> 01:29:49.970
war das

01:29:49.970 --> 01:29:50.930
PIP oder ist das?

01:29:51.290 --> 01:29:53.350
Man kann ja die Version aussuchen, ob der irgendwie

01:29:53.350 --> 01:29:55.670
Versionen nimmt, die irgendwie im System hängt oder halt die

01:29:55.670 --> 01:29:57.810
Das ist halt lokal, also das

01:29:57.810 --> 01:29:59.590
macht halt automatisch ein Environment, das halt

01:29:59.590 --> 01:30:01.910
lokal in dem Verzeichnis ist, das ist quasi genauso wie

01:30:01.910 --> 01:30:03.530
wie bei

01:30:03.530 --> 01:30:05.610
ja, NPM auch

01:30:05.610 --> 01:30:24.750
Ja, okay. Das mit dem System-Byte ist noch ein, es gab früher, also die Option gibt es immer noch als Abwärtskompetenz, früher gab es noch die Variante, dass du dir ein Virtual-Env machst, was aber sozusagen alle Nicht-Standard-Library-Pakete aus dem System miterbt und das ist genau das, was du aber nicht willst.

01:30:25.450 --> 01:30:34.430
Deswegen heißt das auch momentan der Default und ich glaube, das fliegt vermutlich auch irgendwann weg oder es wird zumindest so wenig dokumentiert, dass keiner mehr aus Versehen drüber stolpert und meint, das wäre eine gute Idee.

01:30:35.610 --> 01:30:50.530
Und das Problem, was ich habe, ist eher, dass diese Virtual Envs, wenn du dann, keine Ahnung, dann entwickelst du ein Team und die Requirements-Text entwickelt sich weiter und du sagst dann bin-pip-insta-r-requirements-text, dann kriegst du halt nur die Änderungen.

01:30:50.530 --> 01:31:00.690
Und wenn du aber schon irgendwelche Sachen, keine Ahnung, dann gibt es irgendwas, das ist keine Dependency mehr, dann ist die aber trotzdem noch drin, weil etwas, was in der Requirements-Text nicht drin steht, wird halt nicht rausgeworfen in dem Moment.

01:31:01.190 --> 01:31:06.950
Du hast halt also keine abgeschlossene Hülle von dem, was da drinnen definiert ist

01:31:06.950 --> 01:31:10.010
und kannst dich nicht darauf verlassen, dass nicht noch zufällig mehr Zeug da ist.

01:31:10.570 --> 01:31:13.590
Und das kann aber tricky sein, weil es gibt halt Mechanismen, zum Beispiel in Setup-Tools,

01:31:13.950 --> 01:31:16.270
die haben halt Auto-Discovery für irgendwelche Entry-Points

01:31:16.270 --> 01:31:19.690
und dann werden da Entry-Points aktiviert, von denen du nicht wusstest, dass sie da sind

01:31:19.690 --> 01:31:21.130
und dann geht dir irgendwie alles den Bach runter.

01:31:22.070 --> 01:31:23.390
Das will man halt einfach nicht.

01:31:23.930 --> 01:31:29.650
Und auch das ist so ein Black-Swan-Ding im Sinne von, ja, in vielen Fällen funktioniert das sehr gut,

01:31:31.070 --> 01:31:35.130
Aber nächsten Dienstag geht deswegen halt irgendein Server baden.

01:31:37.050 --> 01:31:38.170
Weil wir haben halt so viel Code,

01:31:38.250 --> 01:31:40.650
der so viel Autodetection für bestimmte Dinge macht.

01:31:40.730 --> 01:31:41.290
Dann kann es halt sein,

01:31:41.370 --> 01:31:43.830
dass nächsten Dienstag tritt halt irgendein Exception auf

01:31:43.830 --> 01:31:45.390
und dann gibt es halt irgendein Tool,

01:31:45.490 --> 01:31:46.530
das hat so Exception-Handling.

01:31:46.610 --> 01:31:47.650
Der geht dann wieder auf die Suche,

01:31:47.710 --> 01:31:50.550
ob es für das Exception-Handling noch irgendeinen Entry-Point gibt,

01:31:50.630 --> 01:31:51.770
der da irgendwie deklariert ist.

01:31:51.850 --> 01:31:55.650
Und deswegen kommt da plötzlich irgendwie Code zum Tragen,

01:31:55.650 --> 01:31:57.170
wo du dachtest, das haben wir doch nie definiert.

01:31:57.290 --> 01:31:59.850
Ja, der war halt noch von vor zwei Wochen da.

01:32:01.070 --> 01:32:03.210
Auch das ist ein Problem, was Docker ja löst.

01:32:06.870 --> 01:32:09.290
Ja, löst Docker das Problem?

01:32:09.950 --> 01:32:16.410
Ja, weil bei Docker bei einem Release fängst du halt immer mit deinem leeren Basis-Image an und baust das halt wieder komplett auf.

01:32:16.830 --> 01:32:25.750
Während wenn du einen Virtual-Env sozusagen zweitverwendest, was ich völlig okay finde, was man machen kann, man muss halt wissen, was die Konsequenz daraus dann halt ist.

01:32:25.870 --> 01:32:30.190
Ja, naja gut, bei Docker, also so wirklich weißt du ja nicht, was in deinem Basis-Image alles drin ist.

01:32:30.190 --> 01:32:33.250
Also, wenn du es selber baust, ja klar.

01:32:33.250 --> 01:32:35.850
Jetzt macht mich diese schöne Welt nicht kaputt.

01:32:36.510 --> 01:32:37.350
Ja, also klar.

01:32:37.490 --> 01:32:39.610
Ich meine, war jetzt ja auch bei Heise gerade wieder das Thema,

01:32:39.850 --> 01:32:44.490
dass ein Haufen von den Top 500 Docker-Images

01:32:44.490 --> 01:32:46.670
halt keine Root-Passwörter gesetzt hatte.

01:32:47.450 --> 01:32:48.030
Ja, ja.

01:32:49.430 --> 01:32:50.190
Ja, ja.

01:32:51.710 --> 01:32:53.290
Das ist halt, genau, ich meine,

01:32:53.330 --> 01:32:55.410
das ist das ganze Thema Dependency Management, Vendoring.

01:32:55.870 --> 01:32:57.650
Wo kommen meine Sachen her, die ich jetzt irgendwie

01:32:57.650 --> 01:32:59.930
als Route irgendwo in das System reinschieße?

01:33:00.990 --> 01:33:01.570
Es gab

01:33:01.570 --> 01:33:03.510
noch ein Tool, was ich eigentlich jetzt hier noch mit

01:33:03.510 --> 01:33:05.590
einbringen wollte, falls euch das was

01:33:05.590 --> 01:33:07.170
sagt, das ist CC Buildout.

01:33:08.470 --> 01:33:09.470
Buildout, habe ich schon mal

01:33:09.470 --> 01:33:11.350
irgendwie gehört, aber glaube ich habe es noch nicht verwendet.

01:33:12.110 --> 01:33:13.530
Das ist ein Tool, das stammt

01:33:13.530 --> 01:33:15.490
halt auch so aus der Zeit, wo die Virtual Env sich gerade

01:33:15.490 --> 01:33:17.710
etabliert haben. Der kann zum einen, kann er das, was

01:33:17.710 --> 01:33:19.810
Virtual Env

01:33:19.810 --> 01:33:21.250
macht, auch machen, nämlich dir

01:33:21.250 --> 01:33:23.330
vom System Python

01:33:23.330 --> 01:33:25.270
entkoppelte Pfade zu liefern,

01:33:25.910 --> 01:33:27.670
wo die Dependencies

01:33:27.670 --> 01:33:29.690
klar ausgesteuert sind. Und was

01:33:29.690 --> 01:33:31.730
ich am Buildout aber spannend finde, ist, der hat

01:33:31.730 --> 01:33:33.530
eben diese Option, dass du über die

01:33:33.530 --> 01:33:35.670
Buildout-Config explizit

01:33:35.670 --> 01:33:37.610
sagst, auf der einen Seite, du

01:33:37.610 --> 01:33:39.770
darfst nur Pakete

01:33:39.770 --> 01:33:41.630
mit folgenden Versionsnummern anziehen

01:33:41.630 --> 01:33:43.570
und wenn die

01:33:43.570 --> 01:33:45.530
wiederum rekursiv Dependencies anziehen, die ich

01:33:45.530 --> 01:33:47.610
nicht dokumentiert habe, hier explizit in meinem

01:33:47.610 --> 01:33:49.430
Version-Pinning, dann fall bitte aufs Maul.

01:33:50.770 --> 01:33:51.850
Und das ist total spannend,

01:33:52.050 --> 01:33:53.730
weil der putzt auf der

01:33:53.730 --> 01:33:55.630
einen Seite sozusagen nach hinten hinweg Sachen, die

01:33:55.630 --> 01:33:57.590
du nicht mehr verwendest. Das heißt,

01:33:57.650 --> 01:33:59.350
das ist immer automatisch garantiert clean.

01:33:59.690 --> 01:34:07.910
Und auf der anderen Seite kannst du halt dich darauf verlassen, dass wirklich nur exakt das Versionsset da ist, was du halt brauchst.

01:34:07.990 --> 01:34:10.690
Und das Ding ist relativ leichtgewichtig in dieser Hinsicht.

01:34:11.530 --> 01:34:17.870
Und ich benutze es halt an vielen Stellen genau dafür, dass ich sage, ich mache mir auf der einen Seite ein Virtual Env, um die Systemtrennung zu erreichen, das ist der Bequemlichkeit halber,

01:34:18.370 --> 01:34:25.450
und installiere darin CC Buildout und mache dann eine kleine Buildout-Config, wo ich sage, ich möchte gerne bitte eine Interpreterumgebung für folgende Packages haben

01:34:26.250 --> 01:34:30.190
Und deren kompletter Dependency-Tree

01:34:30.190 --> 01:34:32.410
muss übrigens durch folgende abgeschlossene Liste

01:34:32.410 --> 01:34:34.390
komplett gedeckt sein

01:34:34.390 --> 01:34:36.190
oder du darfst sie nicht installieren.

01:34:37.470 --> 01:34:38.490
Und das ist tatsächlich was,

01:34:38.510 --> 01:34:41.990
das garantiert dir so reproducible Builds halt sehr gut.

01:34:43.690 --> 01:34:44.950
Okay, cool, muss ich mir mal angucken.

01:34:45.030 --> 01:34:46.390
Habe ich bisher noch nicht so gemacht.

01:34:47.070 --> 01:34:49.670
Ja, das ist so ein typisches Tool aus der Soap-Welt,

01:34:50.390 --> 01:34:53.650
was es über die Soap-Welt raus nie geschafft hat.

01:34:53.650 --> 01:34:55.670
und es hat eigentlich, da hängt

01:34:55.670 --> 01:34:57.810
so ein bisschen mein Open-Source-Herz

01:34:57.810 --> 01:34:59.210
von vor zehn Jahren halt dran,

01:35:00.210 --> 01:35:01.470
das hat eigentlich das bessere

01:35:01.470 --> 01:35:03.650
Engineering. Es hat sich

01:35:03.650 --> 01:35:05.210
halt nur nicht durchgesetzt, das ist so ein bisschen

01:35:05.210 --> 01:35:07.170
Krokodil-Trainer.

01:35:09.550 --> 01:35:09.790
Genau.

01:35:11.290 --> 01:35:11.510
So,

01:35:12.170 --> 01:35:13.670
ja, jetzt haben wir

01:35:13.670 --> 01:35:15.270
so Virtual-Env und...

01:35:15.270 --> 01:35:16.770
Ja, dann machen wir auch deinen Rap nochmal drum

01:35:16.770 --> 01:35:19.690
und machen nochmal weiter. Also was habt ihr denn noch?

01:35:19.770 --> 01:35:21.610
Wie macht man denn dann, wenn jetzt so das

01:35:21.610 --> 01:35:24.230
Umgebungssetting so gebaut ist.

01:35:25.750 --> 01:35:26.390
Jetzt haben wir

01:35:26.390 --> 01:35:28.190
erstmal die Möglichkeit, dass wir in Projekten

01:35:28.190 --> 01:35:30.150
überhaupt Umgebungen

01:35:30.150 --> 01:35:32.310
mehrfach bauen können. Also du checkst

01:35:32.310 --> 01:35:33.970
ja jetzt die Requirements-Texte oder das Buildout

01:35:33.970 --> 01:35:35.390
checkst du halt mit ein.

01:35:36.290 --> 01:35:38.290
Und da kommt eine interessante

01:35:38.290 --> 01:35:40.310
Frage, nämlich checkst du zusammen mit deinem

01:35:40.310 --> 01:35:41.950
Code ein oder machst du ein neues Repo?

01:35:42.490 --> 01:35:44.210
Ja, also ich check das immer

01:35:44.210 --> 01:35:46.350
zusammen mit allem anderen ein, aber

01:35:46.350 --> 01:35:46.830
ja.

01:35:49.310 --> 01:35:50.330
Man könnte natürlich

01:35:50.330 --> 01:35:51.490
das so machen, dass man den Code

01:35:51.490 --> 01:35:53.890
in andere Repositorien packt und dann

01:35:53.890 --> 01:35:55.530
in die ganze Infrastruktur,

01:35:56.030 --> 01:35:58.130
wie deployed man

01:35:58.130 --> 01:36:00.330
das Projekt

01:36:00.330 --> 01:36:02.350
halt in eine andere Geschichte reinpackt.

01:36:02.510 --> 01:36:02.930
Ja, hm.

01:36:05.530 --> 01:36:06.130
Das machen wir

01:36:06.130 --> 01:36:07.530
eigentlich, das machen wir sehr gerne, ja.

01:36:08.070 --> 01:36:09.970
Also zieht sich dann die Maschine selber immer den Code

01:36:09.970 --> 01:36:11.990
von Remote und andersherum musst du den mal

01:36:11.990 --> 01:36:13.350
pushen oder was war jetzt der Unterschied?

01:36:14.910 --> 01:36:16.110
Ah, das ist noch ein interessanter Vorschlag.

01:36:16.330 --> 01:36:17.710
Genau. Hm, hm,

01:36:17.970 --> 01:36:19.510
interessant. Also weißt du,

01:36:19.630 --> 01:36:21.470
klar, was du halt machen kannst, ist, du kannst

01:36:21.470 --> 01:36:23.190
jetzt solche Dinge spielen, wie

01:36:23.190 --> 01:36:25.750
auf deinen Zielmaschinen

01:36:25.750 --> 01:36:27.150
machst du dir einen Con-Job,

01:36:27.790 --> 01:36:29.510
der zieht das Repo

01:36:29.510 --> 01:36:31.690
selbstständig alle,

01:36:32.050 --> 01:36:33.690
entweder per Trigger oder irgendwie

01:36:33.690 --> 01:36:35.070
alle fünf Minuten oder was auch immer,

01:36:35.330 --> 01:36:37.610
von einer Production-Branch und

01:36:37.610 --> 01:36:39.530
führt dann irgendwie so ein Build-Skript aus.

01:36:40.350 --> 01:36:41.390
Das kannst du machen.

01:36:42.330 --> 01:36:43.650
Das machen wir auch an ein paar

01:36:43.650 --> 01:36:44.010
Stellen.

01:36:45.690 --> 01:36:47.290
Kommt ja immer darauf an, wovon man es braucht.

01:36:49.630 --> 01:37:03.010
Und ja, genau. Und selbst da kann man eben diese Auftrennung machen, wenn du davon ausgehst, dass deine Anwendung zum Beispiel von unterschiedlichen Leuten mal deployed werden soll, dann macht es halt Sinn, das in unterschiedliche Repos zu legen.

01:37:04.150 --> 01:37:13.710
Oder wenn du es über Teams trennst. Also wir haben es halt häufig, weil wir ja als Dienstleister in Projekten drinnen hängen, wo jemand anders die Software entwickelt, dann haben die halt ihre Repo für die eigentliche Software.

01:37:14.950 --> 01:37:16.510
Und wir haben das Repo

01:37:16.510 --> 01:37:18.710
für das Deployment.

01:37:19.310 --> 01:37:20.490
Wir haben meistens gegenseitig

01:37:20.490 --> 01:37:22.390
auch Schreibzugriffe drauf, aber es ist so mehr ein

01:37:22.390 --> 01:37:24.410
man tritt sich halt nicht unnötig auf den Füßen rum.

01:37:26.810 --> 01:37:27.890
Ja, das ist

01:37:27.890 --> 01:37:30.430
ich meine, ich weiß nicht, also das, was

01:37:30.430 --> 01:37:32.210
man da vielleicht, also mache ich jetzt für meine

01:37:32.210 --> 01:37:34.510
also so privaten, kleineren

01:37:34.510 --> 01:37:36.310
Geschichten auch nicht, aber wenn man jetzt

01:37:36.310 --> 01:37:38.310
irgendwie eine größere Sache hat, was man ja

01:37:38.310 --> 01:37:39.390
vielleicht dann haben will, ist halt

01:37:39.390 --> 01:37:42.150
Continuous Integration oder Delivery sogar,

01:37:42.730 --> 01:37:44.350
dass man dann, wenn halt

01:37:44.350 --> 01:37:46.630
man sozusagen

01:37:46.630 --> 01:37:48.750
Code, den man irgendwie geändert hat, dann

01:37:48.750 --> 01:37:51.050
in einen Masterbranch oder so reinpusht,

01:37:51.130 --> 01:37:52.750
dass das dann halt automatisch irgendwie

01:37:52.750 --> 01:37:54.970
in einem neuen Bild lostritt und das auch ausrollt

01:37:54.970 --> 01:37:56.790
automatisch alles, wenn man halt

01:37:56.790 --> 01:37:58.970
irgendwie so einen CI-Server

01:37:58.970 --> 01:38:00.550
da irgendwo stehen hat, der das dann macht.

01:38:01.070 --> 01:38:02.550
Du musst ja einmal vielleicht nochmal für die Leute, die

01:38:02.550 --> 01:38:04.770
es auch gar nicht kennen, erklären, was ist der Unterschied zwischen Continuous

01:38:04.770 --> 01:38:05.970
Integration und Delivery und

01:38:05.970 --> 01:38:08.490
ist das einfach so ein Prozess, der automatisch

01:38:08.490 --> 01:38:10.830
angestoßen wird, wenn man einen Entwicklungsschritt

01:38:10.830 --> 01:38:12.110
abgeschlossen hat oder

01:38:12.110 --> 01:38:14.830
Feature-Entwicklung oder

01:38:14.830 --> 01:38:16.930
irgendwie Fixes oder worum geht es?

01:38:18.250 --> 01:38:19.110
Ja, es geht halt

01:38:19.110 --> 01:38:20.950
im Grunde darum, dass, also was man ganz

01:38:20.950 --> 01:38:22.970
früher gemacht hat, ist, dass man halt

01:38:22.970 --> 01:38:25.150
baut die Software irgendwie zu periodischen

01:38:25.150 --> 01:38:26.750
Zeiten oder halt wenn man

01:38:26.750 --> 01:38:29.130
mit einer Release fertig ist und

01:38:29.130 --> 01:38:31.630
dann baut man die halt einmal und dann

01:38:31.630 --> 01:38:33.090
presst man die auf

01:38:33.090 --> 01:38:35.010
eine CD oder speichert die auf

01:38:35.010 --> 01:38:36.750
Disketten und verschickt die mit der Post oder irgendwie sowas.

01:38:37.270 --> 01:38:37.550
Aber

01:38:37.550 --> 01:38:40.990
was man ja jetzt eigentlich tun kann, wenn das Ganze

01:38:40.990 --> 01:38:42.530
sowieso alles mit

01:38:42.530 --> 01:38:43.810
Netz verbunden ist,

01:38:44.590 --> 01:38:47.370
dass man das ja auch in kleineren

01:38:47.370 --> 01:38:49.130
Intervallen macht, was halt den Vorteil hat, dass man

01:38:49.130 --> 01:38:51.290
nicht sozusagen

01:38:51.290 --> 01:38:52.830
vor dem Problem steht, das man

01:38:52.830 --> 01:38:54.890
bekommt, wenn man jetzt so fixe Releases

01:38:54.890 --> 01:38:56.550
machen möchte, dass man halt,

01:38:57.110 --> 01:38:58.690
wenn man jetzt, also klassische

01:38:58.690 --> 01:39:00.650
Geschichte dabei ist halt so,

01:39:01.210 --> 01:39:03.110
man hat halt

01:39:03.110 --> 01:39:05.010
so Milestones und dann irgendwann ist man fertig und dann

01:39:05.010 --> 01:39:06.970
sagt man, okay, jetzt machen wir noch irgendwie eine Woche

01:39:06.970 --> 01:39:09.030
testen hintendran und dann liefern wir das

01:39:09.030 --> 01:39:11.170
aus. Und dann fällt an Tag 3

01:39:11.170 --> 01:39:12.930
irgendwie beim Testen fällt halt auf,

01:39:12.990 --> 01:39:14.610
oh, wir haben hier ein großes Problem gefunden.

01:39:14.970 --> 01:39:17.150
Was macht man denn dann? Dann ist es halt irgendwie doof.

01:39:18.110 --> 01:39:19.010
Dann kann man halt entweder

01:39:19.010 --> 01:39:20.970
das irgendwie Ducktape auspacken,

01:39:21.530 --> 01:39:24.890
was diverse Nachteile hat,

01:39:25.010 --> 01:39:25.950
oder man kann halt

01:39:25.950 --> 01:39:28.950
irgendwie, ja, sagen, okay,

01:39:28.950 --> 01:39:30.450
wir können doch nicht releasen,

01:39:30.910 --> 01:39:33.030
was dann halt auch wieder Nachteile hat. Also man ist in einer Situation,

01:39:33.170 --> 01:39:34.990
wo man keine guten Optionen mehr hat

01:39:34.990 --> 01:39:37.050
eigentlich. Und das ist natürlich ein bisschen

01:39:37.050 --> 01:39:38.870
dumm. Oder man hat halt das

01:39:38.870 --> 01:39:40.770
Problem, dass man die Arbeit von anderen Leuten,

01:39:40.810 --> 01:39:42.910
die dann vielleicht auf anderen Branches irgendwie gearbeitet haben,

01:39:43.010 --> 01:39:44.750
irgendwie integrieren muss und das dann auch

01:39:44.750 --> 01:39:46.610
nicht richtig funktioniert und einem erst zum Schluss

01:39:46.610 --> 01:39:48.350
auffällt, dass das alles so nicht

01:39:48.350 --> 01:39:49.990
funktionieren kann, wie man das geplant hatte.

01:39:50.890 --> 01:39:52.730
Und das ist halt blöd

01:39:52.730 --> 01:39:54.510
und das kann man so ein bisschen loswerden

01:39:54.510 --> 01:39:56.150
oder diese

01:39:56.150 --> 01:39:58.550
Geschichten sind halt der Versuch,

01:39:58.750 --> 01:40:00.550
dass sozusagen dadurch, dass man das Release

01:40:00.550 --> 01:40:02.590
jetzt nicht einmal so ein großes, riesenbrocken Ding

01:40:02.590 --> 01:40:04.430
macht, sondern man zerteilt das halt in viele

01:40:04.430 --> 01:40:05.890
kleine Geschichten,

01:40:06.790 --> 01:40:08.530
das dann halt so undramatischer zu machen.

01:40:08.870 --> 01:40:23.130
Und damit dann dahin zu kommen, dass das dadurch, dass das halt häufig passiert und alles durchautomatisiert ist, ist ja auch so etwas, was man früher hat man dann viele dieser Prozesse, die nötig sind, um irgendwas zu releasen, hat man dann manuell gemacht.

01:40:23.130 --> 01:40:31.650
Dann hat man dann mit Chatlisten gearbeitet, weil man sich das nicht alles merken kann und trotzdem passieren dann immer wieder Fehler und alles nicht so toll.

01:40:32.250 --> 01:40:34.450
wenn man das halt ganz oft macht, dann ist auch

01:40:34.450 --> 01:40:36.430
ein gewisser Druck da, das halt so

01:40:36.430 --> 01:40:38.490
zu automatisieren, dass man da im Grunde nur noch auf den Knopf

01:40:38.490 --> 01:40:39.010
drücken muss.

01:40:40.090 --> 01:40:42.250
Also das ist jetzt, was man jetzt hat, wenn man jetzt so ein

01:40:42.250 --> 01:40:44.130
Git-Flow sich eingerichtet hat und das dann irgendwie

01:40:44.130 --> 01:40:46.290
in so ein Framework reinlädt, dann wird das automatisch

01:40:46.290 --> 01:40:47.790
getestet, dass man bei Git,

01:40:47.990 --> 01:40:49.450
Travis oder was habe ich da meint?

01:40:49.730 --> 01:40:52.230
Travis.ji ist halt so ein Continuous Integration

01:40:52.230 --> 01:40:53.290
Bar.

01:40:54.770 --> 01:40:55.050
Oh.

01:40:55.770 --> 01:40:57.090
Ja, also man hört da so manchmal

01:40:57.090 --> 01:40:58.970
so komische Geschichten, dass da irgendwie Leute

01:40:58.970 --> 01:40:59.810
plötzlich irgendwie

01:40:59.810 --> 01:41:02.590
arbeitslos werden und so in letzter Zeit, ja.

01:41:05.030 --> 01:41:06.910
Aber ich weiß da halt nichts drüber, keine Ahnung.

01:41:07.310 --> 01:41:08.950
Ich verwende es immer noch für meine GitHub-Geschichten,

01:41:09.010 --> 01:41:10.310
weil da gibt es halt eine sehr schöne Integration.

01:41:12.210 --> 01:41:12.970
Ah, die läuft noch?

01:41:13.070 --> 01:41:14.410
Ich dachte, die haben sie auch zugemacht schon.

01:41:14.870 --> 01:41:15.390
Die läuft noch.

01:41:15.650 --> 01:41:16.710
Travis ist eigentlich durch.

01:41:17.630 --> 01:41:18.330
Was gibt es jetzt?

01:41:21.130 --> 01:41:22.990
Naja, du hast halt, GitHub kannst du

01:41:22.990 --> 01:41:24.190
ja inzwischen selber machen,

01:41:24.690 --> 01:41:26.570
Bitbucket kann Pipelines, du hast

01:41:26.570 --> 01:41:28.510
GitLab, gibt schon noch einiges.

01:41:29.350 --> 01:41:31.190
Ja. Okay, die Pipelines werden

01:41:31.190 --> 01:41:32.830
dann eigentlich integriert. Ich habe das bei Azure mal gesehen.

01:41:33.030 --> 01:41:34.990
Dann wird dann einfach direkt getestet.

01:41:35.030 --> 01:41:37.170
Dann kann man sich da was schreiben und dann testet der das

01:41:37.170 --> 01:41:38.450
direkt durch, also ob es läuft.

01:41:38.830 --> 01:41:40.810
Einfach auf dem Server integriert insgesamt.

01:41:41.230 --> 01:41:43.190
Ja, ob die Tests durchlaufen, kann man natürlich

01:41:43.190 --> 01:41:45.150
machen. Und das kann man halt dann auch nicht nur

01:41:45.150 --> 01:41:47.150
so machen, dass es halt irgendwie findet speziell,

01:41:47.250 --> 01:41:48.670
sondern man kann dann auch...

01:41:48.670 --> 01:41:51.430
Man kann so eine Maschine spawnen, die dann halt auch irgendwo stehen sollte, oder?

01:41:51.870 --> 01:41:53.050
Ja, könnte man. Aber das

01:41:53.050 --> 01:41:54.850
kann man im Grunde machen, wie man möchte.

01:41:54.970 --> 01:41:56.850
Also üblicherweise wird irgendwie

01:41:56.850 --> 01:41:58.910
eine virtuelle Maschine wahrscheinlich hochgezogen und dann werden

01:41:58.910 --> 01:42:00.830
halt da die unterschiedlichen Environments,

01:42:00.890 --> 01:42:02.970
da gibt es so Talks, mit denen kann man

01:42:02.970 --> 01:42:05.110
sagen, welchen Dingern

01:42:05.110 --> 01:42:06.990
das halt funktionieren sollte

01:42:06.990 --> 01:42:08.790
und dann werden Interpreter in unterschiedlichen Versionen

01:42:08.790 --> 01:42:10.970
installiert und Software in unterschiedlichen

01:42:10.970 --> 01:42:12.850
Versionen und dann wird das halt, wenn die Tests

01:42:12.850 --> 01:42:14.770
laufen gelassen und wenn die halt durchlaufen, dann ist halt gut.

01:42:16.470 --> 01:42:16.990
Aber man

01:42:16.990 --> 01:42:19.030
kann halt nicht nur das machen, sondern man kann halt beliebige Dinge tun,

01:42:19.170 --> 01:42:20.870
wie auch irgendwie dann halt

01:42:20.870 --> 01:42:22.770
ein Deployment lostreten,

01:42:22.870 --> 01:42:24.310
wenn das dann halt alles funktioniert hat

01:42:24.310 --> 01:42:26.910
und so, dass das halt im Grunde dann komplett

01:42:26.910 --> 01:42:28.150
durchautomatisiert ist von

01:42:28.150 --> 01:42:30.110
irgendwie Entwickler

01:42:30.110 --> 01:42:33.070
sagt jetzt, okay, ich bin mit dem Feature fertig,

01:42:33.270 --> 01:42:34.490
macht eine Release,

01:42:34.490 --> 01:42:36.520
oder macht einfach nur Push auf Master

01:42:36.520 --> 01:42:38.700
und ja, irgendwie

01:42:38.700 --> 01:42:40.620
weiß ich nicht, ein paar Minuten später ist es dann halt

01:42:40.620 --> 01:42:41.660
im Produktionssystem live.

01:42:44.020 --> 01:42:44.420
Aber

01:42:44.420 --> 01:42:46.480
zwischen irgendwie, man macht halt irgendwie alle paar

01:42:46.480 --> 01:42:48.180
Wochen Release und

01:42:48.180 --> 01:42:50.640
eben so etwas,

01:42:50.760 --> 01:42:52.500
man checkt Code ein und es geht dann sofort

01:42:52.500 --> 01:42:54.460
live, gibt es halt alle möglichen Zwischenstufen

01:42:54.460 --> 01:42:56.540
und die dann, ich weiß

01:42:56.540 --> 01:42:58.520
gar nicht genau, wie die genauen Definitionen

01:42:58.520 --> 01:43:00.380
jetzt für die unterschiedlichen Sachen da sind.

01:43:02.400 --> 01:43:04.100
Hätte ich jetzt auch keine, die irgendwie

01:43:04.100 --> 01:43:05.180
formal wären.

01:43:06.480 --> 01:43:07.400
Ich finde es

01:43:07.400 --> 01:43:09.300
spannend, dass auch da wieder diese beiden Extreme

01:43:09.300 --> 01:43:11.340
nur zu betrachten

01:43:11.340 --> 01:43:13.180
eben genau nicht hilfreich ist.

01:43:13.420 --> 01:43:14.880
Wir haben so viele Projekte, wo wir

01:43:14.880 --> 01:43:17.280
ganz unterschiedlich eben diese Zwischentöne eher sehen,

01:43:18.300 --> 01:43:19.140
wo auch Entwickler

01:43:19.140 --> 01:43:21.240
dann teilweise sagen, ich finde es eigentlich ganz gut,

01:43:21.560 --> 01:43:23.160
wenn ihr

01:43:23.160 --> 01:43:25.220
bestimmte Sachen auch nochmal mit anschaut.

01:43:25.660 --> 01:43:27.060
Und das ist halt genau dieses Thema von, warum

01:43:27.060 --> 01:43:29.240
will man denn enger zusammenarbeiten?

01:43:29.860 --> 01:43:31.320
Weil man ja möchte, dass Menschen

01:43:31.320 --> 01:43:32.860
miteinander Wissen austauschen.

01:43:33.720 --> 01:43:43.240
Und dann ist sozusagen dieser, so das geht jetzt hier blind raus, das kannst du schon machen und das funktioniert auch, das hat halt andere Konsequenzen und ich muss mich da anders aufstellen.

01:43:43.240 --> 01:43:53.400
Wir haben halt auch so Flows, wo die Leute sagen, wir können beide auf den Knopf drücken und ich komme nur an, wenn ich mir nicht sicher bin und dann bitte ich dich mal irgendwie noch bestimmte Sachen mit mir gemeinsam anzuschauen.

01:43:53.820 --> 01:43:58.820
Oder einige sagen, hier komm, du kümmerst dich drum, mach einfach wie du willst, drück selber auf den Knopf, wenn du soweit bist.

01:43:59.880 --> 01:44:09.440
Da gibt es halt tatsächlich diese ganzen, wenn du es durchautomatisiert hast, kannst du die ganzen kleineren Varianten davon halt automatisch auch spielen.

01:44:10.600 --> 01:44:18.460
Ja, zu sagen, okay, das läuft jetzt halt nicht vollautomatisch, sondern es läuft jetzt halt nur bis hierhin und dann muss man mal draufdrücken oder dann schicke ich hier nur eine Nachricht ab in irgendein Channel.

01:44:18.560 --> 01:44:25.620
Das lässt sich halt besser erreichen und du musst dich im Prinzip halt auf diese, da auch annähern.

01:44:25.980 --> 01:44:28.460
ich meine, jeden Commit sofort rauszublasen,

01:44:28.780 --> 01:44:30.180
das kommt dann halt auch drauf an,

01:44:30.340 --> 01:44:32.180
wie, was für ein Impact so ein

01:44:32.180 --> 01:44:32.920
Deployment halt hat.

01:44:34.600 --> 01:44:36.060
Wenn wir sind bei,

01:44:36.240 --> 01:44:38.040
okay, das dauert halt nur 500

01:44:38.040 --> 01:44:39.480
Millisekunden, um mal neu zu starten,

01:44:40.280 --> 01:44:41.880
ja, das kannst du fast immer überall machen.

01:44:42.460 --> 01:44:44.080
Wenn du halt Rolling

01:44:44.080 --> 01:44:46.160
Releases kannst, wenn du also sozusagen in der Lage bist,

01:44:46.300 --> 01:44:48.440
alte und neue Versionen deiner Software parallel zu betreiben,

01:44:49.060 --> 01:44:50.260
dann versteckst du das hinter einem

01:44:50.260 --> 01:44:52.260
Loadbalancer, hast irgendwie 10 Instanzen und dann

01:44:52.260 --> 01:44:54.460
updatest du die erste, startest du die neue, updatest du die zweite,

01:44:54.700 --> 01:44:57.440
dann müssen aber halt die Software-Versionen

01:44:57.440 --> 01:44:59.320
mit den unterschiedlichen Datenbankständen

01:44:59.320 --> 01:45:01.380
halt auch zumindest adäquat

01:45:01.380 --> 01:45:03.460
klarkommen. Und das ist halt

01:45:03.460 --> 01:45:05.480
was, was man dann halt bauen muss. Oder du sagst halt

01:45:05.480 --> 01:45:07.440
nee, das will ich nicht bauen, weil

01:45:07.440 --> 01:45:09.360
ich hab halt auch noch irgendwelche Dependencies auf Sachen,

01:45:09.420 --> 01:45:11.460
wo ich das nicht unter Kontrolle habe. Ich brauche

01:45:11.460 --> 01:45:12.800
ein Black Deployment, dann

01:45:12.800 --> 01:45:15.580
musst du halt irgendwas machen, was halt vielleicht nachts losläuft

01:45:15.580 --> 01:45:16.420
oder um drei.

01:45:17.200 --> 01:45:19.420
Ja, genau. Der Trick ist, das kannst du ja

01:45:19.420 --> 01:45:21.300
machen, wenn du dir im Prinzip sicher bist, weil

01:45:21.300 --> 01:45:23.420
das alles so eingespielt ist, dass das halt nicht kaputt geht.

01:45:24.700 --> 01:45:26.640
wie du vorhin meintest, wenn es halt weh tut,

01:45:26.880 --> 01:45:28.540
dann, weil du es halt ständig machst, dann

01:45:28.540 --> 01:45:30.520
optimieren die Leute halt darauf hin, dass man es ständig macht.

01:45:31.500 --> 01:45:31.980
Die alte

01:45:31.980 --> 01:45:34.120
Leier dazu ist doch,

01:45:34.860 --> 01:45:36.820
if something hurts, do it more.

01:45:38.280 --> 01:45:38.560
Genau.

01:45:39.720 --> 01:45:40.440
Je nach Präferenz.

01:45:41.660 --> 01:45:42.220
Ja, genau.

01:45:42.540 --> 01:45:44.420
Nee, aber der Mensch neigt ja dazu, halt

01:45:44.420 --> 01:45:46.380
irgendwie Schmerzen abzustellen, insofern wenn du

01:45:46.380 --> 01:45:52.360
Genau, man muss das halt irgendwie

01:45:52.360 --> 01:45:54.620
wegkriegen von dem, es ist irgendwas Außergewöhnliches,

01:45:54.700 --> 01:45:56.280
schreckliches, wovor alle Angst haben

01:45:56.280 --> 01:45:58.400
und dann so zu etwas,

01:45:58.600 --> 01:46:00.100
was halt vielleicht ein bisschen weh tut, aber das

01:46:00.100 --> 01:46:02.180
man regelmäßig machen muss,

01:46:02.260 --> 01:46:04.020
wie sie Zähne putzen, keine Ahnung, dann geht das.

01:46:07.420 --> 01:46:07.860
Genau,

01:46:08.060 --> 01:46:09.280
also das ist halt so

01:46:09.280 --> 01:46:12.740
die Idee dahinter und dann

01:46:12.740 --> 01:46:17.880
genau, wie das dann

01:46:17.880 --> 01:46:19.760
auf die Maschinen kommt,

01:46:20.160 --> 01:46:22.120
ja genau, so große Systeme mit

01:46:22.120 --> 01:46:24.060
Low Balancern oder so, das ist ja

01:46:24.060 --> 01:46:26.120
auch schon dann etwas, ja, da würde man

01:46:26.120 --> 01:46:27.780
eben Ansible nehmen oder so und dann

01:46:27.780 --> 01:46:30.260
das hätte ein Inventory von den ganzen Maschinen

01:46:30.260 --> 01:46:31.580
und dann könnte man irgendwie so Rolling

01:46:31.580 --> 01:46:33.560
Updates machen oder so.

01:46:34.160 --> 01:46:34.280
Ja.

01:46:36.780 --> 01:46:38.040
Also für so private

01:46:38.040 --> 01:46:40.120
kleine Geschichten. Also was ich

01:46:40.120 --> 01:46:41.920
momentan tatsächlich irgendwie selbst

01:46:41.920 --> 01:46:43.380
am liebsten mache,

01:46:44.020 --> 01:46:46.000
ist, ich benutze tatsächlich

01:46:46.000 --> 01:46:46.240
Docker.

01:46:49.900 --> 01:46:51.780
Also aus Entwicklersicht hat das einige

01:46:51.780 --> 01:46:54.060
Vorteile. Ich habe früher auch mal

01:46:54.060 --> 01:46:56.180
das dann irgendwie mit Vagrant gemacht

01:46:56.180 --> 01:46:58.220
und dann immer komplette Maschinen

01:46:58.220 --> 01:47:00.020
hochgezogen und so. Aber

01:47:00.020 --> 01:47:02.060
das dauert halt alles so ewig, wenn man

01:47:02.060 --> 01:47:03.980
irgendwas ändern möchte an der Maschine, dann muss man

01:47:03.980 --> 01:47:05.620
da irgendwie, dann ist das

01:47:05.620 --> 01:47:08.000
gerade wenn man sie dann per Ansible

01:47:08.000 --> 01:47:09.860
oder so hochzieht, das ist

01:47:09.860 --> 01:47:11.680
alles ziemlich mühselig

01:47:11.680 --> 01:47:14.060
und natürlich

01:47:14.060 --> 01:47:16.060
ist mir auch klar, dass das irgendwie problematisch ist,

01:47:16.120 --> 01:47:17.380
aber bei Docker ist das halt viel, viel schneller.

01:47:17.820 --> 01:47:19.980
Da ist die Maschine halt innerhalb

01:47:19.980 --> 01:47:22.180
von, ja, sagen wir mal, wenigen Sekunden

01:47:22.180 --> 01:47:24.040
da oder noch weniger und

01:47:24.040 --> 01:47:26.200
man kann sofort damit was machen.

01:47:27.040 --> 01:47:28.080
Klar, wenn man was ändern muss,

01:47:28.160 --> 01:47:30.220
dauert es auch ein bisschen länger, aber das ist alles nicht so schlimm

01:47:30.220 --> 01:47:32.340
wie das, was man davor hatte.

01:47:33.640 --> 01:47:34.180
Und es ist vor allem

01:47:34.180 --> 01:47:35.480
robuster halt,

01:47:35.940 --> 01:47:37.980
weil es halt die Stände ein bisschen besser

01:47:37.980 --> 01:47:39.940
definiert, dass du halt nicht

01:47:39.940 --> 01:47:42.040
mit einem Basis-Image anfängst, was du, also gerade

01:47:42.040 --> 01:47:43.960
beim Vagrant, da sind wir auch noch

01:47:43.960 --> 01:47:45.940
ein bisschen dran. Wir haben für uns

01:47:45.940 --> 01:47:48.200
ja, wir haben ja NixOS als

01:47:48.200 --> 01:47:50.680
Linux-Derivat,

01:47:51.680 --> 01:47:53.020
was dieses ganze Thema wie

01:47:53.020 --> 01:47:54.580
manage ich Runtimes sauber

01:47:54.580 --> 01:47:57.420
gelöst hat. Da ist eher die Frage,

01:47:57.520 --> 01:47:59.340
wie kann ich dann da drinnen wieder unsauber rumpanken.

01:48:01.940 --> 01:48:03.120
Und dann haben wir da halt auch so

01:48:03.120 --> 01:48:05.320
Vagrant-Images und die sind schon relativ gute

01:48:05.320 --> 01:48:07.240
Zustände immer als Basis-Images, dass ich weiß,

01:48:07.240 --> 01:48:09.140
wo ich bin und aber tatsächlich

01:48:09.140 --> 01:48:11.320
NixOS kann halt auch

01:48:11.320 --> 01:48:13.100
solche, installier jetzt mal bitte

01:48:13.100 --> 01:48:15.100
x, y, z, das haben die in dieser Sprache

01:48:15.100 --> 01:48:17.260
drinnen schon verwusst, das ist eigentlich eine schöne Alternative

01:48:17.260 --> 01:48:19.240
zu dem, wie Docker das macht.

01:48:20.480 --> 01:48:21.200
Aber auch das

01:48:21.200 --> 01:48:23.040
ist tatsächlich immer wieder so relativ

01:48:23.040 --> 01:48:25.240
fragil, weil es dann doch noch darauf ankommt,

01:48:25.320 --> 01:48:26.820
wie das Vagrant genau aussieht und

01:48:26.820 --> 01:48:31.040
nervt gerade auch noch ein bisschen.

01:48:32.100 --> 01:48:33.380
An der Stelle ist das

01:48:33.380 --> 01:48:35.040
Docker-Konzept halt zumindest so,

01:48:35.120 --> 01:48:37.100
dass man halt relativ gut produktiv sein kann.

01:48:38.380 --> 01:48:38.500
Ja.

01:48:39.780 --> 01:48:41.240
Ja, und vor allen Dingen, also es hat

01:48:41.240 --> 01:48:43.020
halt, also was ich, ich kann ja einfach vielleicht,

01:48:43.380 --> 01:48:44.600
also ich mach das so,

01:48:45.040 --> 01:48:47.060
ist auch interessant, weil es vielleicht so ein bisschen

01:48:47.060 --> 01:49:07.820
Der umgekehrte Ansatz ist zudem, man macht halt ein Skript, das man irgendwie remote direkt vielleicht schon sogar entwickelt, um sofort sehen zu können, ob das irgendwie funktioniert oder nicht. Wenn man jetzt irgendwie so eine Webseite zusammenbaut, dann hat man da enorm viel komische Abhängigkeiten auch noch zu anderen Systemen hin, blöderweise.

01:49:07.820 --> 01:49:24.160
Das ist auch so etwas, was ich irgendwie so ein bisschen schrecklich finde, aber wo ich nicht genau weiß, wie man das irgendwie besser hinkriegt. Und ich fange tatsächlich oft so an, selbst für kleine Geschichten, dass ich halt so ein Cookie-Cutter-Django-Template oder so halt ausführe und dann erstmal so ein riesen Ding da ausrolle.

01:49:26.420 --> 01:49:27.520
Also ein selbst geschriebenes Template?

01:49:27.520 --> 01:49:51.740
Nein, nein, ich nehme das, das, das, irgendwie, ja, kriegt man mal nach Django-Cookie-Krater, googelt, ist von den Leuten, die halt auch das Two-Scoops-of-Django-Buch geschrieben haben und, ja, das macht dann halt schon eine ganze Menge Sachen, unter anderem halt, legt es halt auch schon so Docker-Config-Files, also Docker-Compose-YAML-Files an

01:49:55.700 --> 01:49:57.700
ein großer Vorteil

01:49:57.700 --> 01:49:59.780
jetzt, wenn man damit arbeitet, ist, man kann es sofort hochfahren,

01:50:00.860 --> 01:50:01.660
kann Dinge

01:50:01.660 --> 01:50:03.440
damit tun und vor allen Dingen kann man halt auch lokal

01:50:03.440 --> 01:50:05.540
das Produktionssystem halt mal

01:50:05.540 --> 01:50:07.300
hochfahren und dann gucken, weil

01:50:07.300 --> 01:50:09.360
oft, also es wäre natürlich schön, wenn das

01:50:09.360 --> 01:50:10.640
identisch wäre, aber

01:50:10.640 --> 01:50:13.480
lässt sich oft nicht

01:50:13.480 --> 01:50:15.200
so wirklich komplett

01:50:15.200 --> 01:50:17.360
durchziehen und dann hat man schon Unterschiede

01:50:17.360 --> 01:50:19.700
zwischen lokalem Entwicklungssystem,

01:50:19.960 --> 01:50:20.960
also wenn ich jetzt irgendwas...

01:50:20.960 --> 01:50:22.860
Hightech-Mac gegen 486er schmeißen?

01:50:25.700 --> 01:50:30.500
Also genau, und dann auf dem Server sieht es dann doch anders aus.

01:50:30.760 --> 01:50:32.520
Also die Unterschiede sind halt vor allen Dingen sowas wie,

01:50:32.920 --> 01:50:34.240
naja, wenn ich halt lokal entwickle,

01:50:34.780 --> 01:50:37.360
dann ist das halt eher das lokale Filesystem.

01:50:38.880 --> 01:50:41.920
Einfach, weil ich auch lokal nicht so toll ans Netz angebunden bin

01:50:41.920 --> 01:50:45.840
und produktiv ist es dann halt irgendwie Google Computer Engine

01:50:45.840 --> 01:50:49.100
oder AWS oder S3 Buckets oder sowas.

01:50:49.560 --> 01:50:51.980
Und das verhält sich dann manchmal doch subtil anders

01:50:51.980 --> 01:50:54.160
oder auch ganz, ganz krass anders.

01:50:55.700 --> 01:51:20.960
Und dann treten halt Dinge auf, die man halt lokal einfach nicht sieht. Da funktioniert das Problem los. Und dann, naja, wenn man das aber trotzdem mal lokal reproduzieren möchte, weil das halt auch blöd ist, man kann ja auch irgendwie das Debug-Flag sozusagen auf Produktionsmaschinen nicht einschalten, weil ansonsten reicht man halt diverse Sachen, die eigentlich vertraulich bleiben sollten nach außen.

01:51:20.960 --> 01:51:39.180
Daher ist das halt schon mal, aber das ist halt alles mit dabei und das ist dann natürlich eine ganz, ganz schöne Geschichte, dass es da halt eben über Docker gelöst. Wenn ich das anders machen wollte, wäre das relativ schwierig. Also über Vagrant wäre das dann schon so, geht wahrscheinlich auch noch irgendwie, aber dann wird es halt schon sehr, sehr schwergewichtig.

01:51:39.820 --> 01:51:42.160
ja, natürlich funktioniert das

01:51:42.160 --> 01:51:43.720
auch nur, solange die Systeme halbwegs

01:51:43.720 --> 01:51:46.020
klein sind, wenn das dann irgendwie

01:51:46.020 --> 01:51:48.020
sehr, sehr viele unterschiedliche

01:51:48.020 --> 01:51:50.160
Services werden. Also bei mir ist es halt meistens

01:51:50.160 --> 01:51:51.920
nur in Postgres-Datenbank,

01:51:52.140 --> 01:51:54.060
es ist irgendwie ein Riddes, es ist irgendwie vielleicht ein bisschen

01:51:54.060 --> 01:51:54.880
Celery oder so.

01:51:55.300 --> 01:51:59.020
Das ist sozusagen

01:51:59.020 --> 01:52:00.380
der Applikations-Server

01:52:00.380 --> 01:52:01.820
vorne dran meistens, den ich

01:52:01.820 --> 01:52:03.620
meistens benutze.

01:52:04.220 --> 01:52:06.360
Der Web-Server

01:52:06.360 --> 01:52:07.440
einfach vorne dran, der halt

01:52:07.440 --> 01:52:09.360
so ein Reverse-Proxy auch ist für

01:52:09.360 --> 01:52:11.520
die Applikationsserver. Applikationsserver

01:52:11.520 --> 01:52:13.000
ist Unicorn meistens.

01:52:15.440 --> 01:52:15.800
Und

01:52:15.800 --> 01:52:17.420
ja, das sind halt vier, fünf

01:52:17.420 --> 01:52:18.860
unterschiedliche Container-Typen, das war's.

01:52:19.260 --> 01:52:21.180
Und das kann man auch lokal

01:52:21.180 --> 01:52:22.800
problemlos noch handeln.

01:52:24.080 --> 01:52:24.600
Eigentlich.

01:52:25.540 --> 01:52:26.420
Genau, und

01:52:26.420 --> 01:52:29.440
ja, meistens

01:52:29.440 --> 01:52:31.340
mache ich das dann einfach so, dass

01:52:31.340 --> 01:52:31.780
ich

01:52:31.780 --> 01:52:35.140
habe halt so Skripte,

01:52:35.140 --> 01:52:37.180
die, also ich habe

01:52:37.180 --> 01:52:38.860
zum Beispiel einen Deploy-Skript, mit dem ich

01:52:38.860 --> 01:52:40.920
das halt, also ich mach das dann halt

01:52:40.920 --> 01:52:42.480
per SSH und

01:52:42.480 --> 01:52:45.060
benutze aber auch Python dafür, damit ich einfach

01:52:45.060 --> 01:52:46.600
nur Python-Skripte ausführen muss.

01:52:47.360 --> 01:52:48.900
Das lockt sich halt dann irgendwie

01:52:48.900 --> 01:52:50.680
auf einer Produktionsmaschine ein oder so,

01:52:50.880 --> 01:52:52.640
checkt halt den Code aus, baut

01:52:52.640 --> 01:52:54.480
irgendwelche Container neu und startet dann alles

01:52:54.480 --> 01:52:56.900
neu oder so. Das ist halt so

01:52:56.900 --> 01:52:58.920
das, was es an der Stelle

01:52:58.920 --> 01:53:00.660
macht und dann halt auch noch irgendwelche Skripte, die halt

01:53:00.660 --> 01:53:03.020
lokal und produktiv

01:53:03.020 --> 01:53:04.680
Systeme komplett abgleichen, also

01:53:04.680 --> 01:53:06.700
Datenbank-Backups ziehen, das

01:53:06.700 --> 01:53:09.160
kopieren, irgendwie die

01:53:09.160 --> 01:53:11.360
vielleicht Daten, die aus

01:53:11.360 --> 01:53:13.240
irgendwelchen Buckets benötigt werden, ziehen

01:53:13.240 --> 01:53:14.600
und synchronisieren.

01:53:17.760 --> 01:53:19.460
Und das funktioniert für mich

01:53:19.460 --> 01:53:21.040
eigentlich ganz gut.

01:53:21.420 --> 01:53:23.020
Hat halt so ein bisschen das Problem, dass ich jetzt

01:53:23.020 --> 01:53:25.240
auf dem Server sozusagen auch

01:53:25.240 --> 01:53:27.340
Docker laufen lassen muss, was

01:53:27.340 --> 01:53:28.620
natürlich so ein bisschen ätzend ist.

01:53:29.540 --> 01:53:30.840
Aber da komme ich

01:53:30.840 --> 01:53:33.340
natürlich nicht so wirklich drum rum, weil wenn ich das

01:53:33.340 --> 01:53:35.580
lokal genauso nachstellen

01:53:35.580 --> 01:53:37.240
können möchte, wie es halt produktiv läuft,

01:53:37.940 --> 01:53:39.480
dann muss ich das halt so machen,

01:53:39.620 --> 01:53:41.380
weil ich kann ja den Produktionsverwahr nicht,

01:53:42.740 --> 01:53:43.560
also wenn das jetzt halt

01:53:43.560 --> 01:53:45.400
irgendwie, keine Ahnung, das ist halt

01:53:45.400 --> 01:53:47.660
wahrscheinlich irgendein Debian Stable

01:53:47.660 --> 01:53:49.360
oder sonst irgendwas, das kriege ich ja lokal

01:53:49.360 --> 01:53:51.880
irgendwie nur schwer reproduziert,

01:53:52.020 --> 01:53:52.720
irgendwie in all der,

01:53:53.520 --> 01:53:55.380
also ja, außer wiederum mit Vagrant und

01:53:55.380 --> 01:53:57.080
Ansible oder so, aber ja.

01:53:58.120 --> 01:53:59.140
Ich meine, das ist halt

01:53:59.140 --> 01:54:01.240
ein ungelöstes Problem, so ein bisschen da dran.

01:54:02.220 --> 01:54:03.180
Was mir immer

01:54:03.180 --> 01:54:05.440
negativ auffällt, ist, dass die TechSecs

01:54:05.440 --> 01:54:07.420
immer größer werden, ohne dass wir die eigentlichen Probleme

01:54:07.420 --> 01:54:08.040
gelöst haben.

01:54:09.320 --> 01:54:11.160
Also dieses, wenn du jetzt halt

01:54:11.160 --> 01:54:13.100
einen Docker hast, dann hast du jetzt sozusagen das ganze Thema,

01:54:13.240 --> 01:54:15.220
ja, die Security-Updates für dein

01:54:15.220 --> 01:54:16.380
Zeug musst du halt selber machen.

01:54:17.840 --> 01:54:19.280
Du musst halt das Basis-Image

01:54:19.280 --> 01:54:20.720
nachziehen, musst halt hoffen,

01:54:21.400 --> 01:54:23.160
also du kannst es unterschiedlich machen, du kannst es,

01:54:23.420 --> 01:54:25.080
es gibt welche, es gibt Leute, die machen das

01:54:25.080 --> 01:54:26.140
irgendwie so, dass sie sagen, okay,

01:54:27.400 --> 01:54:29.460
da, wo ich das Docker-Image betreibe,

01:54:30.060 --> 01:54:31.640
rebuilde

01:54:31.640 --> 01:54:33.120
ich den Container

01:54:33.120 --> 01:54:35.200
jeden Tag nochmal

01:54:35.200 --> 01:54:37.260
in dem ich halt noch einen Layer drüber jage,

01:54:37.360 --> 01:54:39.120
der sagt, Upget, Upgrade, Upget,

01:54:39.280 --> 01:54:41.360
Upgrade.

01:54:41.660 --> 01:54:43.240
Ja, genau, so mache ich das auch. Das habe ich ja auch

01:54:43.240 --> 01:54:44.780
da drin sozusagen in meinem Docker-File

01:54:44.780 --> 01:54:47.100
und ich habe halt irgendwie, ich mache das dann

01:54:47.100 --> 01:54:49.220
Build No Cache und dann muss das halt nochmal neu

01:54:49.220 --> 01:54:50.680
gebaut werden alles, ja. Ja, genau.

01:54:50.980 --> 01:54:52.780
Aber das ist halt, ich finde das halt so von der,

01:54:53.360 --> 01:54:55.200
von dem konzeptionellen Layering

01:54:55.200 --> 01:54:55.700
eher,

01:54:56.580 --> 01:54:58.680
sagen wir mal, holzklasse. Ja, ja.

01:55:00.360 --> 01:55:00.720
Die,

01:55:01.200 --> 01:55:02.100
die,

01:55:02.100 --> 01:55:02.300
die,

01:55:02.300 --> 01:55:07.320
das andere, was du meintest

01:55:07.320 --> 01:55:09.300
von wegen Produktiv-Server und dem Debug, das ist halt

01:55:09.300 --> 01:55:11.340
spannend, weil du kannst dir

01:55:11.340 --> 01:55:12.220
ja natürlich schon

01:55:12.220 --> 01:55:15.020
das über einen Loadbalancer zum Beispiel aussteuern.

01:55:15.140 --> 01:55:16.940
Also ich mache sowas gerne mal, wenn es wirklich völlig

01:55:16.940 --> 01:55:19.200
abstruse Sachen sind, die halt

01:55:19.200 --> 01:55:21.560
auch zum Beispiel eben temporal

01:55:21.560 --> 01:55:23.560
davon abhängen,

01:55:23.720 --> 01:55:25.040
dass momentan im Internet

01:55:25.040 --> 01:55:26.140
irgendwas komisch ist.

01:55:26.940 --> 01:55:29.020
Wir hatten zum Beispiel mal ein Problem, dass

01:55:29.020 --> 01:55:29.880
Der Satz war super.

01:55:31.700 --> 01:55:39.620
Ja, wir hatten zum Beispiel mal das Problem, dass Leute bei uns nicht deployen konnten und die kamen an und meinten, bei uns im Netzwerk wäre irgendwas kaputt, weil GitHub geht nicht mehr.

01:55:41.240 --> 01:55:44.740
So, und dann gehst du halt irgendwie auf die Suche und dann stellst du irgendwann fest...

01:55:44.740 --> 01:55:45.420
Oh, GitHub offline.

01:55:46.580 --> 01:55:47.780
Nee, GitHub ist online.

01:55:48.760 --> 01:55:51.480
Geht bei uns im RZ aber nur jedes zweite Mal.

01:55:54.260 --> 01:55:59.160
So, also damit bist du schon mal in so einer Art von Problem, die du halt nicht lokal nachstellen kannst.

01:55:59.960 --> 01:56:02.480
Und das muss halt nicht GitHub sein, das kann halt auch irgendwas anderes sein.

01:56:02.480 --> 01:56:08.200
Und da haben wir damals festgestellt, dass GitHub halt über Fastly ausliefert.

01:56:09.420 --> 01:56:14.640
Und unser RZ sitzt netztypologisch so genau in der Mitte zwischen Amsterdam und Frankfurt.

01:56:14.800 --> 01:56:18.060
Das sind so zwei der großen Netzknoten in Europa.

01:56:20.080 --> 01:56:21.940
Und da war es halt so, dass eben...

01:56:21.940 --> 01:56:22.940
Er kann sich entscheiden, wen er will.

01:56:23.620 --> 01:56:28.580
Ja, genau. Es ist manchmal nach Frankfurt und manchmal nach Amsterdam gegangen zu einem Fastly-Knoten.

01:56:28.580 --> 01:56:33.880
Und das Problem war, der Fasti-Knoten in Frankfurt war anders konfiguriert als der in Amsterdam

01:56:33.880 --> 01:56:40.800
und hat auf ein ganz bestimmtes TCP-Flag, was bei uns gesetzt war, allergisch reagiert.

01:56:42.740 --> 01:56:43.260
Out.

01:56:45.640 --> 01:56:48.500
Habt ihr das Schiebel mitgesetzt?

01:56:51.220 --> 01:56:53.560
Naja, ich weiß ja gar nicht mehr, welches das war.

01:56:53.560 --> 01:57:12.400
Und es mündete halt darin, das ist ja auch die Frage von der Internetarchitektur mit diesen Greyboxes, es mündete halt am Ende darin, dass wir halt irgendwo im Fasti-Support aufgeschlagen sind, um ihnen klarzumachen, dass sie dort ein Netzkonfigurationsproblem haben.

01:57:14.680 --> 01:57:16.640
Das ist sozusagen so, das ist das

01:57:16.640 --> 01:57:18.540
Ops-Ende von diesem Thema von

01:57:18.540 --> 01:57:20.340
was gibt es da an Zeug zu debuggen, ja.

01:57:20.820 --> 01:57:22.540
Oder eben, wenn halt die Webseite

01:57:22.540 --> 01:57:24.620
steht still, warum? Und dann

01:57:24.620 --> 01:57:26.900
gehst halt her und stracest den Python-Prozess

01:57:26.900 --> 01:57:28.600
um festzustellen, guck mal,

01:57:28.640 --> 01:57:30.600
der macht dauernd Sockets zu Twitter auf, aber die

01:57:30.600 --> 01:57:32.240
gehen nie wieder zu, ich glaube, die bleiben hängen.

01:57:32.420 --> 01:57:34.520
Dann stellst du dir fest, ah, Twitter ist die API gerade kaputt.

01:57:35.620 --> 01:57:35.760
Und

01:57:35.760 --> 01:57:38.460
das ist halt, da sind, da ist

01:57:38.460 --> 01:57:40.580
Docker an der Stelle für uns manchmal so ein,

01:57:40.580 --> 01:57:41.580
so ein, ja.

01:57:42.380 --> 01:57:43.980
Kann man nicht gut reingucken, das stimmt, ja.

01:57:44.320 --> 01:57:45.940
kann man nicht gut reingucken und

01:57:45.940 --> 01:57:48.320
das Tooling ist, also man kann

01:57:48.320 --> 01:57:50.240
ja schon, also man kann

01:57:50.240 --> 01:57:52.580
ja schon, man sieht ja die Subprozesse typischerweise

01:57:52.580 --> 01:57:54.500
im Host

01:57:54.500 --> 01:57:56.100
beziehungsweise bei uns wird das

01:57:56.100 --> 01:57:58.340
Docker-Schwester halt erstmal eine VM und dann

01:57:58.340 --> 01:58:00.100
läuft die VM halt irgendwo auf so einer Infrastruktur

01:58:00.100 --> 01:58:02.320
und du kannst ja die Subprozesse schon

01:58:02.320 --> 01:58:03.840
sehen, das heißt du kannst deine Tools

01:58:03.840 --> 01:58:06.140
wie ein S-Trace da von außen drauf jagen,

01:58:06.220 --> 01:58:08.220
aber es ist so ein bisschen, ah, dann schnell

01:58:08.220 --> 01:58:10.260
zu suchen, wo ist denn jetzt das Dateisystem von dem Ding,

01:58:10.360 --> 01:58:12.220
wo ist denn der Socket, wo ist denn das, das

01:58:12.220 --> 01:58:14.300
ist halt alles viel, viel verdröselt

01:58:14.300 --> 01:58:16.880
und

01:58:16.880 --> 01:58:20.400
ja, was bei uns

01:58:20.400 --> 01:58:22.440
häufiger passiert vom Workflow ist, dass Entwickler tatsächlich

01:58:22.440 --> 01:58:24.280
das Zeug erstmal in Docker bauen, das

01:58:24.280 --> 01:58:26.320
macht sie produktiv und

01:58:26.320 --> 01:58:28.120
wir gehen dann aber wieder her und sagen, super,

01:58:28.260 --> 01:58:30.200
das Docker ist jetzt erstmal die Grundlage, auf der wir das

01:58:30.200 --> 01:58:31.520
auseinanderreißen.

01:58:32.260 --> 01:58:34.240
Dann nehmen wir das alles auseinander und sagen, okay, was

01:58:34.240 --> 01:58:35.720
habt ihr denn hier da? Okay, ihr habt irgendwie die

01:58:35.720 --> 01:58:38.300
russische Postgres, das ist aber nett, das nehmen wir mal

01:58:38.300 --> 01:58:38.520
nicht.

01:58:41.040 --> 01:58:42.280
Oder was halt auch manchmal

01:58:42.280 --> 01:58:44.100
vorkommt, ist, dass Entwickler sich dann sehr

01:58:44.100 --> 01:58:45.660
große Basis-Images bauen,

01:58:46.280 --> 01:58:47.980
wo sie dir nachher nicht mehr erklären können,

01:58:48.100 --> 01:58:50.020
was davon eigentlich in Benutzung

01:58:50.020 --> 01:58:50.460
ist.

01:58:52.180 --> 01:58:53.880
Ja, das heißt, da hast du dann halt so, ich kenne das

01:58:53.880 --> 01:58:55.860
selber, wir hatten früher so 2004,

01:58:56.000 --> 01:58:58.100
2005 rum auch immer mal für irgendwelche

01:58:58.100 --> 01:58:59.420
Web-Projekte dann

01:58:59.420 --> 01:59:01.980
Hilfspackages geschrieben, die dann

01:59:01.980 --> 01:59:04.060
alles konnten, weil das braucht man ja in jedem

01:59:04.060 --> 01:59:06.000
Projekt. Das Dumme war nur, wenn du

01:59:06.000 --> 01:59:07.980
das jemals aktualisieren wolltest, musstest du alle

01:59:07.980 --> 01:59:09.060
deine Projekte anfassen,

01:59:10.200 --> 01:59:12.020
weil dir alle von diesem Ding abhängen, wo alles

01:59:12.020 --> 01:59:14.000
drin ist. Das war

01:59:14.000 --> 01:59:16.520
so ein Nexus an Dependencies

01:59:16.520 --> 01:59:17.300
ist immer schwierig.

01:59:18.200 --> 01:59:20.280
Und vor allem, wenn du halt implizite Dependencies hast,

01:59:20.360 --> 01:59:22.280
die einfach nur von, ja, ich benutze halt das Basis-Image.

01:59:22.800 --> 01:59:24.360
Und wenn das aber dann eine Dependency war,

01:59:24.400 --> 01:59:26.300
die nie gewollt war, und die schaltet

01:59:26.300 --> 01:59:28.260
jemand ab, dann fliegt es dir plötzlich um die Ohren und du weißt

01:59:28.260 --> 01:59:30.180
noch nicht mal warum. Da kommen dann teilweise

01:59:30.180 --> 01:59:32.120
ganz obskure Fehlermeldungen. Wir hatten das, glaube ich, beim

01:59:32.120 --> 01:59:34.220
Thema, da hatte jemand eine Postgres mit

01:59:34.220 --> 01:59:35.800
17.000 Extensions

01:59:35.800 --> 01:59:37.480
und

01:59:37.480 --> 01:59:40.180
unser, also übertriebenermaßen,

01:59:40.740 --> 01:59:42.420
das ist schon das dritte alkoholfreie

01:59:42.420 --> 01:59:42.860
Bier hier,

01:59:43.940 --> 01:59:51.300
die hat dann auch nur das noch quittiert beim Einspielen von einem Dump mit einer völlig obskuren Fehlermeldung,

01:59:51.380 --> 01:59:54.640
die auch kein Postgres-Expert mal so richtig lesen konnte, bis irgendwer meinte,

01:59:54.760 --> 01:59:57.540
ah, wir benutzen ja noch die Extension, so, ah, okay, alles klar, gut.

01:59:58.860 --> 02:00:03.640
Und da merke ich, da ist halt genau diese Klärung dann auch für Ops-Leute,

02:00:04.020 --> 02:00:06.700
was ist hier eigentlich im Einsatz, brauche ich das eigentlich?

02:00:06.700 --> 02:00:11.620
Wenn du halt immer nur die Weihnachtsbaum-Variante hast mit All Features On,

02:00:13.080 --> 02:00:24.120
Dann läuft dir irgendwann weg, dass du keine Handlungsfähigkeit mehr hast, weil du davon ausgehen musst, okay, hier ist alles installiert, kann alles, was hier installiert ist, kann auch noch in Benutzung sein, ich habe keine Ahnung, was ich jetzt tun soll.

02:00:24.140 --> 02:00:25.060
Läuft das noch oder kann das weg?

02:00:25.340 --> 02:00:41.420
Ja, genau. Und das ist so ein bisschen dieses, wir hatten, ich habe eine Zeit lang für Soapcorp consultet und Benji York, der war auch ein guter Ingenieur da, der hatte so einen Spruch, der hieß, test what you fly, fly what you test.

02:00:42.880 --> 02:00:46.540
Und das war nämlich die Frage von, was ist denn die richtige Anzahl von Paketen,

02:00:46.680 --> 02:00:50.100
die ich, also egal ob auf Python-Ebene oder Betriebssystem-Ebene oder was auch immer,

02:00:50.600 --> 02:00:51.800
in Produktion haben sollte.

02:00:52.520 --> 02:00:57.640
Und das ist ein bisschen abseits dessen, was viele für besser halten.

02:00:58.540 --> 02:01:04.120
Der sagt halt, naja, natürlich ist die ganze Test-Suite und die Test-Tools auch in der Produktion installiert.

02:01:05.240 --> 02:01:07.660
Weil du hast es ja mit der Test-Suite getestet.

02:01:08.400 --> 02:01:11.560
Du kannst es ja nicht testen, wie es läuft, wenn die Test-Suite nicht dabei ist.

02:01:12.380 --> 02:01:30.680
Du kannst natürlich ein Abstraktionsargument sagen und machen, diese Testsuite ist nicht das Problem. Also ich mache hier gerade diesen Podcast-Move von, das sind nicht die Roboter, die ihr sucht. Aber nichtsdestotrotz hast du eigentlich eine ungetestete Konfiguration in Produktion.

02:01:31.100 --> 02:01:33.520
Das Gegenargument dazu

02:01:33.520 --> 02:01:35.500
ist immer, oh, du hast den Testcode installiert,

02:01:35.580 --> 02:01:37.600
wenn jetzt zufällig jemand den Testcode anträgt

02:01:37.600 --> 02:01:39.480
und er dann mit deiner Live-Datenbank redet,

02:01:39.520 --> 02:01:40.220
dann ist alles platt.

02:01:41.300 --> 02:01:43.640
Aber da muss ich ganz ehrlich sagen, da ist der Pragmatiker

02:01:43.640 --> 02:01:45.380
bei mir, ich habe mehr Sachen kaputt

02:01:45.380 --> 02:01:47.320
gehen sehen, weil zum Beispiel

02:01:47.320 --> 02:01:49.540
ich eine Dependency hatte, auf die ich mich verlassen

02:01:49.540 --> 02:01:51.440
habe, die nur um die Ecke über die

02:01:51.440 --> 02:01:52.240
Test-Suite kam.

02:01:54.120 --> 02:01:54.860
Und dann ging es

02:01:54.860 --> 02:01:57.400
draußen nicht mehr, weil die Test-Suite und ihre

02:01:57.400 --> 02:01:58.620
Dependency nicht mehr da waren.

02:02:00.220 --> 02:02:03.080
Das ist mir schon öfter mal vorgekommen,

02:02:03.320 --> 02:02:04.800
das Umgekehrte, dass da aus Versehen

02:02:04.800 --> 02:02:06.680
der Testcode aktiviert wird, das habe ich noch nie gehabt.

02:02:06.960 --> 02:02:08.720
Noch nie. Und deswegen ist so meine

02:02:08.720 --> 02:02:10.440
persönliche Historie, dass ich sage, ich

02:02:10.440 --> 02:02:12.700
will halt immer die komplette Umgebung, die

02:02:12.700 --> 02:02:14.640
der Entwickler hatte, nicht mehr

02:02:14.640 --> 02:02:16.440
und nicht weniger, so gut es geht.

02:02:17.020 --> 02:02:18.720
Und deswegen sind so fette Basis-Images

02:02:18.720 --> 02:02:20.580
für uns dann immer so ein bisschen so ein

02:02:20.580 --> 02:02:22.640
rotes Tuch, weil sich dann

02:02:22.640 --> 02:02:24.840
rauszusuchen, was ist da jetzt eigentlich das, was hier benutzt

02:02:24.840 --> 02:02:26.580
wird, woraufhin müssen wir,

02:02:26.660 --> 02:02:28.600
weil dann kommt ja das Nächste, dann will man das

02:02:28.600 --> 02:02:30.520
wie du produktiv und gemütlich auch getunt haben, dass du

02:02:30.520 --> 02:02:32.660
sagst, okay, ich hole hier aus den Ressourcen,

02:02:32.720 --> 02:02:33.800
die ich habe, das Beste raus.

02:02:35.080 --> 02:02:36.700
Wenn da aber irgendwie tausend unbenutzte

02:02:36.700 --> 02:02:38.540
Dinge rumgeistern, weißt du gar nicht, was du anfassen

02:02:38.540 --> 02:02:38.960
sollst.

02:02:41.500 --> 02:02:41.660
Ja.

02:02:42.720 --> 02:02:44.020
Das ist, ich meine,

02:02:44.340 --> 02:02:46.460
das hat natürlich halt auch einen Vorteil,

02:02:46.480 --> 02:02:48.640
wenn man das halt alles schön sauber durchspezifiziert

02:02:48.640 --> 02:02:50.460
hat. Ja, dann

02:02:50.460 --> 02:02:52.360
weiß man auch, warum man das,

02:02:52.520 --> 02:02:54.620
also das macht man dann auch nicht, wenn man es gar nicht braucht.

02:02:55.260 --> 02:02:56.480
Während, wenn man einfach ein Image

02:02:56.480 --> 02:02:58.320
von irgendwo zieht, dann ist halt da per

02:02:58.320 --> 02:03:00.400
Unfall schon ganz viel Zeug drin und man weiß halt gar nicht.

02:03:00.400 --> 02:03:00.740
Ja, genau.

02:03:01.880 --> 02:03:04.260
Wie gesagt, wir nehmen das ja, wir reißen es auseinander

02:03:04.260 --> 02:03:05.800
und wir

02:03:05.800 --> 02:03:08.100
versuchen ja so ein Modell zu machen, wo wir

02:03:08.100 --> 02:03:10.460
die

02:03:10.460 --> 02:03:12.260
ständig

02:03:12.260 --> 02:03:14.140
wieder gebrauchten Sachen, wie so ein Postgres

02:03:14.140 --> 02:03:16.380
oder ein Webserver, die managen

02:03:16.380 --> 02:03:18.340
wir auf eine Art, wo

02:03:18.340 --> 02:03:20.260
man dann trotzdem natürlich lokale Config von

02:03:20.260 --> 02:03:22.120
einem Projekt reinschießen kann und Entwickler

02:03:22.120 --> 02:03:23.640
sehen das im Prinzip auch alles und können sich

02:03:23.640 --> 02:03:26.140
auf diesen Maschinen anmelden und

02:03:26.140 --> 02:03:28.180
an die Teile ran pieksen, aber

02:03:28.180 --> 02:03:30.440
wir bringen da halt diesen ganzen Ballast an Ops-Kram

02:03:30.440 --> 02:03:32.180
dann rein und sagen, okay, wie muss ich das

02:03:32.180 --> 02:03:34.300
jetzt eigentlich ins Monitoring integrieren, wie muss ich das

02:03:34.300 --> 02:03:36.180
dann ins Backup integrieren, wie muss ich das in

02:03:36.180 --> 02:03:38.140
Upgrade-Pfade integrieren, wie muss ich

02:03:38.140 --> 02:03:39.640
dieser ganze Kram,

02:03:40.840 --> 02:03:42.260
dass das halt auch ausdefiniert ist

02:03:42.260 --> 02:03:44.180
und eben nicht nur, ja, ich habe dieses Image

02:03:44.180 --> 02:03:46.200
genommen, weil da ist halt das Postgres mit dem Plugin drin,

02:03:46.720 --> 02:03:48.140
sondern halt, wie

02:03:48.140 --> 02:03:50.140
monitore ich jetzt, dass das Ding ab ist, wie mache ich das

02:03:50.140 --> 02:03:51.560
Backup, etc.

02:03:51.960 --> 02:03:54.160
Das muss man ja mit einem anderen verheiraten und deswegen finde

02:03:54.160 --> 02:03:56.180
ich, ist Docker häufig für mich so ein Tool,

02:03:56.620 --> 02:03:58.020
das hat die Neigung, wenn man das halt

02:03:58.020 --> 02:03:59.980
einfach nur blind Ende-Ende einsetzt,

02:04:00.400 --> 02:04:02.220
dann wird es wieder zum Software

02:04:02.220 --> 02:04:03.020
über den Zaun werfen.

02:04:04.340 --> 02:04:06.100
Ich habe hier was zusammengebaut, du bist bloß

02:04:06.100 --> 02:04:08.200
dafür zuständig, dass der Strom läuft

02:04:08.200 --> 02:04:09.840
und damit machen wir jetzt gerade so ein bisschen

02:04:09.840 --> 02:04:10.940
so einen Kreis zum Anfang.

02:04:12.220 --> 02:04:13.980
Dann haben wir wieder das Problem,

02:04:14.700 --> 02:04:16.060
die Ops sind die, die es über den Zaun

02:04:16.060 --> 02:04:17.940
geworfen kriegen, die sollen machen, dass es nicht

02:04:17.940 --> 02:04:20.040
ausgeht und dass der Strom da ist, haben aber

02:04:20.040 --> 02:04:21.820
keine Chance zu verstehen, was da drinnen eigentlich

02:04:21.820 --> 02:04:24.220
abläuft und ihr eigentlich operatives

02:04:24.220 --> 02:04:26.060
Wissen ins Spiel zu bringen.

02:04:27.280 --> 02:04:27.900
Ja, ja,

02:04:27.960 --> 02:04:29.240
wobei aus meiner Perspektive der Trend,

02:04:30.140 --> 02:04:31.900
der da momentan

02:04:31.900 --> 02:04:33.280
so ein bisschen nicht da sehe, ist halt,

02:04:34.040 --> 02:04:35.740
das ist ja auch das, was einem

02:04:35.740 --> 02:04:37.340
dann dadurch ermöglicht wird, wenn man jetzt

02:04:37.340 --> 02:04:39.160
quasi so ein System auch lokal

02:04:39.160 --> 02:04:41.660
komplett hochziehen kann, dass man halt

02:04:41.660 --> 02:04:42.820
eben so AWS

02:04:42.820 --> 02:04:45.380
oder Google Computer Engine,

02:04:45.760 --> 02:04:46.780
da kriegt man halt irgendwie,

02:04:47.560 --> 02:04:49.800
kann man auch per API-Maschinen hochfahren,

02:04:50.360 --> 02:04:51.780
dann schmeißt man da die Container drauf

02:04:51.780 --> 02:04:53.820
und dann, naja, funktioniert das halt

02:04:53.820 --> 02:04:55.280
in einem Durchschnitt mehr oder weniger.

02:04:55.940 --> 02:04:57.820
Genau, und da hat man dann schon eine harte Trennung.

02:04:57.960 --> 02:05:04.300
Aber sozusagen die Trennung ist halt an der, man bekommt halt Maschine und kann da per Rout und SH drauf.

02:05:05.540 --> 02:05:08.280
Aber das ist jetzt auch nicht viel besser als das mit dem FDP und dem PHP.

02:05:08.880 --> 02:05:12.760
Ja, genau, das stimmt natürlich auch.

02:05:13.220 --> 02:05:19.760
Und dann auf der anderen Seite gibt es dann halt so Dienstleister, so was wie Heroku oder so,

02:05:20.360 --> 02:05:22.860
die dann halt schon sehr viel selber betreiben.

02:05:22.860 --> 02:05:34.080
Da hat man dann das Problem sozusagen nicht, dass man sich auch um die Datenbank und so selber kümmern muss, sondern man, im Wesentlichen schiebt man da so den Code hin und der läuft dann in der Heroku-Infrastruktur irgendwie.

02:05:35.160 --> 02:05:36.020
Auch bei AWS dann?

02:05:36.580 --> 02:05:37.560
Wahrscheinlich auch bei AWS.

02:05:38.060 --> 02:05:40.420
Es ist AWS, Heroku ist ja nur AWS.

02:05:42.800 --> 02:05:52.780
Naja gut, das sind ja auch diese unterschiedlichen Konzepte dann, auf was für Infrastruktur möchte ich aufsetzen, von Infrastructure-as-a-Service, Plattform-as-a-Service zu whatever-as-a-Service.

02:05:53.920 --> 02:06:03.600
Da ist halt auch spannend, diese Frage danach, habe ich halt diese Magic-Services im Sinne von die Postgres, ist da irgendwie Magic irgendwo gemanagt?

02:06:03.600 --> 02:06:12.060
Das heißt, ich weiß auch gar nicht so richtig, was ist da noch an Sachen drinne. Ich habe dann teilweise auch keinen Überblick, wie sind eigentlich jetzt die Latenzen, wie ist denn der Netzwerkpfad zu diesem Ding.

02:06:12.800 --> 02:06:23.840
Bei Heroku kann einem das passieren, wenn man so Add-ons dazu bestellt, dann sind die zwar eine gut integrierte API, die lebt aber irgendwie in einem Rechenzettel am anderen Ende des Erdballs.

02:06:25.620 --> 02:06:30.560
Und wenn man dann halt den Datenschutz irgendwie reinholt, ist so ein bisschen die Frage, weißt du wirklich, wo deine Daten gerade sind?

02:06:31.060 --> 02:06:34.840
Die sind bei Heroku, okay, das heißt, die sind bei Amazon. Das heißt, die sind bei Amazon in Nordamerika.

02:06:35.680 --> 02:06:39.360
Das heißt, ach, da hast du noch die MongoDB geklickt? Ja, nee, dann ist die bei Amazon in da drüben.

02:06:40.400 --> 02:07:02.140
Okay, und ich finde halt an der Stelle, es ist halt so verlockend, sich so Zeug zusammenzuklicken und ich finde das cool zum Experimentieren und was mir so ein bisschen, aber dieser Übergang zu, wann muss man mal den Besen rausholen und dieses Experimentieren ordentlich aufräumen und kriegt man das dann überhaupt noch eingefangen oder ist es dann wirklich eigentlich aus der Hand?

02:07:02.140 --> 02:07:23.920
Und dieses große Argument von, naja, Amazon wird irgendwann der einzige RZ-Betreiber der Welt sein, das widerstrebt mir so massiv, weil das ist aus einem Gedanken der auch informationellen Selbstbestimmung und diesem macht Dinge selber und macht die Fehlerdomänen auch kleiner. Also Amazon wird ja am Ende zu einer einzigen großen Fehlerdomäne.

02:07:24.540 --> 02:07:46.420
Ja, ja, da ist ja auch, das ist auch gar nicht so lange her, dass da, irgendwo war das in das Virginia-Rechenzentrum oder so, war weg und dann war irgendwie so, na gut, vielleicht ist es auch schon fast, ist schon zwei Jahre her oder so, aber da erinnere ich mich noch gut, da war 80% des Webs war plötzlich irgendwie tot, weil das, weil da ein Rechenzentrum wegen einem Blitzschlag nicht mehr funktioniert hat.

02:07:46.900 --> 02:07:53.860
Witzigerweise auch die eigene Amazon-Statusseite, also die AWS-Statusseite, die sagen sollte, ob das noch alles funktioniert oder nicht, die war auch kaputt.

02:07:54.820 --> 02:07:57.220
Nee, nee, nee, das war subtiler, das war viel subtiler.

02:07:57.220 --> 02:07:57.640
Ach so, okay.

02:07:58.080 --> 02:08:12.880
Die Amazon-Statusseite ging und hat grün angezeigt, weil das grüne Icon war in der Statusseiten-Software hart kodiert und das rote Icon haben sie aber aus dem S3 gezogen und das S3 war kaputt und dann blieb das grüne Icon da stehen.

02:08:12.880 --> 02:08:13.780
Ach so, ja, okay.

02:08:15.060 --> 02:08:15.740
Das ist schön.

02:08:16.300 --> 02:08:17.820
Da hatte ich ja nicht mal ein anderes Tennis gehabt.

02:08:17.940 --> 02:08:19.000
Nur grüne Lämpchen, bitte.

02:08:19.520 --> 02:08:20.080
Ja, genau.

02:08:23.360 --> 02:08:25.700
Ich merke so, die Themen, die mich halt umtreiben,

02:08:25.780 --> 02:08:28.040
deswegen habe ich ja vorhin auch mit der Komplexität so ausgeholt,

02:08:28.540 --> 02:08:29.340
ist halt die Frage,

02:08:29.800 --> 02:08:31.320
und damit sind wir auch ins DevOps eingestiegen,

02:08:31.380 --> 02:08:33.800
wie macht man aber, dass die Leute halt besser zusammenarbeiten können

02:08:33.800 --> 02:08:35.680
und dass man diesen Know-how-Transfer halt hinkriegt.

02:08:35.740 --> 02:08:37.400
Wie macht man sich happy, happy.

02:08:37.400 --> 02:08:38.880
Wie macht man sich happy, happy, happy.

02:08:39.060 --> 02:08:39.400
Ja, genau.

02:08:40.860 --> 02:08:44.980
weil, das war unsere Schleife zur Digitalisierung,

02:08:45.120 --> 02:08:48.080
diese Erkenntnisse finden ja an vielen Stellen im Kleinen statt

02:08:48.080 --> 02:08:52.560
und das wird jetzt momentan so,

02:08:53.040 --> 02:08:53.960
es hat so Entwicklungen,

02:08:54.080 --> 02:08:55.540
das wird mit so Pinselstrichen werden,

02:08:55.620 --> 02:08:57.080
ganze Systemarchitekturen,

02:08:57.500 --> 02:08:59.420
ganz breit mal auf irgendeinem Gebiet geschrieben

02:08:59.420 --> 02:09:02.000
und dass aber die eigentlichen Schwierigkeiten

02:09:02.000 --> 02:09:05.100
und das wissen die Ops-Leute von den großen Anbietern

02:09:05.100 --> 02:09:06.660
wie von AWS und von Google,

02:09:07.200 --> 02:09:10.820
wenn man sich die Google System Reliability Engineering Dokumente anguckt,

02:09:10.860 --> 02:09:12.940
und so, die wissen, der Teufel

02:09:12.940 --> 02:09:14.900
liegt im Detail. Du kannst es halt nicht

02:09:14.900 --> 02:09:16.920
sagen mit, naja, ich hab's jetzt halt in der Cloud

02:09:16.920 --> 02:09:18.080
und dann ist das halt alles super.

02:09:18.640 --> 02:09:20.640
Im Gegenteil, du hast jetzt halt noch eine

02:09:20.640 --> 02:09:22.620
Abstraktionsebene mehr und

02:09:22.620 --> 02:09:24.680
wir wissen ja alle, also

02:09:24.680 --> 02:09:26.880
jedes Problem kann dadurch gelöst werden,

02:09:26.940 --> 02:09:28.540
dass ich halt noch ein Layer oben drüber ziehe.

02:09:30.460 --> 02:09:30.780
Und

02:09:30.780 --> 02:09:32.800
ja, also ich merke so,

02:09:32.840 --> 02:09:34.800
für mich sind die Lösungen immer an so Stellen, wo ich

02:09:34.800 --> 02:09:36.620
gucke, ich such sie ja eher immer

02:09:36.620 --> 02:09:38.720
im Kleinen und an den

02:09:38.720 --> 02:09:41.380
etwas nicht so ausgetretenen Pfaden,

02:09:41.480 --> 02:09:43.060
um zu gucken, wie kann man das denn so

02:09:43.060 --> 02:09:43.880
zurechtschneiden,

02:09:44.380 --> 02:09:47.460
dass man mit Entwicklern so einen konstruktiven

02:09:47.460 --> 02:09:48.960
Alltag hinkriegt auch an der Stelle.

02:09:50.300 --> 02:09:51.340
Weil eben,

02:09:51.840 --> 02:09:53.220
jetzt haben wir ja gesagt, diese zwei Rollen,

02:09:53.280 --> 02:09:55.400
die etwas diskret sind,

02:09:56.500 --> 02:09:57.500
ob es halt eben auch

02:09:57.500 --> 02:09:59.440
einen anderen Rhythmus, dass man sagt, okay, wir würden

02:09:59.440 --> 02:10:01.340
gerne ein paar Updates ausrollen, wir würden gerne ein paar

02:10:01.340 --> 02:10:03.340
alte Versionen sanieren, wir würden gerne ein bisschen

02:10:03.340 --> 02:10:05.480
dies und jenes machen, das würde ich gerne unabhängig von dir

02:10:05.480 --> 02:10:07.540
können. Ich will das nicht ohne

02:10:07.540 --> 02:10:09.580
einen Entwickler können. Ich will nicht einfach nur

02:10:09.580 --> 02:10:11.520
sagen, so halt, jetzt updaten wir die MySQL

02:10:11.520 --> 02:10:13.500
auf die neuesten Major oder auf die oder das, sondern

02:10:13.500 --> 02:10:15.500
ich will da halt eher so ein

02:10:15.500 --> 02:10:16.960
vernünftiges Verständnis haben von,

02:10:17.540 --> 02:10:19.560
warum sind zum Beispiel welche Komponenten

02:10:19.560 --> 02:10:21.800
für einen Entwickler eher so mit Feingefühl

02:10:21.800 --> 02:10:23.620
zu updaten, während andere

02:10:23.620 --> 02:10:25.640
irgendwie völlig egal sind, die updatest du halt

02:10:25.640 --> 02:10:26.900
durch und da geht nie irgendwas kaputt.

02:10:27.780 --> 02:10:29.660
Um da dann halt auch mal die Augen

02:10:29.660 --> 02:10:31.720
offen halten zu können, was sind denn möglicherweise bessere

02:10:31.720 --> 02:10:33.760
andere Tools für bestimmte

02:10:33.760 --> 02:10:36.100
Probleme oder wo muss man irgendwie eine Integrationsleistung

02:10:36.100 --> 02:10:38.040
noch erbringen oder wo lohnt es sich

02:10:38.040 --> 02:10:39.580
aus beiden Perspektiven zu sagen, hey,

02:10:39.940 --> 02:10:42.260
würdest du die Anwendung da drüben so ein bisschen umbauen,

02:10:42.700 --> 02:10:44.020
dann wäre hier vorne

02:10:44.020 --> 02:10:45.780
alles viel einfacher und

02:10:45.780 --> 02:10:47.260
es fällt weniger Seiten um.

02:10:50.800 --> 02:10:51.980
Naja, ganz herrlicher

02:10:51.980 --> 02:10:53.880
Blick auf die ganze Mikroarchitektur.

02:10:55.920 --> 02:10:56.080
Ja,

02:10:56.240 --> 02:10:57.920
richtig. Ja, im Grunde

02:10:57.920 --> 02:10:59.860
brauchst du halt, um ein Projekt

02:10:59.860 --> 02:11:01.820
wirklich komplett machen zu können,

02:11:01.940 --> 02:11:03.880
brauchst du halt in dem Team, das das Produkt baut,

02:11:03.880 --> 02:11:05.620
halt all diese Kompetenzen irgendwie drin.

02:11:06.100 --> 02:11:13.540
Ja, das Problem ist ja, deine Teamgröße ist beschränkt.

02:11:13.540 --> 02:11:20.320
Ja, das ist dann halt auch das, was einem dann passieren kann, dass man dann irgendwie alles selber macht.

02:11:21.740 --> 02:11:24.260
Ja, genau, NEH.

02:11:26.260 --> 02:11:27.620
Aber NEH ist halt der Trick,

02:11:27.900 --> 02:11:30.000
manchmal geht es beim Neuerfinden des Rades

02:11:30.000 --> 02:11:31.440
ja auch nicht darum,

02:11:32.140 --> 02:11:33.680
das bessere Rad zu erfinden,

02:11:34.140 --> 02:11:35.680
sondern zu verstehen, wie so ein Rad

02:11:35.680 --> 02:11:37.760
funktioniert. Also da

02:11:37.760 --> 02:11:39.580
muss man halt auch der Maker-Szene an der Stelle

02:11:39.580 --> 02:11:40.960
ja noch eine Lanze brechen und sagen,

02:11:42.260 --> 02:11:43.700
viel von diesen

02:11:43.700 --> 02:11:45.520
großen Architekturen, ob das jetzt Kubernetes

02:11:45.520 --> 02:11:47.560
oder halt so diese

02:11:47.560 --> 02:11:49.620
Amazon Magic Elastic Services sind,

02:11:50.100 --> 02:12:12.280
Die versuchen dich ja zum reinen Konsumenten zu degradieren und sagen, benutze mich einfach, dann ist alles gut. Die kochen und drücken halt auch nur mit Wasser. Also in Amazon, irgendwie hast du nicht gesehen, MySQL ist halt immer noch MySQL, vermutlich noch mit irgendwelchen obskuren Patches drin. Aber das läuft dann auch bloß in einer EC2-Instanz irgendwo. Da ist jetzt nicht irgendwie was groß anders. Der einzige Unterschied ist, du siehst es halt nicht.

02:12:13.600 --> 02:12:15.320
Anekdote am Rand, MongoDB hat irgendwie

02:12:15.320 --> 02:12:17.300
das, hat irgendwie

02:12:17.300 --> 02:12:18.120
Lizenz geändert,

02:12:19.460 --> 02:12:21.200
weil ihnen das ein Dorn im Auge war,

02:12:21.620 --> 02:12:23.580
dass die ganzen Plattformen jetzt da

02:12:23.580 --> 02:12:25.100
irgendwie Geld mit verdienen,

02:12:25.580 --> 02:12:27.600
dass sie... Redis, Redis, nicht Mongo, Redis

02:12:27.600 --> 02:12:29.460
war es. Ja, aber MongoDB hat das auch irgendwie

02:12:29.460 --> 02:12:30.500
gemacht. Auch? Oh, okay.

02:12:31.420 --> 02:12:33.740
Und hat sozusagen dann qual Lizenz

02:12:33.740 --> 02:12:34.980
Amazon verboten,

02:12:35.140 --> 02:12:36.960
irgendwie MongoDB anzubieten,

02:12:37.500 --> 02:12:38.220
woraufhin

02:12:38.220 --> 02:12:41.040
Amazon irgendwie

02:12:41.040 --> 02:12:43.200
einen quasi

02:12:43.200 --> 02:12:45.360
komplett kompatibles, eigenes, selbstgeschriebenes

02:12:45.360 --> 02:12:46.900
Ding an die Stelle gesetzt hat.

02:12:47.460 --> 02:12:49.180
Ja, krass.

02:12:49.440 --> 02:12:51.240
Und jetzt kannst du darauf warten, dass

02:12:51.240 --> 02:12:53.180
das sich inkompatibel weiterentwickeln

02:12:53.180 --> 02:12:55.040
wird, damit die Leute halt nicht mehr in der Lage sind, davon

02:12:55.040 --> 02:12:55.580
wegzugehen.

02:12:57.420 --> 02:12:59.160
Also dieser Lock-In

02:12:59.160 --> 02:13:01.200
an der Stelle ist halt auch

02:13:01.200 --> 02:13:01.820
unglaublich.

02:13:05.160 --> 02:13:07.140
Und dafür finde ich

02:13:07.140 --> 02:13:08.160
halt teilweise dann eben der

02:13:08.160 --> 02:13:11.120
klar, bei allem, was

02:13:11.120 --> 02:13:12.780
Flexibilität in Richtung

02:13:12.780 --> 02:13:15.400
Investkosten, also CapEx versus

02:13:15.400 --> 02:13:17.480
Opex und so angeht, ist das alles

02:13:17.480 --> 02:13:19.480
super und du musst halt nicht um Erlaubnis

02:13:19.480 --> 02:13:21.040
fragen, wobei das halt auch...

02:13:21.040 --> 02:13:23.140
CapEx, Opex, ich bin gerade wieder rausgeflogen.

02:13:23.660 --> 02:13:25.580
Ja, unternehmerisch,

02:13:25.660 --> 02:13:27.000
wenn du halt deine Kosten betrachtest,

02:13:27.520 --> 02:13:29.560
dann ist die CapEx, Opex-Trennung

02:13:29.560 --> 02:13:31.060
ganz spannend. CapEx bedeutet,

02:13:31.540 --> 02:13:33.420
du gibst Geld einmal aus,

02:13:33.480 --> 02:13:34.820
um ein Gerät zu kaufen,

02:13:35.300 --> 02:13:37.440
sogenannte Capital Expenditure,

02:13:37.440 --> 02:13:39.260
also Investitionsgüter.

02:13:40.380 --> 02:13:41.660
Da wird der Wert

02:13:41.660 --> 02:13:43.580
des Gutes, also wenn du zum Beispiel ein Auto

02:13:43.580 --> 02:13:45.780
kaufst, dann hast du deine da 30.000 Euro,

02:13:45.840 --> 02:13:47.580
50.000 Euro, die du ausgegeben hast, die gehen

02:13:47.580 --> 02:13:49.180
auf einmal von deinem Konto runter.

02:13:49.920 --> 02:13:51.340
Jetzt bin ich, glaube ich, dran, dass du

02:13:51.340 --> 02:13:53.460
baust es dann so ein bisschen und guckst,

02:13:53.560 --> 02:13:55.500
wie du es... Genau, du brauchst

02:13:55.500 --> 02:13:57.340
das, der Wert des Autos wird wieder in deinen Büchern

02:13:57.340 --> 02:13:59.280
geschrieben, da ist sozusagen das Geld nicht

02:13:59.280 --> 02:14:01.240
einfach nur weg, sondern du hast ja einen Gegenwert dafür bekommen.

02:14:01.920 --> 02:14:03.160
Dafür musst du es halt abschreiben,

02:14:03.280 --> 02:14:04.920
das hat eine bestimmte steuerliche Behandlung etc.

02:14:05.700 --> 02:14:07.320
Und OPEX ist das sogenannte

02:14:07.320 --> 02:14:09.300
Operative Expenditure,

02:14:09.980 --> 02:14:11.320
das sind sowas wie Miete.

02:14:11.660 --> 02:14:13.100
das Geld ist halt in dem Moment weg,

02:14:13.740 --> 02:14:15.340
dafür hast du dir aber erspart,

02:14:15.480 --> 02:14:17.460
einmalig große Investitionen zu tätigen

02:14:17.460 --> 02:14:18.520
und machst halt viele kleine,

02:14:19.120 --> 02:14:21.440
beziehungsweise viele kleine Ausgaben, die sind steuerlich

02:14:21.440 --> 02:14:22.900
halt sofort gültig und

02:14:22.900 --> 02:14:25.400
Amazon erlaubt dir halt, dass du, wo du

02:14:25.400 --> 02:14:27.440
früher mal Millionen in der RZ stecken musstest,

02:14:27.500 --> 02:14:29.360
was du dann runterwohnen musst,

02:14:29.460 --> 02:14:31.660
was dann entsorgt werden muss, etc.,

02:14:31.660 --> 02:14:33.400
kannst du halt ein reines OPEX draus

02:14:33.400 --> 02:14:35.260
machen, hast halt auch kurze Kündigungsfristen

02:14:35.260 --> 02:14:37.000
und so, das ist halt, das

02:14:37.000 --> 02:14:39.360
macht es wirtschaftlich extrem attraktiv an den Stellen.

02:14:39.520 --> 02:14:41.060
Das ist ja super, weil du erst mal

02:14:41.060 --> 02:14:43.460
auf die Idee kommst, irgendwie die Kosten

02:14:43.460 --> 02:14:44.940
selber zu investieren.

02:14:45.540 --> 02:14:47.640
Ja, genau. Ich glaube, Netflix hatte das dann irgendwann auch mal

02:14:47.640 --> 02:14:49.460
gemacht. Netflix hat jetzt auch wieder eigene Adsets mit

02:14:49.460 --> 02:14:51.420
im Mix, weil sie gesagt haben, auf Dauer ist

02:14:51.420 --> 02:14:53.740
Amazon halt zu teuer. Also Amazon ist ja nicht billig

02:14:53.740 --> 02:14:55.560
an der Stelle. Du kannst natürlich viel

02:14:55.560 --> 02:14:57.580
Sachen optimieren, aber da ist

02:14:57.580 --> 02:14:58.920
so für mich als Person auch

02:14:58.920 --> 02:15:01.640
in der ganzen Komplexität, die Amazon selber mitbringt,

02:15:01.780 --> 02:15:03.700
ist mir dann einfach

02:15:03.700 --> 02:15:05.100
teilweise die Lebenszeit zu schade.

02:15:06.840 --> 02:15:07.640
Wenn ich dann höre,

02:15:07.700 --> 02:15:09.520
es gibt Leute, die bezahle ich dafür, um bei Amazon

02:15:09.520 --> 02:15:11.100
um weniger zu betalen, denke ich mir so, jetzt

02:15:11.100 --> 02:15:11.760
reizt es mir.

02:15:14.420 --> 02:15:14.680
Ja.

02:15:16.880 --> 02:15:17.280
Genau.

02:15:18.840 --> 02:15:19.520
Ja, da haben wir

02:15:19.520 --> 02:15:21.340
jetzt quasi ja die Kurven alle wieder zum

02:15:21.340 --> 02:15:23.480
Ende gekriegt. Alle losen Endpunkte wieder zusammen.

02:15:23.620 --> 02:15:25.300
Genau. Das ist ja die Aufgabe,

02:15:25.440 --> 02:15:26.100
die der Admin dann ja hat.

02:15:27.020 --> 02:15:29.080
Alles zusammenhängen, der Operator.

02:15:29.660 --> 02:15:30.380
Fix it twice.

02:15:31.300 --> 02:15:32.800
Irgendwann mal hatte ich mal so ein Obzeichnen zum

02:15:32.800 --> 02:15:33.320
ERC-Channel.

02:15:34.500 --> 02:15:35.680
Wollte ich gerade auch loswerden.

02:15:36.840 --> 02:15:38.720
Ja, schön, dass ihr

02:15:38.720 --> 02:15:40.960
wieder so schön viel erzählt habe. Ich glaube, das war die

02:15:40.960 --> 02:15:43.040
Folge, in der Jochen am wenigsten gesagt hat.

02:15:43.420 --> 02:15:45.140
Bisher. Also so im Vergleich jetzt

02:15:45.140 --> 02:15:47.120
zu unserem Gast. Ich nehme das jetzt nicht als Ehre,

02:15:47.200 --> 02:15:48.740
weil das ist mein Fluch.

02:15:52.540 --> 02:15:53.480
Ja, großartig.

02:15:53.700 --> 02:15:55.180
Das ist ja auch beim Zuhören

02:15:55.180 --> 02:15:56.500
sehr interessant. Ja, genau.

02:15:57.280 --> 02:15:59.260
Das hat mega Spaß gemacht und wieder ganz viel gelernt.

02:15:59.920 --> 02:16:01.160
Ich hoffe, euch hat es genauso viel Spaß

02:16:01.160 --> 02:16:02.940
gemacht. Vielleicht, ich weiß nicht, ob wir uns entschuldigen müssen

02:16:02.940 --> 02:16:05.120
für die Voice-Qualität diesmal oder ob das

02:16:05.120 --> 02:16:07.100
genauso gut geworden ist wie sonst.

02:16:07.580 --> 02:16:09.240
Ja. Schreibt uns das in die Kommentare,

02:16:09.420 --> 02:16:11.100
falls ihr noch nicht wusstet, wir kriegen jetzt Kommentare

02:16:11.100 --> 02:16:13.220
bei uns. Ja, ich habe die letzte

02:16:13.220 --> 02:16:14.700
Folge heute mal angehört.

02:16:15.100 --> 02:16:17.160
Oh, ja. Ja, genau. Da ging es um die Kommentare,

02:16:17.320 --> 02:16:19.480
genau. Ich habe auch gesehen, es gab einen sehr guten Kommentar.

02:16:19.760 --> 02:16:20.060
Ah, ja.

02:16:22.820 --> 02:16:23.140
Ja.

02:16:24.180 --> 02:16:24.500
Ja.

02:16:25.440 --> 02:16:26.900
Ja, das war irgendwas, was? Feedback?

02:16:26.980 --> 02:16:28.080
Hallo at peisenpodcast.de

02:16:28.080 --> 02:16:30.180
Jo. Jo.

02:16:31.000 --> 02:16:32.640
Ich glaube, für heute sind wir sonst weit durch, oder?

02:16:32.700 --> 02:16:34.020
Wir sind auch schon relativ lang dran, ja.

02:16:34.560 --> 02:16:36.540
Ja, super, Christian, dass du da warst heute. Das war echt toll.

02:16:36.560 --> 02:16:38.460
Alles gut. Sehr gerne, jederzeit wieder.

02:16:39.380 --> 02:16:40.200
Alles klar, ja dann.

02:16:40.800 --> 02:16:42.660
Okay, bis zum nächsten Mal. Ja, bis zum nächsten Mal.

02:16:43.160 --> 02:16:43.520
Tschüss. Tschüss.
