Tag Archives: NEW WORK

Warum die aktuelle Diskussion über Entwickler nicht nur KI-Panik ist

Die Idee, Entwickler könnten bald ersetzt werden, taucht in regelmäßigen Wellen auf. In den 60er Jahren hieß es, höhere Programmiersprachen würden das Problem lösen. Später sollten CASE-Tools, dann No-Code-Plattformen, dann Outsourcing den Bedarf an spezialisierten Entwicklern drastisch senken. Jedes Mal wurde es einfacher, Software zu produzieren. Und jedes Mal verschwand die Komplexität nicht, sie verlagerte sich nur.

Heute trägt diese alte Erzählung ein neues Gewand. Generative KI kann in Sekunden Code erzeugen, Tests schreiben, Refactorings vorschlagen. Gleichzeitig verlieren Junior-Entwickler und Regular-Entwickler spürbar an Marktwert, weil viele klassische Einstiegsaufgaben automatisierbar geworden sind. Und selbst erfahrene Entwickler werden in Deutschland entlassen, häufig aus Kostengründen oder aufgrund strategischer Fehlentscheidungen im Bezug auf KI.

Das wirkt wie ein Widerspruch. Wenn alles automatisiert wird, warum bleiben echte Seniors rar? Warum sind Architekten, die Systeme verstehen, weiterhin so gefragt?

Die Antwort ist unspektakulär, aber entscheidend: Werkzeuge reduzieren Oberflächenarbeit. Sie eliminieren keine Komplexität. Software ist kein Textproblem. Sie ist ein Strukturproblem.

Und genau dort trennt sich gerade der Markt.

Was gerade wirklich an Wert verliert

An Wert verliert vor allem reine Codeproduktion ohne strukturelles Denken.

Ein einfaches Beispiel:

Prompt:
„Erstelle mir eine REST API mit Spring Boot für Benutzerverwaltung.“

Das Ergebnis ist meist funktional:

  • Controller
  • Service
  • Repository
  • CRUD-Endpunkte

Alles läuft. Tests vielleicht auch.

Aber was fehlt oft?

  • Keine klare Trennung zwischen Domain und Infrastruktur
  • Geschäftslogik im Controller
  • Direktzugriff auf JPA-Entities im API-Layer
  • Keine expliziten Ports
  • Keine durchdachte Fehlerstrategie

Kurzfristig sieht das produktiv aus. Langfristig entsteht Kopplung, die jede Erweiterung teuer macht. Auch mit KI. Wenn ein Junior nur lernt, so etwas zu generieren und zu akzeptieren, wird er austauschbar. Die KI liefert denselben Output.

Was stattdessen wertvoll wird

Wertvoll wird die Fähigkeit, Systeme zu formen.

1. Ports und Adapter wirklich verstehen

Nehmen wir dasselbe Beispiel, aber strukturiert gedacht.

Statt direkt auf JPA im Controller zuzugreifen, wird eine Domain-Schicht gebaut:

public interface UserRepository {
    Optional<User> findById(UserId id);
    void save(User user);
}

Das ist ein Port.

Die JPA-Implementierung ist nur ein Adapter:

@Repository
class JpaUserRepository implements UserRepository {
    // mapping between JPA entity and domain
}

Der Controller spricht nicht mit JPA, sondern mit einem Use Case:

public class CreateUserUseCase {
    private final UserRepository repository;

    public void execute(CreateUserCommand command) {
        User user = User.create(command);
        repository.save(user);
    }
}

Plötzlich entsteht:

  1. Entkopplung
  2. Testbarkeit ohne Datenbank
  3. Austauschbarkeit der Persistenz
  4. Klar definierte Verantwortlichkeiten

Eine KI kann diesen Code erzeugen. Aber nur, wenn jemand versteht, warum er so aussehen sollte.

2. Dependency Inversion bewusst einsetzen

Viele KI-generierte Lösungen hängen direkt an Frameworks:

@Service
public class PaymentService {
    @Autowired
    private StripeClient stripeClient;
}

Das sieht harmlos aus, koppelt aber die Fachlogik direkt an Stripe. Sauber gedacht würde man stattdessen ein Port definieren und dann eine Stripe-Adapter.

public interface PaymentGateway {
    PaymentResult charge(Money amount);
}

class StripePaymentGateway implements PaymentGateway {
    // Stripe specific logic
}

Jetzt hängt die Domain nicht mehr an Stripe. Sie hängt an einer Abstraktion. Das ist kein akademisches Detail. Das ist strategische Beweglichkeit.

3. Modularisierung statt Ordnerstruktur

Viele Projekte nennen sich „modular“, sind aber nur nach Technik sortiert:

  • controller
  • service
  • repository
  • dto

