2015-10-02 jug saxony day - fifty shades of red · unser leben als softwareentwickler • wir...
TRANSCRIPT
![Page 1: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/1.jpg)
Fifty Shades of Red
Mirko Seifert, DevBoost GmbH
JUG Saxony Day | 02.10.2015 | Dresden
Oder wie man es schafft, dass Entwickler (endlich) unter Ihrer eigenen
(schlechten) Software leiden müssen
![Page 2: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/2.jpg)
Unser Leben als Softwareentwickler
• Wir schreiben hervorragende Software, die Menschen glücklich macht
• Wir machen das Leben auf diesem Planeten durch die Nutzung von Software einfacher, schöner, angenehmer
• Wir bewerkstelligen alles Menschenmögliche um Fehler und Unannehmlichkeiten für die Benutzer unserer Software zu vermeiden
Fifty Shades of Red
![Page 3: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/3.jpg)
Unser Leben als Softwarenutzer
• Wir nutzen ausschließlich hervorragende Software, die uns glücklich macht
• Wir können das Leben auf diesem Planeten durch die Nutzung von Software viel mehr genießen
• Wir finden nur sehr, sehr selten Fehler oder Unannehmlichkeiten in der Software, die wir nutzen
Fifty Shades of Red
![Page 4: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/4.jpg)
Fifty Shades of Red
![Page 5: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/5.jpg)
Fifty Shades of Red
![Page 6: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/6.jpg)
Fifty Shades of Red
![Page 7: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/7.jpg)
Fifty Shades of Red
![Page 8: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/8.jpg)
Ursachen
Fehlendes Feedback an den Entwickler:
• von Benutzern
• von Produktivsystemen
• von Testsystemen
• von CI-Systemen
• von lokalen Tests
Fifty Shades of Red
![Page 9: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/9.jpg)
Was tun?
EntwicklerLokaler
TestCI System
Test System
Staging System
Production System
Benutzer
Fifty Shades of Red
Feedback
Storage
![Page 10: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/10.jpg)
Aber wie genau?
• Feedbackinhalt– Möglichst generisch
– Mit Code verbunden (Klasse, Methode, Zeile)
– Zeitpunkt
• Übertragung– HTTP/REST
• Anzeige für Entwickler– In der IDE, direkt am Code
– Filterbar
Fifty Shades of Red
EntwicklerLokaler
TestCI System
Test System
Staging System
Production System
Benutzer
Feedback
Storage
![Page 11: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/11.jpg)
Tomcat Webserver
“Architektur”
Fifty Shades of Red
Client
(z.B. Code auf
Produktivsystem)
Confessional
REST API
Confessional
Database
IDE Client
(z.B. Eclipse
Plugin)
![Page 12: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/12.jpg)
DEMO
Logger / Exception Feedback
Fifty Shades of Red
![Page 13: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/13.jpg)
Schlechten Code erkennenprivate boolean lookupUser(String username, String expectedHash) {
boolean foundHash = false;
String sql = "SELECT password FROM user WHERE username = ?";
try (Connection connection = DriverManager.getConnection(getDatabaseURL(), USER, PASS);
PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
preparedStatement.setString(1, username);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
foundHash = expectedHash.equals(resultSet.getString("password"));
break;
}
resultSet.close();
} catch (SQLException se) {
se.printStackTrace();
}
return foundHash;
}
Fifty Shades of Red
![Page 14: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/14.jpg)
DEMO
Database Performance Feedback
Fifty Shades of Red
![Page 15: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/15.jpg)
DEMO
ThisShouldNeverHappenDemo
Fifty Shades of Red
![Page 16: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/16.jpg)
Assertions
• Wer nutzt Assertions und wie?
• Wenn nur im Test, dann kein Unterschied zu JUnitAssertions
• Aber eigentlich ein schönes Konzept…
Fifty Shades of Red
![Page 17: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/17.jpg)
DEMO
Assertion Feedback
Fifty Shades of Red
![Page 18: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/18.jpg)
Schlechten Code erkennen
• Weitere Beispiele– Anzahl Datenbankabfragen bei Nutzung von JPA
– Netzwerkkommunikation – Request-Anzahl, Request-Dauer, Timeouts (z. B. API Aufrufe)
– Speichernutzung (große Objekte, benutzter HEAP, HTTP Session Size)
– Andere I/O Operations (z. B. Schreiben von Daten auf Platte)
Fifty Shades of Red
![Page 19: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/19.jpg)
Was es noch zu beachten gilt (1/2)
• Code zum Senden von Events muss:– Thread-safe sein
– Fehlerfrei sein
– Asynchron laufen
– Tolerant bei Netzwerkausfall sein
– Obere Schranken für Speicher beachten
Fifty Shades of Red
![Page 20: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/20.jpg)
Was es noch zu beachten gilt (2/2)
• Code wird weiterentwickelt
• Zeilennummern verschieben sich
• Korrekturrechnung anhand der SCM Historie erforderlich
• Verwaltung von Events notwendig (wer markiert Events als behandelt, wer behandelt welches Event, …)
Fifty Shades of Red
![Page 21: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/21.jpg)
Credits
https://www.destroyallsoftware.com/talks/a-whole-new-world
Fifty Shades of Red
![Page 22: 2015-10-02 JUG Saxony Day - Fifty Shades of Red · Unser Leben als Softwareentwickler • Wir schreiben hervorragende Software, die Menschen glücklich macht • Wir machen das Leben](https://reader030.vdocuments.pub/reader030/viewer/2022040421/5e0b0422637b910799659051/html5/thumbnails/22.jpg)
Fazit
1. Es ist (relativ) einfach mehr Feedback über unseren Code zu bekommen
2. Es gibt viele (schlechte) Dinge, die man dem Code als Entwickler nicht (einfach) ansehen kann
3. Ohne Feedback aus Produktivumgebungen ist es schwierig fehlerarme, performante Applikationen zu entwickeln
Fifty Shades of Red