<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Backendhance</title><link>https://backendhance.com/blog/category/entwicklungspraxis/</link><description>Recent content Backendhance</description><generator>Hugo -- gohugo.io</generator><language>de</language><lastBuildDate>Sat, 23 Nov 2024 08:47:27 +0100</lastBuildDate><atom:link href="https://backendhance.com/blog/category/entwicklungspraxis/index.xml" rel="self" type="application/rss+xml"/><item><title>Interview: Wie Atlassian auf Cloudangst und Überkonfiguration seiner Tools reagiert</title><link>https://backendhance.com/blog/2024/atlassian-about-cloud-anxiety-and-overconfiguration/</link><pubDate>Sat, 23 Nov 2024 08:47:27 +0100</pubDate><author/><guid>https://backendhance.com/blog/2024/atlassian-about-cloud-anxiety-and-overconfiguration/</guid><description>&lt;p>&lt;em>Ich war kürzlich auf der Team ‘24, quasi Atlassians Hausmesse, und habe mich dort mit Matt Schvimmer, Senior Vice President und Head of Product für das Agile- und Devops-Portfolio von Atlassian, getroffen. Wir haben darüber gesprochen, welche Unterstützung die Atlassian-Tools für moderne Softwareentwicklung bieten.&lt;/em>&lt;/p>
&lt;div class="alert d-flex alert-info" role="alert">
&lt;i class="bx bx-info-circle lead me-3">&lt;/i>
&lt;div>
Dieses Interview erschien erstmals im &lt;a href="https://archive.newsletter2go.com/?n2g=k78op17b-x3y81agx-2ck"target="_blank" rel="noopener noreferrer">Chef von Devs Newsletter #57&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/div>
&lt;/div>
&lt;p>&lt;em>Besonders für Teams, die in komplexen Umgebungen arbeiten, spielen Jira, Bitbucket, Compass und das neu angekündigte Focus eine große Rolle. Schvimmer hat mir Einblicke in die Weiterentwicklung der Atlassian-Tools und in zukünftige Pläne gegeben. Außerdem sprach er mit mir über Herausforderungen wie die Synchronisation von Dokumentation mit dem Code und den Umgang mit der Komplexität von Microservices. Aber auch die Überkonfiguration von Tools oder Bedenken gegenüber der Cloud waren im Interview Thema.&lt;/em>&lt;/p></description></item><item><title>HashMap</title><link>https://backendhance.com/blog/2024/hashmap/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/hashmap/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>HashMap? Wie kann HashMap ein Thema für den Newsletter sein? Hold on!&lt;/p>
&lt;p>Mir kommt das Thema in den Sinn, weil ich gestern für einen Kunden im Interview saß und mich relativ lange über die HashMap unterhalten habe. Und das Erlebnis war ein kleines Déjà-vu. Vor 2-3 Jahren war ich schwer mit Recruiting beschäftigt. Ich habe in dieser Zeit über 150 technische Interviews durchgeführt. Und aus der Zeit habe ich viel über unsere Branche gelernt. &lt;strong>Allen voran, dass es uns an Seniorität fehlt und wir es nicht schaffen, die jungen Entwickler ausreichend zu entwickeln.&lt;/strong>&lt;/p></description></item><item><title>Agile</title><link>https://backendhance.com/blog/2024/agile/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/agile/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;a href="https://youtu.be/a-BOSpxYJ9M?si=tVpwFlDPcOwma5YL&amp;amp;t=646"target="_blank" rel="noopener noreferrer">Dave Thomas wird nicht müde zu erwähnen, dass &amp;ldquo;agile&amp;rdquo; ein Adjektiv ist&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
- und kein Nomen. Es wird nicht groß geschrieben.&lt;/p>
&lt;p>Das sagenumwobene Dokument, das wir seit knapp einem Vierteljahrhundert referenzieren, heißt nicht &amp;ldquo;The Agile Manifesto&amp;rdquo;.&lt;/p>
&lt;p>Es heißt &lt;a href="https://agilemanifesto.org/"target="_blank" rel="noopener noreferrer">&amp;ldquo;Manifesto for Agile Software Development&amp;rdquo;&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
. 👈&lt;/p>
&lt;p>Agile ist nichts, was gekauft werden kann. Das Manifest beschreibt, wie man agil (als Adjektiv!) Software entwickelt. Es beschreibt kein Produkt.&lt;/p>
&lt;p>Und doch ist über die letzten 25 Jahre ein Produkt daraus entstanden. Es gibt &amp;ldquo;Agile Coaches&amp;rdquo;, &amp;ldquo;Scrum Master&amp;rdquo;, &amp;ldquo;Agile Certification&amp;rdquo;, &amp;ldquo;Agile User Groups&amp;rdquo; und vieles mehr.&lt;/p></description></item><item><title>GitOps, SRE, DevOps - A Look Back and into the Future</title><link>https://backendhance.com/blog/2024/gitops-sre-devops---a-look-back-and-into-the-future/</link><pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/gitops-sre-devops---a-look-back-and-into-the-future/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Vor zehn Jahren hantierten die meisten Unternehmen noch mit manuell verwalteten Infrastrukturen herum. Heute finden sich noch viele Mittelständler in derselben Lage. Doch das hat seinen Preis &amp;ndash; und den spüre ich gerade.&lt;/p>
&lt;h2 id="die-geister-der-unterschiede">
&lt;a href="#die-geister-der-unterschiede" class="anchor">Die Geister der Unterschiede&lt;/a>
&lt;/h2>
&lt;p>Es ist erstaunlich, wie oft wir Geistern hinterherjagen, einfach weil sich unsere Umgebungen unterscheiden. Das reicht von offensichtlichen Dingen wie verfügbarer CPU oder RAM bis hin zu subtileren Problemen wie unterschiedlichen Kernel-Versionen oder Konfigurationsunterschieden in den Applikationen. Besonders knifflig wird es mit externen Application Servern, wo Konfigurationsdateien über das gesamte System verteilt sind und leicht auseinanderdriften können.&lt;/p></description></item><item><title>Scrum Is Not Agile</title><link>https://backendhance.com/blog/2024/scrum-is-not-agile/</link><pubDate>Wed, 24 Apr 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/scrum-is-not-agile/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>In einer meiner Kundenprojekte reflektieren wir unsere Arbeitsweise.&lt;/p>
&lt;p>Wie die meisten Projekte im Mittelstand dort draußen wird auch hier Scrum benutzt. Aber wir haben damit ein paar Probleme:&lt;/p>
&lt;ul>
&lt;li>Die Sprintziele werden nie erreicht&lt;/li>
&lt;li>Es vergeht kein Sprint ohne, dass ein neuer Task von der Seite reinkommt&lt;/li>
&lt;li>Die Estimations sind regelmäßig weit weg von der Realität&lt;/li>
&lt;li>Die Zusammenarbeit mit anderen Externen wird zum Teil nicht integriert&lt;/li>
&lt;li>&amp;hellip; Mir fallen mit Sicherheit noch mehr Beispiele ein&lt;/li>
&lt;/ul>
&lt;p>Und das sorgt regelmäßig für Reibereien. Das Team will Scrum machen. Aber es will auch nicht so wirklich klappen. Und natürlich wissen wir das nicht seit kurzem. Seit Monaten, nein - Jahren, wird in jeder Retrospektive über die Schwächen im Scrumprozess geredet. Doch das häufigste Action-Item: Beim nächsten Mal machen wir es besser!&lt;/p></description></item><item><title>Daily Practice</title><link>https://backendhance.com/blog/2024/daily-practice/</link><pubDate>Fri, 29 Mar 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/daily-practice/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Hast du schon mal probiert vim zu schließen?&lt;/p>
&lt;p>&lt;img src="https://backendhance.com/blog/2024/daily-practice/1e267db1-0d31-46eb-bd7e-1a11223716ad.jpg" alt="Ein Meme über die Herausforderung, vim zu schließen">&lt;/p>
&lt;p>Das Meme kennst du vermutlich. Auch nach Jahrzehnten finde ich es immer noch witzig 😁&lt;/p>
&lt;p>&lt;strong>Aber was ich in den Jahrzehnten nicht geschafft habe, war mal ernsthaft zu lernen, wie man mit vim umgeht.&lt;/strong> Klar. Mit &lt;code>i&lt;/code> gehe ich in den insert-mode. Dann kann ich schreiben. Und &lt;code>dd&lt;/code> habe ich auch gelernt. Damit kann ich eine Zeile löschen. Und ja. Natürlich war ich einer der &lt;a href="https://stackoverflow.com/questions/11828270/how-do-i-exit-vim"target="_blank" rel="noopener noreferrer">drei Millionen Viewer, denen Stack Overflow geholfen hat&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
vim zu schließen 😉&lt;/p></description></item><item><title>Two More Billion Dollar Mistakes</title><link>https://backendhance.com/blog/2024/two-more-billion-dollar-mistakes/</link><pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/two-more-billion-dollar-mistakes/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Du hast bestimmt schon mal mitbekommen, dass &lt;code>null&lt;/code> von seinem Erfinder Tony Hoare als &amp;ldquo;Billion Dollar Mistake&amp;rdquo; bezeichnet wird. 2009 entschuldigte er sich auf der QCon öffentlich, dafür dass er 1965 den leichten Weg gegangen ist und &lt;code>null&lt;/code> erfunden hat:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object-oriented language (&lt;a href="https://en.wikipedia.org/wiki/ALGOL_W"target="_blank" rel="noopener noreferrer">ALGOL W&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn&amp;rsquo;t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.&amp;rdquo;&lt;/p></description></item><item><title>Survivorship Bias in Tech</title><link>https://backendhance.com/blog/2024/survivorship-bias-in-tech/</link><pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/survivorship-bias-in-tech/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Kennst du das Survivorship Bias?&lt;/p>
&lt;blockquote>
&lt;p>[&amp;hellip;] Nach dem Survivorship Bias werden Wahrscheinlichkeiten eines Erfolgs systematisch überschätzt, &lt;strong>da erfolgreiche Personen oder Zustände stärker sichtbar sind als nicht erfolgreiche&lt;/strong>. ~ &lt;a href="https://de.wikipedia.org/wiki/Survivorship_Bias"target="_blank" rel="noopener noreferrer">Wikipedia&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/p>&lt;/blockquote>
&lt;p>Diese kognitive Verzerrung ist interessant, weil sie uns auch in der Entwicklung betreffen. Seit 15 Jahren arbeite ich hauptsächlich im Mittelstand. Das sind Unternehmen bis 250 Mitarbeiter. Also ganz klar keine Großunternehmen.&lt;/p>
&lt;h3 id="und-letzte-woche-habe-ich-darüber-geschrieben-dass-die-größe-der-entwicklungsteams-im-mittelstand-sehr-ähnlich-ist">
&lt;a href="#und-letzte-woche-habe-ich-dar%c3%bcber-geschrieben-dass-die-gr%c3%b6%c3%9fe-der-entwicklungsteams-im-mittelstand-sehr-%c3%a4hnlich-ist" class="anchor">Und letzte Woche habe ich darüber geschrieben, dass die Größe der Entwicklungsteams im Mittelstand sehr ähnlich ist.&lt;/a>
&lt;/h3>
&lt;p>&lt;em>(&lt;a href="https://backendhance.com/blog/2024/challenges-in-smes-are-similar/">hier geht&amp;rsquo;s zum letzten Newsletter&lt;/a>
)&lt;/em>&lt;/p></description></item><item><title>Three Topics</title><link>https://backendhance.com/blog/2024/three-topics/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/three-topics/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Dieses Jahr bin ich etwas im Verzug mit den Newslettern. Zum einen bin ich tief in Kundenprojekten &amp;ndash; und der Kunde hat immer Vorrang. Zum anderen habe ich seit Anfang des Jahres mit einer Lungenentzündung zu kämpfen. Erst diese Woche ist sie besser geworden. Die Symptome waren zwar mild - schließlich habe ich gearbeitet - aber ich habe gemerkt, wie mir die Energie außerhalb der Pflichtaufgaben fehlte.&lt;/p>
&lt;p>Um jetzt wieder reinzukommen: &lt;strong>Heute habe ich drei kurze Themen für dich.&lt;/strong>&lt;/p></description></item><item><title>The ADM-3A Keyboard</title><link>https://backendhance.com/blog/2024/the-adm-3a-keyboard/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/the-adm-3a-keyboard/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h1 id="was-hat-dieser-computer-mit-deiner-arbeit-heute-zu-tun">
&lt;a href="#was-hat-dieser-computer-mit-deiner-arbeit-heute-zu-tun" class="anchor">Was hat dieser Computer mit deiner Arbeit heute zu tun?&lt;/a>
&lt;/h1>
&lt;p>&lt;img src="https://backendhance.com/blog/2024/the-adm-3a-keyboard/f1ee83cd-4cc1-4952-8e28-9622b447df1d.png" alt="image.png">&lt;/p>
&lt;p>Du siehst hier einen ADM-3A von 1976.&lt;/p>
&lt;p>Aber warum sollte dich dieser Rechner knapp 50 Jahre später noch interessieren?&lt;/p>
&lt;h1 id="der-adm-3a-ist-der-grund-für-einige-standards-die-du-heute-benutzt">
&lt;a href="#der-adm-3a-ist-der-grund-f%c3%bcr-einige-standards-die-du-heute-benutzt" class="anchor">Der ADM-3A ist der Grund für einige Standards, die du heute benutzt&lt;/a>
&lt;/h1>
&lt;p>Schau mal auf das Keyboard-Layout:&lt;/p>
&lt;p>&lt;img src="https://backendhance.com/blog/2024/the-adm-3a-keyboard/b755a58d-c3cd-4f06-9400-db5f2babed42.png" alt="image.png">&lt;/p>
&lt;p>Wieso benutzt man bis heute &lt;code>esc&lt;/code>, um in vi in den Command-Mode zu kommen?&lt;/p>
&lt;p>Auf dem ADM-3A war die &lt;code>esc&lt;/code>-Taste direkt neben &lt;code>Q&lt;/code>.&lt;br>
&lt;em>Es war leicht erreichbar.&lt;/em>&lt;/p></description></item><item><title>Your Assumptions Are Wrong</title><link>https://backendhance.com/blog/2024/your-assumptions-are-wrong/</link><pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/your-assumptions-are-wrong/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Deine E-Mail-Validierung ist falsch (wahrscheinlich). Und deine Modellierung, dass jeder Mensch einen Vor- und einen Nachnamen hat, ist ebenfalls falsch.&lt;/p>
&lt;p>Als ich in den vergangenen Tagen meine Bookmarks auf der Suche nach einem Artikel zu &lt;a href="https://blog.pragmaticengineer.com/project-management-at-big-tech/"target="_blank" rel="noopener noreferrer">Project Management in BigTech&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
durchforstet habe, bin ich auf einen alten Artikel von 2010 gestolpert: &lt;a href="https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/"target="_blank" rel="noopener noreferrer">Falsehoods Programmers Believe About Names&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>Ein exzellentes Essay!&lt;/p>
&lt;h1 id="unsere-annahmen-sind-falsch">
&lt;a href="#unsere-annahmen-sind-falsch" class="anchor">Unsere Annahmen sind falsch&lt;/a>
&lt;/h1>
&lt;p>Vielleicht hast du schon erlebt, dass nicht jeder Mensch genau einen Vor- und Nachnamen hat. Und vielleicht hattest du schon einen Supportfall, dass sich Namen ändern. Es soll ja Menschen geben, die heiraten 😉&lt;/p></description></item><item><title>I Commited to Main</title><link>https://backendhance.com/blog/2024/i-commited-to-main/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/i-commited-to-main/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ich habe auf &lt;code>main&lt;/code> committed. Einfach so 🫢&lt;/p>
&lt;p>, du wirst wahrscheinlich eine von zwei Reaktionen haben:&lt;/p>
&lt;p>&amp;ldquo;Ja und? Langweile mich nicht damit!&amp;rdquo;&lt;br>
&lt;em>oder&lt;/em>&lt;/p>
&lt;p>&amp;ldquo;WTF? DAS GEHT DOCH NICHT!&amp;rdquo;&lt;/p>
&lt;p>Wenn du zu der Kategorie des ersten Beispiel gehörst: Cool! Entweder du bist noch nicht live und hast die Freiheit Trunk-based zu entwickeln, oder deine Organisation ist so weit mit der Automatisierung und dem DevOps Gedanken, dass du auch Trunk-based entwickeln kannst.&lt;/p></description></item><item><title>Unnecessary Unit Tests</title><link>https://backendhance.com/blog/2024/unnecessary-unit-tests/</link><pubDate>Fri, 12 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/unnecessary-unit-tests/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="schon-mal-von-tautologischen-tests-gehört">
&lt;a href="#schon-mal-von-tautologischen-tests-geh%c3%b6rt" class="anchor">Schon mal von tautologischen Tests gehört?&lt;/a>
&lt;/h2>
&lt;p>In den letzten Monaten habe ich mich wieder intensiv mit Testarchitektur und Testdesign auseinandergesetzt.&lt;/p>
&lt;p>&lt;em>(Ich weiß gar nicht mehr, wie das angefangen hat&amp;hellip; vermutlich wieder der YouTube Algorithmus, der interessante Vorträge vorgeschlagen hat 😉)&lt;/em>&lt;/p>
&lt;p>Jedenfalls habe ich &lt;a href="https://backendhance.com/blog/2023/a-unit-in-a-test-is-not-the-class-under-test/">Anfang Dezember schon darüber geschrieben&lt;/a>
, dass ich noch vor einigen Jahren in einem
Blog ganz andere Praktiken propagiert habe, als ich heute empfehle.&lt;/p>
&lt;p>Das Thema lässt mich nicht los, also geht es heute wieder um Tests.&lt;/p></description></item><item><title>3 Highlights From 2023</title><link>https://backendhance.com/blog/2024/3-highlights-from-2023/</link><pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2024/3-highlights-from-2023/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Wann hattest du die letzte große Veränderung in deinem Leben?&lt;/p>
&lt;p>Für mich war es in 2023 meine Selbständigkeit. Was für ein Abenteuer!&lt;/p>
&lt;p>Das Jahr ist jetzt um und die Feiertage habe ich genossen, um abzuschalten und Zeit mit meiner Familie zu verbringen.&lt;/p>
&lt;p>Glaub mir, im ersten Jahr der Selbständigkeit leidet die Freizeit am meisten 😉&lt;/p>
&lt;p>Im letzten Jahr ist so viel passiert. Es gab so viele Hightlights. Und es gab so viele interessante Themen. Heute möchte ich drei meiner vielen Highlights aus dem letzten Jahr mit dir Teilen. Anschnallen. Los gehts!&lt;/p></description></item><item><title>A Picture Is Worth a Thousand Words</title><link>https://backendhance.com/blog/2023/a-picture-is-worth-a-thousand-words/</link><pubDate>Mon, 11 Dec 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/a-picture-is-worth-a-thousand-words/</guid><description>&lt;p>Hi,&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Ein Bild sagt mehr als tausend Worte&amp;rdquo;&lt;/em>&lt;/p>&lt;/blockquote>
&lt;p>Dieses Sprichwort habe ich schon früh gehört. Vermutlich das erste Mal in der Schulzeit. Es ist eine Weisheit, die wir schon lange weiter tragen.&lt;/p>
&lt;p>&lt;strong>Vielleicht verbindest du dieses Sprichwort eher mit Bereichen wie Marketing, Statistik, Politik&lt;/strong> oder du denkst wie ich an die Weisheiten der Lehrer von damals.&lt;/p>
&lt;p>&lt;strong>Etwas, das ich in den letzten Jahren immer wieder realisiert habe, ist: Es ist auch für uns in der Softwareentwicklung relevant.&lt;/strong>&lt;/p></description></item><item><title>A "Unit" In A Test Is Not The Class Under Test</title><link>https://backendhance.com/blog/2023/a-unit-in-a-test-is-not-the-class-under-test/</link><pubDate>Tue, 05 Dec 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/a-unit-in-a-test-is-not-the-class-under-test/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="was-ist-eigentlich-eine-unit-im-unit-test">
&lt;a href="#was-ist-eigentlich-eine-unit-im-unit-test" class="anchor">Was ist eigentlich eine &amp;ldquo;Unit&amp;rdquo; im Unit-Test?&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Dumme Frage, sagst du dir vielleicht.&lt;/em>&lt;/p>
&lt;p>Aber sie ist interessant. Über viele Jahre war ich, wie die meisten die über das Thema sprechen, der Meinung:&lt;/p>
&lt;p>&lt;strong>Eine Unit ist eine Klasse, die ich testen möchte.&lt;/strong>&lt;/p>
&lt;p>Und vielleicht hast du das so auch gesehen. Und du hast mit Sicherheit damit ein paar Probleme gehabt.&lt;/p>
&lt;h3 id="zum-beispiel-die-symptome-des-daraus-resultierendem-coupling">
&lt;a href="#zum-beispiel-die-symptome-des-daraus-resultierendem-coupling" class="anchor">Zum Beispiel, die Symptome des daraus resultierendem Coupling&lt;/a>
&lt;/h3>
&lt;p>Denn was passiert, wenn wir eine &lt;code>UserServiceTest&lt;/code> Klasse schreiben? Wir haben - ohne es zu merken - ein semantisches Coupling zwischen der &lt;code>UserService&lt;/code> Klasse und dem &lt;code>UserServiceTest&lt;/code> hergestellt.&lt;/p></description></item><item><title>Why Is OOP So Popular?</title><link>https://backendhance.com/blog/2023/why-is-oop-so-popular/</link><pubDate>Tue, 21 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/why-is-oop-so-popular/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Warum entwickeln wir heute objektorientiert und nicht funktional? Wieso sind 7 von 10 der populärsten Programmiersprachen objektorientiert? Und warum ist keine (rein) funktionale Sprache darunter?&lt;/p>
&lt;p>&lt;img src="https://backendhance.com/blog/2023/why-is-oop-so-popular/14ddc445-d5cf-4eee-94d5-37fbbfc4f5d2.png" alt="image.png">&lt;br>
&lt;em>Quelle: &lt;a href="https://survey.stackoverflow.co/2023/"target="_blank" rel="noopener noreferrer">Stackoverflow Developer Survey 2023&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
&lt;/em>&lt;/p>
&lt;p>Die Frage hat sich auch &lt;a href="https://www.youtube.com/watch?v=QyJZzq0v7Z4"target="_blank" rel="noopener noreferrer">Richard Feldman 2019&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
gestellt. Und die Hintergründe sind interessant.&lt;/p>
&lt;p>Natürlich - wie immer - es ist kompliziert.&lt;/p>
&lt;p>Aber einen Aspekt finde ich besonders interessant.&lt;/p>
&lt;p>Richard fragt sich, &lt;strong>ob es an einzigartigen Features in OOP liegt&lt;/strong>, die in anderen Paradigmen nicht vorhanden sind.&lt;/p></description></item><item><title>ChatGPT Killed my Blog</title><link>https://backendhance.com/blog/2023/chatgpt-killed-my-blog/</link><pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/chatgpt-killed-my-blog/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Meine Arbeitsweise hat sich im letzten Jahr so stark geändert wie nie zuvor.&lt;/p>
&lt;p>Vor einem Jahr hat OpenAI ChatGPT veröffentlicht.&lt;/p>
&lt;p>Damals fand ich die Technologie schon cool, aber ich habe nicht erkannt, wie groß der Einfluss auf meine Arbeit sein wird. Und das in nicht mal 12 Monaten.&lt;/p>
&lt;p>&lt;strong>Heute nutze ich KI für so viele Dinge:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ich google keine Fragen mehr, es wird ChatGPT gefragt&lt;/li>
&lt;li>Github Copilot schreibt Code bevor ich weiß was ich überhaupt schreiben wollte&lt;/li>
&lt;li>Mein Content (auch dieser) wird von ChatGPT lektoriert&lt;/li>
&lt;li>Stock Images lasse ich mir von Midjourney generieren&lt;/li>
&lt;li>Meine Vorträge der letzten Wochen sind mit ChatGPT entstanden&lt;/li>
&lt;li>Selbst das Piraten-Rätsel vom Kindergeburtstag generiert ChatGPT&lt;/li>
&lt;/ul>
&lt;p>Und diese Liste ist bei weitem nicht vollständig.&lt;/p></description></item><item><title>@Transaction Around Test</title><link>https://backendhance.com/blog/2023/transaction-around-test/</link><pubDate>Mon, 13 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/transaction-around-test/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Mir kribbelte es in den Fingern. Direkt zu Beginn von &lt;a href="https://thorben-janssen.com/"target="_blank" rel="noopener noreferrer">Thorben Janssens&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
Session &amp;ldquo;Das große Java Persistence Q&amp;amp;A&amp;rdquo;.&lt;/p>
&lt;p>Die erste Frage war (sinngemäß):&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Im vorherigen Talk (etwas mit JPA) wurde gesagt man solle an jeden Test &lt;code>@Transactional&lt;/code> schreiben. Dadurch werden die Daten nach dem Test automatisch zurückgerollt. Wir haben das diskutiert und sind uns uneinig. Was ist deine Empfehlung?&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>Thorbens Antwort machte mich nervös. Er antwortete (auch sinngemäß) mit einer Gegenfrage:&lt;/p></description></item><item><title>Kids Treasure Hunt</title><link>https://backendhance.com/blog/2023/kids-treasure-hunt/</link><pubDate>Mon, 06 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/kids-treasure-hunt/</guid><description>&lt;p>Hi,&lt;/p>
&lt;blockquote>
&lt;p>Für eine Schatzsuche für einen 5 Jährigen möchte ich einen Text schreiben. Der Text soll von einem Piraten geschrieben sein, der ein Rätsel beschreibt wo der Schatz des Piraten versteckt ist. Er soll an einem Ort versteckt sein wo gruselige Bäume sind. Kannst du mir den Text schreiben und ihn reimen lassen?&lt;/p>&lt;/blockquote>
&lt;p>Mit diesem Prompt habe ich ChatGPT gefüttert. Ich war gerade &lt;a href="https://www.linkedin.com/posts/marcus-held_it-was-an-honor-for-me-to-open-the-rabbitmq-activity-7121068312075067392-nMK9"target="_blank" rel="noopener noreferrer">aus Berlin von der RabbitMQ Summit zurück&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p></description></item><item><title>Is Scrum Democratic?</title><link>https://backendhance.com/blog/2023/is-scrum-democratic/</link><pubDate>Tue, 31 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/is-scrum-democratic/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ist Scrum demokratisch?&lt;/p>
&lt;p>Diese Frage kommt immer wieder auf.&lt;/p>
&lt;p>Immer wieder bin ich in Teams in denen es auf diese Frage hinausläuft.&lt;/p>
&lt;p>Das Stichwort ist immer wieder &lt;strong>&amp;ldquo;selbstorganisiertes Team&amp;rdquo;&lt;/strong>&lt;/p>
&lt;h1 id="wie-weit-entscheidet-ein-selbstorganisiertes-team">
&lt;a href="#wie-weit-entscheidet-ein-selbstorganisiertes-team" class="anchor">Wie weit entscheidet ein selbstorganisiertes Team?&lt;/a>
&lt;/h1>
&lt;p>&lt;strong>Unumschritten: Das Team organisiert sich die Arbeit selbst.&lt;/strong>&lt;/p>
&lt;p>Der Product Owner entscheidet welche &lt;em>Aufgaben&lt;/em> in welcher &lt;em>Reihenfolge&lt;/em> abgearbeitet werden.&lt;/p>
&lt;p>&lt;strong>Und er ist ein Teil des Teams.&lt;/strong>&lt;/p>
&lt;p>Auch unumschritten: Die Entwickler &lt;em>planen einen Sprint&lt;/em> und definieren wann ein Thema &amp;ldquo;fertig&amp;rdquo; ist.&lt;/p></description></item><item><title>Redundant Information</title><link>https://backendhance.com/blog/2023/redundant-information/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/redundant-information/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Nach dem Import packen wir das File aus und lesen die Meta-Informationen&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Und wo schreiben wir sie rein&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Diese Information wird in unterschiedlichen Datenbanken abgelegt. Die Path Information wird auf allen Service Datenbanken verteilt, damit diese wissen wie sie auf die Files zugreifen. Andere Daten legen wir in die System-Datenbank und in jede Tenant-Datenbank.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Klingt das für dich normal?&lt;/p>
&lt;p>Sollte es nicht.&lt;/p>
&lt;h1 id="was-wir-hier-erleben-ist-informationsduplizierung">
&lt;a href="#was-wir-hier-erleben-ist-informationsduplizierung" class="anchor">Was wir hier erleben ist Informationsduplizierung.&lt;/a>
&lt;/h1>
&lt;p>&lt;em>&amp;ldquo;Aber Marcus, warum ist das denn so schlimm? Wir brauchen die Information halt an unterschiedlichen stellen.&amp;rdquo;&lt;/em>&lt;/p></description></item><item><title>Editor Fluency</title><link>https://backendhance.com/blog/2023/editor-fluency/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/editor-fluency/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Heute habe ich auf der KKON den Vortrag &amp;ldquo;Pragmatic Programming mit Kotlin&amp;rdquo; gehalten.&lt;/p>
&lt;p>Das war wieder ein großer Spaß. Und weil am Freitag noch die &lt;a href="https://www.linkedin.com/posts/marcus-held_marcus-held-rabbitmq-summit-activity-7072497264073535488-0Hjr"target="_blank" rel="noopener noreferrer">RabbitMQ Summit&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
und zwei Wochen danach die &lt;a href="https://www.linkedin.com/posts/marcus-held_%3F%3F%3F%3F-%3F%3F-%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F-%3F%3F%3F-activity-7107233883590377472-TTmp"target="_blank" rel="noopener noreferrer">W-JAX&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
ansteht, hatte ich wirklich keine Lust weitere Slides anzulegen.&lt;/p>
&lt;p>&lt;strong>Also live coding.&lt;/strong>&lt;/p>
&lt;p>Damit bin ich bestimmt schneller in der Vorbereitung (tm).&lt;/p>
&lt;p>Aber abgesehen von meiner Faulheit, gab es noch einen anderen Grund warum ich das gemacht habe.&lt;/p></description></item><item><title>Deliberate Practice</title><link>https://backendhance.com/blog/2023/deliberate-practice/</link><pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/deliberate-practice/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;strong>Aktuell übe ich Schönschrift.&lt;/strong> Meine Handschrift war bisher immer nur &amp;ldquo;praktisch&amp;rdquo;. Jeden Tag schreibe ich alle Buchstaben des Alphabets und konzentriere mich auf das Schriftbild.&lt;/p>
&lt;p>&lt;strong>Vor 5 Jahren habe ich Zehnfingerschreiben geübt.&lt;/strong> Jeden Tag 10 Minuten auf &lt;a href="https://www.keybr.com/"target="_blank" rel="noopener noreferrer">https://www.keybr.com/&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>&lt;strong>Vor 7 Jahren verbannte ich meine Maus in der IDE.&lt;/strong> Ich musste lernen alles mit der Tastatur zu bedienen.&lt;/p>
&lt;p>&lt;strong>Und vor 10 Jahren fokussierte ich mich auf die Shell.&lt;/strong> Ich führte alle Operationen in meinem System dort aus.&lt;/p></description></item><item><title>Java 21 is GA!</title><link>https://backendhance.com/blog/2023/java-21-is-ga/</link><pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/java-21-is-ga/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Java 21 hat seit Dienstag endlich den General Availability (GA) Status 🎉&lt;/p>
&lt;p>Schon seit Monaten nutze ich jede Gelegenheit, um zu erzählen, dass virtuelle Threads mein Highlight dieses Releases ist. Zum Beispiel
in &lt;a href="https://backendhance.com/blog/2023/nobody-talks-about-project-loom/">diesem&lt;/a>
oder &lt;a href="https://backendhance.com/blog/2023/i-think-loom-is-going-to-kill-reactive-programming-brian-goetz/">diesem&lt;/a>
alten Newsletter.&lt;/p>
&lt;p>Und das hat sich auch nicht geändert. Ich glaube virtuelle Threads sind einer der bedeutesten Verbesserungen seit Jahren. Ob das auch alles so eintritt - wird sich zeigen.&lt;/p>
&lt;p>Aber es gibt natürlich auch andere Features, die nicht unerwähnt bleiben sollen.&lt;/p></description></item><item><title>Spring Events: Mit @EventListener und ApplicationEvents deine Applikation entkoppeln</title><link>https://backendhance.com/blog/2023/spring-events/</link><pubDate>Wed, 13 Sep 2023 07:07:21 +0200</pubDate><author/><guid>https://backendhance.com/blog/2023/spring-events/</guid><description>&lt;p>Wenn du schon mit dem &lt;strong>Spring Framework&lt;/strong> arbeitest, ist dir sicherlich aufgefallen, wie mächtig und vielseitig es ist. Eines der nützlichen - aber häufig übersehenen - Features von Spring ist das Event-Handling-System. In diesem Artikel werfen wir einen genaueren Blick darauf, wie du Events im &lt;strong>Spring Framework&lt;/strong> mithilfe von &lt;code>@EventListener&lt;/code> konfigurieren kannst. Zusätzlich zeigen wir dir, wie diese Events in Kombination mit Transaktionen und Asynchronität verwendet werden können.&lt;/p>
&lt;h2 id="warum-events-im-spring-framework">
&lt;a href="#warum-events-im-spring-framework" class="anchor">Warum Events im Spring Framework?&lt;/a>
&lt;/h2>
&lt;p>Events sind ein integraler Bestandteil des Spring Frameworks. Sie ermöglichen es, loosely coupled Anwendungen zu erstellen. &lt;strong>Spring Boot&lt;/strong> nutzt Events, um den Status der Applikation zu kommunizieren. Beispiele dafür sind das &lt;code>ApplicationStartedEvent&lt;/code>. Du kannst aber auch eigene Events publizieren. Und das out-of-the-box, ohne Boilerplate und mit wenig Aufwand.&lt;/p></description></item><item><title>Snowflake Connection Provider</title><link>https://backendhance.com/blog/2023/snowflake-connection-provider/</link><pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/snowflake-connection-provider/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Was haben Schneeflocken mit Softwareentwicklung zutun?&lt;/p>
&lt;p>Komische Frage. Ich weiß&lt;/p>
&lt;p>Aber ich musste sie mir die Tage stellen.&lt;/p>
&lt;p>&lt;strong>Ich durchforstete den Code.&lt;/strong>&lt;/p>
&lt;p>Ich wollte verstehen welche Connection Pools wir haben und wie sie konfiguriert sind.&lt;/p>
&lt;p>Dabei stolperte ich über einen Connection Pool, der hieß: &lt;code>SnowflakeConnectionProviders&lt;/code>&lt;/p>
&lt;p>Hä?&lt;/p>
&lt;p>Was soll das sein? Und wie wird er verwendet?&lt;/p>
&lt;p>Und warum ist es eine &lt;code>HashMap&amp;lt;String, IConnectionProvider&amp;gt;&lt;/code> ?&lt;/p>
&lt;h2 id="also-find-usage-und-weiterlesen">
&lt;a href="#also-find-usage-und-weiterlesen" class="anchor">Also: &lt;code>Find Usage&lt;/code> und weiterlesen.&lt;/a>
&lt;/h2>
&lt;p>Aha, in der &lt;code>init&lt;/code> wird eine kleine pool size konfiguriert. Aber wieso?&lt;/p></description></item><item><title>Super Boring Topic</title><link>https://backendhance.com/blog/2023/super-boring-topic/</link><pubDate>Thu, 07 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/super-boring-topic/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Gestern habe ich einen Artikel über die Assert Klasse von Spring veröffentlicht. Und im Mai, &lt;a href="https://backendhance.com/slides/pragmatic-spring.pdf">beim Developer Meetup in Essen&lt;/a>
habe ich auch über die Klasse gesprochen.&lt;/p>
&lt;p>&lt;strong>Aber eigentlich ist sie super langweilig.&lt;/strong>&lt;/p>
&lt;p>Für alle, die sie nicht kennen:&lt;/p>
&lt;p>Sie bietet eine Reihe an simplen &amp;ldquo;assert&amp;rdquo; Methoden. Zum Beispiel statt&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">someVariable&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">null&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">throw&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">IllegalArgumentException&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;someVariable must not be null&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>können wir schreiben:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Assert&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">isNotNull&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">someVariable&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;someVariable must not be null&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Wahnsinn.&lt;/strong>&lt;/p></description></item><item><title>Outch 😵</title><link>https://backendhance.com/blog/2023/outch/</link><pubDate>Mon, 04 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/outch/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="change-tut-weh">
&lt;a href="#change-tut-weh" class="anchor">Change tut weh.&lt;/a>
&lt;/h2>
&lt;p>Der Satz ist etwas abgebrüht.&lt;/p>
&lt;p>Aber es ist mir vor einigen Wochen nochmal bewusst geworden.&lt;/p>
&lt;p>Toni, ein externer DevOps Engineer (Grüße gehen raus 😉 ), war neu im Team.&lt;/p>
&lt;p>Auf seiner Webseite schreibt er &lt;em>&amp;ldquo;Als Experte für Developer Experience habe ich das Ziel, ein Ökosystem für hochperformante &amp;amp; innovativ agierende Entwicklungsteams zu schaffen.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Und das lebt er. Es gibt auch mehr als genug zutun. &lt;strong>Und wir wollen es anpacken!&lt;/strong>&lt;/p></description></item><item><title>What Sound Does Your Microwave?</title><link>https://backendhance.com/blog/2023/what-sound-does-your-microwave/</link><pubDate>Thu, 24 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/what-sound-does-your-microwave/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Kennst du das? Du machst ein Gerät an, dass du immer wieder benutzt. Über Jahre. Du kennst das Geräusch, dass es macht.&lt;/p>
&lt;p>Das rythmische &amp;ldquo;&lt;em>schwu schwu schwu&lt;/em>&amp;rdquo;, wenn du die Spülmaschine anstellst.&lt;/p>
&lt;p>Oder das bekannte &amp;ldquo;&lt;em>klick&lt;/em>&amp;rdquo; wenn der Ofen angeht.&lt;/p>
&lt;p>Dein Signal: alles läuft. Weiter machen!&lt;/p>
&lt;h2 id="doch-was-wenn-es-plötzlich-anders-klingt">
&lt;a href="#doch-was-wenn-es-pl%c3%b6tzlich-anders-klingt" class="anchor">Doch was, wenn es plötzlich anders klingt?&lt;/a>
&lt;/h2>
&lt;p>Es nicht mehr deinen Erwartungen entspricht?&lt;/p>
&lt;p>Genau das ist mir mit meiner Mikrowelle passiert.&lt;/p>
&lt;p>Ich machte sie - wie gewohnt - an. Ich erwartete ein &amp;ldquo;&lt;em>djeeehhh&lt;/em>&amp;rdquo;.&lt;/p></description></item><item><title>The Fifth Ideal: Customer Focus</title><link>https://backendhance.com/blog/2023/the-fifth-ideal-customer-focus/</link><pubDate>Mon, 21 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/the-fifth-ideal-customer-focus/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Das VPN sollte nicht von euch [Sysadmins] betrieben werden&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Nach diesem Satz sah ich in erschreckte Gesichter.&lt;/p>
&lt;p>Er ist mir herausgerutscht. Während dem wöchentlichen Jour Fixe zwischen den Entwicklern und Admins.&lt;/p>
&lt;p>Er kam auf die Frage was unsere Prioritäten sind.&lt;/p>
&lt;p>&lt;strong>Das traf ein Nerv.&lt;/strong>&lt;/p>
&lt;p>Wahrscheinlich nicht, weil die Beteiligten emotional so stark am VPN hängen.&lt;/p>
&lt;p>Wahrscheinlich auch nicht, weil die Aussage falsch ist.&lt;/p>
&lt;p>Ne - es liegt eher daran, dass sie für das Team so unkonventionell ist.&lt;/p></description></item><item><title>The Fourth Ideal: Psychological Safety</title><link>https://backendhance.com/blog/2023/the-fourth-ideal-psychological-safety/</link><pubDate>Mon, 14 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/the-fourth-ideal-psychological-safety/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;strong>Letzte Woche sind die Emotionen hochgekocht.&lt;/strong>&lt;/p>
&lt;p>Einer meiner Kunden hat etwas außergewöhnliches geschafft. Sie betreiben seit 10 Jahren erfolgreich ein Produkt. Höchst profitabel.&lt;/p>
&lt;p>Aber das Projekt wurde nicht von ausgelernten Entwicklern begonnen. Es startete als Nebenprodukt. Die ersten Entwickler waren Queereinsteiger. Super interessiert, motiviert, engagiert und Experten in der Domäne.&lt;/p>
&lt;p>&lt;strong>Und ihnen ist etwas gelungen, was in 9 von 10 Fällen schiefgeht.&lt;/strong> Ihr Produkt wird aktiv genutzt. Kunden zahlen gerne dafür. Es löst ein echtes Problem. In einer Nische, die kaum eine andere Firma besetzen kann.&lt;/p></description></item><item><title>Improvement of Daily Work: The Third Ideal</title><link>https://backendhance.com/blog/2023/improvement-of-daily-work-the-third-ideal/</link><pubDate>Mon, 07 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/improvement-of-daily-work-the-third-ideal/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Im Chinesischen gibt es ein berühmtes Sprichwort:&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Die beste Zeit, einen Baum zu pflanzen, war vor 20 Jahren. Die zweitbeste Zeit ist jetzt.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>In der Softwareentwicklung kennen wir das doch auch. Immer wieder beschweren wir uns über die Fehler, die wir damals gemacht haben.&lt;/p>
&lt;h2 id="müsste-man-mal-machen">
&lt;a href="#m%c3%bcsste-man-mal-machen" class="anchor">&amp;ldquo;Müsste man mal machen.&amp;rdquo;&lt;/a>
&lt;/h2>
&lt;p>Das ist so ein Satz, der in jeder zweiten Retrospektive fällt.&lt;/p>
&lt;p>Technische Schuld häuft sich an. &lt;em>&amp;ldquo;Müsste man mal machen.&amp;rdquo;&lt;/em>&lt;/p></description></item><item><title>The Second Ideal: Focus, Flow, and Joy</title><link>https://backendhance.com/blog/2023/the-second-ideal-focus-flow-and-joy/</link><pubDate>Mon, 31 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/the-second-ideal-focus-flow-and-joy/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Wann hast du das letzte Mal die Zeit vergessen? Einfach immer weiter machen. Ohne das es schwer fällt. Mit voller Konzentration. Um dich herum blendest du alles aus. Du vergisst zu essen. Auf Toilette gehen zögerst du hinaus.&lt;/p>
&lt;p>Bei mir war es zuletzt als ich &lt;a href="">backendhance.com&lt;/a>
designed habe.&lt;/p>
&lt;p>Ich war voll drinnen. Und es war so befriedigend. Meine Website baue ich mit Hugo. Und das ist super schnell.&lt;/p>
&lt;p>Soll der Header etwas größer? &lt;code>font-size&lt;/code> angepasst. Ich klicke auf meinen Browser, um den change zu betrachten und &lt;em>BÄM&lt;/em> fertig compiled.&lt;/p></description></item><item><title>The First Ideal: Locality and Simplicity</title><link>https://backendhance.com/blog/2023/the-first-ideal-locality-and-simplicity/</link><pubDate>Mon, 24 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/the-first-ideal-locality-and-simplicity/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ich habe mal ein Backend zu zweit entwickelt. Es war das Backend von &lt;a href="https://www.innogames.com/de/spiele/sunrise-village/"target="_blank" rel="noopener noreferrer">Sunrise Village&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>Bereits in der Pre-production schloss ich mich dem Team an. Gemeinsam mit meinem damaligen Kollegen. Über drei Jahre war das unser Backendteam.&lt;/p>
&lt;p>Die anderen Teams waren größer. Wir hatten bis zu 8 Frontendentwickler, ähnlich viele Artists, zwei Gamedesigner, Productowner, Productmanager und 2 Testautomatisierer.&lt;/p>
&lt;p>Und selbst, dass wir nur zu zweit waren, war eigentlich zu viel. Wir waren es zur Risikominimierung - falls einer ausfällt.&lt;/p></description></item><item><title>"I think Loom is going to kill reactive programming." ~Brian Goetz</title><link>https://backendhance.com/blog/2023/i-think-loom-is-going-to-kill-reactive-programming-brian-goetz/</link><pubDate>Thu, 20 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/i-think-loom-is-going-to-kill-reactive-programming-brian-goetz/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&amp;ldquo;Ich glaube Loom wird reactive programming vernichten&amp;rdquo;&lt;/p>
&lt;p>&lt;a href="https://www.youtube.com/watch?v=9si7gK94gLo&amp;amp;t=1156s"target="_blank" rel="noopener noreferrer">Dieser Satz stammt von Brian Goetz&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>Weißt du wer das ist? Brian ist seit 13 Jahren Java Language Architect bei Oracle.&lt;/p>
&lt;p>Aus seiner Feder stammt &amp;ldquo;Java Concurrency in Practice&amp;rdquo; - &lt;a href="https://www.linkedin.com/posts/marcus-held_buchempfehlungen-softwareentwicklung-faeshrung-activity-7056171275131518976-pO-n"target="_blank" rel="noopener noreferrer">eines der Standardwerke für jeden Java Entwickler&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>Er war es auch, der JSR-335 - Lambda Expressions - in die Sprache brachte.&lt;/p>
&lt;p>Was Brian sagt hat Substanz. Du findest auf der ganzen Welt wohl kaum jemanden, der einen besseren Ausblick auf die Zukunft von Java und dessen Ökosystem geben kann.&lt;/p></description></item><item><title>Surprising Documentation</title><link>https://backendhance.com/blog/2023/surprising-documentation/</link><pubDate>Mon, 17 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/surprising-documentation/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Klassenkommentare, Architekturdokumentation, Methodenkommentare, API-Dokumentation, Inlinekommentare, Featuredokumentation, Wireframes, Entity-Releationship-Diagramme, Use-Case-Diagramme, Processdokumentation, End-User-Dokumentation&amp;hellip;.&lt;/p>
&lt;p>Es gibt so viele Dinge die man dokumentieren &lt;em>kann&lt;/em>. Aber welche brauche ich wirklich?&lt;/p>
&lt;p>&lt;strong>Dokumentation schreibt sich nicht von alleine.&lt;/strong> Jemand muss sich dafür die Zeit nehmen. Und damit sie auch wirklich Mehrwert bringt muss sie gut geschrieben, möglichst vollständig &lt;em>und&lt;/em> fokussiert sein. Das kann nicht jeder.&lt;/p>
&lt;p>In großen Konzernen - mit tausenden Mitarbeitern - wird viel dokumentiert. Es gibt Softwarearchitekten, die die Zeit und Ausbildung haben gute Dokumentation zu schreiben. Es gibt so viele Entwickler, dass genügend Zeit eingeräumt wird den Code zu dokumentieren. Und technischer Autoren verfassen in höchster Qualität die End-User-Dokumentation.&lt;/p></description></item><item><title>Nobody Talks About Project Loom</title><link>https://backendhance.com/blog/2023/nobody-talks-about-project-loom/</link><pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/nobody-talks-about-project-loom/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Wieso spricht keiner über Project Loom?&lt;/p>
&lt;p>Auf der JVM steht uns einer der größten Änderungen seit Jahren bevor.&lt;/p>
&lt;p>Und sie beeinflusst massiv wie wir arbeiten.&lt;/p>
&lt;p>Asynchronität ist schwer. Es muss über so viel nachgedacht werden:&lt;/p>
&lt;p>Wie konfiguriere ich meinen Threadpool? Hat der Codepath mehr wait-time oder rechnet er lange? Und wie groß sollte die Queue vor dem Threadpool sein? Sind Spikes in dem Codepath zu erwarten?&lt;/p>
&lt;p>Und wie bekomme ich eigentlich meine globalen State, wie den &lt;code>SecurityContext&lt;/code> oder den MDC darüber?&lt;/p></description></item><item><title>Are You a Carpenter?</title><link>https://backendhance.com/blog/2023/are-you-a-carpenter/</link><pubDate>Mon, 03 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/are-you-a-carpenter/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Was unterscheidet einen Softwareentwickler von einem Schreiner?&lt;/p>
&lt;p>Der Schreiner produziert Möbel. Der Entwickler Softwareanwendungen.&lt;/p>
&lt;p>Stell dir vor du gehst zum Schreiner. Du betrittst die Werkstatt, siehst allerlei Material, Werkzeuge, fertige und unfertige Möbelstücke. Der Meister kommt auf dich zu.&lt;/p>
&lt;p>Er fragt dich nach deinen Wünschen. Es soll ein Tisch sein. Mit eingelassener Plexiglas-Platte. Für draußen.&lt;/p>
&lt;p>Passend zu deinen Wünschen und mit seiner Expertise sucht er das richtige Holz aus. Für draußen muss es ein Wetterbeständiges Material sein. Es darf sich nicht stark verziehen. Damit die eingelassene Platte nicht zerbricht.&lt;/p></description></item><item><title>Write your own PasswordEncoder. NOT!</title><link>https://backendhance.com/blog/2023/write-your-own-passwordencoder-not/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/write-your-own-passwordencoder-not/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Hast du schon mal einen eigenen Passwort-Encoder geschrieben? Ich zwar nicht direkt - aber ich musste einen selbstgezimmerten benutzen. In einem zentralen User-Management-Service liefen die Kundendaten aller Nutzer zusammen. Und in diesem wurden die Passwörter gespeichert. Bei der Registrierung eines neuen Users musste also der gleiche Encoder genutzt werden.&lt;/p>
&lt;p>Es ist uns in der Praxis - zum Glück - nicht um die Ohren geflogen. Aber es war höchst kritisch. Das Encoding war nicht stark. Der Salt basierte noch auf MD5. Das war bereits zu dieser Zeit kein starker Hashingalgorithmus mehr. Die banale Lösung es &amp;ldquo;sicherer&amp;rdquo; zu machen: Einfach zwei mal anwenden. Da kommt niemand drauf 🤦‍♂️&lt;/p></description></item><item><title>Laziness Prevails</title><link>https://backendhance.com/blog/2023/laziness-prevails/</link><pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2023/laziness-prevails/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Faulheit siegt. Eigentlich immer. Wie oft ich schon versucht habe mir vorteilhafte Routinen anzueignen.&lt;/p>
&lt;p>Ich meldete mich im Fitnessstudio an - nach ein paar Monaten ging ich kaum noch hin. Ich backte mein Brot selbst - nach (immerhin) zwei Jahren war das nicht mehr der Fall. Ich stand um 5 Uhr auf, um zu meditieren und Sport zu machen - das hielt ich nicht mehr als 4 Wochen durch.&lt;/p></description></item><item><title>Java Bean Validation is an Anti-Pattern</title><link>https://backendhance.com/blog/2022/bean-validation-antipattern/</link><pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2022/bean-validation-antipattern/</guid><description>&lt;p>The &lt;code>javax.validation&lt;/code> package is widely used in our industry. And I don&amp;rsquo;t like it. I believe using bean validation is
an anti-pattern. It hides business relevant constraints, it leaves the choice when a validation happens to other
framework code, and I even saw cases where developers expected that the validation &amp;ldquo;just had to take place&amp;rdquo;, but it
never happened. Of course, there was also no test for it. And speaking about tests - testing these business relevant
constraints is painful as well.&lt;/p></description></item><item><title>Prefer UUID for your Primary Key</title><link>https://backendhance.com/blog/2021/uuid-primary-key/</link><pubDate>Mon, 02 Aug 2021 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2021/uuid-primary-key/</guid><description>&lt;p>In my &lt;a href="https://backendhance.com/en/blog/2021/numerical-id-consequence/">last post&lt;/a>
I discussed the downsides of using numerical types
for the primary key of an entity. We should avoid these issues all together by using &lt;code>UUID&lt;/code> instead and in this post I
will discuss the up- and downsides of this approach.&lt;/p>
&lt;p>Using a UUID as the primary ID is simple:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-kotlin" data-lang="kotlin">&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@Entity&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">Flat&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nd">@Id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">val&lt;/span> &lt;span class="py">id&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">UUID&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nc">UUID&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">randomUUID&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="generate-the-id-on-the-application">
&lt;a href="#generate-the-id-on-the-application" class="anchor">Generate the ID on the application&lt;/a>
&lt;/h2>
&lt;p>Similar to numerical ids we can generate it on the database as well. But for &lt;code>UUID&lt;/code> this is not necessary. The reason we
did this in the first place is that we needed to make sure that an ID is not used twice. A collision of &lt;code>UUID&lt;/code> is very
unlikely to occur.&lt;/p></description></item><item><title>The Inevitable Consequence of a Numerical Id</title><link>https://backendhance.com/blog/2021/numerical-id-consequence/</link><pubDate>Thu, 15 Jul 2021 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/blog/2021/numerical-id-consequence/</guid><description>&lt;p>In many (JPA) applications numerical ids are chosen for the &lt;a href="https://en.wikipedia.org/wiki/Surrogate_key"target="_blank" rel="noopener noreferrer">surrogate key&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
of the entities. But how do we make sure that they are not used twice? In a scenario where our application needs to scale horizontally we need a solution for that. Most developers come to the conclusion that the database should take care of that. But this is a fragile solution and in this article I want to discuss it.&lt;/p></description></item></channel></rss>