Echte Modularisierung schneidet nach fachlichen Grenzen:

  • billing
  • user-management
  • reporting
  • notification

Jedes Modul hat:

  • eigene Use Cases
  • eigene Ports
  • eigene Adapter

Abhängigkeiten zeigen nur in eine Richtung. Das erfordert Denken. Und genau das wird gerade wertvoll.

4. KI richtig einsetzen

KI ist kein Ersatz für Architektur. Sie ist ein Beschleuniger. Statt zu sagen: „Schreib mir einen Service.“ Sagt man besser: „Erzeuge eine Clean-Architecture-Struktur mit klar getrenntem Domain-Kern, Ports für Persistenz und Messaging, Adapter im Infrastruktur-Layer, keine Framework-Abhängigkeiten im Domain-Modul.“ Der Unterschied im Output ist dramatisch. KI verstärkt Präzision. Sie verstärkt aber auch Unschärfe. Wer nur delegiert, produziert strukturelle Schulden in Rekordgeschwindigkeit.

Was Junioren konkret tun sollten

  1. Architektur lesen, nicht nur Tutorials konsumieren
    Clean Architecture, Hexagonal Architecture, modulare Monolithen wirklich durcharbeiten.
  2. Refactoring üben
    Einen schlecht strukturierten Code bewusst in saubere Module überführen.
  3. Tests ernst nehmen
    Nicht nur happy path, sondern Verhalten absichern.
  4. Domänenmodelle bauen
    Geschäftslogik explizit modellieren statt in Services zu verteilen.
  5. KI als Sparringspartner nutzen
    Code generieren lassen, dann kritisch zerlegen:
    • Wo ist Kopplung?
    • Wo sind implizite Annahmen?
    • Wo wird Infrastruktur in die Domain gezogen?
  6. Verantwortung übernehmen
    Architekturfragen stellen.
    Abhängigkeiten hinterfragen.
    Schnittstellen sauber definieren.

Warum das gerade die Chance ist

Der Markt selektiert gerade brutal, aber klar. Reiner Output verliert an Wert. Systemdenken gewinnt an Wert. Junioren, die sich jetzt in saubere Abhängigkeitsstrukturen, Modularisierung und Architektur vertiefen, entwickeln sich schneller in Richtung Senior als es früher möglich war. Nicht über Jahre von Tickets, sondern über bewusstes Strukturtraining. KI nimmt einfache Arbeit weg. Sie zwingt aber auch dazu, das Wesentliche zu lernen.

Und das Wesentliche war noch nie das Tippen von Code.
Es war immer das Entwerfen von Systemen.

Der Unterschied zwischen Entwickeln und Liefern

Software ist erst dann etwas wert, wenn sie benutzt wird. Alles davor ist Vorbereitung.

Dieser Satz klingt banal, trifft aber einen Nerv, weil ein Großteil dessen, was im Alltag als gute Softwareentwicklung gilt, genau an dieser Stelle endet. Code existiert, Konzepte sind sauber, Architekturen durchdacht, Tests fast vollständig. Und trotzdem bleibt das Ergebnis seltsam folgenlos. Es funktioniert, aber es wirkt nicht.

Entwickeln bewegt sich im Möglichkeitsraum. Solange entwickelt wird, ist alles noch verhandelbar. Abstraktionen lassen sich verbessern, Entscheidungen vertagen, Alternativen offenhalten. Entwickeln ist ein Zustand, in dem man intelligent sein darf, ohne sich festzulegen. Genau deshalb fühlt er sich produktiv an, auch wenn am Ende noch nichts nutzbar ist.

Liefern ist das Gegenteil. Liefern zwingt zur Festlegung. Es verlangt, Entscheidungen zu schließen, Unschärfen zu akzeptieren und Verantwortung für einen Zustand zu übernehmen, der nun real ist. Ab diesem Moment gehört Software nicht mehr dem Entwickler, sondern den Nutzern, dem Betrieb, dem System. Fehler werden sichtbar, Annahmen überprüfbar, Qualität messbar. Liefern macht Software angreifbar.

Der bekannte 80:20-Grundsatz ist hier kein Methodenwissen, sondern ein Charaktertest. Fast jeder Entwickler kennt ihn, viele können ihn erklären, aber nur wenige setzen ihn um, wenn es darauf ankommt. Denn 80:20 heißt nicht, schlampig zu arbeiten, sondern bewusst auf die letzten zwanzig Prozent Perfektion zu verzichten, um achtzig Prozent Wirkung zu erreichen. Das erfordert keine zusätzliche Technik, sondern Entscheidungskraft.

