Künstliche Intelligenz und das Ende des Codes

A presentation at FHWS Jahresende Vortrag in December 2018 in Würzburg, Germany by Chris Heilmann

Slide 1

Slide 1

Künstliche Intelligenz und das Ende des Codes KI, Ethik und was Automation für Softwareentwickler bedeutet Chris Heilmann (@codepo8) Dezember 2018

Slide 2

Slide 2

Ich und meine grosse Klappe… twitter.com/codepo8/status/922380136531537921

Slide 3

Slide 3

Ist “coding” ein Problem? twitter.com/stephstad/status/994340133733253120

Slide 4

Slide 4

Ist “coding” ein Problem? twitter.com/JBalloonist/status/994957763154411520

Slide 5

Slide 5

Ist “coding” ein Problem? nein null undefined “” [] false NaN

Slide 6

Slide 6

Mein Problem ist was “coding” darstellt… ▪ Angst: Automation wird Berufe zerstören. ▪ Irrglaube: das ist etwas schlimmes, und nicht ein evolutionärer Schritt der Menschheit in Richtung einer besseren Gesellschaft. ▪ Reflex: alle müssen Programieren lernen, um sinnvoll zu bleiben.

Slide 7

Slide 7

Mein Problem ist was “coding” darstellt… ▪ Riesengroßer Irrglaube: jeder, der programmieren lernt, hat sofort auch einen tollen, erfüllenden Beruf. ▪ Gefahr: Leute, die gerade eben zu programmieren gelernt haben, stellen sofort Softwareprodukte her ▪ Arrogante Vermutung: was wir derzeit Programmierung nennen kann niemals automatisiert werden.

Slide 8

Slide 8

Der “coder” von heute ist der Astronaut der 50er

Slide 9

Slide 9

Der “coder” von heute ist der Astronaut der 50er

Slide 10

Slide 10

Der “coder” von heute ist der Astronaut der 50er

Slide 11

Slide 11

Ein Astronaut der nicht fit sein muss aber trotzdem nen super Job hat…

Slide 12

Slide 12

<3 den Enthusiasmus für unsere Arbeit ▪ Es ist Spitze, das Leute sich endlich für Programmieren interessieren ▪ Es ist weniger schön, das es nicht darum geht etwas Tolles zu entwickeln, sondern einen Job zu landen...

Slide 13

Slide 13

<3 den Enthusiasmus für unsere Arbeit ▪ Es ist fragwürdig, ob die derzeitige Ebbe im Arbeitsmarkt für Entwickler anhäIt ▪ Auch wir können und sollten wegautomatisiert werden ▪ Eventuell ist unser Beruf auch nur ein Meilenstein

Slide 14

Slide 14

Erster Akt: Ein Interesse am Entwickeln Florian Ziegler flickr.com/photos/damndirty/41263240134

Slide 15

Slide 15

Alles ist neu, kostenlos und kollaborativ…

Slide 16

Slide 16

Selbstbedienung am Informationsbuffet ▪ Kommunikation (Twitter, Slack, Mastodon, IRC) ▪ Events/Meetups ▪ Video Aufnahmen von Konferenzen ▪ Online training (Khan Academy, Skillshare, Pluralsight, Lynda.com…) ▪ Live coding Umgebungen (Twitch etc…) ▪ Entwicklungsumgebungen die einem Fehler während des Programmierens ankreiden

Slide 17

Slide 17

Die Problematik, Probleme anzusprechen ▪ Neuzugängern werden oft Probleme nicht erklärt, weil man Angst hat, sie zu vergraulen ▪ Alte Probleme scheinen heute nicht mehr zu greifen ▪ Oft sind Softwarepraktiken der Vergangenheit für lang bestehende Systeme ausgelegt. ▪ Systeme, die wir nicht mehr herstellen; Software ist auch ein Wegwerfprodukt geworden

Slide 18

Slide 18

Es gibt kaum noch unabhänginge Entwicklung… ▪ Anstatt etwas Eigenes zu probieren, folgt man der Weisheit der Masse und nutzt alles, was toll und neu ist ▪ Man verlässt sich oft darauf, das Alles funktioniert – man weiss es ja nicht besser ▪ In kürzester Zeit erstellt man dadurch eine Menge Code ohne zu wissen, warum das funktioniert ▪ Wir verlassen uns auf Abstraktionen und Abkürzungen, die alle innovativ wirken

