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

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

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

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

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

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.

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.

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

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

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

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

<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...

<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

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

Alles ist neu, kostenlos und kollaborativ…

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

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

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

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

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.

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

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

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

Handwerk (oder Kunst) ist 3.62% von unserer Aufgabe

Software ist ein fester Bestandteil unseres Lebens…

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

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.

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

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

Die Maschine als Helfer… autodraw.com

Die Maschine als Helfer… quickdraw.withgoogle.com

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/

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

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.

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.

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

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

Beispiel Gesichtserkennung @codepo8 aka.ms/face-api

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

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

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

Wer braucht sowas? @codepo8 ntechlab.com

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

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

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

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

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

Vision and image analysis… @codepo8 #vision_api

Vision and image analysis… instagram: @larryandanke @codepo8

Vision and image analysis… @codepo8

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

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”

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“

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

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

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

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

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

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 ▪

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.

Spielzeit ist wichtig! @codepo8

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

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

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

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

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

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

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