 So, steht, läuft, Video läuft, Video läuft auch, super. Ja, wir kommen zur letzten Session heute mit Heiko, der erzählt uns jetzt wie man Thiems und Pluck ins wenige schlechte entwickelt. Ich bin gespannt, bitte. Alles klar, vielen Dank. Also, ihr hört mich jetzt, ja? Ich, 1, 2, 3, 1, 2, 3, 1, 2, 3, Ah, ich muss, ich muss lauter reden, höre ich gerade. 1, 2, 3, 1, 2, 3, 4. Ja, also, falls ich leiser werden sollte oder zu schnell oder zu langsam oder heiser oder was auch immer, einfach kurz einwerfen. Wie auch immer, ja, ihr seid jetzt hier richtig bei meinem kleinen Vortrag, wie man Thiems und Pluck ins weniger schlecht entwickelt. Und, ja, ich weiß, wir hatten vorhin diese lustige Vorstellungsrunde, wir kennen uns ja jetzt alle schon und sind per du und so weiter, aber natürlich ganz kurz noch mal auch so dahin vielleicht. Irgendwie klappt heute gar nichts. Ach so, ich muss es auch noch einschalten. Na gut. Ich weiß, das will trotzdem nicht. Ich kann es auch so. Okay, also, dann prägt sich das besser ein. Meine Wenigkeit, ich heiße Heiko Marmou, bin auch unter diesem, wir heißen das Ding eigentlich nicht Hashtag, diesen Handel, bei Twitter erreichbar. Ansonsten, glaube ich, bin ich gar nicht mehr bei anderen Medien, sozialen Medien unterwegs. Egal. Ansonsten, ja, im Slack natürlich. Ansonsten, meine Wenigkeit, ich bin Web-Entwickler, komme aus Berlin, bin zwar kein richtiger Berliner, aber seit 1997 schon dort. WordPresser bin ich, wieso, weshalb, warum? Natürlich, ich habe mir halt irgendwann mal gefragt, okay, du musst deinen Marktwert verbessern und da habe ich mal geguckt, das war im Jahre 2008 oder 2009 irgendwie so, also schon eine Weile her. Und dann habe ich geguckt, habe ich zufällig gesehen, was so das meistverwendete Content Management System weltweit ist, weil ich Fronten-Entwickler bin und dann habe ich mich auf WordPress spezialisiert. Ich kenne aber WordPress seit 2006, da habe ich mein erstes Projekt damit umgesetzt. Und ansonsten, der WAPU, das ist so ein bisschen mein kleines Highlight, habe ich nicht gemacht, so nicht, aber ich war damals 2015 Initiator und Lead Organizer von dem WordCamp in Berlin und versuche mich auch ansonsten immer bei WordCamp so ein bisschen nützlich zu machen, wenn es auch mal mit Vorträgen und so weiter ist. Und ansonsten, ich blocke auch ein bisschen, also unter heikomamero.de, wenn man mail-at davor schreibt, kann man eine E-Mail schicken oder ansonsten könnt ihr dort Blockbeiträge von mir lesen, die sich natürlich irgendwie mit WordPress und Web-Entwicklung zu tun haben. Jo, das ist ja jetzt schon mehr als genug. Ach so, ich wollte eigentlich noch, das habe ich mir als Notiz, ich kann es jetzt gar nicht lesen, aber ich weiß es. Da hingeschrieben, vielleicht, manche Leute wundern sich über solche komischen Vorstellungen, die denken, Eitelkeit und so weiter. Also, so Leute wie ich, ich kann mir keine Namen merken, ich habe echtes Problem und ich brauche dann immer irgendwas, wo ich die zuordnen kann, so Geschichten. Also, wenn ihr so Einleitungen macht zum Vortrag, dann erzählt irgendwie eine Geschichte, macht ein Bild dazu und dann ist das für mich, dann erkenne ich euch in 100 Jahren immer noch wieder. Ansonsten seid ihr Schalle und Rausch, da ich nur das so am Rande. Ach, das geht ja nicht. Aber das geht. Wie man Teams und Plugins weniger schlecht entwickelt, ja, wie kommt es eigentlich dazu? Also, mein Auslöser war der, natürlich, es gab damals den Aufruf hier, Speaker gesucht und wer will was vortragen und so weiter. Normalerweise, weil ich so mehr so frontendlastig bin, ja, mache ich oder Performance, solche Geschichten sind eher so meins und ich hatte aber damals in der Zeit ja eine Anfrage von einem, von so einem kleinen privaten Seitenprojekt, was ich mal vor 2-3 Jahren entwickelt hatte und da wurde ich gebeten, das war so ein Add-on zu einem Plug-in, wurde ich gebeten, da noch eine Funktion hinzufügen, also das Plug-in oder das Add-on Tatsayendienst und war alles okay, aber ich wurde gebeten, da noch was dran zu machen. Und wie ich den Code aufgemacht habe, habe ich echt die Hände über den Kopf zusammengeschlagen, weil es war ja mein eigener Code, also es ist schon, dass man gerne natürlich über die Konkurrenz, über andere so ein bisschen lästert und sagt, ah, was hat der oder die gemacht und es war mein eigener Code und es war echt so ein bisschen eine Mischung ausbeschämend und wo ich gedacht habe, was soll das, also warum hast du, also ich habe den gar nicht verstanden, ich habe den einfach nicht verstanden, da war ein Funktion, da war ein PHP Funktion, an die konnte ich mich gar nicht erinnern, also und da musste ich dann selber erst mal unter PHP Net nachgucken und so weiter und das war dann so ein bisschen, wo ich gedacht habe, nee, ich mache jetzt nichts über was weiß ich, über CSS-Sachen oder irgendwie so Teams-Entwicklungen, ich gucke mal so ein bisschen, ich muss mich selber verbessern und andere müssen sich genauso verbessern. Also das war so mein Auslöser für das Ganze, nicht? Und ja, also nicht nur ich, ihr seid auch nicht besser. Eigentlich an der Stelle, wenn man so Vorträge macht, ich habe jetzt heute noch keinen, weil ich noch zu aufgeregt war und mich selber noch ein bisschen sammeln musste, normalerweise bei Vorträgen gibt es immer so das berühmte Hände hoch spielen, Hände hoch, wer hat schon mal irgendwie bla, bla oder wer kann das und so weiter und so fort. Können wir uns eigentlich klemmen, mein Hände hoch, Frage wäre gewesen, wer hat noch keinen Fehler gemacht oder wer macht Fehler, ist klar, brauchen wir alles nicht. Wir wissen auch, ja, dass wir also als Entwickler, Entwicklerinnen produzieren wir permanent Fehler. Es wird, selbst wenn ihr die tollsten Corrifhen, die es hier ja auch gibt, auf dem Camp kann man sie treffen und wenn ihr den mal über die Schulter schaut, also am Sonntag, am Sonntag ist, glaube ich, unser Contributor Day, sehr gute Gelegenheit, mal bei anderen auf dem Monitor, auf die Tastatur zu gucken, wie die das machen oder was sie machen und dann wird ihr genauso sehen, dass sie immer noch Fehler machen und genauso noch irgendwie keine Ahnung mal bei PAPnet oder wo immer nachgucken müssen, wie war jetzt die Funktion oder welche Sonntagsblabla, also das ist immer da. Nur vielleicht ist es etwas anders, wie diese Leute mit Fehlern beziehungsweise wohlweislich damit umgehen, wie ihr, ja, ihre Arbeitsweise vielleicht ein bisschen differenziert zu der Unserigen. Okay, alles ist gut. Und das ist das Warum, also warum soll ich das machen und na klar und da habe ich mal nur so im Schnelldurchlauf mal so die Klassiker rausgesucht, die wir alle kennen, weil genau darum nicht, also solche Sachen passieren. Den wohlgemerkt musste ich erst nachschlagen, den habe ich schon lange nicht gehabt, also das wusste ich dann gar nicht mehr, wie man den überhaupt hinkriegt. Das ist, glaube ich, der schlimmste von allen. Also ich habe irgendetwas gemacht auf der Seite, auf dem Plug-in oder was auch immer und alles ist gelöscht und irgendwie ich komme nicht mehr ran oder ich habe die Datenbank zerschossen und es ist kein Backup mehr da. Was fange ich an, also das ist, glaube ich, so der härteste Fall, zumindest für mich so oder das auch immer wieder gern genommen, bei mir funktioniert es, der Kunde sagt, nee, bei mir funktioniert es aber nicht. Also vorhin bei mir im stillen Kämmerlein hat das alles funktioniert und der Entwickler sagt oder irgendwelche anderen Leute sagen, ne, bei mir auf dem Monitor sieht das gut aus und der andere hat es vielleicht auf dem Smartphone und der hat nicht gecheckt auf dem Smartphone, ob es da auch funktioniert und so weiter. Dann gibt es auch noch so eine andere Sache, was wollte der Dichter uns damit sagen, ja, das ist so Kot. Ich sage mal, das ist ein echtes Skript, das werden wir nachher, das wird uns nachher auch noch mal begegnen, aber eben da, das ist jetzt so die schlechte Variante, also das funktioniert, das haut auch alles hin, aber nicht, wenn ihr zum ersten Mal, wenn ihr diese bearbeiten wollt, ihr macht das Ding auf, keiner weiß, was es ist. Ich habe selber geschrieben, ich müsste mich selber auch erstmal Zeile für Zeile durchfützeln und es braucht einfach lange, um das zu verstehen, ja. Noch eine andere Geschichte. Ja, Fehler und Warnungen, irgendwelche Sachen, ich habe da keine Simikole und einfach rausgenommen, dann war das Ding da. Das war komischerweise, wo ich gedacht habe, okay, hier Screenshots zu machen ist eigentlich am einfachsten, ich hätte es in der Woche auf der Arbeit irgendwie sehr gut machen können, aber dann, als ich selber so einen Fehler erzeugen wollte, ich habe immer nur so eine langweiligen, wie jetzt hier zu sehen, mal, also für euch, also wenn ihr mal irgendwie coole Fehler habt oder wisst, wie man so eine schöne, richtig harte Fehlermeldung, dass die ganze Seite irgendwie alles voll ist, könnte mir gerne schicken, also das möchte ich gerne, weil ich habe, ich habe noch so für andere Ideen, für andere Vorträge, da kann ich das gut gebrauchen und es war irgendwie, ja genau, mein Twitter-Account. Und natürlich Larson Atleist ist bisschen ähnlich wie der andere, du bist hässlich, also Zwinker, Zwinker natürlich, so Aclify Code, natürlich der ist in der Ausgabe, also auf dem Server minifiziert und aklifiziert, ganz wichtig, also ist richtig, ja, das ist kein Fehler in dem Sinne, aber, ja, so den zu debacken geht auch nicht so schön, also ist auch nicht so lustig, so was anzufassen. Also das sind so alles, ich sage mal so, die Bandbreite von den Sachen, die ich hier gerne, oder über die ich mir einen Kopf gemacht habe, die mir aufgefallen sind und wo ich gesagt habe, okay, da müssen wir was tun, wir müssen die Welt retten, es muss besser werden, ja, also solche Sachen irgendwie zu vermeiden im Projekt und was man da alles tun kann. Achso, dann habe ich noch anfangs einen Aspekt noch vergessen, ich war früher, also bis letzten Jahres, knapp vor einem Jahr, war ich eine ganze Weile als Freelancer unterwegs, also so richtig so eine One-Man-Show, zu Hause mein Homeoffice gehabt und habe für diverse Kunden halt meistens Agenturen zugearbeitet, habe Frontend-Sachen gemacht oder WordPress Integration und da war das alles noch relativ einfach. Seit einem Jahr bin ich in einer Agentur und ich bin auch nicht alleine, ich habe einen Kollegen, wir arbeiten zu zweit beziehungsweise noch ein Freelancer, sind wir zu dritt und da habe ich dann gemerkt, im Team ist das ganze noch mal hoch 10, also dann wird das alles noch viel, wie soll ich es sagen, aufwendiger, also wenn nur ein Entwickler seinen eigenen Code nicht lesen kann und dann okay, das kriegt er dann irgendwie noch hin, aber wenn dann ein anderer Entwickler kommt, aber ich greife vor, dann wird es auch noch mal spannend. So, ich muss jetzt immer so ein bisschen im Blindflug, weil das bei mir hier unten nicht weitergeht und ich habe für mich beziehungsweise für uns im Team drei Aspekte für weniger schlechtes entwickeln oder weniger schlechtes programmieren, sozusagen herausgearbeitet, das ist einfach von mir mehr oder weniger willkürlich hat sich aus unseren Arbeitsumgebungen zu ergeben, also diese drei Aspekte sicher, verständlich und fehlerfrei. Nach diesen Aspekten versuchen wir, so gut es geht, unsere Entwicklung voranzutreiben. So wird es weniger schlecht, also sicher, was meine ich damit? Was will ich damit sagen? Also sicher heißt vor allen Dingen zuallererst Backup, alles und alles und immer und immer wieder Backup. Ich zeige nachher noch ein paar, ein Beispiel, es reicht nicht, sich irgendein tolles Backup-Tool Plugin zu installieren, was einmal am Tag, einmal die Woche irgendwie Dateien und so weiter und so fort. Wir reden hier von Entwicklung. Wir reden hier davon, wo laufende Prozesse sozusagen, da muss ich eigentlich permanent Backups ziehen. Also jetzt nicht so diese, was man so als normale Bloggerin oder Blogger vielleicht für sich einmal im Monat macht, sondern hier geht es um Entwicklung. Also Backups ständig vorrätig zu haben, aktuell zu sein. Es geht vor allen Dingen darum getrennte Umgebung. Das meint, also wir haben auf der einen Seite den Live-Server, da unsere Website schön für alle zu sehen ist. Wir haben auf der anderen Seite unseren Entwicklungs-Server, also da wo wir entwickeln, lokal entwickeln und wir haben vielleicht noch ein Test-Server, also da wo der Kunde oder wir selber im Team untereinander dann nochmal drüber gucken können, wo Abnahmen gemacht werden. Also man kann das noch feiner untergliedern. Also so diese drei, das reicht eigentlich schon, das ist schon kompliziert dann wieder genug, das zu zu zu zu zu händeln. Damit natürlich zusammenhängt Virtualisierung, sprich wir haben virtuelle Entwicklungsumgebung. Also im einen oder in unserem Fall ist das Docker damit arbeiten, glaube ich wohl wahrscheinlich auch die meisten Docker oder Vagrant ist so, das was man nimmt. Und dann habe ich noch ein Faktor, der ist, wie gesagt speziell eigentlich bei uns, hätte ich gedacht, aber dann habe ich sich gezeigt, der ist eigentlich überall vorhanden und hat ein bisschen was ist, sozusagen kommt mehr aus dem Projektmanagement. Das ist der Truck Faktor, das ist nämlich, also ich weiß nicht, ich kenne dir den Truck Faktor, nee, also wie gesagt kommt aus dem Projektmanagement eigentlich und sagt bzw. es ist so eine so eine Faustregel, wie viel Member, also wie viele Mitarbeiter aus einem Projektteam, aus einem Arbeitsteam dürfen oder können von einem Truck, von einem Laster überfahren werden, bis dieses Projekt nicht mehr funktioniert, also bis dieses Projekt nicht mehr weiterentwickelt werden kann. Und je nach Zielweise Truck Faktor 1 ist leider der Standard und ist aber das Schlimmste, also wir dürfen niemals Truck Faktor 1, also das heißt, wenn einer überfahren wird, ist das Projekt gestorben. Das müssen wir auch achten, also das ist weniger ein technischer Aspekt als viel mehr so ein Projektmanagement und Personalaspekt. Der ganz wesentlich ist, der zum Beispiel, weil ich sagte, ich habe ja damals gewechselt, ich bin dann, habe dann irgendwann meinen Kunden gesagt, ja hier Stichtag X und ich bin nicht mehr da, dann ist für die auch erst mal die Welt zusammengebrochen, weil ja, wer macht es dann weiter? Und gerade Entwickler, Entwicklerinnen ist jetzt nicht unbedingt das, was man beim Arbeitsamt, wo die Schlange stehen, das den Job finden, sondern das sind eigentlich die, die man permanent sucht. Und da hatte ich das Problem einfach gehabt, dass dann die Kunden, ja, kannst du nicht noch irgendwie und nebenher und irgendwie das weitermachen ist? Das tut mir leid. Und dann irgendwie hatten sie, also zumindest für mein größtes Projekt, da gab es dann jemanden, der das übernehmen konnte und dem das wiederum zu übergeben, dass der dann auch weitermachen kann und so weiter, das ist ganz wesentlich. Also da ist dann so Dokumentation, solche Sachen spielen da eine ganz wesentliche Rolle. Und ja, ich habe mich auch, also es gibt noch diese anderen beiden, verständlich, also was Kommentare, Dokumentation ist klar, dann wieder so mehr technische Sachen, Linting, Formatting und Coding Standard haben wir vorhin auch schon, ich weiß es zumindest aus dem Zeitplan, ich war zu aufgeregt, mich dort mit reinzusetzen, gab es ja schon einen Vortrag und es gibt auch noch fehlerfrei, das ist dann sozusagen das eigentliche sozusagen der Kern, dass man eben richtig programmiert, dass man sich an bestimmte, bin ich zu laut zu leise. Linting ist ja so eine Heilung sozusagen, also dass du vielleicht deinen Code irgendwie, wie soll ich das erklären, dass du bestimmte Regeln nicht eingehalten hast und dieses Linting guckt, irgendwie ja ist jetzt die Klammer geschlossen, sind jetzt überall, mal hast du vielleicht doppelte Gänsefüßchen, mal nur einfache Gänsefüßchen, ist das so alles ordentlich gemacht wird. Wo war ich? Fehlerfrei, ja gut, da geht es um so Sachen wie Debug-Mode, also dass ich eben darauf achte natürlich, wenn ich lokal entwickeln muss, der eingeschalten sein im WordPress, wenn ich den auf dem Test beziehungsweise auf dem Live-Server habe, muss das raus sein, wo kann ich das alles, wo kann ich debuggen selber, das sind so Konsole im Browser oder im Terminal, ich kann irgendwelche Logs gucken, ich habe die Code-Sniffer, sorry das gehört eigentlich gar nicht mit dabei, W3C, also ich hatte ursprünglich noch eine Bibliothek, wo man dann so, also so eine Linkliste, wo man danach gucken kann und da sollte eigentlich W3C der Validator mit rein und diese ganzen Sachen oben kann man sich eigentlich klemmen, weil eigentlich ist dieses unten Automatisierung ganz gut, je mehr wir unseren Arbeitsprozess automatisieren können, das heißt je mehr wir, ja zum Beispiel jedes Mal, wenn ich speichere, so habe ich das bei mir eingerichtet, jedes Mal wenn ich speichere, läuft dann eben der Sniffer durch und checkt okay ist alles in Ordnung beziehungsweise wird der Code ordentlich vernünftig formatiert oder was ich zum Beispiel, ich bin so ein komischer Typ, ich muss mein CSS, meine Rules, die müssen alle alphabetisch geordnet sein, auch wenn das nur drei sind, ich kann das sonst, ich komme durcheinander und ich brauche dann so etwas, was mir das dann einfach automatisch alphabetisch sortiert, und solche Kleinigkeiten, die machen einen oder können mir das Leben zur Hölle machen, wenn ich die nicht habe und die baue ich ein und das ist aber alles automatisiert, also das macht auch keinen Sinn, bestimmte Dinge halt ja irgendein Task dafür zu haben und dann muss ich das jedes Mal anklicken, sondern das muss einfach im Hintergrund immer mitlaufen, wenn ich bestimmte, ja wenn ich speichere zum Beispiel, dass das dann immer ausgeführt wird oder zum Beispiel, was mir jetzt gerade noch dazu einfällt mit diesem Aglifying, was wir vorhin hatten und minifizieren, natürlich ist das dann so, sobald ich speichere, habe ich eben, also mein Entwicklungs-CSS und ja, was kript, ist eben also an-aclified, es ist, wie heißt das, beautified und es ist irgendwie, also es ist schön formatiert und wenn ich es dann rausschicke, natürlich dann möchte ich das komprimiert haben und aklifiziert haben und möchte das aber nicht von Hand machen müssen und möchte nicht dran denken müssen, wenn ich jetzt mein Code irgendwie, wenn er soweit fertig ist, lokal, jetzt spiele ich ihn hoch, dann soll der automatisch, soll der minifizierte CSS hochgespielt werden und dann muss aber auch der Link auf die minifizierte CSS stimmen, sozusagen, also diese ganzen Regeln, das muss man automatisieren, weil sonst, ja gibt es manchmal, werden manche Codes dann nicht oder manche Styles nicht unbedingt geladen und sie funktionieren auf dem lokalen, aber nicht auf dem Dings, weil da nicht auf Minify oder weil auf Minify hingewiesen wird, verlinkt wird, aber Minify gar nicht eingespielt ist und so weiter, also da gibt es so einiges, so und ich will, ich will gar nicht so sehr jetzt von solchen, also weiter jetzt über diese Aspekte, wie gesagt, das sind nur von mir selber gefunden Aspekte, also vielleicht noch ein wichtiger Hinweis, wie kommt man dazu, wie entwickelt man so etwas, wie macht man so eine gewisse Struktur, was das Wichtigste, was für mich schon aus den alten Projekten und jetzt gerade, wo wir mit unserem Mini drei People Team da irgendwie zusammenarbeiten, ist immer und immer wieder, ich nenne das Manöver-Cut-Kritik, also wir haben sowohl tägliche Meetups, wo wir uns zusammensetzen, wo wir stand der Ding, so bla bla, und dann haben wir bestimmte, also wie heißt das, Meistons, Meilen, also wo wir dann sagen, okay, jetzt habe ich eine, irgendeine Funktionalität ist jetzt abgeschlossen, jetzt haben wir das irgendwie gemacht, das keine Ahnung, Passwort oder Lock-In-Fenster ist jetzt fertig, alles klar, Abnahme, oh das funktioniert aber nicht, weil und dann machen wir Manöver-Kritik dazu, das heißt, wir schreiben wirklich, was lief, was lief da nicht so gut, was war schlecht an dem Code, was haben wir da irgendwie verpatzt, und das wird dann aufgeschrieben, da gibt es noch eine kleine Liste und am Ende nimmt man sich sozusagen, ja, wir hatten das vorhin, man meditiert darüber, also man denkt darüber, was kann ich da jetzt tun, also erst mal, wo passt das hin, in welche Aspekte, wir haben die ja schon, wo passt das rein und was sind so die Gegenmaßnahmen, wie kann man das besser verhindern in der Zukunft, und dann wächst das so, dann kriegt man so eine, für sich so einen kleinen, ja, wie soll ich sagen, eben diese drei Aspekte, so eine kleine Struktur in seine Arbeit rein, ansonsten sind wir immer nur, arbeiten wir immer nur so runter, runter, runter und da können wir uns nicht verbessern, beziehungsweise unser Code kann sich da nicht unbedingt verbessern. So, wie wird das weniger schlecht, also was können wir tun? Vielleicht ganz kurz, weil ich habe ein bisschen schlechtes Gewissen tatsächlich. Themes und Plugins weniger schlecht programmieren ist leider nicht auf meinen Mist gewachsen, also ich habe diesen tollen Titel oder ich habe den so ein bisschen übernommen aus einem sehr, sehr guten Buch, wie ist weniger schlecht oder weniger schlecht programmieren, soll jetzt keine Werbung sein, aber ich habe es trotzdem gesagt, ich verdiene da nichts dran, weniger schlecht programmieren, wo noch viel detaillierter auf solche ganzen Sachen eingegangen wird und wo aber auch immer gezeigt wird, wir werden nie diesen Punkt erreichen, wo wir sozusagen 100 Prozent fehlerfrei leben. Der ist nicht möglich, der ist nicht erreichbar. Zurück zum Punkt, also stellt euch vor, ihr habt ein Kunden mit einem Webrelaunch-Projekt und müsst dafür ein neues Team erstellen, nur mal so als Beispiel, als Gedankenspiel genau und eigentlich das, was wir als Webentwickler ja normalerweise haben oder ihr habt ein Plug-in oder ihr seid irgendwie keine Ahnung, ihr seid im Core Team vielleicht, müsst ihr direkt selber am WordPress was machen, also ihr seid irgendwie in so einem Projekt drinne, wo es da irgendetwas zu erstellen gibt, soweit zu gut, aber das reicht noch nicht und dann kommt noch mitten im Projekt ein Entwickler hinzu, der soll er mitarbeiten, weil vielleicht, es hat sich gezeigt, so war das bei uns, ja das Projekt wurde immer größer, also das, wie soll ich sagen, der Einkauf war schneller als die Entwicklung und hat da ein bisschen zu viel an Land gezogen und dann haben wir gesehen, okay wir können bestimmte Sachen gar nicht, also ich kann das gar nicht alleine entwickeln, ich schaffe das nicht in der Zeit und wie nun her, so und dann kommt auch noch jemand dahin zu. Was dann? Ein echt gefegtes Beispiel, also das ist sozusagen Stand der Dinge, der sich bei uns dadurch dann so ein bisschen im Team in der Agentur entwickelt hat und da jetzt muss ich allerdings hier so ein bisschen umschalten und keine Angst, ich will jetzt hier nicht live coden oder irgendetwas, ich will einfach nur etwas zeigen, links oder rechts, ja das war es noch nicht, so, also es geht nur um ganz einfache Dinge, ganz einfache Dinge, das heißt es geht einfach nur um so eine grundsätzliche Struktur erstmal, wir haben das so eingeführt, all unsere Projekte liegen in einem Projektordner, also was ihr seht, das ist einfach nur ein Dateimanager, ganz normaler Dateimanager und bei mir liegt er jetzt halt irgendwo und da gibt es ein Ordner Projects, den gibt es bei all, also alle Entwickler von uns, naja gut wir drei Peoples haben diesen Ordner Projects und der ist voll, also bei mir ist der voll, das ist jetzt hier nur auf meiner Reisenschreibmaschine, da habe ich jetzt mal so ein Fake Projekt angelegt, ein tolles Projekt und da gibt es dann eben Projekt 1, Projekt 2, Projekt 3 und so weiter und so fort, also jedes Projekt ist immer ein eigener Folder und in jeden von diesen eigenen Foldern finden wir mehr oder weniger denselben Aufbau, also da gibt es zum einen oben natürlich, so jetzt kann ich das Ding hier auch mal, nicht mal das geht, das habe ich gerade gestern neu gekauft, mensch, also kann doch nicht schon die Batterie, sag es nicht, also das ist im Prinzip immer so aufgebaut, da können drei, vier Folder mehr sein, die können auch ein bisschen anders heißen, ich will nur das grundsätzlich erklären, also es gibt einen Folder hier, Docker ist selbsterklärend, da ist die Entwicklungsumgebung drin, in unserem Fall eben Docker und die heißt dann auch immer Docker, also das heißt dann immer so, dann gibt es ein Folder Stuff, da ist halt irgendwie Kram drinne, so unwichtiges Zeug wie Verträge oder Timelines oder so, also Meta-Infos zum Projekt, wir haben auch ein Projektmanagement Tool, so ist es nicht, aber für die Entwicklung, für uns sind so die wichtigen Sachen drinne oder was weiß ich, das sind irgendwelche ersten Entwürfe, Screenshots vom Design oder so, irgendwie so Kram einfach nur drinne, und dann das eigentlich Wesentliche ist, es gibt, wenn es ein Theme ist, dann gibt es eben den Ordner Theme, also es heißt dann so wie der Theme Name eben heißt, also Musterbeispiel Theme.de oder irgendwas, dann heißt das Ding eben Musterbeispiel Theme oder so, ich habe es jetzt einfach nur Theme genannt und das haben wir immer gleich, also egal welches Projekt ich aufmache, ob bei mir, ob beim Kollegen, beim anderen Kollegen, das sieht immer so aus, das ist immer dieselbe Struktur, da kann ich sofort irgendein Projekt nehmen, kann mir okay, wo sind jetzt die Meta-Information, also wo finde ich jetzt hier, wer ist der Ansprechpartner vom Kunden oder so, bla bla, und am wichtigsten, wo finde ich dann jetzt hier mein Code, so und dann geht man halt mal rein und das hier ist ja nix, das ist einfach ein Theme, das ist einfach das Theme Verzeichnis, was man halt so kennt, das habe ich mir jetzt einfach mal Copy und Paste aus einem, ich weiß gar nicht aktuellen Projekt rausgenommen, ich habe es neutralisiert, man sieht nicht welches das ist, aber da sind so diese ganzen Sachen drinne, die wir zum entwickeln brauchen, normalerweise haben wir diesen Folder genau diesen Folder haben wir dann auch über Git, also sprich Bitbucket abgelegt, da können wir das dann immer direkt reinziehen, die anderen Folder, die machen wir nur einmal, das brauchen wir nicht so oft und eine ganz wichtige Sache ist, also hier gibt es dann auch einen Folder, einen Ordner Stuff, da ist dann jetzt das drin, was jetzt wirklich wichtig ist für unsere Geschichten, da ist zum Beispiel der Anderscore, also das Original Anderscore-Ding drinne und was man halt irgendwie was sich halt so ansammelt, irgendwie was man so irgendwie mal braucht und wir haben jetzt eine Sache, auf die ich mal gerne eingehen möchte, ich brauche echt eine Brille, ich sag es euch, so, gehen wir mal bis hier, also ich habe da jetzt, da sind ein paar Skripte drinne, also nur, also SH und so weiter, ne, also Skripte, einfach so ausführbare Dateien, ich weiß jetzt nicht, wie das, wie das Niveau ist, aber egal, nur dass ihr, dass ihr, dass ihr versteht, also es geht jetzt nicht darum, dass ihr das so nachmachen müsst, es geht jetzt nur um das Prinzip, was wir haben, also wir haben zum Beispiel dieses Backup Problem, also in dem, wo ich das jetzt rausgezogen habe, aus dem Projekt ist es so, wie gesagt, es ist ein Relounge, eine sehr große Website mit einer Redaktion dranne, da wird permanent Code, nicht Code Content produziert, so und die kriegen ein Relounge, sprich eben, die kriegen ein neues Theme und irgendwelche Plugins und so weiter und da ist es halt so, wir müssen darauf achten, also irgendwann muss ja mal, es gibt Tag X, der wäre jetzt am Mittwoch gewesen und wird sein vermutlich nächsten Mittwoch, also ich habe gerade dieses, dieser Vortrag ist fast noch mein geringstes Problem hier irgendwie, jedenfalls, also wir müssen switchen, also das heißt, wir schalten um von dem alten Theme auf das neue Theme, so, nun ist es aber so, das ist nicht nur das Theme, das könnt ihr euch vorstellen, das ist eigentlich ein komplett neuer Website, wir übernehmen aus der Datenbank bestimmte Daten und der ganze Rest wird eigentlich komplett neu gemacht, das heißt aber am Ende, dass wir jetzt gerade den Zustand haben, dass wir auf der einen Seite, wir haben einen Test-Server, also wo der Kunde auch mit Testet und live drauf guckt und der Kunde hat noch seinen alten Original-Server und jetzt müsst ihr irgendwie die Daten zusammenkriegen, das ist nicht ganz simpel, das ist nicht so ganz easy und ja, was wir da machen ist, also wir haben jetzt sozusagen ein Freeze gemacht von der Seite und die Redakteure müssen ab, wenn sie Montag wieder auf Arbeit kommen, müssen tatsächlich ihren Content zweimal einpflegen, bis dahin haben wir das immer noch so hinbekommen, aber jetzt müssen sie das leider zweimal einpflegen, weil ich brauche bestimmten Code, den ich für Funktionalitäten zum Testen erst jetzt reinbekomme, weil es da was Neues gab, aber und um das, ich erzähle so viel um den heißen Brei, um das hinzubekommen, haben wir halt solche Skripte und dieses eine Skript hier ist das, was wir vorhin auch so hässlich gesehen haben, jetzt mal in einem anderen Beispiel in etwas schöner, also dieses Skript macht nichts weiter als zwei Dinge, ich habe es oben steht das ja auch alles, sorry, also ich kann es jetzt hier nicht, es ist auch, also oben ist einfach nur so ein bisschen Erklärung, was das für ein Skript ist, also da steht einfach nur, dass das Skript zwei Funktionen aus, also zwei Aufgaben erledigt sozusagen, zum einen exportiert es mir die Datenbank von dem, also von dem Live Server, exportiert die Daten vom Live Server, macht einen Export und zieht diesen Datenbankdump runter, also hier auf meinen lokalen Rechner und am Ende macht es nichts weiter und zieht dann von meinem von meinem Live Umgebung auch nochmal ein Backup, damit ich da auch nochmal eine Sicherheit habe, falls da irgendwie dazwischen was ist und dann gibt es eigentlich nur noch hier unten so ein Replace, also pass ich einfach nur an, das ist die URL von der original Seite, also von der Live Seite mit der URL von meiner Testseite, das macht das und dann habe ich sozusagen, wenn das Skript hier durchgelaufen ist, habe ich auf meinem lokalen genau denselben Datenbank stand wie die Redakteure da auf ihrem Live Server und Datenbank ist das eine, na klar, wir brauchen ja auch Dateien manchmal, also in dem Fall brauchen wir Dateien, also das ist hier sehr spezifisch, hier brauchen wir zum Beispiel nur die Sachen aus dem Uploads Verzeichnis, also ich könnte jetzt hier noch mehr nehmen, aber hier ist noch so ein kleines Skript, also eine kleine Befehl, Ersink der nichts weiter macht als auf dem Live Server in diesem Uploads Verzeichnis nachzugucken, was es so an neuen Dateien gibt und wenn es da was Neues gibt und so weiter, dann lade mir das runter auf meinen, hier auf meinen lokalen Rechner, damit ich auch nicht nur die Datenbank eins zu eins in derselben Version habe, sondern eben auch die, in dem Fall hier nur das Uploads Verzeichnis, das ist jetzt für unseren spezifischen Fall ausreichend, das könnte man, also dieses Skript hier wird immer dann angestoßen von uns, wenn wir so ein Milestone, also wenn wir so eine bestimmte Aufgabe erledigt haben, dann ziehen wir uns immer jedes Mal den aktuellen Stand runter und ja, sind dann up to date und erschlagen da mehrere Fliegen mit einer Klappe, also dass wir wirklich sagen können, okay, zum Beispiel hatten wir neulich ein Problem, da gab es so Tierreihenfolgen, ich glaube vorhin gab es auch irgendwas mit Date irgendwie, so Tierreihenfolgen und die stimmten irgendwie nicht auf dem Live Server und bei dem Kollegen, der das Projekt, also der den Milestone hatte, stimmte das aber, bis dann rauskam, ja, er hatte nämlich ihm nicht den, des Backup gezogen, er war nicht up to date und dann hat er das, und dann hat er das, hat sich der Fehler dann erst mit dieser bestimmten Konstellation, die der Kunde, also die Redaktion angelegt hatte, hat sich das erst gezeigt, also das ist echt wichtig, so was hier, ja, live zu halten, also so was sich runter zu laden. Also das ist so, ist einmal, ja, unser minimal Konsens, den wir in der Redaktion haben, wir sind drei unterschiedliche Typen als Entwickler, ja, also wir sind gar nicht gleich, wir, nicht nur sprachlich, der eine Kollege ist Australier, also ganz anderen geht dann ins Bett, wenn wir aufstehen und umgekehrt, also solche Sachen bis hin zu, ja, was weiß ich, jeder hat so eine andere Art zu programmieren, aber einfach aufgrund dass wir so bestimmte Regeln, bestimmte Arbeitsprozesse sozusagen, Arbeitsabläufe für uns quasi als Konvention festgelegt haben, läuft das glatt. Ich hatte gerade mit diesen australischen Kollegen im Vorfeld, als ich da angefangen habe, der war schon vor mir dort als Freelancer, Projekte übernommen und das war alles recht, naja, schwierig halt, so wie das ist, wenn zwei verschiedene Entwickler oder zwei verschiedene Typen irgendwie da miteinander zu tun haben, man muss sich da irgendwie zusammenfinden und wenn man aber so einen gemeinsamen Konsens hat, okay, man sagt so, ist das aufgebaut, wir benutzen halt disoniene Technologien, wir nehmen halt, was weiß ich, solche und solche Automatisierungstools und so weiter und wir haben alle dieselben, also wenn wir jetzt hier, vielleicht kann ich das noch kurz zeigen, das sieht man nicht, bitte, ja, passt es gerade? Es passt immer. Es passt eher zu den Redaktionsvorhör, du hast gemeint, dass sie das momentan zweimal einpflegen müssen, was ist denn mit Kommentaren? Ja, Kommentare liegen ja auch in der Datenbank. Also die könnt ihr auch synchronisieren mit diesen Sachen? Ja, ja, natürlich, wir machen einen kompletten Datenbankdamp, also wir nehmen alles restlos runter, was die auf der einen Seite haben und packen das dann halt bei uns bzw. es muss dann noch mal aufbereitet werden, bei uns hin, aber wir haben keine Kommentare, da geht es nur um Beiträge und Pressemitteilung und so was. Warum fliegen Sie das dann zweimal ein, wenn ihr das so synchronisiert? Weil wir auf dem Test-Server sozusagen die neue Seite haben, die bestimmte, also die alte Seite ist nicht einfach nur, da ist nicht nur ein neues Theme dahinter, da ist eine andere Struktur dahinter, da sind auch andere, wie soll ich sagen, ja, Features, also Möglichkeiten dahinter, also das hat noch mal eine andere und es muss auch abgenommen werden und so weiter, also es hat schon viele gute Gründe, so was noch mal getrennt zu haben. Wollte ich hin, ich wollte noch was zeigen, genau, also so ein, wir müssen und genau diesen Ordner zum Beispiel, den haben wir, also hat jeder von uns, genau den Stand, weil der liegt bei GitHub, da wird entwickelt, wie machen wir das, wir haben uns auf Branches geeinigt, also jeder zieht, jeder hat einen eigenen Brunch, entwickelt dort seine, seine Funktion oder was auch immer zu tun ist, wir haben und wenn er fertig ist, wird das hochgeladen und ich bin der Master sozusagen, also ich fasse dann Merge dann diese ganzen Branches in den Haupt, in den Master Brunch rein und der geht dann raus sozusagen, also ich bin quasi da so ein bisschen das Nadelört und ich bin der Truck Faktor, das ist nämlich auch nicht so gut, aber das ist zur Zeit so das, was wir machen, also das ist auch kein, kein fester Prozess, das muss sich weiter entwickeln, aber das wird sich weiter entwickeln und natürlich, ich habe noch fünf Minuten, ich mache es, also ich bin gerne bereit, also wenn ihr seht oder wenn Mensch bei uns, wir machen das ganz anders und es geht viel besser oder irgendwie bla, oder irgendwie so Sachen habt, um gerne, also ich bin für alles offen und jeden Tipp dankbar, wie ich oder wie wir uns da auch weiterentwickeln können, weil auch unser Code ist nach wie vor schlecht. Okay, ich wollte ansonsten nur kurz zeigen, also was wir noch so haben wegen der Automatisierung, das ist auch so ein spezielles Thema von mir, was wir halt so machen ist, dass über ja diese Skripte, also nichts weiter, wer Grunt oder Galb oder sowas kennt solche Taskrunner oder wir hier benutzen NPM, das habe ich eingeführt und dann gibt es halt hier unten diese, also das was hier oben ist, wer das nicht kennt, das sind halt irgendwelche, ja irgendwelche, ich sage mal Plugins, also irgendwelche Funktionalitäten, die ich da eingebunden habe und hier unten habe ich definiert irgendwelche Skripte, also irgendwelche Task, irgendwelche Ausführungen und zum Beispiel gibt es dann eben diesen ein, wenn ich das, wenn ich den Editor anmache, meine Entwicklungsumgebung, der wird dann immer gestartet, Watch und der passt dann eben auf, sobald da irgendwas gespeichert wird, führt er dann immer irgendwelche Sachen halt aus und die sind dann auch miteinander verkettert und so weiter und das benutzen alle Kollegen gleich, also das haben wir, da haben wir auch denselben Stand und wenn jetzt jemand sagt na, ich möchte aber lieber, also in meinem Fall zum Beispiel, ich möchte lieber alphabetisch geordnet haben, die Rules und der Nächste sagt ja, ich möchte es aber in der umgekehrten Reihenfolge haben, da muss man sich einigen. Also wir machen das schon so ganz hart, dass wirklich jeder Xakt dieselbe hat, deswegen ist das bei uns auch alles in der, im Repositority, im Repositori, drinnen, dass wir da auch nicht unterschiedliche Varianten haben. Was wir unterschiedlich allerdings haben, ist, dass jeder darf seine Entwicklungsumgebung, also seine Formatierung, die er selber irgendwie anwenden möchte, die kann jeder selber machen, also der eine Kollege legt da ganz großen Wert, der kommt eigentlich aus dem C++ irgendwie Programmierung, da kenne ich mich gar nicht aus, aber da scheint das irgendwie ein bisschen anders zu sein und der bevorzugt eine andere Formatierung und ich für meinen Teil, ich mache das dann einfach sozusagen, halte mich, versuche mich an die, an die Code Standards vom WordPress zu halten. Ja, ich glaube, das reicht, ich hatte eigentlich noch andere Punkte, aber die will ich noch auf anreißen, würde ich sagen, ich bin soweit am Ende angelangt. Bedanke mich und ja, haben wir noch eine Frage oder? Hat dir mal noch eine Frage, also ein bisschen Zeit haben wir noch oder gar keine Fragen. Kannst du mich doch auch so immer fragen? Habt ihr auch ein Handbook, also abgesehen von Geht und den ganzen Ordnerstrukturen, habt ihr im Gehen Handbook, wo ihr alles dokumentiert? Ja, also diese, diese Struktur, wir haben für jedes Projekt, das kann ich jetzt hier allerdings, habe ich auch nicht mit runtergezogen, das haben wir auf Google Drive, da gibt es einfach nur so ein loses Dokument und da schreibe ich rein von, wie ist der Name von dem neuen Plug-in oder Achtung, wenn du die Daten exportierst, achte darauf, dass du das und das machen musst, also das ist einfach so ein, so ein Handzettel, der zu den bestimmten Tasks zugeordnet ist, was muss man da beachten oder was gibt es da so an bestimmte Sachen? Das ist jetzt nicht so formell irgendwie, da schreibe ich einfach nur so lose runter, was da halt irgendwie wichtig wäre. Aber auf jeden Fall, das ist ganz wichtig, denn also selbst bei mir, wenn ich selber das geschrieben habe und habe das irgendwie nach drei Wochen wieder auf dem Tisch, dann muss ich dann auch und dann habe ich aber immer diesen Waschzettel da und da kann ich dann nachgucken. Das ist ja eher intern, wie organisiert die Dokumentation an den Kunden? Wie meinst du das jetzt? Genau, das ist die Frage, ich finde, da gibt es auch verschiedene Möglichkeiten, aber gehört dir im Grunde genommen auch mit dazu? Oder ist da in dem Fall gar keine Übergabe? Nee, ich verstehe, also wenn ich dich jetzt... Ja, du hast jetzt gesagt, zum Beispiel, die Redaktoren müssen doppelt einpflegen. Ich nehme an, dass sich dann, weil neue Features, neue Funktionen dabei sind, auch für die, für den Kunden, was ändert. Ja, ja, es gibt Schulungen, ja, ja, ja. Also das ist ja auch nur Dokumentationen, die da mit Google Drive... Nee, nee, nee, das ist nur für uns Entwickler, also wenn es nach außen hingeht, das zum Glück nicht, nicht so ganz unser Job von der Entwicklung, ich bin nur manchmal bei den WordPress Schulungen, also wenn es ums WordPress selber geht, bin ich dabei. Die bekommen, das ist allerdings eher eine Frage des Etats, sie bekommen eine Schulung, sie bekommen so einen, so einen Handbuch, Redaktionshandbuch, wie sie halt, was weiß ich, neuer User anlegen, dann klicke hier, mach das und das, also wo solcher Schritte durch sind, aber das muss ich ehrlich sagen, auch nur, wenn die das auch wirklich bezahlen. Oft ist es erfahrungsgemäß so, auch bei den, wir reden jetzt nicht von kleinen Projekten, das ist schon alles ein bisschen nur mal größer, wird das gerne unter den Tisch fallen gelassen oder ist so ein bisschen Verhandlungsmasse, ja ja und am Ende, dann machen wir noch eine Schulung und dann kriegt er noch eine Einweisung, das wird gerne, aber das ist nicht mein Job, das ist dann das Job, der Job von den Beratern beziehungsweise vom Projektmanagement, die machen dann die Dokumentation dazu. Wir sind wirklich nur die im Keller da sitzen und programmieren. Ja natürlich, klar, also wir haben, das ist ja so, also ich selber, das ist sehr schön, hab nicht so viel, geht klar. Also wir haben zum Glück nicht so viel mit den Kunden und es geht über die Berater und wenn die Berater etwas nicht verstehen, dann müssen wir denen das erklären und solange bis die und dann riefen sie die Kunden, also das wird dann schon durchgereicht. Okay, also ganz kurz nur von mir noch ist einfache Frage, glaube ich, das mit den Formatierungen, weil du gesagt hast, mehrere Leute arbeiten zusammen und ihr habt unterschiedliche Coding Standards sozusagen, das stehe ich nicht, aber mit bitte um kurze Antwort. Ja, also du kannst ja nach verschiedenen, was weiß ich, der Klassiker ist, also er zum Beispiel, mein Kollege Mark Lieber, Spaces, der nimmt, ja, wenn du das mit Spaces machst und ich mach deine Datei bei mir auf, dann gehe ich einmal auf Formatieren, also macht meine IDE das automatisch auf Tabs. Also da gibt es keinen, da gibt es keinen, das ist mein Ernst, okay. Also das hat uns jedenfalls noch nicht in der, noch nicht wehgetan sozusagen. Gut, dann würde ich sagen, wenn ihr noch Fragen habt, könnt ja Heiko gleich noch wahrscheinlich Löcher in den Bauch fragen und danke Heiko. Gerne.