Slide 19

Slide 19

Zweiter Akt: Entwicklung im “Echten Leben” Florian Ziegler flickr.com/photos/damndirty/40153024740/

Slide 20

Slide 20

Programmieren in bestehenden Umgebungen ▪ Endnutzer sind schrecklich und halten niemals ihre Software auf dem neuesten Stand ▪ Was du programmiert hast wird eher von Angreifern genutzt als von Endnutzern – jeder deiner Fehler kann ein Sicherheitsloch sein ▪ „Wir verbessern das im nächsten Sprint“ ist eine Lüge.

Slide 21

Slide 21

Programmieren in bestehenden Umgebungen ▪ Software als Altlast ist keine Erfindung, es gibt viel ungeliebten Code den niemand ändern anfassen will ▪ Oft passiert Innovation nur durch die Hintertür – es ist einfacher um Vergebung zu fragen, als um Erlaubnis ▪ Keine Umgebung benimmt sich wie der eigene Rechner oder was in der Schulung gezeigt wurde

Slide 22

Slide 22

Programmierkunst ist nur ein Bruchteil unseres Berufs ▪ Oft wird man als Entwickler für absolut furchtbare Arbeit gelobt ▪ Dein eigenes Interesse ist ein schrecklicher Ratgeber, wenn es um Zeiteinschätzungen geht ▪ Der tolle Entwickler zu sein, der alles mit Magie löst, macht Spass, ist aber unhaltbar – und gefährlich ▪ Probleme von heute später schnell lösen zu können wird sehr bald, sehr wichtig – jedes System ist angreifbar

Slide 23

Slide 23

Photo by Florian Ziegler flickr.com/photos/damndirty/40153024740/ Dritter Akt: Resultatsdenken Andreas Dantz flickr.com/photos/szene/40193567250

Slide 24

Slide 24

Handwerk (oder Kunst) ist 3.62% von unserer Aufgabe

Slide 25

Slide 25

Software ist ein fester Bestandteil unseres Lebens…

Slide 26

Slide 26

Komponenten zusammenstecken… ▪ Anstatt zu wissen, wie man eine bestimmte Lösung aus dem Stehgreif entwickelt, wird es immer wichtiger, die richtigen bestehenden Komponenten zu finden ▪ Das erlaubt es uns Leistungs-, Sicherheits- und Kompatibilitätsprobleme an einer zentralen Stelle anzugehen ▪ Wenn wir ehrlich mit uns sind, ist das schon lange der Fall

Slide 27

Slide 27

Von “coder” zu “engineer” ▪ Schnelllebige Produkte, die bald ersetzt werden müssen sind einfacher aus bestehenden Komponenten zu erstellen ▪ Das bedeutet, das die Kunst des Entwickelns nicht nur bedeutet das man Code schreibt, sondern auch weiterverwertbaren Code findet ▪ Wiederverwertbare Komponenten zu erstellen benötigt Programmierund Anwendungswissen ▪ Das ist weniger faszinierend als ein “code warrior” oder “Ninja” zu sein.

Slide 28

Slide 28

It may be the warriors who get the glory. But it's the engineers who build societies. – Steve Jobs

Slide 29

Slide 29

It may be the warriors who get the glory. But it's the engineers who build societies. – B'elanna Torres

Slide 30

Slide 30

Die Maschine als Helfer… autodraw.com

Slide 31

Slide 31

Die Maschine als Helfer… quickdraw.withgoogle.com

Slide 32

Slide 32

We built an initial prototype using about a dozen hand-drawn components as training data, open source machine learning algorithms, and a small amount of intermediary code to render components from our design system into the browser. We were pleasantly surprised with the result: blog.floydhub.com/turning-design-mockups-into-code-with-deep-learning/

Slide 33

Slide 33

We built an initial prototype using about a dozen hand-drawn components as training data, open source machine learning algorithms, and a small amount of intermediary code to render components from our design system into the browser. We were pleasantly surprised with the result: airbnb.design/sketching-interfaces

Slide 34

