We Are Developers 2017 -- ein Erfahrungsbericht

Am 11. und 12. Mai 2017 fand in einer ehemaligen Rinderhalle in Wien zum dritten Mal die Entwicklerkonferenz We Are Developers statt - und Senacor war dabei! Nicht nur als aufmerksame Zuhörer sondern auch für interessierte Konferenzteilnehmer mit einem Messestand von Human Resources.

Angekündigt haben sich als Speaker unter anderem Joel Spolsky (CEO Stack Overflow, Co-Founder Trello), Håkon Wium Lie (Erfinder von CSS, CTO Opera Software), Rasmus Lerdorf (Erfinder von PHP) und John Romero (Mitbegünder von Id Software).

Es folgen einige Highlights der Konferenz, zusammengestellt von Simon Walter und Jonas Holtkamp.

TL;DR

WeAreMakers WeAreRebels WeAreDreamers

Tag 1

Der österreichische Bundeskanzler vor über 3.000 Entwicklern

Der erste Tag beginnt planmäßig um 9:15 Uhr mit der Eröffnung, unterstützt vom österreichischen Bundeskanzler Christian Kern. Wären doch die Schlangen vor dem Einlass in die Halle nicht so lang... dann hätten wir nicht nur die zweite Hälfte der durchaus interessanten Rede mitbekommen.

Laaaange...
... Schlangen

Kern würdigt die Entwickler als "Arbeiter an einer besseren Welt" und macht deutlich, dass Entwickler immer mehr Einfluss auf das Weltgeschehen bekämen und hierbei schon die Politik überholt hätten. Er verdeutlicht die Wichtigkeit von Schulunterricht im MINT-Bereich und die Förderung von IT-Start-ups. Ich habe schon deutlich schlechtere Reden von Politikern gehört, besonders im Kontext IT. #neuland

We will spend the rest of our lives in the future, let's make it great!

Pünktlich um 9:45 Uhr verlässt Kern die Bühne und überlässt sie Martin Wezowski, Chief Designer von SAP. Mit seinem Talk Build a World We All Want to Live in zeigt er, wie wichtig die Zukunft ist. Zu wichtig, um sie sich selbst oder jemand anderem zu überlassen. Er fordert die Entwickler auf, nicht nur linear zu denken.

The future is getting faster exponentially and we are still thinking linearly.

Sagt's und untermalt es mit dem Beispiel der Speaking Barbie Doll.

Speaking Barbie

User Interfaces for AI -- Das Web 9.0 als Web 2.0 von Web 8.0?!

It's fine to celebrate success, but it is more important to heed the lessons of failure. --- Bill Gates

Mit diesem Zitat beginnt Autor Chris Minnick seinen Talk über AI User Interfaces. Er ist im Begriff seine Theorien über die Entwicklung des Webs vorzustellen. 2005 stellt er die Hypothese auf jede Version des Webs sei eine Gegenreaktion auf die vorherige Ausprägung. Und so beschließt er, die Entwicklung des Webs vorherzusagen.

It is advisable to look from the tide pool to the stars and then back to the tide pool again. --- John Steinbeck

Er startet mit Web 3.0, das als 'backlash' zu Web 2.0 kommt, allerdings aus manipulierten Informationen und Spam besteht. Dem gegenüber steht ab 2008/09 Web 4.0, das Identitätsprüfung, Verschlüsselung und digitale Signaturen bietet. Beim Nachfolger Web 5.0 wird die Frage gestellt welcher Quelle vertraut werden kann, was zu face-to-face-Kommunikation führt. Das Web 5.0 nennt Minnick eine "Virtual Hangout Machine" - wofür er sich sogleich bei Google für den Namensklau entschuldigt.
Web 6.0 wird eine paranoide Reaktion zu Web 5.0, bestehend aus Zensur und dem Ende der Netzneutralität. Das folgende Web 7.0 ist dann nicht die Umkehr von 6.0, sondern macht es nur noch schlimmer. Es kommt zum "Total Breakdown" und keiner nutzt es mehr, da man von restriktiven Gesetzen schikaniert wird.
Web 8.0 to the rescue! Web 8.0, oder auch AI Web 1.0 sorgt für ein Relearning the Internet, für die totale Einfachheit - es gibt nur noch einen Button. Das wird nur noch getoppt vom Web 9.0, das Web 2.0 der AI. Die Nutzer sind nur noch hochintelligente AI, die keine Lust mehr auf politische Regulatorik oder auf das Warten auf den Menschen haben.