Typisch ist der Zustand des formalen Unfertigseins. Funktional ist alles vorhanden, aber Tests sind noch nicht ganz rund, Dokumentation existiert nur implizit, Konfiguration liegt im Kopf einzelner Personen, Betriebsannahmen sind nicht explizit gemacht. Das System läuft, aber nur, solange die richtigen Menschen verfügbar sind. Es ist gebaut, aber nicht übergeben.

Liefern bedeutet, diesen Zustand bewusst zu verlassen. Es heißt, Dinge so abzuschließen, dass andere sie nutzen können, ohne Rückfragen, ohne implizites Wissen, ohne Abhängigkeit vom Erbauer. Fertig heißt nicht perfekt, sondern stabil genug, um realen Betrieb auszuhalten. Alles Weitere entsteht aus Nutzung, nicht aus weiterer Theorie.

Gerade sehr gute Entwickler scheitern an dieser Schwelle. Wer viel weiß, sieht viele Risiken, viele Alternativen und viele offene Enden. Ohne die Fähigkeit, bewusst zu stoppen, wird Wissen zur Ausrede, nicht zu liefern. Das System bleibt im Entwicklungszustand, elegant, aber folgenlos.

An genau dieser Stelle zeigt sich Seniorität. Nicht im Umfang des Wissens, nicht in der Raffinesse der Lösung, sondern in der Fähigkeit, Verantwortung zu übernehmen. Ein Senior erkennt, wann Entwickeln aufhören muss, damit Liefern beginnen kann. Er akzeptiert, dass reale Nutzung härter, aber ehrlicher ist als jede weitere Optimierung.

Organisationen belohnen diesen Unterschied oft falsch. Technische Brillanz ist sichtbar, Abschluss ist leise. Konzepte beeindrucken, Übergaben fallen erst auf, wenn sie fehlen. So entsteht ein Umfeld, in dem Entwickeln gefeiert wird und Liefern als selbstverständlich gilt, obwohl genau dort der eigentliche Wert entsteht.

Der Unterschied zwischen Entwickeln und Liefern ist deshalb kein Detail und keine Methodendiskussion. Er ist ein Reifegrad. Entwickeln zeigt, was jemand kann. Liefern zeigt, wofür jemand bereit ist einzustehen. Erst wenn beides zusammenkommt, entsteht Software, die nicht nur gebaut wurde, sondern wirklich existiert.

Rocket Horse

Processes, Horses and Peanut Butter

Why software development rarely tastes good, when you don’t let the chefs cook