Slide 34

Ich freue mich auf die Zukunft in der Maschinen programmieren ▪ Eventuell ist jetzt und hier genau die richtige Zeit sich nicht auf die Command Line zu verlassen ▪ Eventuell ist es Zeit, sich darauf zu konzentrieren, Produkte zu erstellen, die sicher sind und die Privatsphäre unserer Kunden ernst nehmen. ▪ Eventuell ist es Zeit unser Ego nicht wild laufen zu lassen, und zu bemerken, das Softwareentwicklung ein Lieferdienst ist.

Slide 35

Slide 35

Jetzt ist eine gute Zeit, ein tolles Beispiel zu sein… ▪ Entwickler arbeiten zu viel und kümmern sich zu wenig um sich selbst und ihre Zukunft (Karriere und Gesundheit) ▪ Derzeit sind wir gefragt – es macht also Sinn, auf ein sinnvolles Arbeitsumfeld zu bestehen ▪ Wir sollten die Menschen sein, die wir gerne auf der Arbeit treffen wollen. ▪ Wir entwickeln keine Nischenprodukte mehr – das tagtägliche Leben hängt von uns ab.

Slide 36

Slide 36

Künstliche Intelligenz ist hier und jetzt. (oder sowas ähnliches) ▪ Maschinen beobachten was Endnutzer tun und reagieren mit den passenden Inhalten, Hilfestellungen und sogar Interfaces ▪ Das is toll und genau was Maschinen für uns machen sollen ▪ Die Frage ist, was der Preis ist, den unsere Nutzer dafür bezahlen. ▪ Maschinen lernen nicht, sondern erkennen Muster und befolgen Regeln

Slide 37

Slide 37

Wir müssen einen gesunden Platz auf der Skala der Menschlichkeit finden… @codepo8

Slide 38

Slide 38

Beispiel Gesichtserkennung @codepo8 aka.ms/face-api

Slide 39

Slide 39

Daten einer ML API (Microsoft Cognitive Services) @codepo8 ▪ Rechteck, wo im Bild ein Gesicht ist ▪ Winkel (Nicken, Drehen, Seitenansicht) ▪ Lächeln ▪ Geschlecht und Alter ▪ Brille (Sonnenbrille) ▪ Makeup (Lippen/Auge) ▪ e Emotion (Wut, Verachtung, Ekel, Angst, Freude, Neutral, Traurigkeit, Überraschung) ▪ Vermummung (Stirn/Auge/Mund) ▪ Bart (Schnurrbart/Bart/Koteletten) ▪ Attribute: Haar(unsichtbar, Glatze, Farbe) aka.ms/face-api

Slide 40

Slide 40

Bist du das? Das auch? @codepo8 aka.ms/face-api

Slide 41

Slide 41

Ist das wirklich dein Fahrer? @codepo8 youtube.com/watch?v=aEBi4OpXU4Q

Slide 42

Slide 42

Wer braucht sowas? @codepo8 ntechlab.com

Slide 43

Slide 43

Gegenangebote @codepo8 https://blog.insightdatascience.com/ generating-custom-photo-realistic-faces-using-ai-d170b1b59255

Slide 44

Slide 44

Those trustworthy avatars… @codepo8 https://blog.insightdatascience.com/ generating-custom-photo-realistic-faces-using-ai-d170b1b59255

Slide 45

Slide 45

Böse Werkzeuge @codepo8 https://github.com/SpiderLabs/social_mapper

Slide 46

Slide 46

Unsere KI Werkzeuge NLP @codepo8 Visuelle Erkennung Emotionen erkennen Sprache verstehen und erstellen Moderation

Slide 47

Slide 47

Vision and image analysis… @codepo8 twitter.com/mixedhunty/status/980551155297157126

Slide 48

Slide 48

Vision and image analysis… @codepo8 #vision_api

Slide 49

Slide 49

Vision and image analysis… instagram: @larryandanke @codepo8

Slide 50

Slide 50

Vision and image analysis… @codepo8

Slide 51

Slide 51

Verschiedene Arten des Machine Learning @codepo8 ▪ Recommendation ▪ Prediction ▪ Classification ▪ Clustering ▪ Generation

Slide 52

Slide 52