Minnick stellt aber auch Probleme des Webs 8.0 und 9.0 heraus.

The risk of something seriously dangerous happening is in the five-year time frame. --- Elon Musk (2014)

Als eindrucksvolles Beispiel dient dafür Microsoft Tay, den der Telegraph im Übrigen als Hitler-loving sex robot bezeichnet. Und wem das dramatische Zitat von Elon Musk noch nicht reichte, dem liefert Minnick noch eins hinterher:

The development of full artificial intelligence could spell the end of the human race. --- Stephen Hawking

When games were made in garages

Ein Höhepunkt für alle die alt genug dafür sind war sicher der Talk von John Romero über die Anfänge von Id Software und der Spieleentwicklung. Die Geschichte ist in den weiten des Internets gut dokumentiert, deswegen hier nur einige Highlights.

Viele der Prinzipien welche Id Software (Wolfenstein, Doom, Quake) während ihrer jahrelangen Teamarbeit entworfen hat sind heute Bestandteil des Handwerks der Programmierung.
Drei interessante Aussagen:

  1. Welches VCS habt ihr verwendet: Disketten. Wir hatten keine Festplatten und "Netzwerk" war damals zu unzuverlässig.
  2. Was ist deine Empfehlung an angehende Entwickler: Legt los. Baut einfache Spiele. Viele. Nichts kompliziertes. Lernt. Es war noch nie so einfach.
  3. Wie schafft man es so viel zu arbeiten: Es gab damals kein Internet.

Less Process, More Guidance

Der Tag plätschert so dahin. Auf den kleineren Stages geht es eher um die nitty gritty Details, aber auch das ist sehr interessant. Da geht es mal um Large Scale Application Configuration Management, vorgestellt von Peter Alberer (bwin) oder auch um eine Voyage through Behaviour Driven Development in the Financial Sector mit Reiseleiter Dirk Rombauts (Pickles). Von PayPal redet Jonathan LeBlanc über die Future of Online Money: Creating Secure Payments Globally.

Screw the theory.
Bureaucracy is kryptonite to productity --- Gary Hamel

So fängt Dominic Price von Atlassian seinen Talk Less Process, More Guidance an. Eindrucksvoll. Er stellt Unternehmenspolitik à la "das haben wir immer schon so gemacht" auf den Prüfstand, stellt Effizienz und Effektivität gegenüber und bringt es dann mit einer einfachen Formel auf den Punkt:

Great Teams = Right Tools + Right People + Right Practices

Doch das alles wird dann auch noch erschwert, wenn dein Chef ein Pigeon Manager ist, sagt Price.

Pigeon Manager: A manager who flies in [a week before your deadline], shits all over everything you do, and leaves just as fast as they came.

Er schließt mit einem Zitat von Peter Drucker und dazu drei Handlungsempfehlungen, wenn dein Unternehmen eher einer Factory als einem Lab ähnelt:

  1. Unlearn to learn -- Make work = play
  2. Environment -- Don't always agree all the time
  3. Levers -- Creativity > consistency

The best way to predict the future is to create it. --- Peter Drucker

Und mit diesem Verweis auf Martin Wezowskis Talk zu Anfang des Tags ist der erste Tag beinahe vorüber -- wie passend.

Direkt im Anschluss wird in drei aufblasbaren Iglus die Microsoft-Konferenz BUILD 2017 übertragen. Man wirbt mit "Free food and drinks powered by Microsoft". Das ist ja erstmal klasse, aber was nützt es, wenn gefühlt nur die ersten 20 ein begehrtes Lunch Packs von Subway abgreifen können. Nun ja, der Tag war ohnehin anstrengend genug, da kann man ja auch Feierabend machen und zusehen, noch etwas von Wien zu erleben -- wenn man schon mal hier ist.

Tag 2

Culture eats strategy for breakfast

Tag 2 beginnt um 8:30 Uhr gemächlich mit einigen Vorträgen auf den kleinen Stages (but beware, Peter Drucker quotes all around -- siehe Überschrift), bevor es auf die Main Stage zu Blöcken zunächst rund um CSS und dann JavaScript geht. Unter anderem mit dabei Brian Holt (erst Reddit, jetzt Netflix, Money Quote "I steal your time professionally") und Dustin Whittle (Uber).

