<?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/en/blog/category/entwicklungspraxis/</link><description>Recent content Backendhance</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 23 Nov 2024 08:47:27 +0100</lastBuildDate><atom:link href="https://backendhance.com/en/blog/category/entwicklungspraxis/index.xml" rel="self" type="application/rss+xml"/><item><title>Interview: How Atlassian Responds to Cloud Concerns and Over-Configuration of Tools</title><link>https://backendhance.com/en/blog/2024/atlassian-about-cloud-anxiety-and-overconfiguration/</link><pubDate>Sat, 23 Nov 2024 08:47:27 +0100</pubDate><author/><guid>https://backendhance.com/en/blog/2024/atlassian-about-cloud-anxiety-and-overconfiguration/</guid><description>&lt;p>&lt;em>I recently attended Team &amp;lsquo;24, Atlassian&amp;rsquo;s flagship conference, where I had the chance to meet with Matt Schvimmer, Senior Vice President and Head of Product for Atlassian’s Agile and DevOps portfolio. We discussed how Atlassian tools support modern software development.&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>
This interview was first published in German in &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>Atlassian tools like Jira, Bitbucket, Compass, and the newly announced Focus play a critical role for teams operating in complex environments. Schvimmer provided insights into the evolution of Atlassian&amp;rsquo;s tools and their future roadmap. He also addressed challenges such as synchronizing documentation with code, managing microservice complexity, and tackling tool over-configuration or cloud-related concerns.&lt;/em>&lt;/p></description></item><item><title>HashMap</title><link>https://backendhance.com/en/blog/2024/hashmap/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/hashmap/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>HashMap? How can HashMap be a topic for the newsletter? Hold on!&lt;/p>
&lt;p>The topic came to mind because I was in an interview for a client yesterday and spent quite a long time discussing the HashMap. The experience was a bit of déjà-vu. 2-3 years ago, I was heavily involved in recruiting. During that time, I conducted over 150 technical interviews. And from that period, I learned a lot about our industry. &lt;strong>First and foremost, we lack seniority and fail to sufficiently develop young developers.&lt;/strong>&lt;/p></description></item><item><title>Agile</title><link>https://backendhance.com/en/blog/2024/agile/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/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 never tires of mentioning that &amp;ldquo;agile&amp;rdquo; is an adjective&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
- and not a noun. It is not capitalized.&lt;/p>
&lt;p>The legendary document we have been referencing for nearly a quarter of a century is not called &amp;ldquo;The Agile Manifesto.&amp;rdquo;&lt;/p>
&lt;p>It is called the &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 is not something that can be bought. The manifesto describes how to develop software in an agile (as an adjective!) manner. It does not describe a product.&lt;/p></description></item><item><title>GitOps, SRE, DevOps - A Look Back and into the Future</title><link>https://backendhance.com/en/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/en/blog/2024/gitops-sre-devops---a-look-back-and-into-the-future/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Ten years ago, most companies were still dealing with manually managed infrastructures. Today, many medium-sized businesses still find themselves in the same situation. But that comes at a cost - and I&amp;rsquo;m feeling it right now.&lt;/p>
&lt;h2 id="the-ghosts-of-differences">
&lt;a href="#the-ghosts-of-differences" class="anchor">The Ghosts of Differences&lt;/a>
&lt;/h2>
&lt;p>It&amp;rsquo;s astonishing how often we chase ghosts simply because our environments differ. This ranges from obvious things like available CPU or RAM to subtler issues like different kernel versions or configuration disparities in applications. It gets especially tricky with external application servers, where configuration files are spread throughout the system and can easily drift apart.&lt;/p></description></item><item><title>Scrum Is Not Agile</title><link>https://backendhance.com/en/blog/2024/scrum-is-not-agile/</link><pubDate>Wed, 24 Apr 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/scrum-is-not-agile/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>In one of my client projects, we reflect on our working methods.&lt;/p>
&lt;p>Like most mid-sized projects out there, Scrum is used here too. But we have a few problems: - Sprint goals are never met - Not a sprint goes by without a new task coming in from the side - Estimations are regularly far from reality - Collaboration with other external parties is partially not integrated - &amp;hellip; I can certainly think of more examples&lt;/p></description></item><item><title>Daily Practice</title><link>https://backendhance.com/en/blog/2024/daily-practice/</link><pubDate>Fri, 29 Mar 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/daily-practice/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Have you ever tried closing vim?&lt;/p>
&lt;p>&lt;img src="https://backendhance.com/blog/2024/daily-practice/1e267db1-0d31-46eb-bd7e-1a11223716ad.jpg" alt="A meme about exiting vim">&lt;/p>
&lt;p>You probably know the meme. Even after decades, I still find it funny 😁&lt;/p>
&lt;p>&lt;strong>But what I haven&amp;rsquo;t managed to do in all these years is to seriously learn how to use vim.&lt;/strong> Sure, I press &lt;code>i&lt;/code> to enter insert mode and then I can type. And I&amp;rsquo;ve also learned &lt;code>dd&lt;/code> to delete a line. And yes, of course, I was one of the &lt;a href="https://stackoverflow.com/questions/11828270/how-do-i-exit-vim"target="_blank" rel="noopener noreferrer">three million viewers who were helped by Stack Overflow&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
to close vim 😉&lt;/p></description></item><item><title>Two More Billion Dollar Mistakes</title><link>https://backendhance.com/en/blog/2024/two-more-billion-dollar-mistakes/</link><pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/two-more-billion-dollar-mistakes/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>You might have heard that &lt;code>null&lt;/code> was referred to by its creator, Tony Hoare, as the &amp;ldquo;billion-dollar mistake.&amp;rdquo; In 2009, he publicly apologized at QCon for taking the easy path in 1965 by inventing &lt;code>null&lt;/code>:&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/en/blog/2024/survivorship-bias-in-tech/</link><pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/survivorship-bias-in-tech/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Do you know what Survivorship Bias is?&lt;/p>
&lt;blockquote>
&lt;p>[&amp;hellip;] According to Survivorship Bias, the probabilities of success are systematically overestimated because successful individuals or states are more visible than unsuccessful ones. ~ &lt;a href="https://en.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>This cognitive bias is interesting because it affects us in development as well. For 15 years, I have been working mainly in small and medium-sized enterprises (SMEs), which are companies with up to 250 employees. Clearly, these are not large corporations.&lt;/p></description></item><item><title>Three Topics</title><link>https://backendhance.com/en/blog/2024/three-topics/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/three-topics/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>This year, I&amp;rsquo;m a bit behind with the newsletters. For one, I&amp;rsquo;m deeply involved in client projects &amp;ndash; and the client always comes first. Additionally, since the beginning of the year, I&amp;rsquo;ve been battling pneumonia. It only started to improve this week. The symptoms were mild - after all, I continued to work - but I noticed a lack of energy for tasks beyond my duties.&lt;/p>
&lt;p>To get back into the swing of things: &lt;strong>Today, I have three short topics for you.&lt;/strong>&lt;/p></description></item><item><title>The ADM-3A Keyboard</title><link>https://backendhance.com/en/blog/2024/the-adm-3a-keyboard/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/the-adm-3a-keyboard/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h1 id="what-does-this-computer-have-to-do-with-your-work-today">
&lt;a href="#what-does-this-computer-have-to-do-with-your-work-today" class="anchor">What does this computer have to do with your work today?&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>You are looking at an ADM-3A from 1976.&lt;/p>
&lt;p>But why should this computer still interest you nearly 50 years later?&lt;/p>
&lt;h1 id="the-adm-3a-is-the-reason-for-some-standards-you-use-today">
&lt;a href="#the-adm-3a-is-the-reason-for-some-standards-you-use-today" class="anchor">The ADM-3A is the reason for some standards you use today&lt;/a>
&lt;/h1>
&lt;p>Take a look at the 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>Why do people still use &lt;code>esc&lt;/code> to enter command mode in vi?&lt;/p>
&lt;p>On the ADM-3A, the &lt;code>esc&lt;/code> key was right next to &lt;code>Q&lt;/code>.&lt;br>
&lt;em>It was easily accessible.&lt;/em>&lt;/p></description></item><item><title>Your Assumptions Are Wrong</title><link>https://backendhance.com/en/blog/2024/your-assumptions-are-wrong/</link><pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/your-assumptions-are-wrong/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Your email validation is probably incorrect. And your model that every person has a first and last name is also incorrect.&lt;/p>
&lt;p>While I was rummaging through my bookmarks in the past few days looking for an article on &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>
, I stumbled upon an old article from 2010: &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>An excellent essay!&lt;/p>
&lt;h1 id="our-assumptions-are-wrong">
&lt;a href="#our-assumptions-are-wrong" class="anchor">Our Assumptions are Wrong&lt;/a>
&lt;/h1>
&lt;p>Perhaps you&amp;rsquo;ve already experienced that not every person has exactly one first and last name. And maybe you&amp;rsquo;ve had a support case where names change. After all, there are people who get married 😉&lt;/p></description></item><item><title>I Commited to Main</title><link>https://backendhance.com/en/blog/2024/i-commited-to-main/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/i-commited-to-main/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>I committed to &lt;code>main&lt;/code>. Just like that 🫢&lt;/p>
&lt;p>, you&amp;rsquo;re likely to have one of two reactions:&lt;/p>
&lt;p>&amp;ldquo;So what? Don&amp;rsquo;t bore me with that!&amp;rdquo;&lt;br>
&lt;em>or&lt;/em>&lt;/p>
&lt;p>&amp;ldquo;WTF? YOU CAN&amp;rsquo;T DO THAT!&amp;rdquo;&lt;/p>
&lt;p>If you belong to the first category: Cool! Either you&amp;rsquo;re not live yet and have the freedom to develop trunk-based, or your organization is so advanced with automation and the DevOps mindset that you can develop trunk-based too.&lt;/p>
&lt;p>Everything&amp;rsquo;s cool! Nothing to see here. See you in the next newsletter!&lt;/p></description></item><item><title>Unnecessary Unit Tests</title><link>https://backendhance.com/en/blog/2024/unnecessary-unit-tests/</link><pubDate>Fri, 12 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/unnecessary-unit-tests/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="ever-heard-of-tautological-tests">
&lt;a href="#ever-heard-of-tautological-tests" class="anchor">Ever Heard of Tautological Tests?&lt;/a>
&lt;/h2>
&lt;p>In recent months, I&amp;rsquo;ve delved back into test architecture and design.&lt;/p>
&lt;p>&lt;em>(I can&amp;rsquo;t quite remember how it all started&amp;hellip; probably the YouTube algorithm suggesting interesting talks again 😉)&lt;/em>&lt;/p>
&lt;p>Anyway, I wrote &lt;a href="https://backendhance.com/en/blog/2023/a-unit-in-a-test-is-not-the-class-under-test/">back in early December&lt;/a>
that a few years ago, in a blog, I propagated practices quite
different from what I recommend today.&lt;/p>
&lt;p>The topic keeps gripping me, so today, it&amp;rsquo;s about tests again.&lt;/p></description></item><item><title>3 Highlights From 2023</title><link>https://backendhance.com/en/blog/2024/3-highlights-from-2023/</link><pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2024/3-highlights-from-2023/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>When was the last major change in your life?&lt;/p>
&lt;p>For me, it was becoming self-employed in 2023. What an adventure!&lt;/p>
&lt;p>The year is now over, and I enjoyed the holidays to unwind and spend time with my family.&lt;/p>
&lt;p>Believe me, in the first year of self-employment, it&amp;rsquo;s leisure time that suffers the most 😉&lt;/p>
&lt;p>So much happened last year. There were so many highlights. And there were so many interesting topics. Today, I want to share three of my many highlights from last year with you. Buckle up. Here we go!&lt;/p></description></item><item><title>A Picture Is Worth a Thousand Words</title><link>https://backendhance.com/en/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/en/blog/2023/a-picture-is-worth-a-thousand-words/</guid><description>&lt;p>Hi,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;A picture is worth a thousand words.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>I heard this proverb early on, probably for the first time during my school days. It&amp;rsquo;s a wisdom that we have carried forward for a long time.&lt;/p>
&lt;p>&lt;strong>Perhaps you associate this proverb more with areas like marketing, statistics, politics&lt;/strong>, or you think, like me, of the wisdoms of our teachers back then.&lt;/p>
&lt;p>&lt;strong>Something I&amp;rsquo;ve realized repeatedly in recent years is: It&amp;rsquo;s also relevant for us in software development.&lt;/strong>&lt;/p></description></item><item><title>A "Unit" In A Test Is Not The Class Under Test</title><link>https://backendhance.com/en/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/en/blog/2023/a-unit-in-a-test-is-not-the-class-under-test/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="what-is-actually-a-unit-in-a-unit-test">
&lt;a href="#what-is-actually-a-unit-in-a-unit-test" class="anchor">What is actually a &amp;ldquo;Unit&amp;rdquo; in a Unit Test?&lt;/a>
&lt;/h2>
&lt;p>&lt;em>Dumb question, you might say.&lt;/em>&lt;/p>
&lt;p>But it&amp;rsquo;s an interesting one. For many years, like most people who talk about this topic, I believed:&lt;/p>
&lt;p>&lt;strong>A unit is a class that I want to test.&lt;/strong>&lt;/p>
&lt;p>And maybe you saw it that way too. And you certainly had a few problems with it.&lt;/p>
&lt;h3 id="for-example-the-symptoms-of-resulting-coupling">
&lt;a href="#for-example-the-symptoms-of-resulting-coupling" class="anchor">For example, the symptoms of resulting Coupling&lt;/a>
&lt;/h3>
&lt;p>What happens when we write a &lt;code>UserServiceTest&lt;/code> class? We have - without realizing it - established a semantic coupling between the &lt;code>UserService&lt;/code> class and the &lt;code>UserServiceTest&lt;/code>.&lt;/p></description></item><item><title>Why Is OOP So Popular?</title><link>https://backendhance.com/en/blog/2023/why-is-oop-so-popular/</link><pubDate>Tue, 21 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/why-is-oop-so-popular/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Why do we develop object-oriented today and not functionally?&lt;/p>
&lt;p>Why are 7 out of 10 of the most popular programming languages object-oriented? And why is there no purely functional language among them?&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>Source: &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>This question was also asked by &lt;a href="https://www.youtube.com/watch?v=QyJZzq0v7Z4"target="_blank" rel="noopener noreferrer">Richard Feldman in 2019&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
. And the backgrounds are interesting.&lt;/p>
&lt;p>Of course - as always - it&amp;rsquo;s complicated.&lt;/p>
&lt;p>But one aspect I find particularly interesting.&lt;/p></description></item><item><title>ChatGPT Killed my Blog</title><link>https://backendhance.com/en/blog/2023/chatgpt-killed-my-blog/</link><pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/chatgpt-killed-my-blog/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>My work methods have changed more in the past year than ever before.&lt;/p>
&lt;p>A year ago, OpenAI released ChatGPT.&lt;/p>
&lt;p>At the time, I thought the technology was cool, but I didn&amp;rsquo;t realize how much it would impact my work. And that in less than 12 months.&lt;/p>
&lt;p>&lt;strong>Today, I use AI for so many things:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>I no longer Google questions; I ask ChatGPT&lt;/li>
&lt;li>GitHub Copilot writes code before I even know what I want to write&lt;/li>
&lt;li>My content (including this one) is proofread by ChatGPT&lt;/li>
&lt;li>I have stock images generated by Midjourney&lt;/li>
&lt;li>My recent presentations were created with ChatGPT&lt;/li>
&lt;li>Even the pirate puzzle for the children&amp;rsquo;s birthday party is generated by ChatGPT&lt;/li>
&lt;/ul>
&lt;p>And this list is far from complete.&lt;/p></description></item><item><title>@Transaction Around Test</title><link>https://backendhance.com/en/blog/2023/transaction-around-test/</link><pubDate>Mon, 13 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/transaction-around-test/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>My fingers were tingling at the start of &lt;a href="https://thorben-janssen.com/"target="_blank" rel="noopener noreferrer">Thorben Janssen&amp;rsquo;s&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
session &amp;ldquo;The Big Java Persistence Q&amp;amp;A&amp;rdquo;.&lt;/p>
&lt;p>The first question was roughly:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;In the previous talk (something with JPA), it was said that one should annotate every test with &lt;code>@Transactional&lt;/code>. This will automatically roll back the data after the test. We&amp;rsquo;ve had a discussion and can&amp;rsquo;t agree. What&amp;rsquo;s your recommendation?&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>Thorben&amp;rsquo;s answer made me nervous. He countered with a question of his own, also paraphrased:&lt;/p></description></item><item><title>Kids Treasure Hunt</title><link>https://backendhance.com/en/blog/2023/kids-treasure-hunt/</link><pubDate>Mon, 06 Nov 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/kids-treasure-hunt/</guid><description>&lt;p>Hi,&lt;/p>
&lt;blockquote>
&lt;p>For a treasure hunt for a 5-year-old, I want to write a text. The text should be written by a pirate, describing a riddle where the pirate&amp;rsquo;s treasure is hidden. It should be hidden in a place where creepy trees are. Can you write the text for me and make it rhyme?&lt;/p>&lt;/blockquote>
&lt;p>With this prompt, I fed ChatGPT. I had just returned from &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">Berlin from the RabbitMQ Summit&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/en/blog/2023/is-scrum-democratic/</link><pubDate>Tue, 31 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/is-scrum-democratic/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Is Scrum democratic?&lt;/p>
&lt;p>This question keeps coming up.&lt;/p>
&lt;p>Time and time again, I find myself in teams where this question becomes the focal point.&lt;/p>
&lt;p>The keyword that often comes up is &lt;strong>&amp;ldquo;self-organized team.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;h1 id="how-much-autonomy-does-a-self-organized-team-have">
&lt;a href="#how-much-autonomy-does-a-self-organized-team-have" class="anchor">How much autonomy does a self-organized team have?&lt;/a>
&lt;/h1>
&lt;p>&lt;strong>Undoubtedly: The team organizes its work on its own.&lt;/strong>&lt;/p>
&lt;p>The Product Owner decides which &lt;em>tasks&lt;/em> are to be tackled and in which &lt;em>order&lt;/em>.&lt;/p>
&lt;p>&lt;strong>And he is a part of the team.&lt;/strong>&lt;/p></description></item><item><title>Redundant Information</title><link>https://backendhance.com/en/blog/2023/redundant-information/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/redundant-information/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;em>&amp;ldquo;After importing, we unpack the file and read the meta-information.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>&lt;em>&amp;ldquo;And where do we write it?&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>&lt;em>&amp;ldquo;This information is stored in different databases. The path information is distributed across all service databases so that they know how to access the files. Other data is stored in the system database and in each tenant database.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Does that sound normal to you?&lt;/p>
&lt;p>It shouldn&amp;rsquo;t.&lt;/p>
&lt;h1 id="what-we-are-experiencing-here-is-information-duplication">
&lt;a href="#what-we-are-experiencing-here-is-information-duplication" class="anchor">What we are experiencing here is information duplication.&lt;/a>
&lt;/h1>
&lt;p>&lt;em>&amp;ldquo;But Marcus, why is that so bad? We just need the information in different places.&amp;rdquo;&lt;/em>&lt;/p></description></item><item><title>Editor Fluency</title><link>https://backendhance.com/en/blog/2023/editor-fluency/</link><pubDate>Mon, 16 Oct 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/editor-fluency/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Today, I gave a presentation titled &amp;ldquo;Pragmatic Programming with Kotlin&amp;rdquo; at KKON.&lt;/p>
&lt;p>It was once again a great pleasure. And because the &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>
is coming up this Friday, followed by the &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>
in two weeks, I really didn&amp;rsquo;t feel like creating more slides.&lt;/p>
&lt;p>&lt;strong>So, I opted for live coding.&lt;/strong>&lt;/p>
&lt;p>That way, I&amp;rsquo;m certainly faster in preparation (tm).&lt;/p>
&lt;p>But aside from my laziness, there was another reason why I chose to do this.&lt;/p></description></item><item><title>Deliberate Practice</title><link>https://backendhance.com/en/blog/2023/deliberate-practice/</link><pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/deliberate-practice/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;strong>Currently, I am practicing calligraphy.&lt;/strong> My handwriting has always been purely &amp;ldquo;functional.&amp;rdquo; Every day, I write out all the letters of the alphabet, focusing on the quality of each stroke.&lt;/p>
&lt;p>&lt;strong>Five years ago, I practiced touch-typing.&lt;/strong> Every day for 10 minutes on &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>Seven years ago, I banished my mouse within the IDE.&lt;/strong> I had to learn how to operate everything using the keyboard alone.&lt;/p>
&lt;p>&lt;strong>And ten years ago, I focused on the Shell.&lt;/strong> I performed all operations on my system there.&lt;/p></description></item><item><title>Java 21 is GA!</title><link>https://backendhance.com/en/blog/2023/java-21-is-ga/</link><pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/java-21-is-ga/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Java 21 has finally reached General Availability (GA) status since Tuesday 🎉&lt;/p>
&lt;p>For months, I&amp;rsquo;ve taken every opportunity to talk about how virtual threads are the highlight of this release for me. For instance, in &lt;a href="https://backendhance.com/en/blog/2023/nobody-talks-about-project-loom/">this&lt;/a>
or &lt;a href="https://backendhance.com/en/blog/2023/i-think-loom-is-going-to-kill-reactive-programming-brian-goetz/">this&lt;/a>
old newsletter.&lt;/p>
&lt;p>And that hasn&amp;rsquo;t changed. I believe virtual threads are one of the most significant improvements in years. Whether everything turns out as expected remains to be seen.&lt;/p>
&lt;p>But of course, there are also other features that shouldn&amp;rsquo;t go unmentioned.&lt;/p></description></item><item><title>Spring Events: Decouple Your Application with @EventListener and ApplicationEvents</title><link>https://backendhance.com/en/blog/2023/spring-events/</link><pubDate>Wed, 13 Sep 2023 07:07:21 +0200</pubDate><author/><guid>https://backendhance.com/en/blog/2023/spring-events/</guid><description>&lt;p>If you&amp;rsquo;re already working with the &lt;strong>Spring Framework&lt;/strong>, you&amp;rsquo;ve undoubtedly recognized its power and versatility. One of the valuable - yet often overlooked - features of Spring is its event-handling system. In this article, we&amp;rsquo;ll delve deeper into how you can configure events in the &lt;strong>Spring Framework&lt;/strong> using &lt;code>@EventListener&lt;/code>. Moreover, we&amp;rsquo;ll illustrate how these events can be paired with transactions and asynchronicity.&lt;/p>
&lt;h2 id="why-events-in-the-spring-framework">
&lt;a href="#why-events-in-the-spring-framework" class="anchor">Why Events in the Spring Framework?&lt;/a>
&lt;/h2>
&lt;p>Events are an integral component of the Spring Framework. They allow for the creation of loosely coupled applications. &lt;strong>Spring Boot&lt;/strong> employs events to communicate the application&amp;rsquo;s status. An example of this is the &lt;code>ApplicationStartedEvent&lt;/code>. However, you can also publish your own events. And this is possible out-of-the-box, without boilerplate and with minimal effort.&lt;/p></description></item><item><title>Snowflake Connection Provider</title><link>https://backendhance.com/en/blog/2023/snowflake-connection-provider/</link><pubDate>Mon, 11 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/snowflake-connection-provider/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>What do snowflakes have to do with software development?&lt;/p>
&lt;p>Strange question, I know.&lt;/p>
&lt;p>But I had to ask myself this recently.&lt;/p>
&lt;p>&lt;strong>I was going through the code.&lt;/strong>&lt;/p>
&lt;p>I wanted to understand which connection pools we have and how they are configured.&lt;/p>
&lt;p>That&amp;rsquo;s when I stumbled upon a connection pool named &lt;code>SnowflakeConnectionProviders&lt;/code>.&lt;/p>
&lt;p>Huh?&lt;/p>
&lt;p>What is that supposed to be? And how is it used?&lt;/p>
&lt;p>And why is it a &lt;code>HashMap&amp;lt;String, IConnectionProvider&amp;gt;&lt;/code>?&lt;/p></description></item><item><title>Super Boring Topic</title><link>https://backendhance.com/en/blog/2023/super-boring-topic/</link><pubDate>Thu, 07 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/super-boring-topic/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Yesterday, I published an article about the Assert class from Spring. And in May, at the &lt;a href="https://backendhance.com/slides/pragmatic-spring.pdf">Developer Meetup in Essen&lt;/a>
, I also talked about the class.&lt;/p>
&lt;p>&lt;strong>But actually, it&amp;rsquo;s super boring.&lt;/strong>&lt;/p>
&lt;p>For those who don&amp;rsquo;t know:&lt;/p>
&lt;p>It offers a series of simple &amp;ldquo;assert&amp;rdquo; methods. For example, instead of&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>we can write:&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>Incredible.&lt;/strong>&lt;/p></description></item><item><title>Outch 😵</title><link>https://backendhance.com/en/blog/2023/outch/</link><pubDate>Mon, 04 Sep 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/outch/</guid><description>&lt;p>Hi,&lt;/p>
&lt;h2 id="change-hurts">
&lt;a href="#change-hurts" class="anchor">Change hurts.&lt;/a>
&lt;/h2>
&lt;p>The sentence is somewhat jaded.&lt;/p>
&lt;p>But it became clear to me again a few weeks ago.&lt;/p>
&lt;p>Toni, an external DevOps Engineer (shoutout to you 😉), was new to the team.&lt;/p>
&lt;p>On his website he writes, &lt;em>&amp;ldquo;As an expert in Developer Experience, my goal is to create an ecosystem for high-performance &amp;amp; innovatively-acting development teams.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>And he lives it. There is also more than enough to do. &lt;strong>And we want to tackle it!&lt;/strong>&lt;/p></description></item><item><title>What Sound Does Your Microwave?</title><link>https://backendhance.com/en/blog/2023/what-sound-does-your-microwave/</link><pubDate>Thu, 24 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/what-sound-does-your-microwave/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Do you know the feeling? You turn on a device that you use over and over again. For years. You recognize the sound it makes.&lt;/p>
&lt;p>The rhythmic &amp;ldquo;&lt;em>whoosh whoosh whoosh&lt;/em>&amp;rdquo;, when you start the dishwasher.&lt;/p>
&lt;p>Or the familiar &amp;ldquo;&lt;em>click&lt;/em>&amp;rdquo; when the oven turns on.&lt;/p>
&lt;p>Your signal: everything&amp;rsquo;s working. Carry on!&lt;/p>
&lt;h2 id="but-what-if-it-suddenly-sounds-different">
&lt;a href="#but-what-if-it-suddenly-sounds-different" class="anchor">But what if it suddenly sounds different?&lt;/a>
&lt;/h2>
&lt;p>It no longer meets your expectations?&lt;/p>
&lt;p>That&amp;rsquo;s exactly what happened to me with my microwave.&lt;/p></description></item><item><title>The Fifth Ideal: Customer Focus</title><link>https://backendhance.com/en/blog/2023/the-fifth-ideal-customer-focus/</link><pubDate>Mon, 21 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/the-fifth-ideal-customer-focus/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;em>&amp;ldquo;The VPN should not be operated by you [Sysadmins].&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>After this sentence, I saw startled faces.&lt;/p>
&lt;p>It slipped out of me. During the weekly Jour Fixe between the developers and admins.&lt;/p>
&lt;p>It came to the question of what our priorities are.&lt;/p>
&lt;p>&lt;strong>It hit a nerve.&lt;/strong>&lt;/p>
&lt;p>Probably not because the participants are emotionally attached to the VPN.&lt;/p>
&lt;p>Probably not because the statement is wrong.&lt;/p>
&lt;p>No - it&amp;rsquo;s more likely because it&amp;rsquo;s so unconventional for the team.&lt;/p></description></item><item><title>The Fourth Ideal: Psychological Safety</title><link>https://backendhance.com/en/blog/2023/the-fourth-ideal-psychological-safety/</link><pubDate>Mon, 14 Aug 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/the-fourth-ideal-psychological-safety/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&lt;strong>Last week, emotions were running high.&lt;/strong>&lt;/p>
&lt;p>One of my clients achieved something extraordinary. They have successfully operated a product for 10 years. Highly profitable.&lt;/p>
&lt;p>But the project was not started by trained developers. It began as a side product. The initial developers were career changers. Highly interested, motivated, engaged, and experts in their domain.&lt;/p>
&lt;p>&lt;strong>And they accomplished something that fails in 9 out of 10 cases.&lt;/strong> Their product is actively used. Customers happily pay for it. It solves a real problem. In a niche that hardly any other company can occupy.&lt;/p></description></item><item><title>Improvement of Daily Work: The Third Ideal</title><link>https://backendhance.com/en/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/en/blog/2023/improvement-of-daily-work-the-third-ideal/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>In Chinese, there is a famous saying:&lt;/p>
&lt;p>&lt;em>&amp;ldquo;The best time to plant a tree was 20 years ago. The second best time is now.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>We know this in software development too. We keep complaining about the mistakes we made back then.&lt;/p>
&lt;h2 id="should-do-that-someday">
&lt;a href="#should-do-that-someday" class="anchor">&amp;ldquo;Should do that someday.&amp;rdquo;&lt;/a>
&lt;/h2>
&lt;p>This is a sentence that comes up in every second retrospective.&lt;/p>
&lt;p>Technical debt is piling up. &lt;em>&amp;ldquo;Should do that someday.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>The daily usually takes too long. &lt;em>&amp;ldquo;Should do that someday.&amp;rdquo;&lt;/em>&lt;/p></description></item><item><title>The Second Ideal: Focus, Flow, and Joy</title><link>https://backendhance.com/en/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/en/blog/2023/the-second-ideal-focus-flow-and-joy/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>When was the last time you lost track of time? Just keep going. Without it being hard. With full concentration. You shut out everything around you. You forget to eat. You delay going to the toilet.&lt;/p>
&lt;p>For me, it was the last time I was designing &lt;a href="">backendhance.com&lt;/a>
.&lt;/p>
&lt;p>I was totally absorbed. And it was so satisfying. I build my website with Hugo. And it&amp;rsquo;s super fast.&lt;/p>
&lt;p>Should the header be a bit larger? &lt;code>font-size&lt;/code> adjusted. I click on my browser to view the change and &lt;em>BAM&lt;/em> it&amp;rsquo;s compiled.&lt;/p></description></item><item><title>The First Ideal: Locality and Simplicity</title><link>https://backendhance.com/en/blog/2023/the-first-ideal-locality-and-simplicity/</link><pubDate>Mon, 24 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/the-first-ideal-locality-and-simplicity/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>I once developed a backend with just two engineers. It was the backend for &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>I joined the team already in the pre-production stage, together with my then colleague. For over three years, we were the backend team.&lt;/p>
&lt;p>The other teams were larger. We had up to 8 frontend developers, a similar number of artists, two game designers, product owners, product managers, and 2 test automators.&lt;/p>
&lt;p>Even the fact that there were only two of us was actually too many. We kept it that way for risk minimization - in case one of us was unavailable.&lt;/p></description></item><item><title>"I think Loom is going to kill reactive programming." ~Brian Goetz</title><link>https://backendhance.com/en/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/en/blog/2023/i-think-loom-is-going-to-kill-reactive-programming-brian-goetz/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&amp;ldquo;I think Loom is going to kill reactive programming.&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">This statement comes from Brian Goetz&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>Do you know who he is? Brian has been the Java Language Architect at Oracle for 13 years.&lt;/p>
&lt;p>He is the author of &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">a standard work for every Java developer&lt;i class="bx bx-link-external">&lt;/i>&lt;/a>
.&lt;/p>
&lt;p>He was also the one who brought JSR-335 - Lambda Expressions - into the language.&lt;/p>
&lt;p>What Brian says has substance. You&amp;rsquo;ll hardly find anyone else in the world who can provide a better outlook on the future of Java and its ecosystem.&lt;/p></description></item><item><title>Surprising Documentation</title><link>https://backendhance.com/en/blog/2023/surprising-documentation/</link><pubDate>Mon, 17 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/surprising-documentation/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Class comments, architecture documentation, method comments, API documentation, inline comments, feature documentation, wireframes, entity-relationship diagrams, use-case diagrams, process documentation, end-user documentation&amp;hellip;&lt;/p>
&lt;p>There are so many things one &lt;em>can&lt;/em> document. But what do I really need?&lt;/p>
&lt;p>&lt;strong>Documentation doesn&amp;rsquo;t write itself.&lt;/strong> Someone has to take the time. And for it to truly add value, it needs to be well-written, as complete as possible &lt;em>and&lt;/em> focused. Not everyone can do that.&lt;/p>
&lt;p>In large corporations - with thousands of employees - a lot is documented. There are software architects who have the time and education to write good documentation. There are so many developers that enough time is allocated to document the code. And technical writers produce the highest quality end-user documentation.&lt;/p></description></item><item><title>Nobody Talks About Project Loom</title><link>https://backendhance.com/en/blog/2023/nobody-talks-about-project-loom/</link><pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/nobody-talks-about-project-loom/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>&amp;ldquo;Why isn&amp;rsquo;t anyone talking about Project Loom?&lt;/p>
&lt;p>On the JVM, one of the largest changes in years is looming over us.&lt;/p>
&lt;p>And it will massively influence the way we work.&lt;/p>
&lt;p>Asynchrony is difficult. There&amp;rsquo;s so much to consider:&lt;/p>
&lt;p>How do I configure my thread pool? Does the code path have more wait-time, or does it take a long time to calculate? And how large should the queue be in front of the thread pool? Are spikes in the code path to be expected?&lt;/p></description></item><item><title>Are You a Carpenter?</title><link>https://backendhance.com/en/blog/2023/are-you-a-carpenter/</link><pubDate>Mon, 03 Jul 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/are-you-a-carpenter/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>What distinguishes a software developer from a carpenter?&lt;/p>
&lt;p>The carpenter produces furniture. The developer creates software.&lt;/p>
&lt;p>Imagine you go to a carpenter. You enter the workshop, see various materials, tools, finished and unfinished pieces of furniture. The foreman approaches you.&lt;/p>
&lt;p>He asks you about your preferences. You want a table. With an inset plexiglass top. For outdoor use.&lt;/p>
&lt;p>Matching your preferences and with his expertise, he selects the right wood. For outdoor use, it needs to be a weather-resistant material. It shouldn&amp;rsquo;t warp significantly to prevent the inset top from breaking.&lt;/p></description></item><item><title>Write your own PasswordEncoder. NOT!</title><link>https://backendhance.com/en/blog/2023/write-your-own-passwordencoder-not/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/write-your-own-passwordencoder-not/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Have you ever written your own password encoder? I haven&amp;rsquo;t exactly - but I had to use a homemade one. In a central User-Management-Service, the customer data of all users came together. And in this, the passwords were stored. Thus, when registering a new user, the same encoder had to be used.&lt;/p>
&lt;p>In practice - fortunately - it did not blow up in our faces. But it was highly critical. The encoding was not strong. The Salt was still based on MD5. Even at that time, it was no longer a strong hashing algorithm. The trivial solution to make it &amp;ldquo;safer&amp;rdquo;: Simply apply it twice. No one will think of that 🤦‍♂️&lt;/p></description></item><item><title>Laziness Prevails</title><link>https://backendhance.com/en/blog/2023/laziness-prevails/</link><pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/blog/2023/laziness-prevails/</guid><description>&lt;p>Hi,&lt;/p>
&lt;p>Laziness prevails. Always. Countless times I&amp;rsquo;ve tried to adopt beneficial routines.&lt;/p>
&lt;p>I joined a gym - after a few months, I barely went anymore.&lt;/p>
&lt;p>I baked my own bread - after (admittedly) two years, I no longer did.&lt;/p>
&lt;p>I got up at 5 am to meditate and exercise - I couldn&amp;rsquo;t maintain this for more than 4 weeks.&lt;/p>
&lt;p>As good as these routines would have been, had I kept them up for years - they come with high investments. Carrying them out takes a lot of energy. To muster up the will, pack your things, hop on a bike, and head to the gym. That requires energy.&lt;/p></description></item><item><title>Java Bean Validation is an Anti-Pattern</title><link>https://backendhance.com/en/blog/2022/bean-validation-antipattern/</link><pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/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/en/blog/2021/uuid-primary-key/</link><pubDate>Mon, 02 Aug 2021 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/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/en/blog/2021/numerical-id-consequence/</link><pubDate>Thu, 15 Jul 2021 00:00:00 +0000</pubDate><author/><guid>https://backendhance.com/en/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>