Download - Den falschen plan perfekt ausführen
![Page 1: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/1.jpg)
Den falschen Plan perfekt ausführen.
Den falschen Plan perfekt ausführen.Nils Langner & Mike Lohmann
![Page 2: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/2.jpg)
Den falschen Plan perfekt ausführen.Den falschen Plan perfekt ausführen.
Webentwickler seit 18 Jahren
Gründer www.leankoala.com
Head of Quality Management
Qualitätsmanager seit 10 Jahren
Blogger www.phphatesme.com
Seepferdchen seit 31 Jahren
@leankoala
@leankoala
![Page 3: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/3.jpg)
Den falschen Plan perfekt ausführen.
Webentwickler seit 19 Jahren
Partner www.elbstack.com
Software Architect
Software Architect seit 10 Jahren
@elbstack
![Page 4: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/4.jpg)
Den falschen Plan perfekt ausführen.
Das macht keinen Sinn!
Hä?
Klappt das auch für mich?
Sehe ich ganz anders!
Wieso liegt da eigentlich Stroh?!
Bei Fragen: fragenRaus damit
WAS machen die da vorne eigentlich?
![Page 5: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/5.jpg)
Den falschen Plan perfekt ausführen.
Wer seid ihr?IPC 2017
Entwickler?
Qualitätsmanager / Tester?
PHP?
JavaScript?
Umbau auf Micro Services?
![Page 6: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/6.jpg)
Den falschen Plan perfekt ausführen.
Gut, besser, am besten?Was ist guter Code?
![Page 7: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/7.jpg)
Den falschen Plan perfekt ausführen.
Drauflos-Stil - A IPC 2017
Idee: Office-Anwesenheits-Trigger
Brauche einen Trigger
Brauche einen Store für einen Counter
Brauche eine Komponente die Nachrichten verschickt
Brauche statistische Auswertungen
![Page 8: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/8.jpg)
Den falschen Plan perfekt ausführen.
'use strict';const DynamoDb = require('aws-sdk/clients/dynamodb');const AWS = require('aws-sdk');
const Promise = require('bluebird');const https = require('https');const url = require('url');
AWS.config.setPromisesDependency(Promise);const dynamoDb = new DynamoDb({ params: { region: 'eu-central-1', }});
const tableName = process.env.DDB_TABLE;
function updateUsage(serialNumber, value) { return dynamoDb.updateItem({ TableName: tableName, Key: { deviceId: { S: serialNumber } }, ReturnValues: 'ALL_NEW', AttributeUpdates: { counter: { Action: 'ADD', Value: { N: value.toString() } } } }).promise() .then(data => { console.log("DynamoDB update response", data); return data; })}
function createSlackMessage(channel, value) { return { channel: channel, username: 'OfficeNotificationBotIoT', attachments: [{ text: `Momentan sind ${value} im Office.`, color: 'good', ts: new Date().getTime() / 1000, }] };}
function notify(slackUrl, channel, value, callback) { const message = JSON.stringify(createSlackMessage(channel, value)); const options = url.parse(slackUrl); options.method = 'POST'; options.headers = { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(message), };
const postReq = https.request(options, res => { const chunks = []; res.setEncoding('utf8'); res.on('data', chunk => { return chunks.push(chunk); }); res.on('end', () => { const body = chunks.join('');
return callback(null, { body: body, statusCode: res.statusCode, statusMessage: res.statusMessage });
}).on('error', callback); });
postReq.write(message); postReq.end();}
function handleUpdate(serialNumber, value, callback) { return updateUsage(serialNumber, value) .then(data => { notify( data.Attributes.hookUrl.S, data.Attributes.channel.S, data.Attributes.counter.N, callback ); }) .catch(err => { console.error('Error notifying channel'); return callback(err); })}
exports.handler = (event, context, callback) => { console.log('Received event:', event.clickType);
if (event.clickType === "SINGLE") { handleUpdate(event.serialNumber, 1, callback); } else { handleUpdate(event.serialNumber, -1, callback); }};
1 2 3Brauche einen Store für einen Counter
Brauche eine Komponente die Nachrichten verschickt Brauche einen Trigger-(Handler)
![Page 9: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/9.jpg)
Den falschen Plan perfekt ausführen.
require_once 'Spreadsheet_Excel_Writer.php';
class XLS { private $workbook; private $format_header;
function __construct() {
// Creating a workbook $this->workbook = new Spreadsheet_Excel_Writer();
$this->format_header =& $this->workbook->addFormat(); $this->format_header->setBold(); $this->format_header->setFgColor('blue'); $this->format_header->setColor('white'); }
function add_sheet($sheetname='sheet', $data=array()) { …. }
function send($filename) { // Let's send the file - Hell Yeah!! Let's do it!! // sending HTTP headers if (!strpos(strtolower($filename),".xls")) { $filename .= ".xls"; } $this->workbook->send($filename); $this->workbook->close(); }}
/*** Send HTTP headers for the Excel file.** @param string $filename The filename to use for HTTP headers* @access public*/function send($filename){ header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0,pre-check=0"); header("Pragma: public");}
4 Brauche statistische Auswertungen
![Page 10: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/10.jpg)
Den falschen Plan perfekt ausführen.
resource "aws_lambda_function" "SlackOfficeNotification" { description = "SlackOfficeNotification Dash Events" filename = "../SlackOfficeNotification.zip" source_code_hash = "${base64sha256(file("../SlackOfficeNotification.zip"))}" function_name = "SlackOfficeNotification" handler = "index.handler" timeout = 10 runtime = "nodejs4.3" role = "${aws_iam_role.iot_son_role.arn}”
environment { variables = { "DDB_TABLE" = "${aws_dynamodb_table.iot_son_dbtable.name}" "REGION" = "${var.aws_region}" }
}}
resource "aws_lambda_permission" "allow_SlackOfficeNotifications" { statement_id = "AllowExecutionFromEvents" action = "lambda:InvokeFunction" function_name = "${aws_lambda_function.SlackOfficeNotification.arn}" principal = "sns.amazonaws.com" source_arn = "${var.iot_son_source_arn}”
}
Semi-automatisches Deployment mit Terraform
![Page 11: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/11.jpg)
Den falschen Plan perfekt ausführen.
Was ist mit Tests
Hardcoded Variablen
Gar nicht erweiterbar
Naja… Das geht doch einfach nicht! 100 Leute wurden gefragt: Was ist daran
schlecht?
Quiz
![Page 12: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/12.jpg)
Den falschen Plan perfekt ausführen.
![Page 13: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/13.jpg)
Den falschen Plan perfekt ausführen.
Jetzt besser machenWas ist guter Code?
![Page 14: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/14.jpg)
Den falschen Plan perfekt ausführen.
Professional-Stil - BIPC 2017
Muss 100 Tsd Kunden verwalten können
Muss pro Kunde konfigurierbare Nachrichtenkanäle haben (Slack, SMS, you name it)
Verschiedene Nachrichten / Kunde / Location
85 % Unit-Testabdeckung
Funktionale Tests für 6 verschiedene Browser
Muss statistische Auswertung in einem Dashboard zeigen
Idee: Office-Anwesenheits-Trigger (diesmal professional!)
![Page 15: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/15.jpg)
Den falschen Plan perfekt ausführen.
![Page 16: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/16.jpg)
Den falschen Plan perfekt ausführen.
Jetzt perfekte Implementierung vorstellen.Imagination.
![Page 17: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/17.jpg)
Den falschen Plan perfekt ausführen.
Was ist besser? A oder B?Raus damit
Nicht-funktionale Requirements alle beachtet
Klar B
Alles perfekt gebaut
Musterprojekt
Architektur durchdacht
![Page 18: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/18.jpg)
Den falschen Plan perfekt ausführen.
![Page 19: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/19.jpg)
Den falschen Plan perfekt ausführen.
![Page 20: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/20.jpg)
Den falschen Plan perfekt ausführen.
A - ~ 3 Tage (eigentlich sogar nur 1 Tag, aber ein bisschen schön sollte es doch sein) Auswertung
B - ~ 10 Wochen
![Page 21: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/21.jpg)
Den falschen Plan perfekt ausführen.
![Page 22: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/22.jpg)
Den falschen Plan perfekt ausführen.
Was ist besser? A oder B?Raus damit
Klar A
Weniger Zeit investiert
Geringere Kosten
![Page 23: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/23.jpg)
Den falschen Plan perfekt ausführen.
Eine kurze Geschichte der ZeitErfahrungsbericht
![Page 24: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/24.jpg)
Den falschen Plan perfekt ausführen.
So viel verschwendete ZeitErfahrungsbericht
Polaris: ca. 2 Jahre amilio: 2 Jahre Freizeit
![Page 25: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/25.jpg)
Den falschen Plan perfekt ausführen.
So viel verschwendete ZeitErfahrungsbericht
Jubii-Pages: ca. 2 Jahre abspielbar: 2 Jahre Freizeit, 3 Jahre GmbH bis zur Insolvenz
![Page 26: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/26.jpg)
Den falschen Plan perfekt ausführen.
FazitVision
Projekte schlagen fehl
Das Leben ist hart
![Page 27: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/27.jpg)
Den falschen Plan perfekt ausführen.
Ein paar Fakten
100.000
Technikgründungenpro Jahr in
Deutschland (KFW 2016)
1 von 10
Startups überleben das erste Jahr
80%
aller Features werden kaum oder gar nicht
verwendet(Chaos Report Standish
Group)
![Page 28: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/28.jpg)
Den falschen Plan perfekt ausführen.
Ist Qualität unnötig?
Nein, doch, ohhh.
Qualität
![Page 29: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/29.jpg)
Den falschen Plan perfekt ausführen.
Doing things rightDoing things
Doing the right thing
versus
![Page 30: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/30.jpg)
Den falschen Plan perfekt ausführen.
ThoughtlandDoing the right thing
If you are not embarrassed by the first version of your product, you’ve launched too late.
![Page 31: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/31.jpg)
Den falschen Plan perfekt ausführen.
Wie baut elbstack Software?Vision
Software muss nur den Anforderungen genügen
YAGNI - Prinzip
![Page 32: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/32.jpg)
Den falschen Plan perfekt ausführen.
Anforderungen definierenVision
Anforderungen mit Kunde formulieren
Anforderungen in Komponenten gliedern
Features pro Komponente definieren
![Page 33: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/33.jpg)
Den falschen Plan perfekt ausführen.
Anforderungen priorisieren - MVPVision
Welche Features müssen ins MVP*?
Tasks für Features definieren
*https://hackernoon.com/the-mvp-is-dead-long-live-the-rat-233d5d16ab02 (Riskiest Assumption Tests)
![Page 34: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/34.jpg)
Den falschen Plan perfekt ausführen.
Technologie (für MVP) festlegenVision
Was kann das Team?
Was kann das Team schnell lernen?
Was wird noch gebraucht für MVP?
![Page 35: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/35.jpg)
Den falschen Plan perfekt ausführen.
Kernkomponente(n) festlegenVision
Was sind Kernkomponenten?
Unit Tests für Kernkomponenten - Ist Dein Freund
![Page 36: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/36.jpg)
Den falschen Plan perfekt ausführen.
MVP umsetzen Vision
Möglichst einfach und schnell
“Dreckig” ist erlaubt! - Solange kein Core
Lean Testing - Ist Dein Freund
![Page 37: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/37.jpg)
Den falschen Plan perfekt ausführen.
MVP deployen und am Markt testen Vision
Möglichst so, dass man schnell Bugfixes einbauen kann
(Semi) automatisiertes Deployment - Ist Dein Freund
![Page 38: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/38.jpg)
Den falschen Plan perfekt ausführen.
Feedback einarbeiten - Nächste Iteration Vision
Und täglich grüßt das Murmeltier...
=> (Semi) automatisiertes Deployment - Ist Dein Freund
=> Unit Tests für Kernkomponenten - Ist Dein Freund
=> Lean Testing - Ist Dein Freund
![Page 39: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/39.jpg)
Den falschen Plan perfekt ausführen.
Und wenn es doch groß wird?!Vision
Refactorings
=> (Semi)automatisiertes Deployment - Ist Dein Freund
=> Unit Tests für Kernkomponenten - Ist Dein Freund
=> Lean Testing - Ist Dein Freund
![Page 40: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/40.jpg)
Den falschen Plan perfekt ausführen.
Wie sollte ich Software testen?Qualität
![Page 41: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/41.jpg)
Den falschen Plan perfekt ausführen.
Projekte im InternetQualität
![Page 42: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/42.jpg)
Den falschen Plan perfekt ausführen.
Was ist Qualität?Qualität
„Grad, in dem ein Satz inhärenter Merkmale eines Objekts Anforderungen erfüllt.
„Übereinstimmung von Leistungen mit Ansprüchen.“
Norm DIN EN ISO 9000:2015-11
Gablers Wirtschaftslexikon
![Page 43: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/43.jpg)
Den falschen Plan perfekt ausführen.
Was ist Risiko?Qualität
Risiko = Eintrittswahrscheinlichkeit * Kosten
![Page 44: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/44.jpg)
Den falschen Plan perfekt ausführen.
Wird mein Projekt ein Erfolg?Qualität
90% aller Startups scheitern
80% aller Features werde nicht genutzt
NEIN, dein Projekt wird kein Erfolg
![Page 45: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/45.jpg)
Den falschen Plan perfekt ausführen.
Was muss ich dann testen?Qualität
niente
nichts
nada
nothing
Na gut, vielleicht ein wenig.
![Page 46: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/46.jpg)
Den falschen Plan perfekt ausführen.
Testen muss schlank seinQualität
Lean Testing
Crowd TestingMonitoring based Testing
![Page 47: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/47.jpg)
Den falschen Plan perfekt ausführen.
Lean TestingLean Testing
Semantischer Fehler im Controller
Datenbankprobleme
Fehler im Template
Syntaktische Fehler im Controller
Bug in Bibliothek
Fehlender Content
HTTP-Status-Code != 200
Ursachen Symptome
![Page 48: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/48.jpg)
Den falschen Plan perfekt ausführen.
Nur was für Startups?Lean Testing
![Page 49: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/49.jpg)
Den falschen Plan perfekt ausführen.
LeankoalaLeankoala
www.leankoala.com
![Page 50: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/50.jpg)
Den falschen Plan perfekt ausführen.
Leankoala - 4 Schritte zum Test-SetupLeankoala
www.leankoala.com
www.bravo.de
Enter homepage url
1
Scanning for equivalency classes
2
65%
Scanning for 1.227 widgets
3
22%
Test Setup completed
we found 38 components
you are using 32 widgets
34 anomalies already found
4
Innovation // Alleinstellungsmerkmal
![Page 51: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/51.jpg)
Den falschen Plan perfekt ausführen.
FazitEnde
Doing the right thing before doing things right
Dein Projekt wird kein Erfolg! Wahrscheinlich.
![Page 52: Den falschen plan perfekt ausführen](https://reader034.vdokument.com/reader034/viewer/2022051404/5a65030b7f8b9ab5218b48b5/html5/thumbnails/52.jpg)
Den falschen Plan perfekt ausführen.
Kontaktiert uns.Kontakt
Nils [email protected]@leankoala
Mike [email protected]@elbstack