Wie CSS das Internet rettet

Zum Start einer ganzen Reihe von CSS-Vorträgen erzählt der Norweger Håkon Wium Lie die Geschichte des Internets, die Erfindung von CSS und darüber was er noch so alles angestellt hat. Bei der Frage wer im Publikum den Browser Mosaic im Einsatz hatte gehen nicht mal ein Dutzend Hände in die Luft.
Sein Beweggrund CSS zu entwickeln waren die Designer, welche ihre Schriftsatz-Tools gewöhnt waren und runde Ecken, Schriftarten und Schatten realisieren wollten. Da dass mit HTML nicht möglich war wurden Texte mittels Bilder realisiert, was das Internet in eine riesige Faxmaschine und Website in nicht durchsuchbare Binary-Blobs verwandelt hätte. CSS wurde geboren.

Ein weiterer berühmter Browser durfte natürlich auch nicht fehlen: IE6. Der Schrecken eines jeden Webentwicklers. Aufgrund unzähliger Abweichungen bei der Umsetzung von CSS in Browsern wurde ein Test entwickelt, welcher einen Smiley mittels CSS rendern sollte.

Hier Expected neben Actual in IE6:
expected
actual

Nach seinen Worten war Microsoft anfangs nicht gewillt sich dem Test zu beugen. Hier bedankte sich Håkon explizit bei der Community, welche durch unermüdliches Nachfragen auf Konferenz und öffentlichen Veranstaltungen für anhaltenden Druck sorgte, was schlussendlich zum Erfolg führte.

Nach einigen Anekdoten zu Opera, wie der amerikanischen Zeitung, die Norweger verdächtigte die Buslinien ihrer Stadt zu bebachten (Opera Cache/Kompressionsproxy in Oslo), des durch Opera in Russland gesparten Traffics und einer Raft-Fahrt im Pazifik bei der er nur mit einer einer Opera-Fahne bekleidet posierte, beendete er den Vortrag mit dem Aufruf CSS zu verwenden um ein Buch zu schreiben. Nicht den Inhalt, davon gäbe es ja genug, aber digitalisieren und zwar mit CSS. Wer dabei eine Schriftart wiederentdeckte und ebenfalls digitalisere, um so besser!

CSS Wodoo

Nach diesem unterhaltsamen Start ging es weiter mit einigen architekturellen und zum Teil sehr praxisorientierten Tips/Hacks zu Refactoring von CSS in großen Websites von Harry Roberts aka @csswizardry.
Mir fehlt dazu leider der Frontend-Entwickler-Hintergrund, aber eine Schlagworte waren:

  1. shame.css für Hacks, um technische Schulden immer quantifizieren zu können
  2. all: initial, um Vererbung zu deaktivieren
  3. id hack to class, um... ja ich hab nicht alles verstanden

Wäre ich Frontendentwickler würde ich sehr gerne mal eine Schulung bei ihm besuchen...

Code is Magic

Ein besonderer Talk war auch der von Eva Lettner. Sie führte vor, wie mit CSS Kunst entsteht. Eines ihrer Hobbies dem sie nachgeht um das Gefühl vom ersten mal Programmieren wieder zu erleben, als sich alles noch wie Magie angefühlte und nicht wie Arbeit (Pick a Task, Code, Pull Request).

Ihre Kunstwerke inkulsive dem Code sind auf Codepen zu finden.

Zwei Pizzen für ein Team

... soweit die Quintessenz aus Thomas Lobingers (AWS) Talk Working Backwards from the Customer. Er stellt Amazons Leadership Principles vor und hebt dabei vor allem gleich das erste Prinzip hervor:

Customer Obsession - Leaders start with the customer and work backwards

Auf die Frage, wie man das am besten angeht wartet er mit einem Dreipunkteplan auf, den man bei Bedarf einfach durchiterieren soll:

  1. Ein "Mock Press Release" herausgeben, in dem die Produktidee in einer auf den Kunden zentrierten Sprache beschrieben werden soll. "If you are not excited after reading the press release, don't do it" - so einfach ist das
  2. FAQs - Annahmen und Bedürfnisse untersuchen und auspacken
  3. Mockups - Die User Experience zeigen

Und was war das jetzt mit den Pizzen? Bei Amazon ist ein Team zu groß, wenn man es nicht mehr mit zwei Pizzen füttern kann, sagt Lobinger.