Die Maschinen stöbern durch große Datensätze Recommendation @codepo8 ▪ “Auf gut Glück” ▪ Slack/Outlook erklärt die Firmenorganisation ▪ Intelligente Maileingänge ▪ Automatisierte Fotoverbessernung ▪ Suchverbesserung von Bildern: Tagging / “Image may contain”

Slide 53

Slide 53

Du machst das, dann kommt bestimmt das als Nächstes Prediction @codepo8 ▪ Automatische Texte ▪ Tasklisten ▪ Bilder als Collagen oder Alben katalogisieren ▪ Ähnliche Musik und Filme anbieten ▪ „Kunden kauften auch“

Slide 54

Slide 54

Man sagt der Maschine, nach was gesucht wird, und diese skaliert für uns. Classification @codepo8 ▪ Google Formulare bieten die richtigen Interfaces für bestimmte Fragen an ▪ Gesichtserkennung und automatisches tagging ▪ Röntgen und MRI Bilder auf Krebstumore untersuchen

Slide 55

Slide 55

Eigenständige Erkennung von Mustern Clustering @codepo8 ▪ Photo organisation ▪ Dokumentenanalyse ▪ Kommentare und Callcenter Anrufe automatisch ordnen ▪ Videooptimierung durch Analyse des Bildhinhaltes

Slide 56

Slide 56

Maschinen, die “kreativ” werden Generation @codepo8 ▪ Kunststile erkennen und neu anwenden ▪ Fakten zu Nachrichten zusammenstellen ▪ Generierte Musik ▪ Bilder mit eventuell passenden Daten füllen ▪ Auf Menschen reagieren

Slide 57

Slide 57

Humans and Bots/Computers aka.ms/nvidia-fix-image

Slide 58

Slide 58

Humans and Bots/Computers gandissect.csail.mit.edu/

Slide 59

Slide 59

Aufgaben für Entwickler in der KI Welt ▪ Künstliche Intelligenz ist hier und jetzt. (oder sowas ähnliches) Dem Hype entgegenwirken ▪ Produkte zu erstellen, die Menschen erkennen und helfen, und nicht unsere eigenen kognitiven Verzerrungen spiegeln. Unsere Aufgaben als Entwickler in dieser neuen Welt ▪ Transparenz zu erfordern, wo sie nötig ist ▪ Endnutzer zu ermächtigen, nicht sie als Datenquelle zu mißbrauchen ▪

Slide 60

Slide 60

Hier mal ein paar Vorhersagen @codepo8 ▪ Wir können die KI Revolution nicht mehr stoppen, da es zu viel Sinn macht ▪ Daten, die wir von Endnutzern durch aktive Nutzung oder durch passive Sensoren bekommen sind zu viele, um durch Menschen analysiert zu werden. ▪ Wenn wir als Entwickler und IT Manager nicht mit gutem Beispiel vorrangehen, werfen wir Jahre der SoftwareDemokratisierung weg.

Slide 61

Slide 61

Spielzeit ist wichtig! @codepo8

Slide 62

Slide 62

Emotionen zeigen @codepo8 Suz Hinton: https://github.com/noopkat/face-api-emoji-face

Slide 63

Slide 63

Spieltrieb… @codepo8 Cassie Evans https://codepen.io/cassie-codes/pen/jKaVqo/

Slide 64

Slide 64

Neue, Menschliche Interfaces… @codepo8 https://charliegerard.github.io/teachable-keyboard/

Slide 65

Slide 65

Artificial Intelligence @codepo8 https://charliegerard.github.io/teachable-keyboard/

Slide 66

Slide 66

Kursmaterialien? ▪ The Math behind ML ▪ The ethics of AI ▪ Working with Data using Python ▪ Machine Learning Models ▪ Deep Learning Models ▪ Reinforcement Learning Models ▪ Microsoft Professional Program Certificate in Artificial Intelligence aka.ms/learn-ai 10 courses, (8-16 hours each), 10 skills @codepo8

Slide 67

Slide 67

Schnellkurs? skl.sh/christian Free with trial sign-up @codepo8

Slide 68

Slide 68

Danke! Chris Heilmann Christianheilmann.com Developer-evangelism.com @codepo8