There’s this brilliant video floating around the internet: A dad asks his kids to write down step-by-step instructions for making a peanut butter sandwich. (https://www.youtube.com/shorts/CM9JIVG6SQk)

The kids try their best. “Take a piece of bread.” “Open the jar.” “Use a knife to spread the peanut butter.”

Sounds easy. But the dad follows the instructions literally: He uses the wrong side of the knife. Rubs the closed jar on the bread. Places the bread upside down. And proudly says: “I did exactly what it said.”

Funny. And tragically accurate, if you’ve ever worked in software development.


Welcome to the land of process

In many companies, we don’t say: “Build us software that helps people solve problem X.” Instead, we get a wall of processes. Requirement process. Development process. QA process. Security checklist. Architecture review. Documentation standards.

Everything is described in detail. And yet the actual goal? Often a vague buzzword salad with some AI and “innovation” dressing on top.


The chef, the duck, and the misunderstanding

Now imagine walking into a Michelin-starred restaurant and saying: “I’ll have the duck, please. Sous-vide at exactly 58.3°C for 63 minutes. Then pan-seared in ghee not butter. Skin lightly crisped, but not crunchy.”

You’ll either be laughed at politely or shown the door. Because you don’t go to a professional to tell them how to do their job. You go because they know what they’re doing.

But in software development? We do exactly that. We tell engineers not only what to build but how to build it. Framework, language, database, CI/CD steps, naming conventions… you name it. And god forbid someone has their own idea.


The craft and the illusion

There are two major problems:

1. Fewer and fewer developers understand their craft. Writing code != building software. Software development is about thinking in models, understanding users, making trade-offs, and designing solutions that evolve.

2. We believe processes create products. They don’t. Processes can help, but they can’t replace thinking. And when they become the main focus, they kill what matters most: creativity, ownership, innovation.


From sandwiches to stud farms

Some companies treat innovation like animal husbandry: Defined breeding lines. Optimized insemination stations. Carefully maintained paddocks. Groomed workflows for every whinny.

And then they wonder why they keep getting horses. Faster horses. Shinier horses. Very expensive horses.

But no cars.

As Henry Ford once said:

“If I had asked people what they wanted, they would have said faster horses.”

We’re still doing it today. Only now we call it “cloud-native enterprise-ready SaaS.”


The bottom line

If you want real software, stop pretending that checklists are creativity. Trust your engineers. Talk about outcomes, not steps. And for heaven’s sake: stop telling the chef how to cook the duck.

Because if you still believe a good breeding plan will somehow produce a car, you may end up with a very fast horse. But you’ll never leave the paddock.

Eine typische Führungskraft, die mit Remote-Führung überfordert ist.

Mitarbeiter gehören ins Büro!

Der provokante Titel weckt den Eindruck, dass der klassische Arbeitsplatz im Büro unersetzlich sei, um effizient zusammenzuarbeiten – eine Annahme, die jedoch bei genauer Betrachtung nicht standhält. Vielmehr zeigt sich, dass scheiterndes Homeoffice häufig weniger an den technischen Rahmenbedingungen liegt als an der Führungskultur. Eine fehlerhafte Remote-Führung führt zu Problemen, die sich nicht durch den Einsatz standardisierter Tools wie MS Teams oder einfache Videomeetings beheben lassen. Wenn in eurem Unternehmen die Zahlen fallen, sollte sich die Führung an die eigene Nase greifen und nicht die Arbeitsmoral der Mitarbeiter im Homeoffice in Frage stellen.

Ein Blick in die Welt des Gamings illustriert eindrucksvoll, wie auch ohne physische Präsenz gigantische Erfolge erzielt werden können. In virtuellen Räumen wie in Communitys, Gilden oder Clans arbeiten unterschiedlichste Menschen trotz fehlender persönlicher Begegnungen als Team zusammen – und das meist sogar ohne finanzielle Anreize. Entscheidend hierfür sind motivierende gemeinsame Ziele, verlässliche Strukturen und der gezielte Einsatz von Kommunikationsplattformen, die einen kontinuierlichen, offenen Austausch ermöglichen. Dies verdeutlicht, dass der Erfolg eines Teams weniger vom Ort als vielmehr von der Art und Weise der Führung abhängt.

Im Gegensatz zu herkömmlichen Anrufen oder formellen Videomeetings bieten Tools wie Mumble, Teamspeak oder Discord einen direkten Kommunikationskanal, der dem spontanen Austausch im Büro nahezu entspricht. Diese Plattformen erlauben es den Teilnehmern, sich jederzeit in den Kommunikationsfluss einzuklinken oder gezielt in den “Mute”-Modus zu wechseln, um konzentriert zu arbeiten. Diese Flexibilität schafft nicht nur eine natürliche Atmosphäre, die informellen Social Talk ermöglicht, sondern bietet der Führungskraft auch einen authentischen Einblick in die Anwesenheit und Aktivität der Mitarbeiter. Insbesondere neue Teammitglieder profitieren von diesem ständigen, virtuellen Beisammensein, da es ihnen hilft, sich schneller in die Teamdynamik einzufinden und ein Gefühl der Zugehörigkeit zu entwickeln.

Ein konkretes Beispiel aus dem eigenen Unternehmen untermauert diese Argumentation: Das AI-Lab der eurodata AG startete vor der Corona-Pandemie mit lediglich vier Personen und wuchs während der Pandemie auf über 20 Mitarbeiter. Durch den konsequenten Einsatz von Mumble, Miro, virtuellen Kaffeepausen, regelmäßigen Teamtreffen, Pairprogramming und klaren Zielbildern sowie intensiver Führungsarbeit – unter anderem mit regelmäßigen 1:1-Gesprächen und dem gelegentlichen “Rausdividieren” der Führungskraft – gelang es, den rasanten Zuwachs erfolgreich zu managen. Dieses Beispiel zeigt, dass der Erfolg im Homeoffice maßgeblich von einer kompetenten und strukturierten Führung abhängt.

Zusammenfassend verdeutlichen die genannten Beispiele und Analysen, dass nicht der physische Ort, sondern die Führungsqualität über Erfolg oder Misserfolg der Remote-Arbeit entscheidet.

Mitarbeiter gehören ins Büro, aber nur, wenn die Führungskraft mit Remote-Führung überfordert ist. Eine klare, strukturierte Führung ist unerlässlich, um in virtuellen Arbeitsumgebungen ebenso erfolgreiche Ergebnisse zu erzielen wie im klassischen Büro.

Was denkst du? Sollte man Führungskräfte lieber endlich auf Remote-Führung vorbereiten – oder Mitarbeiter wirklich zurück ins Büro zwingen? Und: Ist die Gaming-Kultur der 2000er und 2010er nicht längst der Beweis, dass digitale Zusammenarbeit funktioniert, wenn Führung und Strukturen stimmen?