<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Carsten Behrens</title><link>https://carstenbehrens.com/</link><description>Recent content in Home on Carsten Behrens</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 30 Jul 2026 13:05:09 +0000</lastBuildDate><atom:link href="https://carstenbehrens.com/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://carstenbehrens.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://carstenbehrens.com/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Carsten Behrens, a senior fullstack developer from Hamburg, Germany, with 7 years of experience shipping products end-to-end.&lt;/p&gt;&#10;&lt;p&gt;Currently I&amp;rsquo;m at Trusted Shops, building consumer applications across web, iOS, and Android.&lt;/p&gt;&#10;&lt;h2 id="experience"&gt;Experience&lt;/h2&gt;&#10;&lt;ul class="post-log experience-log"&gt;&#10; &lt;li&gt;&lt;span&gt;Senior Fullstack Engineer · &lt;a href="https://www.trustedshops.com"&gt;Trusted Shops&lt;/a&gt;&lt;/span&gt;&lt;time&gt;2024 – now&lt;/time&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;span&gt;Fullstack Engineer · &lt;a href="https://www.otto.de"&gt;Otto&lt;/a&gt;&lt;/span&gt;&lt;time&gt;2021 – 2024&lt;/time&gt;&lt;/li&gt;&#10; &lt;li&gt;&lt;span&gt;Software Engineer · &lt;a href="https://www.guj.de"&gt;Gruner + Jahr&lt;/a&gt;&lt;/span&gt;&lt;time&gt;2019 – 2021&lt;/time&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;&#10;&lt;ul class="project-list"&gt;&#10;&#10; &lt;li class="project"&gt;&#10; &lt;h3 class="project-title"&gt;&#10; &lt;squiggly-link href="https://carstenbehrens.com/boom-bap-app/" target="_blank" rel="noopener noreferrer"&gt;Boom Bap App&lt;/squiggly-link&gt;&#10; &lt;span class="project-tagline"&gt;Sampler &amp;amp; Step Sequencer&lt;/span&gt;&#10; &lt;/h3&gt;&#10; &lt;p&gt;A browser-based sampler, step sequencer, and drum machine. Load samples, slice them up, program beats on a grid, and hear the pattern play back in real time — all triggered and scheduled in the browser.&lt;/p&gt;</description></item><item><title>AI Killed the Testing Pyramid</title><link>https://carstenbehrens.com/posts/ai-killed-the-testing-pyramid/</link><pubDate>Thu, 30 Jul 2026 13:05:09 +0000</pubDate><guid>https://carstenbehrens.com/posts/ai-killed-the-testing-pyramid/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt;&#10;My opinion is heavily influenced by the type of software I have worked on in my career: mostly full-stack web and mobile applications. If you &lt;squiggly-link href="https://www.tbray.org/ongoing/When/202x/2021/05/15/Testing-in-2021" target="_blank" rel="noopener"&gt;build a different kind of software&lt;/squiggly-link&gt;, you may reasonably come to the opposite conclusion.&lt;/p&gt;&#10;&lt;p&gt;Also, &lt;squiggly-link href="https://martinfowler.com/articles/2021-test-shapes.html" target="_blank" rel="noopener"&gt;&amp;ldquo;the terms &amp;lsquo;unit test&amp;rsquo; and &amp;lsquo;integration test&amp;rsquo; have always been rather murky, even by the slippery standards of most software terminology&amp;rdquo;&lt;/squiggly-link&gt;.&#10;I won&amp;rsquo;t attempt a definition here. I&amp;rsquo;ll go with what I have experienced as a software developer.&lt;/p&gt;</description></item><item><title>The new bottleneck: Code Reviews</title><link>https://carstenbehrens.com/posts/the-new-bottleneck-code-reviews/</link><pubDate>Tue, 28 Jul 2026 14:02:03 +0000</pubDate><guid>https://carstenbehrens.com/posts/the-new-bottleneck-code-reviews/</guid><description>&lt;p&gt;It is 2026, and almost every developer I know uses AI to write their code.&lt;/p&gt;&#10;&lt;p&gt;Over the last 10 years we more or less solved software development. Code reviews, testing, QA, agile, Kanban, small teams — we knew what good looked like.&lt;/p&gt;&#10;&lt;p&gt;All of this was based on humans writing code and reading code at human speed.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://carstenbehrens.com/posts/the-new-bottleneck-code-reviews/image-1.gif" alt="Human writing something" width="468" height="352" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;This is not the case anymore.&lt;/p&gt;&#10;&lt;p&gt;This article is about how AI changes the way we work, and how we should change our habits to match.&lt;/p&gt;</description></item><item><title>Summary of “A Philosophy of Software Design” by John Ousterhout</title><link>https://carstenbehrens.com/posts/summary-of-a-philosophy-of-software-design-by-john-ousterhout/</link><pubDate>Fri, 29 Dec 2023 11:36:05 +0000</pubDate><guid>https://carstenbehrens.com/posts/summary-of-a-philosophy-of-software-design-by-john-ousterhout/</guid><description>&lt;p&gt;&amp;ldquo;A Philosophy of Software Design&amp;rdquo; is a book written by John Ousterhout.&#10;It summarizes the author&amp;rsquo;s extensive experience in computer science and&#10;his experience of teaching software design at Standford University. The main focus of this book is problem decomposition: &amp;ldquo;how to take a complex problem and device it up into pieces that can be solved independently.&amp;rdquo; The book provides techniques on how to deal with the complexity of software.&lt;/p&gt;</description></item><item><title>React Rendering for Dummies</title><link>https://carstenbehrens.com/posts/react-rendering-for-dummies/</link><pubDate>Thu, 24 Aug 2023 17:42:26 +0000</pubDate><guid>https://carstenbehrens.com/posts/react-rendering-for-dummies/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;React allows us to write Components that automatically update and re-render once the data of the component changes. In this blog post, I will briefly introduce how React archives this.&lt;/p&gt;&#10;&lt;p&gt;Hopefully, this blog post will answer the question:&#10;&lt;strong&gt;&amp;ldquo;What happens when I update my component state?&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h2 id="counter-example"&gt;Counter Example&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s take a look at an exemplary &amp;ldquo;component&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Notice that this example does not use any build-step. Instead, we import the required libraries (React, ReactDOM, and Babel) directly inside the browser. I&amp;rsquo;m doing this because I don&amp;rsquo;t want any framework &amp;ldquo;magic&amp;rdquo; to hide what is happening here.&lt;/p&gt;</description></item><item><title>SOLID: Dependency Inversion Principle in JavaScript and TypeScript</title><link>https://carstenbehrens.com/posts/solid-dependency-inversion-principle-in-javascript-and-typescript/</link><pubDate>Tue, 18 Jan 2022 18:41:19 +0000</pubDate><guid>https://carstenbehrens.com/posts/solid-dependency-inversion-principle-in-javascript-and-typescript/</guid><description>&lt;p&gt;In this series of blog posts, I will take a look at SOLID Principles in the context of JavaScript.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;SOLID&lt;/strong&gt; is an acronym referring to the SOLID Principles of class design that were popularized by Robert C. Martin.&lt;/p&gt;&#10;&lt;h2 id="the-dependency-inversion-principle"&gt;The Dependency Inversion Principle&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Modules that encapsulate high-level policy should not depend upon modules that implement details. Rather, both kinds of modules should depend upon abstractions.&lt;/p&gt;&#10;&lt;p&gt;— Robert C. Martin&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Or in a more simple way:&lt;/p&gt;</description></item><item><title>The basics of JWT (JSON Web Tokens) for Dummies</title><link>https://carstenbehrens.com/posts/the-basics-of-jwt-json-web-tokens-for-dummies/</link><pubDate>Tue, 03 Aug 2021 19:45:38 +0000</pubDate><guid>https://carstenbehrens.com/posts/the-basics-of-jwt-json-web-tokens-for-dummies/</guid><description>&lt;p&gt;JSON Web Tokens are a proposed internet standard that allows for stateless authentication.&lt;/p&gt;&#10;&lt;h2 id="use"&gt;Use&lt;/h2&gt;&#10;&lt;p&gt;JWT are mostly used to authenticate users in the context of websites / web application.&lt;/p&gt;&#10;&lt;h2 id="example"&gt;Example&lt;/h2&gt;&#10;&lt;p&gt;Before going into the nitty-gritty here is a simple example of its usage:&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s say we have a Web Application called Tweeter, this Web Application can do a bunch of fancy stuff but let&amp;rsquo;s focus on the user profile. Now obviously each user should only be able to access their own user profile settings.&lt;/p&gt;</description></item><item><title>What is Business Logic anyway?</title><link>https://carstenbehrens.com/posts/what-is-business-logic-anyway/</link><pubDate>Wed, 28 Apr 2021 09:31:08 +0000</pubDate><guid>https://carstenbehrens.com/posts/what-is-business-logic-anyway/</guid><description>&lt;p&gt;The term business logic is often used by developers when talking about software design and clean code. But understanding what it means can be confusing.&lt;/p&gt;&#10;&lt;p&gt;Here is the definition of business logic on Wikipedia:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed. It is contrasted with the remainder of the software that might be concerned with lower-level details of managing a database or displaying the user interface, system infrastructure, or generally connecting various parts of the program.&lt;/p&gt;</description></item><item><title>How I became a professional self-taught developer in Germany while working a full time job</title><link>https://carstenbehrens.com/posts/how-i-became-a-professional-self-taught-developer-in-germany-while-working-a-full-time-job/</link><pubDate>Mon, 15 Mar 2021 20:29:31 +0000</pubDate><guid>https://carstenbehrens.com/posts/how-i-became-a-professional-self-taught-developer-in-germany-while-working-a-full-time-job/</guid><description>&lt;p&gt;There are many stories online from self-taught developers that share their journey.&#10;Most of these stories are from developers in the USA.&lt;/p&gt;&#10;&lt;p&gt;I have never stumbled upon a story from a German self-taught developer or from someone that got a job in Germany as a self-taught developer.&lt;/p&gt;&#10;&lt;p&gt;Since that&amp;rsquo;s exactly what I did, I decided to share my journey here.&#10;Hopefully, this blog post will help someone to avoid the mistakes that I made and also learn from the good decisions that I made.&lt;/p&gt;</description></item><item><title>SOLID: Open-Closed Principle in JavaScript</title><link>https://carstenbehrens.com/posts/solid-open-closed-principle-in-javascript/</link><pubDate>Mon, 20 Jan 2020 16:38:50 +0000</pubDate><guid>https://carstenbehrens.com/posts/solid-open-closed-principle-in-javascript/</guid><description>&lt;p&gt;&lt;strong&gt;SOLID&lt;/strong&gt; is an acronym referring to the SOLID Principles of class design that were popularized by Robert C. Martin.&lt;/p&gt;&#10;&lt;p&gt;Usually, these principles get applied to OOP languages that have classes. JavaScript is different in that it uses prototypal inheritance instead of classical inheritance. In the code samples, I will be using the ES6 class syntax because I prefer the new syntax over the ES5 syntax.&lt;/p&gt;&#10;&lt;h2 id="the-open-closed-principle"&gt;The Open-Closed Principle&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;A software artifact should be open for extension but closed for modification.&lt;/p&gt;</description></item><item><title>SOLID: Interface Segregation Principle in JavaScript and TypeScript</title><link>https://carstenbehrens.com/posts/interface-segregation-principle-in-javascript-and-typescript/</link><pubDate>Fri, 17 Jan 2020 08:19:18 +0000</pubDate><guid>https://carstenbehrens.com/posts/interface-segregation-principle-in-javascript-and-typescript/</guid><description>&lt;p&gt;In this series of Blog Posts, I will take a look at SOLID Principles in the context of JavaScript and TypeScript.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;SOLID&lt;/strong&gt; is an acronym referring to the SOLID Principles of class design that were popularized by Robert C. Martin.&lt;/p&gt;&#10;&lt;p&gt;Usually, these principles get applied to OOP languages that have classes. JavaScript is different in that it uses prototypal inheritance instead of classical inheritance. In the code samples, I will be using ES6 classes because I prefer the new syntax over the ES5 syntax.&lt;/p&gt;</description></item><item><title>SOLID: Single Responsibility Principle in JavaScript</title><link>https://carstenbehrens.com/posts/single-responsibility-principle-in-javascript/</link><pubDate>Fri, 17 Jan 2020 08:12:03 +0000</pubDate><guid>https://carstenbehrens.com/posts/single-responsibility-principle-in-javascript/</guid><description>&lt;p&gt;&lt;strong&gt;SOLID&lt;/strong&gt; is an acronym referring to the SOLID Principles of class design that were popularized by Robert C. Martin.&lt;/p&gt;&#10;&lt;p&gt;Usually, these principles get applied to OOP languages that have classes. JavaScript is different in that it uses prototypal inheritance instead of classical inheritance. In the code samples, I will be using ES6 classes because I prefer the new syntax over the ES5 syntax.&lt;/p&gt;&#10;&lt;h2 id="the-single-responsibility-principle"&gt;The Single Responsibility Principle&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;A class should have one, and only one, reason to change.&lt;/p&gt;</description></item></channel></rss>