Every program manipulates symbols of the world - Model Minded Development

Bad models yield bad results

Das ist die Kernaussage von von George Fairbanks von Google in seinem Talk Model-Minded Development. Er erzählt von der USS Recruit, die 1949 an Land für Trainingszwecke in Dienst gestellt wurde und 1967 stillgelegt werden musste, weil das Computersystem der US Navy nicht mit Schiffen klar kam, die sich nicht im Wasser befinden.

Programming properly should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand -- Peter Naur

Fairbanks fragt sogleich wo sich diese Theorien befinden sollen. In den Köpfen der Entwickler oder im Code. Und wenn in beidem, wo ist die beste Balance? Auch darauf hat Peter Naur eine Antwort:

The death of a program happens when the programmer team possessing its theoriy is dissolved -- Peter Naur

What is the best balance?

Daraus schlussfolgert Fairbanks eine Definition von Good Code: Der Entwickler muss die Theorien, die er im Kopf hat, im und in Code ausdrücken, damit das Code Design nicht von seiner Person oder seinem Team abhängig ist. Teams und Zeiten ändern sich.

Er definiert Theory folgendermaßen: Theory: Design + Domain + Argument

Ein Argument in diesem Kontext ist die Frage, was das Design mit der Domain machen soll. Aber wie sorge ich für gute und nachvollziehbare Arguments? Dies wird mit drei Fragen bzw. Handlungsmaximen beantwortet:

  1. How quickly can you decide if the code is right?
  2. What supports our code arguments?
  3. Upgrade your logic for stronger/clearer arguments

Und was bringt mir dieses Wissen jetzt auf dem Weg besseren Code zu schreiben?

  1. Express the domain model in code
  2. Express the design model in code
  3. Express the argument in code
    -> Use code reviews to ensure theory is visible

Für Fairbanks sind Modelle ein zentrales Konstrukt in der Softwareentwicklung. Daher ist es - unabhängig der gewählten Programmiersprache oder des -stils - eine gute Idee die Modelle im Code sichtbar zu machen. Code, der es nicht schafft seine Domain, Models oder Arguments auszudrücken ist eben schwer zu verstehen.

Und bringt es abschließend auf diesen schönen Satz:

With my mind on my models and my models on my mind

Der Nachmittag - Warten auf Rasmus Lerdorf

Den Nachmittag vertreibt man sich mit Talks über Customizing Railways to Individuality (Johann Pluy, ÖBB), Scaling Open Source Communites (Felix Krause, Google) und Angular, Google’s Popular Application Framework (Manfred Steyer, Google Developer Expert).

Schließlich betritt Rasmus Lerdorf, PHP-Erfinder, die Bühne. Beim Lesen dieser drei Buchstaben schalten die meisten wohl ab -- verständlich.

Thank you too, Rasmus

Dabei liefert er einen der amüsantesten Talks der beiden Tage ab, als er einen Ausblick auf PHP in 2017 gibt. Er redet hierbei vor allem über Version 7, die er mit den Worten "we finally might got it to work" beschreibt. Großes Gelächter im Saal. Er zeigt Performance-Unterschiede zwischen PHP7 und PHP5 ("if you're on PHP5, you have to switch" - und er hat Recht!) und rechnet diese überschlagsweise in gesparten Strom durch weniger CPU Load um was ihn zu dem Schluss führt:

We can save the world. Do your part, upgrade to PHP7.

Für die noch verbliebenen PHP4-Installationen hat er dagegen nur noch Sarkasmus übrig:

If you're still on 4... Tough.

Persönliche Highlights

Simon

Hier ein paar Aussagen, die mir im Kopf geblieben sind.

Code is magic.

Programmierer arbeiten kreativ in dem sie Abstraktionen der realen Welt im Team als Wissen erarbeiten und in Code manifestieren.

Lasst euch nicht in laute Büros mit telefonierenden Kollegen ohne höhenverstellbare Schreibtische mit einem 18" Monitor stecken. Das ist nicht wie wir im 21. Jahrhunder arbeiten.

Fazit

Die beiden Tage waren abgesehen von einer Mittagspause jeweils vollgepackt mit Talks für uns. Von interessant bis eye-opening war alles dabei und so verlassen wir Wien erschöpft aber zufrieden.

Aber nicht ohne den Kollegen am Stand einen Besuch abzustatten. Hallo! :grinning:

Hello, Senacor
Sounds interesting