A presentation at FHWS Jahresende Vortrag in December 2018 in Würzburg, Germany by Chris Heilmann
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
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
View Künstliche Intelligenz und das Ende des Codes on Notist.
Dismiss
KI, Ethik und was Automation für Softwareentwickler bedeutet