Computerhaus Quickborn

Januar 2025

IBM hilft Mainframe-Kunden beim KI-Training​

Allgemein

Auch im KI-Zeitalter gehören Mainframes längst noch nicht zum alten Eisen.whiteMocca/Shutterstock Mit den IBM Synthetic Datasets will Big Blue Unternehmen dabei helfen,   KI-Modelle schneller zu trainieren oder zu optimieren,   Vorhersagemodelle zu verbessern, und   wahrheitsgetreue Modelle zu validieren.   Die Datensatz-Familie, die voraussichtlich Ende Februar verfügbar sein wird, umfasst dazu Module für Zahlungskarten, Bankgeschäfte und Geldwäsche sowie Hausratversicherungen.  Synthetische Datensätze bestehen aus herunterladbaren CSV- und DDL-Dateien mit vorab zusammengestellten Attributen, die für spezifischen Anwendungsfälle für IBM Z und IBM LinuxONE benötigt werden. Dadurch seien sie benutzerfreundlich und mit allem kompatibel, von Datenbanken über Tabellenkalkulationen bis hin zu Hardwareplattformen und Standard-KI-Tools, heißt es seitens IBM.  Daten zum Anlernen und Optimieren  Verfügt ein Kunde über ein vorhandenes Modell oder LLM, bieten synthetische Daten zusätzliche Informationen, um das KI-Modell zu optimieren – in reichhaltiger und gelabelter Form. Hat ein Kunde noch kein Modell, sind die synthetischen Datensätze so konzipiert, dass sie datenschutzkonforme Trainingsdaten liefern, um Modelle von Grund auf neu zu erstellen, so der Anbieter.  Kunden könnten Modelle auf IBM Z und IBM LinuxONE mit AI Toolkit für IBM Z und IBM LinuxONE, Cloud Pak für Daten auf Z oder Machine Learning für z/OS bereitstellen, erklären Elpida Tzortzatos, IBM Fellow und Z-Architektin, und Tina Tarquinio, IBM-Vizepräsidentin, in einem Blogbeitrag: „Sie können Inferenzen auf IBM z16 und IBM LinuxONE 4 durchführen und dabei Investitionen in die Hardwarebeschleunigung und die Datengravitation nutzen, um die Geschwindigkeit und den Umfang von KI-Inferenzen drastisch zu erhöhen.“  Hilfe bei Betrugserkennung und Geldwäscheprävention  Darüber hinaus seien Anwender damit in der Lage, prädiktive KI-Modelle zu verbessern und LLMs mit zusätzlichen, umfangreichen und breit gefächerten Daten zu optimieren. Das führe laut den Autoren zu erheblichen Kosteneinsparungen in Bereichen wie der Betrugserkennung und der Geldwäscheprävention.  Geldwäsche bliebe in realen Daten oft unentdeckt, so die Autoren, weil Kriminelle illegale Gelder häufig über diverse Banken und Landesgrenzen verschieben, um deren Herkunft zu verschleiern. Das habe komplexe Transaktionsmuster zur Folge, so Tzortzatos und Tarquinio.   Mit IBM Synthetic Data Sets for Core Banking and Money Laundering werde jede Transaktion entweder als Geldwäsche identifiziert oder nicht, „wobei das gesamte Bankensystem abgedeckt wird, globale Transaktionen einbezogen werden und sogar Bargeldtransaktionen, die in realen Bankdaten normalerweise nicht verfügbar sind“, schreiben die IBM-Experten. Dieser umfangreiche Datensatz mit bekannter Grundwahrheit ermögliche es Datenwissenschaftlern, ihre Modelle zu validieren und robuste AML-Modelle zu erstellen, wodurch Risiken reduziert und Kosten für Unternehmen eingespart würden. Darüber hinaus spare es unzählige Arbeitsstunden, Fehlalarme zu reduzieren.   

IBM hilft Mainframe-Kunden beim KI-Training​ Auch im KI-Zeitalter gehören Mainframes längst noch nicht zum alten Eisen.whiteMocca/Shutterstock

Mit den IBM Synthetic Datasets will Big Blue Unternehmen dabei helfen,  

KI-Modelle schneller zu trainieren oder zu optimieren,  

Vorhersagemodelle zu verbessern, und  

wahrheitsgetreue Modelle zu validieren.  

Die Datensatz-Familie, die voraussichtlich Ende Februar verfügbar sein wird, umfasst dazu Module für Zahlungskarten, Bankgeschäfte und Geldwäsche sowie Hausratversicherungen. 

Synthetische Datensätze bestehen aus herunterladbaren CSV- und DDL-Dateien mit vorab zusammengestellten Attributen, die für spezifischen Anwendungsfälle für IBM Z und IBM LinuxONE benötigt werden. Dadurch seien sie benutzerfreundlich und mit allem kompatibel, von Datenbanken über Tabellenkalkulationen bis hin zu Hardwareplattformen und Standard-KI-Tools, heißt es seitens IBM. 

Daten zum Anlernen und Optimieren 

Verfügt ein Kunde über ein vorhandenes Modell oder LLM, bieten synthetische Daten zusätzliche Informationen, um das KI-Modell zu optimieren – in reichhaltiger und gelabelter Form. Hat ein Kunde noch kein Modell, sind die synthetischen Datensätze so konzipiert, dass sie datenschutzkonforme Trainingsdaten liefern, um Modelle von Grund auf neu zu erstellen, so der Anbieter. 

Kunden könnten Modelle auf IBM Z und IBM LinuxONE mit AI Toolkit für IBM Z und IBM LinuxONE, Cloud Pak für Daten auf Z oder Machine Learning für z/OS bereitstellen, erklären Elpida Tzortzatos, IBM Fellow und Z-Architektin, und Tina Tarquinio, IBM-Vizepräsidentin, in einem Blogbeitrag: „Sie können Inferenzen auf IBM z16 und IBM LinuxONE 4 durchführen und dabei Investitionen in die Hardwarebeschleunigung und die Datengravitation nutzen, um die Geschwindigkeit und den Umfang von KI-Inferenzen drastisch zu erhöhen.“ 

Hilfe bei Betrugserkennung und Geldwäscheprävention 

Darüber hinaus seien Anwender damit in der Lage, prädiktive KI-Modelle zu verbessern und LLMs mit zusätzlichen, umfangreichen und breit gefächerten Daten zu optimieren. Das führe laut den Autoren zu erheblichen Kosteneinsparungen in Bereichen wie der Betrugserkennung und der Geldwäscheprävention. 

Geldwäsche bliebe in realen Daten oft unentdeckt, so die Autoren, weil Kriminelle illegale Gelder häufig über diverse Banken und Landesgrenzen verschieben, um deren Herkunft zu verschleiern. Das habe komplexe Transaktionsmuster zur Folge, so Tzortzatos und Tarquinio.  

Mit IBM Synthetic Data Sets for Core Banking and Money Laundering werde jede Transaktion entweder als Geldwäsche identifiziert oder nicht, „wobei das gesamte Bankensystem abgedeckt wird, globale Transaktionen einbezogen werden und sogar Bargeldtransaktionen, die in realen Bankdaten normalerweise nicht verfügbar sind“, schreiben die IBM-Experten. Dieser umfangreiche Datensatz mit bekannter Grundwahrheit ermögliche es Datenwissenschaftlern, ihre Modelle zu validieren und robuste AML-Modelle zu erstellen, wodurch Risiken reduziert und Kosten für Unternehmen eingespart würden. Darüber hinaus spare es unzählige Arbeitsstunden, Fehlalarme zu reduzieren.  

IBM hilft Mainframe-Kunden beim KI-Training​ Weiterlesen »

5 Wege zum CTO-Job​

Allgemein

Zu Höherem berufen?Gorodenkoff | shutterstock.com Als ich in den 1990ern meinen Job als CTO angetreten habe, war ich Mitte 20 und entsprechend unerfahren. Mein Geschäftssinn war sozusagen noch im Entwicklungsstadium. Und obwohl ich damals ein passabler Softwareentwickler war, waren es nicht in erster Linie meine Architektur- oder Coding-Skills, die mich in C-Level-Reichweite gebracht haben. Von allen technischen Skills waren für mich die im Bereich Devops am wichtigsten. Natürlich war der Begriff damals noch nicht erfunden – keine Spur von CI/CD oder Infrastructure as Code. Aber ich habe auch damals: Builds automatisiert, Skripte für die Implementierungen geschrieben, Infrastrukturkonfigurationen standardisiert, und die System-Performance überwacht. In diesem Artikel möchte ich Mitarbeitern in Devops-Positionen – mit Unterstützung einiger Technologieentscheider – fünf Tipps an die Hand geben, um sich für eine mögliche CTO-Rolle in Position zu bringen. 1. Dinge in die Hand nehmen Wenn Sie für Beförderungen und höhere Verantwortung in Betracht gezogen werden möchten, sollten Sie sich zunächst auf Ihre Fachgebiete, Ihr Netzwerk und Ihr Team konzentrieren. Allerdings sollten Sie Ihren Fokus verlagern: Statt nur Tasks zu erledigen, gilt es, mehr zu tun und zu wollen. Etablieren Sie eine Methode oder eine Plattform, die gut ankommt – und zeigen Sie deren Vorteile für die Organisation auf. Speziell Devops Engineers können sich für eine Führungsrolle positionieren, indem sie sich auf Initiativen mit Business Impact konzentrieren und Systeme entwickeln, die die Teams nutzen möchten. Gehen Sie dabei idealerweise iterativ vor und bevorzugen Sie Lösungen, die dabei unterstützen, in Schlüsselbereichen kontinuierliche Verbesserungen zu erzielen. Ein anderer, wichtiger Bereich, den Sie ins Auge fassen sollten, sind Platform-Engineering-Ansätze. Die optimieren die Developer Experience und unterstützen dabei, Self-Service-Lösungen zu realisieren. Wenn es darum geht, Shift-Left– und Continuous-Testing-Strategien zu verankern, können Sie ebenfalls Führungsqualitäten an den Tag legen. Empfehlung: Überlassen Sie nichts dem Zufall, wenn es darum geht, dass Ihre Performance von der Führungsebene anerkannt wird. Halten Sie Ihre Bemühungen, deren Impact sowie skalierbare und wiederverwendbare Muster fest. 2. Mindset transformieren Eine der größeren Herausforderungen für Devops-Profis, die einen CTO-Job landen wollen, ist der dafür nötige Mindset-Wechsel. Es sollte nicht mehr nur um die heute anstehenden Tasks gehen, sondern darum, Tasks zu priorisieren und längerfristige Umsetzungsentscheidungen zu beeinflussen. Der Weg zum Technologieentscheider beinhaltet: Architekturen zu planen, Governance zu etablieren und Standards zu verankern, mit denen sich Teams selbst organisieren können.   Martin Davis, Managing Partner bei der Managementberatung Dunelm Associates, empfiehlt Devops-Profis mit CTO-Ambitionen, sich folgende drei Fragen zu stellen, wenn es darum geht, Plattformen und Technologien zu bewerten und zu einer strategischeren Denkweise zu kommen: Wie gut sind Technologien – sowohl aus geschäftlicher als auch aus technologischer Perspektive – für zukünftige Erweiterungen gerüstet? Sind die Technologien anpassbar, wenn sich die Voraussetzungen verändern? Wie sieht es mit Blick auf die Integration anderer Tools aus? „Bleiben Sie pragmatisch und stets bereit, frühere Entscheidungen zu verwerfen, wenn sich die Umstände ändern“, rät Davis. Empfehlung: Vom Ad-Hoc-Problemlöser- zum Leadership-Mindset zu kommen, ist eine echte Herausforderung. Wenn Sie sie angehen möchten, sollten Sie lernen, einen Schritt zurückzutreten, das große Ganze zu sehen – und Ihr Team in Technologieentscheidungen einbeziehen. 3. Knowhow ausbauen Sich eine Handvoll Methoden und Technologien anzueignen, reicht für eine C-Level-Rolle nicht aus. Von CTOs wird erwartet: Innovationen voranzutreiben, Architekturmuster zu etablieren, den Software Development Lifecycle vollständig im Blick zu haben, mit anderen Teams und Führungskräften zusammenzuarbeiten, sowie manchmal auch bestimmte IT-Operations-Aspekte zu managen. Alok Uniyal, SVP beim IT-Dienstleister Infosys, empfiehlt Devops-Experten, die für die Rolle des CTO in Betracht gezogen werden wollen, sich ein möglichst breites Spektrum an Skills anzueignen: “Es kommt darauf an, Führungsqualitäten an den Tag zu legen. Und darauf, zu demonstrieren, dass Sie alle technologischen Workflows im Unternehmen sowie die wichtigsten Technologietrends und Innovationen der Branche verstehen.“ Um das umzusetzen, bedarf es auch, sich dem Konzept des lebenslangen Lernens zu verschreiben. Sich technologische Expertise über Kurse und Fortbildungen anzueignen, kostet enorm viel Zeit – die Sie wahrscheinlich nicht haben. Deshalb gilt es, effiziente Wege zu finden, sich anderweitig weiterzubilden. Zum Beispiel über das eigene Netzwerk oder Mentoren.   Empfehlung: Integrieren Sie Ihre Lernbemühungen in Ihre Sprint Commitments und halten Sie Best Practices fest – idealerweise schriftlich. Das kann dazu beitragen, Informationen besser zu behalten. 4. Komfortzone verlassen Herausforderungen auf unbekanntem Terrain zu suchen, ist auf dem Weg zu einer C-Level-Rolle ebenfalls eine wichtige Komponente. Das schult darin: zuzuhören, Dinge zu hinterfragen, und Denkmuster in Frage zu stellen. Sie könnten sich zum Beispiel freiwillig melden, um einen größeren Incident-Response-Prozess zu managen. Das macht Sie damit vertraut, unter Druck Probleme lösen zu müssen. Darüber hinaus würde so eine Initiative auch zu einem besseren Verständnis darüber beitragen, warum Observability und Monitoring-Systeme von entscheidender Bedeutung sind. Wichtiger ist für CTO-Aspiranten allerdings, sich an Initiativen beteiligen, die erfordern, Stakeholder, Kunden und Business-Teams einzubeziehen. Im Folgenden ein paar Ideen: Leiten Sie eine Journey-Mapping-Übung, um zu dokumentieren, wie die Endbenutzer durch kritische Transaktionen geleitet werden und Schwachstellen zu ermitteln. Beteiligen Sie sich an einem Change-Management-Programm und machen Sie sich mit den zugehörigen Methoden vertraut. Das unterstützt Sie dabei, Endbenutzer schneller dazu zu bringen, eine neue Technologie zu akzeptieren. Nehmen Sie an Kundenterminen teil oder vernetzen Sie sich mit operativen Teams, um aus erster Hand zu erfahren, wie gut – oder schlecht – die Technologie für sie funktioniert. Empfehlung: Eine Position als CTO anzustreben, heißt auch, weniger Zeit mit Technologie und mehr Zeit mit Menschen zu verbringen. Auch dabei sollten Sie nicht darauf warten, Erfahrungen sammeln zu können, sondern diese aktiv suchen und wahrnehmen. Dass Sie sich dabei besonders anfangs stark unwohl fühlen, ist normal und legt sich mit der Zeit. 5. Vision entwickeln – und abliefern Über Strategien und Roadmaps hinaus sind gute CTOs auch Visionäre. Sie definieren und formulieren Ziele und tragen dafür Sorge, dass diese von Führungskräften und Mitarbeitern angenommen und verfolgt werden. Erst das ermöglicht, wettbewerbsfähige, technologische Lösungen zu schaffen und parallel Risiken zu reduzieren sowie das Security-Niveau zu optimieren. (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox! 

5 Wege zum CTO-Job​ Zu Höherem berufen?Gorodenkoff | shutterstock.com

Als ich in den 1990ern meinen Job als CTO angetreten habe, war ich Mitte 20 und entsprechend unerfahren. Mein Geschäftssinn war sozusagen noch im Entwicklungsstadium. Und obwohl ich damals ein passabler Softwareentwickler war, waren es nicht in erster Linie meine Architektur- oder Coding-Skills, die mich in C-Level-Reichweite gebracht haben.

Von allen technischen Skills waren für mich die im Bereich Devops am wichtigsten. Natürlich war der Begriff damals noch nicht erfunden – keine Spur von CI/CD oder Infrastructure as Code. Aber ich habe auch damals:

Builds automatisiert,

Skripte für die Implementierungen geschrieben,

Infrastrukturkonfigurationen standardisiert, und

die System-Performance überwacht.

In diesem Artikel möchte ich Mitarbeitern in Devops-Positionen – mit Unterstützung einiger Technologieentscheider – fünf Tipps an die Hand geben, um sich für eine mögliche CTO-Rolle in Position zu bringen.

1. Dinge in die Hand nehmen

Wenn Sie für Beförderungen und höhere Verantwortung in Betracht gezogen werden möchten, sollten Sie sich zunächst auf Ihre Fachgebiete, Ihr Netzwerk und Ihr Team konzentrieren. Allerdings sollten Sie Ihren Fokus verlagern: Statt nur Tasks zu erledigen, gilt es, mehr zu tun und zu wollen. Etablieren Sie eine Methode oder eine Plattform, die gut ankommt – und zeigen Sie deren Vorteile für die Organisation auf.

Speziell Devops Engineers können sich für eine Führungsrolle positionieren, indem sie sich auf Initiativen mit Business Impact konzentrieren und Systeme entwickeln, die die Teams nutzen möchten. Gehen Sie dabei idealerweise iterativ vor und bevorzugen Sie Lösungen, die dabei unterstützen, in Schlüsselbereichen kontinuierliche Verbesserungen zu erzielen.

Ein anderer, wichtiger Bereich, den Sie ins Auge fassen sollten, sind Platform-Engineering-Ansätze. Die optimieren die Developer Experience und unterstützen dabei, Self-Service-Lösungen zu realisieren. Wenn es darum geht, Shift-Left– und Continuous-Testing-Strategien zu verankern, können Sie ebenfalls Führungsqualitäten an den Tag legen.

Empfehlung: Überlassen Sie nichts dem Zufall, wenn es darum geht, dass Ihre Performance von der Führungsebene anerkannt wird. Halten Sie Ihre Bemühungen, deren Impact sowie skalierbare und wiederverwendbare Muster fest.

2. Mindset transformieren

Eine der größeren Herausforderungen für Devops-Profis, die einen CTO-Job landen wollen, ist der dafür nötige Mindset-Wechsel. Es sollte nicht mehr nur um die heute anstehenden Tasks gehen, sondern darum, Tasks zu priorisieren und längerfristige Umsetzungsentscheidungen zu beeinflussen. Der Weg zum Technologieentscheider beinhaltet:

Architekturen zu planen,

Governance zu etablieren und

Standards zu verankern, mit denen sich Teams selbst organisieren können.  

Martin Davis, Managing Partner bei der Managementberatung Dunelm Associates, empfiehlt Devops-Profis mit CTO-Ambitionen, sich folgende drei Fragen zu stellen, wenn es darum geht, Plattformen und Technologien zu bewerten und zu einer strategischeren Denkweise zu kommen:

Wie gut sind Technologien – sowohl aus geschäftlicher als auch aus technologischer Perspektive – für zukünftige Erweiterungen gerüstet?

Sind die Technologien anpassbar, wenn sich die Voraussetzungen verändern?

Wie sieht es mit Blick auf die Integration anderer Tools aus?

„Bleiben Sie pragmatisch und stets bereit, frühere Entscheidungen zu verwerfen, wenn sich die Umstände ändern“, rät Davis.

Empfehlung: Vom Ad-Hoc-Problemlöser- zum Leadership-Mindset zu kommen, ist eine echte Herausforderung. Wenn Sie sie angehen möchten, sollten Sie lernen, einen Schritt zurückzutreten, das große Ganze zu sehen – und Ihr Team in Technologieentscheidungen einbeziehen.

3. Knowhow ausbauen

Sich eine Handvoll Methoden und Technologien anzueignen, reicht für eine C-Level-Rolle nicht aus. Von CTOs wird erwartet:

Innovationen voranzutreiben,

Architekturmuster zu etablieren,

den Software Development Lifecycle vollständig im Blick zu haben,

mit anderen Teams und Führungskräften zusammenzuarbeiten, sowie

manchmal auch bestimmte IT-Operations-Aspekte zu managen.

Alok Uniyal, SVP beim IT-Dienstleister Infosys, empfiehlt Devops-Experten, die für die Rolle des CTO in Betracht gezogen werden wollen, sich ein möglichst breites Spektrum an Skills anzueignen: “Es kommt darauf an, Führungsqualitäten an den Tag zu legen. Und darauf, zu demonstrieren, dass Sie alle technologischen Workflows im Unternehmen sowie die wichtigsten Technologietrends und Innovationen der Branche verstehen.“

Um das umzusetzen, bedarf es auch, sich dem Konzept des lebenslangen Lernens zu verschreiben. Sich technologische Expertise über Kurse und Fortbildungen anzueignen, kostet enorm viel Zeit – die Sie wahrscheinlich nicht haben. Deshalb gilt es, effiziente Wege zu finden, sich anderweitig weiterzubilden. Zum Beispiel über das eigene Netzwerk oder Mentoren.  

Empfehlung: Integrieren Sie Ihre Lernbemühungen in Ihre Sprint Commitments und halten Sie Best Practices fest – idealerweise schriftlich. Das kann dazu beitragen, Informationen besser zu behalten.

4. Komfortzone verlassen

Herausforderungen auf unbekanntem Terrain zu suchen, ist auf dem Weg zu einer C-Level-Rolle ebenfalls eine wichtige Komponente. Das schult darin:

zuzuhören,

Dinge zu hinterfragen, und

Denkmuster in Frage zu stellen.

Sie könnten sich zum Beispiel freiwillig melden, um einen größeren Incident-Response-Prozess zu managen. Das macht Sie damit vertraut, unter Druck Probleme lösen zu müssen. Darüber hinaus würde so eine Initiative auch zu einem besseren Verständnis darüber beitragen, warum Observability und Monitoring-Systeme von entscheidender Bedeutung sind.

Wichtiger ist für CTO-Aspiranten allerdings, sich an Initiativen beteiligen, die erfordern, Stakeholder, Kunden und Business-Teams einzubeziehen. Im Folgenden ein paar Ideen:

Leiten Sie eine Journey-Mapping-Übung, um zu dokumentieren, wie die Endbenutzer durch kritische Transaktionen geleitet werden und Schwachstellen zu ermitteln.

Beteiligen Sie sich an einem Change-Management-Programm und machen Sie sich mit den zugehörigen Methoden vertraut. Das unterstützt Sie dabei, Endbenutzer schneller dazu zu bringen, eine neue Technologie zu akzeptieren.

Nehmen Sie an Kundenterminen teil oder vernetzen Sie sich mit operativen Teams, um aus erster Hand zu erfahren, wie gut – oder schlecht – die Technologie für sie funktioniert.

Empfehlung: Eine Position als CTO anzustreben, heißt auch, weniger Zeit mit Technologie und mehr Zeit mit Menschen zu verbringen. Auch dabei sollten Sie nicht darauf warten, Erfahrungen sammeln zu können, sondern diese aktiv suchen und wahrnehmen. Dass Sie sich dabei besonders anfangs stark unwohl fühlen, ist normal und legt sich mit der Zeit.

5. Vision entwickeln – und abliefern

Über Strategien und Roadmaps hinaus sind gute CTOs auch Visionäre. Sie definieren und formulieren Ziele und tragen dafür Sorge, dass diese von Führungskräften und Mitarbeitern angenommen und verfolgt werden.

Erst das ermöglicht, wettbewerbsfähige, technologische Lösungen zu schaffen und parallel Risiken zu reduzieren sowie das Security-Niveau zu optimieren. (fm)

Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!

5 Wege zum CTO-Job​ Weiterlesen »

So händeln Sie Day-2-Probleme bei GenAI-Deployments​

Allgemein

Wenn das GenAI-System läuft, fängt die eigentliche Arbeit erst an. Treecha | shutterstock.com Alle IT-Projekte durchlaufen Phasen, und Generative KI ist in dieser Hinsicht nicht anders. In ersten Pilotprojekten wird getestet, wie Technologie oder Software funktioniert, und es wird ermittelt, ob die gewünschten Ergebnisse oder die Versprechungen der Anbieter oder Entwickler erreicht werden. Sobald diese Pilotphasen abgeschlossen sind, ist es an der Zeit, zu skalieren. Man könnte zwar meinen, dass die Skalierung neuer Projekte einfach darin besteht, mehr Ressourcen einzusetzen. Das kann jedoch neue Probleme aufwerfen. Im Fall von GenAI können Skalierungsprobleme zudem sehr unterschiedlich ausfallen. IT-Mitarbeiter bezeichnen diese Probleme üblicherweise als „Day-1“- und „Day-2“-Probleme. Erstere sind solche, die bei der Implementierung auftreten. Bei der generativen KI umfasst dies die Vorbereitung Ihrer Daten für die Verwendung mit Retrieval-Augmented Generation (RAG) bis hin zur Überprüfung, ob Ihr Ansatz zur Aufteilung und Indizierung von Daten effektiv ist. Bei RAG werden vortrainierte große Sprachmodelle (LLMs) zusammen mit den unternehmenseigenen Daten verwendet, sodass Ihre generative KI-Anwendung relevantere, spezifischere und zeitnahere Antworten liefern kann, anstatt sich nur auf das zu verlassen, worauf das LLM ursprünglich trainiert wurde. Daten-Chunking, -Indexierung und -Einbettung Aus der Day-1-Perspektive können RAG-Deployments mit Problemen bei der Vorbereitung Ihrer Daten konfrontiert sein. In der Anfangsphase der Datenvorbereitung werden beispielsweise alle unstrukturierten und strukturierten Daten in ein Format umgewandelt, mit dem das generative KI-System arbeiten kann. Dazu gehört die Erstellung einer Reihe von Dokumentobjekten, die alle Ihre Unternehmensdaten darstellen und sowohl den Text als auch alle zugehörigen Metadaten enthalten. Textdaten werden dann in kleinere Teile, sogenannte Chunks, aufgeteilt, die indiziert und verstanden werden können. Die Größe der Chunks kann hier einen großen Unterschied machen. Man kann diese beispielsweise auf Satz- oder Absatzebene oder als komplexere selbstreferenzielle Chunks implementieren, die in immer kleinere Elemente verarbeitet werden. Unabhängig davon, für welchen Ansatz man sich entscheidet, werden diese Chunks dann indiziert und in Vektor-Einbettungen umgewandelt, wo sie für zukünftige Suchvorgänge gespeichert werden können. Sendet ein Benutzer eine Abfrage, wird diese Abfrage in einen Vektor umgewandelt, der zur Suche nach den relevantesten Daten verwendet wird. Diese werden dann an das LLM weitergeleitet, damit es diese berücksichtigen kann. RAG kann zwar dazu beitragen, KI-Halluzinationen zu reduzieren und die Antworten zu verbessern. Die Technik reicht aber allein nicht aus. Probleme wie die Wahl des falschen LLM, die Verwendung des falschen Chunking-Ansatzes oder die Indexierung von Daten können sich auf die Funktionsweise Ihres RAG-Systems und die Qualität seiner Antworten auswirken. Wenn Sie beispielsweise zu große Chunks verwenden, gibt das LLM große Textblöcke zurück, die für bestimmte Anfragen möglicherweise nicht relevant sind. GenAI-Anwendungen skalieren Sobald Ihr RAG-System effektiv funktioniert, werden Sie möglicherweise auf neue Herausforderungen treffen. So wurde beispielsweise der ChatGPT-Dienst von OpenAI trainiert und für Benutzer zur Verfügung gestellt, um Fragen zu stellen. Die Zahl der Nutzer wuchs extrem schnell – laut Business of Apps dauerte es nur zwei Monate, um 100 Millionen Nutzer zu erreichen. Unternehmen, die generative KI und RAG einsetzen, hoffen, dass auch sie eine große Anzahl von Nutzeranfragen erhalten werden. Aber haben Sie auch bedacht, was passieren könnte, wenn Ihre App ein Riesenerfolg wird, und wie sehr das Ihre generative KI-Infrastruktur belasten könnte? Werden Ihre Kosten für generative KI mit den Einnahmen, die Sie damit erzielen wollen, steigen, oder betrachten Sie dies als zusätzliche Einnahmen zu Ihren Produkten? Wie hoch schätzen Sie die Gewinnschwelle ein, ab der Sie die gewünschte Marge erzielen werden – je nachdem, wie groß das Interesse ist, das Sie wecken? Bei vielen Dienstleistungen ist die Arbeit, die in den Betrieb im großen Maßstab fließt, genauso wichtig wie die anfängliche Aufbau- und Entwurfsphase, um qualitativ hochwertige Antworten zu liefern. Dies ist ein Beispiel für ein Day-2-Problem, bei dem man feststellt, dass das, was in der Testphase funktioniert hat, nicht skalierbar ist, um die Nachfrage zu decken. Wie bewältigt beispielsweise Ihr RAG-Deployment Tausende oder Millionen von gleichzeitigen Anfragen von Benutzern, und wie schnell können Ihre Vektordatenbank und die LLM-Integrationskomponenten diese Daten analysieren, damit das System dem Benutzer eine Antwort zurückgeben kann? Während Benutzer bei einem kostenlosen, neuartigen Dienst eine eingeschränkte Leistung akzeptieren, sind sie weniger bereit, schlechte Antwortzeiten in Kauf zu nehmen, wenn sie für einen Dienst bezahlen. Bei der Analyse von RAG-Anfragen können bis zu 40 Prozent der Latenz innerhalb von Transaktionen von Aufrufen an den Einbettungsdienst und den Vektorsuchdienst stammen, bei denen RAG die richtigen Daten abgleicht und sie an den Benutzer zurückgibt. Die Optimierung dieses Roundtrips kann daher einen enormen Einfluss auf die Benutzererfahrung haben, beispielsweise durch das Zwischenspeichern früherer ähnlicher Anfragen. Gleichzeitig verursacht jeder Roundtrip Kosten in Form von Rechenressourcen, insbesondere in der Cloud. Die Reduzierung der Workloads, sodass Unternehmen nur für das bezahlen, was sie nutzen, kann dazu beitragen, diese Kosten zu senken und die Ausgaben effizienter zu gestalten. Gleichzeitig müssen sich Entwickler und IT-Mitarbeiter damit befassen, wo sie generative KI-Workloads ausführen. Viele Unternehmen werden damit in der Cloud beginnen, da sie die Last der Ausführung ihrer eigenen LLMs vermeiden wollen. Andere werden ihren eigenen Ansatz verfolgen wollen, um das Beste aus ihren Entscheidungen zu machen und eine Bindung zu vermeiden. Unabhängig davon, ob Sie On-Premises oder die Cloud bevorzugen, müssen Sie jedoch darüber nachdenken, an mehreren Standorten zu arbeiten. Die Nutzung mehrerer Standorte sorgt für die Ausfallsicherheit eines Dienstes. Wenn ein Standort nicht mehr verfügbar ist, kann der Dienst trotzdem weiter funktionieren. Bei lokalen Standorten kann dies die Implementierung von Failover- und Verfügbarkeitstechnologien rund um Vektordatensätze bedeuten, sodass diese Daten bei Bedarf abgefragt werden können. Bei Cloud-Bereitstellungen ist der Betrieb an mehreren Standorten einfacher, da man verschiedene Cloud-Regionen zum Hosten und Replizieren von Vektordaten verwenden kann. Die Nutzung mehrerer Standorte ermöglicht es auch, Antworten von dem Standort zu liefern, der dem Benutzer am nächsten liegt, wodurch die Latenzzeit verringert wird und die Unterstützung geografischer Datenstandorte erleichtert wird, wenn Daten aus Compliance-Gründen an einem bestimmten Standort oder in einer bestimmten Region aufbewahrt werden müssen. Laufende Betriebskosten in den Griff bekommen Am zweiten Tag des IT-Betriebs werden Ihre Gemeinkosten und Probleme im Zusammenhang mit dem Betrieb Ihrer Infrastruktur untersucht und anschließend entweder Engpässe beseitigt oder Ihr Lösungsansatz optimiert. Da GenAI-Anwendungen riesige Datenmengen sowie integrierte Komponenten und Dienste umfassen, ist es wichtig, die im Laufe der Zeit anfallenden Betriebskosten zu berücksichtigen. Mit zunehmender Beliebtheit generativer KI-Dienste können Probleme bei der Skalierung dieser Integrationen auftreten. Wenn Sie feststellen, dass Sie weitere Funktionen hinzufügen oder mehr potenzielle KI-Agenten integrieren möchten, benötigen diese Integrationen Unterstützung auf Unternehmensebene. Wenn Sie Ihre Komponenten selbst auswählen und integrieren, können Sie einen Best-of-Breed-Ansatz für Ihre Anwendung wählen. Die Verwendung eines Microservices-Ansatzes kann es auch einfacher machen, im Laufe der Zeit mehr Integrationen oder Funktionen zu unterstützen. DIY bedeutet jedoch auch, dass Sie für die gesamte Integration und Verwaltung verantwortlich sind, was sich im Laufe der Zeit summieren kann. Die Alternative ist ein Stack-basierter Ansatz, bei dem die Unterstützung für verschiedene Tools oder Integrationen für Sie implementiert wurde. Ein vorgefertigter Stapel ermöglicht es Ihrem Team, sich auf die Erstellung von Anwendungen zu konzentrieren, anstatt die Infrastruktur zu implementieren, und sollte auch Ihre Abläufe vereinfachen. Sobald Ihre generative KI-Anwendung einsatzbereit ist, müssen Sie diesen Dienst betreiben und unterstützen, damit er die Erwartungen der Benutzer in Bezug auf Leistung und Qualität erfüllt. Wenn Sie Ihre Einrichtung abgeschlossen haben, werden Sie neue potenzielle Probleme entdecken, die spezifisch für RAG-Bereitstellungen sind, sowie einige traditionelle IT-Managementprobleme wie Verfügbarkeit und Kosten. Wenn Sie expandieren, wird sich Ihr Fokus von den Problemen des ersten Tages auf die Herausforderungen des zweiten Tages verlagern müssen. Ein stapelbasierter Ansatz kann in dieser Hinsicht hilfreich sein, sodass Sie sich darauf konzentrieren können, Ihren Benutzern den bestmöglichen Service zu bieten. (mb) 

So händeln Sie Day-2-Probleme bei GenAI-Deployments​ Wenn das GenAI-System läuft, fängt die eigentliche Arbeit erst an.
Treecha | shutterstock.com

Alle IT-Projekte durchlaufen Phasen, und Generative KI ist in dieser Hinsicht nicht anders. In ersten Pilotprojekten wird getestet, wie Technologie oder Software funktioniert, und es wird ermittelt, ob die gewünschten Ergebnisse oder die Versprechungen der Anbieter oder Entwickler erreicht werden. Sobald diese Pilotphasen abgeschlossen sind, ist es an der Zeit, zu skalieren. Man könnte zwar meinen, dass die Skalierung neuer Projekte einfach darin besteht, mehr Ressourcen einzusetzen. Das kann jedoch neue Probleme aufwerfen. Im Fall von GenAI können Skalierungsprobleme zudem sehr unterschiedlich ausfallen.

IT-Mitarbeiter bezeichnen diese Probleme üblicherweise als „Day-1“- und „Day-2“-Probleme. Erstere sind solche, die bei der Implementierung auftreten. Bei der generativen KI umfasst dies die Vorbereitung Ihrer Daten für die Verwendung mit Retrieval-Augmented Generation (RAG) bis hin zur Überprüfung, ob Ihr Ansatz zur Aufteilung und Indizierung von Daten effektiv ist. Bei RAG werden vortrainierte große Sprachmodelle (LLMs) zusammen mit den unternehmenseigenen Daten verwendet, sodass Ihre generative KI-Anwendung relevantere, spezifischere und zeitnahere Antworten liefern kann, anstatt sich nur auf das zu verlassen, worauf das LLM ursprünglich trainiert wurde.

Daten-Chunking, -Indexierung und -Einbettung

Aus der Day-1-Perspektive können RAG-Deployments mit Problemen bei der Vorbereitung Ihrer Daten konfrontiert sein. In der Anfangsphase der Datenvorbereitung werden beispielsweise alle unstrukturierten und strukturierten Daten in ein Format umgewandelt, mit dem das generative KI-System arbeiten kann. Dazu gehört die Erstellung einer Reihe von Dokumentobjekten, die alle Ihre Unternehmensdaten darstellen und sowohl den Text als auch alle zugehörigen Metadaten enthalten.

Textdaten werden dann in kleinere Teile, sogenannte Chunks, aufgeteilt, die indiziert und verstanden werden können. Die Größe der Chunks kann hier einen großen Unterschied machen. Man kann diese beispielsweise auf Satz- oder Absatzebene oder als komplexere selbstreferenzielle Chunks implementieren, die in immer kleinere Elemente verarbeitet werden. Unabhängig davon, für welchen Ansatz man sich entscheidet, werden diese Chunks dann indiziert und in Vektor-Einbettungen umgewandelt, wo sie für zukünftige Suchvorgänge gespeichert werden können.

Sendet ein Benutzer eine Abfrage, wird diese Abfrage in einen Vektor umgewandelt, der zur Suche nach den relevantesten Daten verwendet wird. Diese werden dann an das LLM weitergeleitet, damit es diese berücksichtigen kann. RAG kann zwar dazu beitragen, KI-Halluzinationen zu reduzieren und die Antworten zu verbessern. Die Technik reicht aber allein nicht aus. Probleme wie die Wahl des falschen LLM, die Verwendung des falschen Chunking-Ansatzes oder die Indexierung von Daten können sich auf die Funktionsweise Ihres RAG-Systems und die Qualität seiner Antworten auswirken. Wenn Sie beispielsweise zu große Chunks verwenden, gibt das LLM große Textblöcke zurück, die für bestimmte Anfragen möglicherweise nicht relevant sind.

GenAI-Anwendungen skalieren

Sobald Ihr RAG-System effektiv funktioniert, werden Sie möglicherweise auf neue Herausforderungen treffen. So wurde beispielsweise der ChatGPT-Dienst von OpenAI trainiert und für Benutzer zur Verfügung gestellt, um Fragen zu stellen. Die Zahl der Nutzer wuchs extrem schnell – laut Business of Apps dauerte es nur zwei Monate, um 100 Millionen Nutzer zu erreichen. Unternehmen, die generative KI und RAG einsetzen, hoffen, dass auch sie eine große Anzahl von Nutzeranfragen erhalten werden.

Aber haben Sie auch bedacht, was passieren könnte, wenn Ihre App ein Riesenerfolg wird, und wie sehr das Ihre generative KI-Infrastruktur belasten könnte? Werden Ihre Kosten für generative KI mit den Einnahmen, die Sie damit erzielen wollen, steigen, oder betrachten Sie dies als zusätzliche Einnahmen zu Ihren Produkten? Wie hoch schätzen Sie die Gewinnschwelle ein, ab der Sie die gewünschte Marge erzielen werden – je nachdem, wie groß das Interesse ist, das Sie wecken?

Bei vielen Dienstleistungen ist die Arbeit, die in den Betrieb im großen Maßstab fließt, genauso wichtig wie die anfängliche Aufbau- und Entwurfsphase, um qualitativ hochwertige Antworten zu liefern. Dies ist ein Beispiel für ein Day-2-Problem, bei dem man feststellt, dass das, was in der Testphase funktioniert hat, nicht skalierbar ist, um die Nachfrage zu decken. Wie bewältigt beispielsweise Ihr RAG-Deployment Tausende oder Millionen von gleichzeitigen Anfragen von Benutzern, und wie schnell können Ihre Vektordatenbank und die LLM-Integrationskomponenten diese Daten analysieren, damit das System dem Benutzer eine Antwort zurückgeben kann?

Während Benutzer bei einem kostenlosen, neuartigen Dienst eine eingeschränkte Leistung akzeptieren, sind sie weniger bereit, schlechte Antwortzeiten in Kauf zu nehmen, wenn sie für einen Dienst bezahlen. Bei der Analyse von RAG-Anfragen können bis zu 40 Prozent der Latenz innerhalb von Transaktionen von Aufrufen an den Einbettungsdienst und den Vektorsuchdienst stammen, bei denen RAG die richtigen Daten abgleicht und sie an den Benutzer zurückgibt. Die Optimierung dieses Roundtrips kann daher einen enormen Einfluss auf die Benutzererfahrung haben, beispielsweise durch das Zwischenspeichern früherer ähnlicher Anfragen.

Gleichzeitig verursacht jeder Roundtrip Kosten in Form von Rechenressourcen, insbesondere in der Cloud. Die Reduzierung der Workloads, sodass Unternehmen nur für das bezahlen, was sie nutzen, kann dazu beitragen, diese Kosten zu senken und die Ausgaben effizienter zu gestalten.

Gleichzeitig müssen sich Entwickler und IT-Mitarbeiter damit befassen, wo sie generative KI-Workloads ausführen. Viele Unternehmen werden damit in der Cloud beginnen, da sie die Last der Ausführung ihrer eigenen LLMs vermeiden wollen. Andere werden ihren eigenen Ansatz verfolgen wollen, um das Beste aus ihren Entscheidungen zu machen und eine Bindung zu vermeiden. Unabhängig davon, ob Sie On-Premises oder die Cloud bevorzugen, müssen Sie jedoch darüber nachdenken, an mehreren Standorten zu arbeiten.

Die Nutzung mehrerer Standorte sorgt für die Ausfallsicherheit eines Dienstes. Wenn ein Standort nicht mehr verfügbar ist, kann der Dienst trotzdem weiter funktionieren. Bei lokalen Standorten kann dies die Implementierung von Failover- und Verfügbarkeitstechnologien rund um Vektordatensätze bedeuten, sodass diese Daten bei Bedarf abgefragt werden können. Bei Cloud-Bereitstellungen ist der Betrieb an mehreren Standorten einfacher, da man verschiedene Cloud-Regionen zum Hosten und Replizieren von Vektordaten verwenden kann. Die Nutzung mehrerer Standorte ermöglicht es auch, Antworten von dem Standort zu liefern, der dem Benutzer am nächsten liegt, wodurch die Latenzzeit verringert wird und die Unterstützung geografischer Datenstandorte erleichtert wird, wenn Daten aus Compliance-Gründen an einem bestimmten Standort oder in einer bestimmten Region aufbewahrt werden müssen.

Laufende Betriebskosten in den Griff bekommen

Am zweiten Tag des IT-Betriebs werden Ihre Gemeinkosten und Probleme im Zusammenhang mit dem Betrieb Ihrer Infrastruktur untersucht und anschließend entweder Engpässe beseitigt oder Ihr Lösungsansatz optimiert. Da GenAI-Anwendungen riesige Datenmengen sowie integrierte Komponenten und Dienste umfassen, ist es wichtig, die im Laufe der Zeit anfallenden Betriebskosten zu berücksichtigen. Mit zunehmender Beliebtheit generativer KI-Dienste können Probleme bei der Skalierung dieser Integrationen auftreten. Wenn Sie feststellen, dass Sie weitere Funktionen hinzufügen oder mehr potenzielle KI-Agenten integrieren möchten, benötigen diese Integrationen Unterstützung auf Unternehmensebene.

Wenn Sie Ihre Komponenten selbst auswählen und integrieren, können Sie einen Best-of-Breed-Ansatz für Ihre Anwendung wählen. Die Verwendung eines Microservices-Ansatzes kann es auch einfacher machen, im Laufe der Zeit mehr Integrationen oder Funktionen zu unterstützen. DIY bedeutet jedoch auch, dass Sie für die gesamte Integration und Verwaltung verantwortlich sind, was sich im Laufe der Zeit summieren kann. Die Alternative ist ein Stack-basierter Ansatz, bei dem die Unterstützung für verschiedene Tools oder Integrationen für Sie implementiert wurde. Ein vorgefertigter Stapel ermöglicht es Ihrem Team, sich auf die Erstellung von Anwendungen zu konzentrieren, anstatt die Infrastruktur zu implementieren, und sollte auch Ihre Abläufe vereinfachen.

Sobald Ihre generative KI-Anwendung einsatzbereit ist, müssen Sie diesen Dienst betreiben und unterstützen, damit er die Erwartungen der Benutzer in Bezug auf Leistung und Qualität erfüllt. Wenn Sie Ihre Einrichtung abgeschlossen haben, werden Sie neue potenzielle Probleme entdecken, die spezifisch für RAG-Bereitstellungen sind, sowie einige traditionelle IT-Managementprobleme wie Verfügbarkeit und Kosten. Wenn Sie expandieren, wird sich Ihr Fokus von den Problemen des ersten Tages auf die Herausforderungen des zweiten Tages verlagern müssen. Ein stapelbasierter Ansatz kann in dieser Hinsicht hilfreich sein, sodass Sie sich darauf konzentrieren können, Ihren Benutzern den bestmöglichen Service zu bieten. (mb)

So händeln Sie Day-2-Probleme bei GenAI-Deployments​ Weiterlesen »

Schlechte Datenbasis bremst GenAI-Einführung in Deutschland​

Allgemein

In deutschen Unternehmen fehlt oft eine solide Datengrundlage, um mit GenAI-Projekten voranzukommen.PeopleImages.com – Yuri A/Shutterstock.com Mit generativer künstlicher Intelligenz (GenAI) hat sich der weltweite Wettbewerb in den vergangenen Jahren weiter zugespitzt, verspricht der Einsatz der Technologie doch zumindest mittelfristig zahlreiche Vorteile, etwa auf Service-, Kosten- und Umsatzseite. Wie eine Umfrage von Informatica ergab, drohen deutsche Unternehmen hier jedoch zurückzufallen: Nur 34 Prozent der hiesigen Teilnehmer haben generative KI bereits in ihre Geschäftspraktiken integriert – im Vergleich zu 63 Prozent in UK, 51 Prozent in der APAC-Region und 48 Prozent in den USA.   Grundlage der Informatica-Studie „CDO Insights 2025“ (Download gegen Daten) war eine Umfrage unter weltweit 600 Datenverantwortlichen von Großunternehmen (mit mehr als 500 Millionen Dollar Jahresumsatz) Ende vergangenen Jahres.  Zögerliche Investitionen  Zumindest, was die Investitionen angeht, ist hier für die nahe Zukunft kaum mit einer Beschleunigung zu rechnen. Zwar erwarten zwar 72 Prozent der deutschen Unternehmen, die GenAI eingeführt haben oder einführen wollen, für 2025 eine Zunahme der GenAI-Investitionen. In den USA liegt diese Zahl laut Umfrage jedoch bei 93 Prozent, in der APAC-Region bei 86 Prozent und in Frankreich bei 80 Prozent. Allerdings wollen deutsche Unternehmen im internationalen Vergleich in den nächsten sechs Monaten besonders stark investieren und ihre Mitarbeiter intensiv schulen.  Das Problem: Obwohl die hiesigen Chief Data Officers (CDO) laut Umfrage den höchsten Druck verspüren, hier an Tempo zu gewinnen, kommen sie langsamer vom Fleck als gewünscht. So blieb die Geschwindigkeit bei gut einem Drittel (35 Prozent) in den letzten Monaten gleichmäßig. Weitere 35 Prozent der deutschen Vertreter erklärten, sie wollen sogar etwas auf die Bremse treten, um unklare Faktoren zu klären.  Dieser Wert ist mehr als doppelt so hoch wie in den USA (14 Prozent) und dem APAC-Raum (17 Prozent) – was aber nicht unbedingt schlecht sein muss. So belegten die weltweiten Zahlen laut Informatica, dass viele Unternehmen weiterhin mit isolierten KI-Piloten hantierten, ohne sich vorher mit den zugrunde liegenden Problemen auseinanderzusetzen.   Ebenfalls positiv ist der Umstand, dass die deutschen Befragten im internationalen Vergleich in den letzten zwölf Monaten weniger Hindernisse sahen, die die KI-Initiativen komplett zum Erliegen bringen. Allerdings geben 74 Prozent der Befragten an, weniger als die Hälfte ihrer GenAI-Piloten erfolgreich in die Produktion überführt zu haben. Als Gründe hierfür nennen sie:   mangelnde technische Reife und Interoperabilität (48 Prozent), sowie  Defizite bei Qualität, Vollständigkeit und Einsatzbereitschaft der Daten (42 Prozent).  Unzuverlässige Daten  Wie die Studie ergab, stellt die Zuverlässigkeit der Daten (94 Prozent) die größte Barriere dar, wenn es darum geht, GenAI-Initiativen von der Pilotphase in die Produktion zu überführen. Zu den größten datenbezogenen Herausforderungen im Zusammenhang mit der Einführung von GenAI und LLMs gehören dabei für deutsche Unternehmen:   Privatsphäre und Datenschutz (50 Prozent),   die ethische Nutzung von KI (50 Prozent) und die Datenqualität (41 Prozent).   Im internationalen Vergleich sticht Deutschland dabei in puncto KI-Ethik besonders hervor: Nur 30 Prozent in den USA und 42 Prozent in den APAC-Staaten sehen das als Hindernis. Hier rechnet knapp die Hälfte der deutschen Datenverantwortlichen (48 Prozent) damit, dass entsprechende Mitarbeiterschulungen bereits in den nächsten sechs Monaten Erfolg zeigen – verglichen mit jeweils einem Drittel der Umfrageteilnehmer aus den USA und dem APAC-Raum.  Data Literacy als größte Herausforderung  Ähnlich wie für die KI-Projekte selbst sitzt hierzulande auch das Geld für Datenmanagement nicht sehr locker. Der Studie zufolge erwarten hier nur 66 Prozent der deutschen Datenverantwortlichen eine Zunahme an Investitionen im Jahr 2025. Im Gegensatz dazu rechnen damit 93 Prozent in den USA und 86 Prozent im APAC-Raum.   Investitionsbedarf sehen die Deutschen dabei insbesondere bei der Datenkompetenz mit 56 Prozent der Nennungen – verglichen mit 45 Prozent in den USA und 48 Prozent in APAC. Vergleichsweise weniger häufig genannt wurden hierzulande Investitionen,   um Datenschutz und Sicherheit zu verbessern (37 Prozent) oder um die sich ändernden rechtlichen Anforderungen zu erfüllen (30 Prozent).  Unrealistische Erwartungen  Die Studie gibt auch Hinweise darauf, warum es schwerfällt, mehr Investitionen für GenAI-Projekte zu erhalten. So finden es 96 Prozent der deutschen Datenverantwortlichen schwierig, den geschäftlichen Nutzen von KI-Initiativen zu belegen. Schuld daran sind demnach insbesondere:  Einschränkungen in Bezug auf Cybersicherheit und Datenschutz (56 Prozent),  mangelndes Vertrauen in die Qualität der Daten (48 Prozent),   fehlende KPIs zu Beginn des Pilotprojekts (37 Prozent) und   die Zuverlässigkeit der Ergebnisse (35 Prozent).  Gleichzeitig verwies ein Großteil von ihnen (82 Prozent) auf unrealistische Erwartungen im Unternehmen, was den Return on Invest (ROI) bei GenAI betrifft. Angesichts der aktuellen Hauptziele von GenAI-Investitionen ist das wenig verwunderlich. Hier wurden statt leicht messbarer Werte wie höherer Umsatz oder niedrigere Kosten vor allem eine verbesserte Customer Experience (56 Prozent), eine effektivere Verwaltung von Risiken und Einhaltung von Vorschriften (43 Prozent) und mehr betriebliche Effizienz (37 Prozent) genannt.  „Die Ergebnisse der Studie bestätigen, dass die Schaffung einer soliden Datengrundlage von Anfang an der Schlüssel ist, um Vertrauen in die GenAI-Bemühungen eines Unternehmens zu schaffen“, erklärt Emilio Valdés, Senior Vice President des Bereichs EMEA and LATAM Sales bei Informatica. Investitionen in grundlegende Bereiche wie die Kompetenzen der Mitarbeitenden und eine zeitgemäße Datenmanagement-Strategie seien erforderlich, um die Grundlage für die Nutzung von KI zu schaffen und davon zu profitieren.  

Schlechte Datenbasis bremst GenAI-Einführung in Deutschland​ In deutschen Unternehmen fehlt oft eine solide Datengrundlage, um mit GenAI-Projekten voranzukommen.PeopleImages.com – Yuri A/Shutterstock.com

Mit generativer künstlicher Intelligenz (GenAI) hat sich der weltweite Wettbewerb in den vergangenen Jahren weiter zugespitzt, verspricht der Einsatz der Technologie doch zumindest mittelfristig zahlreiche Vorteile, etwa auf Service-, Kosten- und Umsatzseite. Wie eine Umfrage von Informatica ergab, drohen deutsche Unternehmen hier jedoch zurückzufallen: Nur 34 Prozent der hiesigen Teilnehmer haben generative KI bereits in ihre Geschäftspraktiken integriert – im Vergleich zu 63 Prozent in UK, 51 Prozent in der APAC-Region und 48 Prozent in den USA.  

Grundlage der Informatica-Studie „CDO Insights 2025“ (Download gegen Daten) war eine Umfrage unter weltweit 600 Datenverantwortlichen von Großunternehmen (mit mehr als 500 Millionen Dollar Jahresumsatz) Ende vergangenen Jahres. 

Zögerliche Investitionen 

Zumindest, was die Investitionen angeht, ist hier für die nahe Zukunft kaum mit einer Beschleunigung zu rechnen. Zwar erwarten zwar 72 Prozent der deutschen Unternehmen, die GenAI eingeführt haben oder einführen wollen, für 2025 eine Zunahme der GenAI-Investitionen. In den USA liegt diese Zahl laut Umfrage jedoch bei 93 Prozent, in der APAC-Region bei 86 Prozent und in Frankreich bei 80 Prozent. Allerdings wollen deutsche Unternehmen im internationalen Vergleich in den nächsten sechs Monaten besonders stark investieren und ihre Mitarbeiter intensiv schulen. 

Das Problem: Obwohl die hiesigen Chief Data Officers (CDO) laut Umfrage den höchsten Druck verspüren, hier an Tempo zu gewinnen, kommen sie langsamer vom Fleck als gewünscht. So blieb die Geschwindigkeit bei gut einem Drittel (35 Prozent) in den letzten Monaten gleichmäßig. Weitere 35 Prozent der deutschen Vertreter erklärten, sie wollen sogar etwas auf die Bremse treten, um unklare Faktoren zu klären. 

Dieser Wert ist mehr als doppelt so hoch wie in den USA (14 Prozent) und dem APAC-Raum (17 Prozent) – was aber nicht unbedingt schlecht sein muss. So belegten die weltweiten Zahlen laut Informatica, dass viele Unternehmen weiterhin mit isolierten KI-Piloten hantierten, ohne sich vorher mit den zugrunde liegenden Problemen auseinanderzusetzen.  

Ebenfalls positiv ist der Umstand, dass die deutschen Befragten im internationalen Vergleich in den letzten zwölf Monaten weniger Hindernisse sahen, die die KI-Initiativen komplett zum Erliegen bringen. Allerdings geben 74 Prozent der Befragten an, weniger als die Hälfte ihrer GenAI-Piloten erfolgreich in die Produktion überführt zu haben. Als Gründe hierfür nennen sie:  

mangelnde technische Reife und Interoperabilität (48 Prozent), sowie 

Defizite bei Qualität, Vollständigkeit und Einsatzbereitschaft der Daten (42 Prozent). 

Unzuverlässige Daten 

Wie die Studie ergab, stellt die Zuverlässigkeit der Daten (94 Prozent) die größte Barriere dar, wenn es darum geht, GenAI-Initiativen von der Pilotphase in die Produktion zu überführen. Zu den größten datenbezogenen Herausforderungen im Zusammenhang mit der Einführung von GenAI und LLMs gehören dabei für deutsche Unternehmen:  

Privatsphäre und Datenschutz (50 Prozent),  

die ethische Nutzung von KI (50 Prozent) und

die Datenqualität (41 Prozent).  

Im internationalen Vergleich sticht Deutschland dabei in puncto KI-Ethik besonders hervor: Nur 30 Prozent in den USA und 42 Prozent in den APAC-Staaten sehen das als Hindernis. Hier rechnet knapp die Hälfte der deutschen Datenverantwortlichen (48 Prozent) damit, dass entsprechende Mitarbeiterschulungen bereits in den nächsten sechs Monaten Erfolg zeigen – verglichen mit jeweils einem Drittel der Umfrageteilnehmer aus den USA und dem APAC-Raum. 

Data Literacy als größte Herausforderung 

Ähnlich wie für die KI-Projekte selbst sitzt hierzulande auch das Geld für Datenmanagement nicht sehr locker. Der Studie zufolge erwarten hier nur 66 Prozent der deutschen Datenverantwortlichen eine Zunahme an Investitionen im Jahr 2025. Im Gegensatz dazu rechnen damit 93 Prozent in den USA und 86 Prozent im APAC-Raum.  

Investitionsbedarf sehen die Deutschen dabei insbesondere bei der Datenkompetenz mit 56 Prozent der Nennungen – verglichen mit 45 Prozent in den USA und 48 Prozent in APAC. Vergleichsweise weniger häufig genannt wurden hierzulande Investitionen,  

um Datenschutz und Sicherheit zu verbessern (37 Prozent) oder

um die sich ändernden rechtlichen Anforderungen zu erfüllen (30 Prozent). 

Unrealistische Erwartungen 

Die Studie gibt auch Hinweise darauf, warum es schwerfällt, mehr Investitionen für GenAI-Projekte zu erhalten. So finden es 96 Prozent der deutschen Datenverantwortlichen schwierig, den geschäftlichen Nutzen von KI-Initiativen zu belegen. Schuld daran sind demnach insbesondere: 

Einschränkungen in Bezug auf Cybersicherheit und Datenschutz (56 Prozent), 

mangelndes Vertrauen in die Qualität der Daten (48 Prozent),  

fehlende KPIs zu Beginn des Pilotprojekts (37 Prozent) und  

die Zuverlässigkeit der Ergebnisse (35 Prozent). 

Gleichzeitig verwies ein Großteil von ihnen (82 Prozent) auf unrealistische Erwartungen im Unternehmen, was den Return on Invest (ROI) bei GenAI betrifft. Angesichts der aktuellen Hauptziele von GenAI-Investitionen ist das wenig verwunderlich. Hier wurden statt leicht messbarer Werte wie höherer Umsatz oder niedrigere Kosten vor allem eine verbesserte Customer Experience (56 Prozent), eine effektivere Verwaltung von Risiken und Einhaltung von Vorschriften (43 Prozent) und mehr betriebliche Effizienz (37 Prozent) genannt. 

„Die Ergebnisse der Studie bestätigen, dass die Schaffung einer soliden Datengrundlage von Anfang an der Schlüssel ist, um Vertrauen in die GenAI-Bemühungen eines Unternehmens zu schaffen“, erklärt Emilio Valdés, Senior Vice President des Bereichs EMEA and LATAM Sales bei Informatica. Investitionen in grundlegende Bereiche wie die Kompetenzen der Mitarbeitenden und eine zeitgemäße Datenmanagement-Strategie seien erforderlich, um die Grundlage für die Nutzung von KI zu schaffen und davon zu profitieren. 

Schlechte Datenbasis bremst GenAI-Einführung in Deutschland​ Weiterlesen »

SAP baut Vorstand um​

Allgemein

SAP baut seinen Führungszirkel deutlich aus.SAP SAP startet mit einem neuen Vorstand ins Geschäftsjahr 2025. Der deutsche Softwarekonzern teilte mit, dass der 39-jährige Sebastian Steinhäuser in den Vorstand aufrückt. Er soll künftig den neu geschaffenen Vorstandsbereich Strategy & Operations leiten und in dieser Position die Umsetzung der SAP-Strategie weiter vorantreiben sowie Unternehmensabläufe vereinfachen. Durch die Integration von Strategy & Operations mit Global Marketing, das von der neu ernannten Chief Marketing Officer (CMO) Ada Agrait geleitet wird, soll die Zusammenarbeit verbessert und das digitale Erlebnis für Kunden und Partner gestärkt werden, hieß es in einer Mitteilung SAPs. Steinhäuser kam 2020 zur SAP und hatte seitdem verschiedene Rollen inne, darunter die des Chief Strategy Officer. In dieser Funktion leitete er auch die Wachstumsfelder Business Transformation Management, Business Network und Sustainability. Im Jahr 2024 wurde er zum Chief Strategy & Operations Officer ernannt. Sein Verantwortungsbereich erweiterte sich um die Bereiche Geschäftsabläufe, Prozesse und IT sowie Partnernetzwerk und kommerzielle Funktionen. Vor seinem Eintritt bei SAP arbeitete Steinhäuser bei der Boston Consulting Group. SAP hatte bereits im August 2024 seinen Management-Zirkel kräftig durcheinandergewirbelt. Mit Scott Russell und Julia White verließen vor einem halben Jahr überraschend der Vertriebschef und die Marketing-Leiterin SAP. Steinhäuser – Zukunftsarchitekt von SAP „Seit 2020 hat Sebastian Steinhäuser maßgeblich an der Unternehmensstrategie von SAP mitgewirkt“, sagte Pekka Ala-Pietilä, Vorsitzender des Aufsichtsrats von SAP SE. „Wir sehen ihn als wichtige Führungspersönlichkeit und Architekten der Zukunft von SAP.“ Der Aufsichtsrat von SAP verlängerte außerdem den Vertrag von Vorstandsmitglied Thomas Saueressig, Leiter des Bereichs Customer Services & Delivery, um weitere drei Jahre bis 2028. „Seine Beiträge waren und sind entscheidend, dass mehr und mehr SAP-Kunden den Weg in die Cloud wählen“, kommentierte Ala-Pietilä die Personalie. SAPs Aufsichtsratschef Pekka Ala-Pietilä sieht Sebastian Steinhäuser als wichtige Führungspersönlichkeit für SAP.SAP Auch in der zweiten Management-Reihe gibt es Veränderungen in Walldorf. SAP stellte einen neuen Chief Technology Officer und zwei neue Chief Revenue Officer vor. Philipp Herzig übernimmt die Rolle des weltweiten CTO bei SAP, zusätzlich zu seiner derzeitigen Position als Chief AI Officer. In seiner neuen Position soll Herzig die Bereiche Technologie-Strategie, Innovation, Forschung sowie Unternehmensentwicklung von SAP überwachen. Zudem steht in seinem Hausaufgabenheft, den Erfolg der Business AI und Nachhaltigkeitseinheiten von SAP sicherzustellen und weiter Innovationen für SAP-Kunden und -Partner voranzutreiben. Der CTO-Posten bei SAP war seit September 2024 vakant, nachdem der bis dato amtierende Technikchef Jürgen Müller gehen musste. Jan Gilg und Emmanuel (Manos) Raptopoulos werden künftig gemeinsam als Chief Revenue Officer die SAP Customer Success Organisation leiten. Gilg, derzeit Präsident und Chief Product Officer von Cloud ERP, wird dann SAP Americas und die globale SAP Business Suite übernehmen. Raptopoulos, aktuell Regionalpräsident von SAP EMEA, wird zusätzlich die Regionen SAP MEE und SAP APAC leiten. SAP-Strategie: AI-first, Suite first Herzig, Gilg und Raptopoulos berichten an den SAP-Vorstandsvorsitzenden Christian Klein und gehören künftig dem neu gebildeten erweiterten Vorstand von SAP an. Dieser soll als strategisches Beratungsgremium handeln, um die Umsetzung der „AI first, Suite first“-Strategie des Unternehmens voranzutreiben. „Auf globaler Ebene sollen so wichtige Initiativen ausgerichtet und deren reibungslose Umsetzung im gesamten Unternehmen sichergestellt werden“, verlautete von Seiten des Konzerns. Der SAP-Vorstand bleibe hierbei das oberste Leitungsorgan der SAP SE. Philipp Herzig übernimmt neben dem AI-Ressort auch die Rolle des Chief Technology Officer (CTO) bei SAP.SAP SE Neben Herzig, Gilg und Raptopoulos gehören dem erweiterten Führungsgremium Ada Agrait (Chief Marketing Officer), Michael Ameling (General Manager BTP), Sebastian Behrendt (Head of Global Finance), Thomas Pfiester (Head of Global Customer Engagement) und Monika Schaller (Chief Communications Officer) an. Ein General Manager für den Bereich Business Suite im erweiterten Vorstandsteam soll noch ernannt werden. Mit Agrait, Schaller und Chief People Officer Gina Vargiu-Breuer finden sich damit drei weibliche Managerinnen im 15-köpfigen Führungszirkel der SAP – gerade einmal 20 Prozent. 

SAP baut Vorstand um​ SAP baut seinen Führungszirkel deutlich aus.SAP

SAP startet mit einem neuen Vorstand ins Geschäftsjahr 2025. Der deutsche Softwarekonzern teilte mit, dass der 39-jährige Sebastian Steinhäuser in den Vorstand aufrückt. Er soll künftig den neu geschaffenen Vorstandsbereich Strategy & Operations leiten und in dieser Position die Umsetzung der SAP-Strategie weiter vorantreiben sowie Unternehmensabläufe vereinfachen. Durch die Integration von Strategy & Operations mit Global Marketing, das von der neu ernannten Chief Marketing Officer (CMO) Ada Agrait geleitet wird, soll die Zusammenarbeit verbessert und das digitale Erlebnis für Kunden und Partner gestärkt werden, hieß es in einer Mitteilung SAPs.

Steinhäuser kam 2020 zur SAP und hatte seitdem verschiedene Rollen inne, darunter die des Chief Strategy Officer. In dieser Funktion leitete er auch die Wachstumsfelder Business Transformation Management, Business Network und Sustainability. Im Jahr 2024 wurde er zum Chief Strategy & Operations Officer ernannt. Sein Verantwortungsbereich erweiterte sich um die Bereiche Geschäftsabläufe, Prozesse und IT sowie Partnernetzwerk und kommerzielle Funktionen. Vor seinem Eintritt bei SAP arbeitete Steinhäuser bei der Boston Consulting Group.

SAP hatte bereits im August 2024 seinen Management-Zirkel kräftig durcheinandergewirbelt. Mit Scott Russell und Julia White verließen vor einem halben Jahr überraschend der Vertriebschef und die Marketing-Leiterin SAP.

Steinhäuser – Zukunftsarchitekt von SAP

„Seit 2020 hat Sebastian Steinhäuser maßgeblich an der Unternehmensstrategie von SAP mitgewirkt“, sagte Pekka Ala-Pietilä, Vorsitzender des Aufsichtsrats von SAP SE. „Wir sehen ihn als wichtige Führungspersönlichkeit und Architekten der Zukunft von SAP.“ Der Aufsichtsrat von SAP verlängerte außerdem den Vertrag von Vorstandsmitglied Thomas Saueressig, Leiter des Bereichs Customer Services & Delivery, um weitere drei Jahre bis 2028. „Seine Beiträge waren und sind entscheidend, dass mehr und mehr SAP-Kunden den Weg in die Cloud wählen“, kommentierte Ala-Pietilä die Personalie.

SAPs Aufsichtsratschef Pekka Ala-Pietilä sieht Sebastian Steinhäuser als wichtige Führungspersönlichkeit für SAP.SAP

Auch in der zweiten Management-Reihe gibt es Veränderungen in Walldorf. SAP stellte einen neuen Chief Technology Officer und zwei neue Chief Revenue Officer vor. Philipp Herzig übernimmt die Rolle des weltweiten CTO bei SAP, zusätzlich zu seiner derzeitigen Position als Chief AI Officer. In seiner neuen Position soll Herzig die Bereiche Technologie-Strategie, Innovation, Forschung sowie Unternehmensentwicklung von SAP überwachen. Zudem steht in seinem Hausaufgabenheft, den Erfolg der Business AI und Nachhaltigkeitseinheiten von SAP sicherzustellen und weiter Innovationen für SAP-Kunden und -Partner voranzutreiben. Der CTO-Posten bei SAP war seit September 2024 vakant, nachdem der bis dato amtierende Technikchef Jürgen Müller gehen musste.

Jan Gilg und Emmanuel (Manos) Raptopoulos werden künftig gemeinsam als Chief Revenue Officer die SAP Customer Success Organisation leiten. Gilg, derzeit Präsident und Chief Product Officer von Cloud ERP, wird dann SAP Americas und die globale SAP Business Suite übernehmen. Raptopoulos, aktuell Regionalpräsident von SAP EMEA, wird zusätzlich die Regionen SAP MEE und SAP APAC leiten.

SAP-Strategie: AI-first, Suite first

Herzig, Gilg und Raptopoulos berichten an den SAP-Vorstandsvorsitzenden Christian Klein und gehören künftig dem neu gebildeten erweiterten Vorstand von SAP an. Dieser soll als strategisches Beratungsgremium handeln, um die Umsetzung der „AI first, Suite first“-Strategie des Unternehmens voranzutreiben. „Auf globaler Ebene sollen so wichtige Initiativen ausgerichtet und deren reibungslose Umsetzung im gesamten Unternehmen sichergestellt werden“, verlautete von Seiten des Konzerns. Der SAP-Vorstand bleibe hierbei das oberste Leitungsorgan der SAP SE.

Philipp Herzig übernimmt neben dem AI-Ressort auch die Rolle des Chief Technology Officer (CTO) bei SAP.SAP SE

Neben Herzig, Gilg und Raptopoulos gehören dem erweiterten Führungsgremium Ada Agrait (Chief Marketing Officer), Michael Ameling (General Manager BTP), Sebastian Behrendt (Head of Global Finance), Thomas Pfiester (Head of Global Customer Engagement) und Monika Schaller (Chief Communications Officer) an. Ein General Manager für den Bereich Business Suite im erweiterten Vorstandsteam soll noch ernannt werden. Mit Agrait, Schaller und Chief People Officer Gina Vargiu-Breuer finden sich damit drei weibliche Managerinnen im 15-köpfigen Führungszirkel der SAP – gerade einmal 20 Prozent.

SAP baut Vorstand um​ Weiterlesen »

Heimliche Schlupflöcher im AI Act​

Allgemein

Bedenken über Grundrechtsverletzungen aufgrund „nationaler Sicherheit“: AI Act könnte Anonymität gefährden. shutterstock.com – Ivan Marc Ab Februar 2025 treten die ersten Regelungen des AI Acts in Kraft, um die Gefahren der Künstlichen Intelligenz (KI) zu begrenzen. Das Gesetz enthält jedoch zahlreiche Ausnahmen, insbesondere durch Schlupflöcher, die von Frankreich ausgehandelt wurden. Wie weitreichend sich dies auf Europas Grundrechte auswirken könnte, wurde von Investigate Europe, einem Journalistenteam aus elf europäischen Staaten, recherchiert. Private Unternehmen und Drittstaaten schauen zu Eine dieser Ausnahmen bezieht sich auf die Nutzung von Gesichtserkennungssystemen im öffentlichen Raum. Generell ist sie verboten, sollte jedoch die „nationale Sicherheit“ bedroht sein, ist es Behörden gestattet, KI-Überwachung einzusetzen. Kritiker befürchten, dass dies auch bei legitimen Veranstaltungen wie Klimaprotesten oder politischen Demonstrationen der Fall sein könnte. Frankreich hat bereits demonstriert, wann es gewillt ist, diese Technologie zu nutzen: Bei den Olympischen Spielen 2024, kam KI-gestützte Videoüberwachung bereits zum Einsatz. Amnesty International warnt deshalb vor einer „ernsthaften Bedrohung für bürgerliche Freiheiten“, da solche Maßnahmen künftig zur Regel werden könnten. Nutznießer solcher Praktiken könnten private Unternehmen und Drittstaaten sein. Sie wären in der Lage, EU-Bürger zu überwachen, sofern sie den Sicherheitsbehörden die verwendete KI-Technologie bereitstellen. Mehrere Staaten unterstützen Frankreichs Forderung Gefordert wurde der KI-Einsatz in einer Sitzung des Ausschusses der Ständigen Vertreter (COREPER) im Jahr 2022. Ursprünglich sollte Echtzeit-Gesichtserkennung im öffentlichen Raum nur dem Militär erlaubt sein. In einer späteren Sitzung unterstützten mehrere Staaten Forderung Frankreichs, darunter Italien, Schweden, Finnland, Tschechien, Litauen, Rumänien, Ungarn und Bulgarien. In einer COREPER-Sitzung 2023 forderten dann Dänemark, die Niederlande, Portugal und die Slowakei ein verhältnismäßiges Verbot, das nur bei Diskriminierungsgefahr gelten solle. Zugleich sprachen sich diese Staaten gegen ein umfassendes Verbot für die Strafverfolgung aus. Umstrittene biometrische Kategorisierungssysteme in der EU Tritt der AI Act am 2. Februar 2025 in Kraft bleiben einige Bereiche zum Teil von der Überwachungswut unangetastet. Dazu zählt etwa Emotionserkennung am Arbeitsplatz, in Schulen und Geschäften. Arbeitgeber dürfen damit keine Emotionen ihrer Mitarbeiter analysieren. Sicherheitsbehörden und Grenzschützer sind jedoch dank des Einflusses Frankreichs und anderer Länder auch hier von diesem Verbot ausgenommen. Biometrische Kategorisierungssysteme, die ethnische Zugehörigkeit oder sexuelle Orientierung bestimmen, sind umstritten. Das neue EU-Gesetz verbietet ihren Einsatz, erlaubt jedoch Ausnahmen für Strafverfolgungsbehörden, insbesondere auf Frankreichs Drängen, um Personen zu identifizieren, die gewalttätigen Extremismus oder ein terroristisches Risiko darstellen. Gesichtserkennungssoftware darf in Echtzeit bei Ermittlungen zu bestimmten Straftaten eingesetzt werden. In diesem Kontext fordern mehrere Staaten, einschließlich Frankreich, diese Liste noch zu erweitern. Griechenland plädierte dafür, Gefängnisse und Grenzgebiete von Verboten auszunehmen, um dort Echtzeitüberwachung zu ermöglichen. Grundrechtsverstöße und EU-Recht Ein Jurist der Fraktion der Europäischen Volkspartei (EVP) kritisiert den AI Act als Verstoß gegen Grundrechte und EU-Recht. Die Rechtswissenschaftlerin Plixavra Vogiatzoglou der Universität Amsterdam betont, dass die nationalen Sicherheitsausnahmen Urteilen des Europäischen Gerichtshofs widersprechen. Organisationen wie European Digital Rights warnen zudem, dass solche Systeme die Anonymität im öffentlichen Raum gefährden und der AI Act Grundrechte in Europa einschränken könnte. In den letzten Verhandlungen des AI Acts am 6. Dezember 2023 drängte zudem die spanische Ratspräsidentschaft auf eine schnelle Verabschiedung vor den Europawahlen 2024. Ziel war es, das Erstarken rechtsradikaler Parteien zu verhindern. Schließlich wurde beschlossen, dass jede KI-gestützte Überwachungstechnologie von einer unabhängigen nationalen Behörde zugelassen werden muss. Selbstzertifizierung möglich Hochrisikotechnologien wie Echtzeitüberwachung einzusetzen, erfordert normalerweise einen Gerichtsbeschluss, die Registrierung in einer europäischen Datenbank und eine Folgenabschätzung. In den Verhandlungen wurde jedoch eine Lockerung eingeführt: Anbieter können selbst entscheiden, ob ihr Produkt als Hochrisikotechnologie gilt. Dafür müssen sie eine Selbstzertifizierung ausfüllen. Ein internes Arbeitspapier des juristischen Dienstes des Europäischen Parlaments kritisiert diese Lockerung, da sie den KI-Anbietern zu viel Spielraum lässt und das Ziel des AI Acts, das Risiko von Hochrisiko-KI-Systemen zu regulieren, gefährdet. Zugleich warnten Verhandlungspartner wie die französische Regierung, dass Unternehmen, wenn ihnen der breite Einsatz von KI-Technologien untersagt wird, in Regionen ohne digitale Grundrechte abwandern könnten. 

Heimliche Schlupflöcher im AI Act​ Bedenken über Grundrechtsverletzungen aufgrund „nationaler Sicherheit“: AI Act könnte Anonymität gefährden.
shutterstock.com – Ivan Marc

Ab Februar 2025 treten die ersten Regelungen des AI Acts in Kraft, um die Gefahren der Künstlichen Intelligenz (KI) zu begrenzen. Das Gesetz enthält jedoch zahlreiche Ausnahmen, insbesondere durch Schlupflöcher, die von Frankreich ausgehandelt wurden. Wie weitreichend sich dies auf Europas Grundrechte auswirken könnte, wurde von Investigate Europe, einem Journalistenteam aus elf europäischen Staaten, recherchiert.

Private Unternehmen und Drittstaaten schauen zu

Eine dieser Ausnahmen bezieht sich auf die Nutzung von Gesichtserkennungssystemen im öffentlichen Raum. Generell ist sie verboten, sollte jedoch die „nationale Sicherheit“ bedroht sein, ist es Behörden gestattet, KI-Überwachung einzusetzen. Kritiker befürchten, dass dies auch bei legitimen Veranstaltungen wie Klimaprotesten oder politischen Demonstrationen der Fall sein könnte.

Frankreich hat bereits demonstriert, wann es gewillt ist, diese Technologie zu nutzen: Bei den Olympischen Spielen 2024, kam KI-gestützte Videoüberwachung bereits zum Einsatz. Amnesty International warnt deshalb vor einer „ernsthaften Bedrohung für bürgerliche Freiheiten“, da solche Maßnahmen künftig zur Regel werden könnten.

Nutznießer solcher Praktiken könnten private Unternehmen und Drittstaaten sein. Sie wären in der Lage, EU-Bürger zu überwachen, sofern sie den Sicherheitsbehörden die verwendete KI-Technologie bereitstellen.

Mehrere Staaten unterstützen Frankreichs Forderung

Gefordert wurde der KI-Einsatz in einer Sitzung des Ausschusses der Ständigen Vertreter (COREPER) im Jahr 2022. Ursprünglich sollte Echtzeit-Gesichtserkennung im öffentlichen Raum nur dem Militär erlaubt sein. In einer späteren Sitzung unterstützten mehrere Staaten Forderung Frankreichs, darunter

Italien,

Schweden,

Finnland,

Tschechien,

Litauen,

Rumänien,

Ungarn und

Bulgarien.

In einer COREPER-Sitzung 2023 forderten dann Dänemark, die Niederlande, Portugal und die Slowakei ein verhältnismäßiges Verbot, das nur bei Diskriminierungsgefahr gelten solle. Zugleich sprachen sich diese Staaten gegen ein umfassendes Verbot für die Strafverfolgung aus.

Umstrittene biometrische Kategorisierungssysteme in der EU

Tritt der AI Act am 2. Februar 2025 in Kraft bleiben einige Bereiche zum Teil von der Überwachungswut unangetastet. Dazu zählt etwa Emotionserkennung am Arbeitsplatz, in Schulen und Geschäften. Arbeitgeber dürfen damit keine Emotionen ihrer Mitarbeiter analysieren. Sicherheitsbehörden und Grenzschützer sind jedoch dank des Einflusses Frankreichs und anderer Länder auch hier von diesem Verbot ausgenommen.

Biometrische Kategorisierungssysteme, die ethnische Zugehörigkeit oder sexuelle Orientierung bestimmen, sind umstritten. Das neue EU-Gesetz verbietet ihren Einsatz, erlaubt jedoch Ausnahmen für Strafverfolgungsbehörden, insbesondere auf Frankreichs Drängen, um Personen zu identifizieren, die gewalttätigen Extremismus oder ein terroristisches Risiko darstellen.

Gesichtserkennungssoftware darf in Echtzeit bei Ermittlungen zu bestimmten Straftaten eingesetzt werden. In diesem Kontext fordern mehrere Staaten, einschließlich Frankreich, diese Liste noch zu erweitern. Griechenland plädierte dafür, Gefängnisse und Grenzgebiete von Verboten auszunehmen, um dort Echtzeitüberwachung zu ermöglichen.

Grundrechtsverstöße und EU-Recht

Ein Jurist der Fraktion der Europäischen Volkspartei (EVP) kritisiert den AI Act als Verstoß gegen Grundrechte und EU-Recht. Die Rechtswissenschaftlerin Plixavra Vogiatzoglou der Universität Amsterdam betont, dass die nationalen Sicherheitsausnahmen Urteilen des Europäischen Gerichtshofs widersprechen.

Organisationen wie European Digital Rights warnen zudem, dass solche Systeme die Anonymität im öffentlichen Raum gefährden und der AI Act Grundrechte in Europa einschränken könnte. In den letzten Verhandlungen des AI Acts am 6. Dezember 2023 drängte zudem die spanische Ratspräsidentschaft auf eine schnelle Verabschiedung vor den Europawahlen 2024. Ziel war es, das Erstarken rechtsradikaler Parteien zu verhindern. Schließlich wurde beschlossen, dass jede KI-gestützte Überwachungstechnologie von einer unabhängigen nationalen Behörde zugelassen werden muss.

Selbstzertifizierung möglich

Hochrisikotechnologien wie Echtzeitüberwachung einzusetzen, erfordert normalerweise

einen Gerichtsbeschluss,

die Registrierung in einer europäischen Datenbank und

eine Folgenabschätzung.

In den Verhandlungen wurde jedoch eine Lockerung eingeführt: Anbieter können selbst entscheiden, ob ihr Produkt als Hochrisikotechnologie gilt. Dafür müssen sie eine Selbstzertifizierung ausfüllen.

Ein internes Arbeitspapier des juristischen Dienstes des Europäischen Parlaments kritisiert diese Lockerung, da sie den KI-Anbietern zu viel Spielraum lässt und das Ziel des AI Acts, das Risiko von Hochrisiko-KI-Systemen zu regulieren, gefährdet. Zugleich warnten Verhandlungspartner wie die französische Regierung, dass Unternehmen, wenn ihnen der breite Einsatz von KI-Technologien untersagt wird, in Regionen ohne digitale Grundrechte abwandern könnten.

Heimliche Schlupflöcher im AI Act​ Weiterlesen »

Tutorial: Generics in Java nutzen​

Allgemein

: Lesen Sie, wie Generics in Java optimale Wirkung entfalten.THP Creative | shutterstock.com Mit Version 5 von Java wurden Generics eingeführt. Sie verbessern die Typsicherheit des Codes und machen ihn leichter lesbar. Das trägt auch dazu bei, Fehler zur Laufzeit wie ClassCastException zu verhindern. Dieser tritt auf, wenn Objekte in inkompatible Typen umgewandelt werden sollen. Dieses Tutorial beschäftigt sich eingehend mit dem Thema Generics in Java und vermittelt Ihnen: welchen Mehrwert Generics bringen, wie Sie diese im Java Collection Framework nutzen, wie Sie Generic Types in Java konkret einsetzen (inklusive Beispielen), und   was mit Blick auf Raw Types und Generics zu beachten ist. Was Generics bringen Generics werden gängigerweise innerhalb des Java Collection Frameworks genutzt mit: java.util.List, java.util.Set und java.util.Map. Darüber hinaus sind sie auch in anderen Teilen von Java zu finden, beispielsweise in: java.lang.Class, java.lang.Comparable und java.lang.ThreadLocal. Bevor Generics eingeführt wurden, mangelte es Java-Code regelmäßig an Type Safety. Hier ein Beispiel für Java-Code im Prä-Generics-Zeitalter: List integerList = new ArrayList(); integerList.add(1); integerList.add(2); integerList.add(3); for (Object element : integerList) { Integer num = (Integer) element; // Cast is necessary System.out.println(num); } Mit diesem Code sollen Integer-Objekte in einer Liste gespeichert werden. Dabei können Sie jederzeit weitere Typen hinzufügen, etwa einen String: integerList.add(“Hello”); Würden Sie versuchen, den String in einen Integer umzuwandeln, würde dieser Code zur Laufzeit eine ClassCastException verursachen. Mit Hilfe von Generics lässt sich dieses Problem lösen und der Fehler zur Laufzeit vermeiden. Dazu nutzen wir sie, um die Typen von Objekten zu spezifizieren, die eine Liste enthalten darf. In diesem Fall können wir auf einen Class Cast verzichten, was dazu führt, dass der Code sicherer wird und leichter zu verstehen ist:    List integerList = new ArrayList(); integerList.add(1); integerList.add(2); integerList.add(3); for (Integer num : integerList) { System.out.println(num); } List bedeutet „eine Liste von Integer-Objekten“. Auf Grundlage dieser Anweisung stellt der Compiler sicher, dass ausschließlich Integer-Objekte zur Liste hinzugefügt werden können. Generics im Java Collections Framework Um eine Typprüfung während der Kompilierung zu ermöglichen und die Notwendigkeit einer expliziten Typumwandlung zu beseitigen, sind Generics im Java Collections Framework integriert. Wenn Sie eine Collection mit Generics nutzen, spezifizieren Sie den Typ der Elemente, die erstere enthalten soll. Der Java-Compiler nutzt diese Spezifikation, um sicherzustellen, dass nicht versehentlich ein inkompatibles Objekt in die Collection einfließt. Das reduziert Fehler und macht den Code besser lesbar. Um zu veranschaulichen, wie Generics im Java Collections Framework angewendet werden, werfen wir im Folgenden einen Blick auf drei Beispiele. Namenskonventionen für GenericsGeneric Types können Sie in jeder beliebigen Klasse deklarieren und dafür jeden beliebigen Namen verwenden. Vorzugsweise sollten Sie sich dabei aber auf eine Namenskonvention verlassen. In Java bestehen die Namen von Typparametern in der Regel aus einzelnen Großbuchstaben. Dabei steht:E für Element,K für Key,V für Value, undT für Type.Insofern sollten Sie davon absehen, bedeutungslose Benennungen wie „X“, „Y“ oder „Z“ zu verwenden. List und ArrayList Im zuletzt angeführten Code-Beispiel haben wir bereits eine einfachere Möglichkeit gesehen, um ArrayList zu nutzen. Dieses Konzept sehen wir uns nun genauer an, indem wir einen Blick darauf werfen, wie das List-Interface deklariert wird:   public interface List extends SequencedCollection { … } In diesem Code deklarieren wir unsere generische Variable als „E“. Diese kann durch jeden beliebigen Objekttyp ersetzt werden. Sehen wir uns nun an, wie die Variable E durch den gewünschten Typ für unsere List ersetzt wird. Im folgenden Code ersetzen wir die Variable durch : List list = new ArrayList(); list.add(“Java”); list.add(“Challengers”); // list.add(1); // This line would cause a compile-time error. Hier spezifiziert List, dass die Liste lediglich String-Objekte enthalten kann. Eine Integer hinzuzufügen, führt zu einem Kompilierungsfehler, wie Sie in der letzten Code-Zeile sehen. Set und HashSet Das Set-Interface ähnelt dem von List: public interface Set extends Collection { … } Wir ersetzen zudem durch , so dass wir nur einen Double-Wert in das entsprechende Set einfügen können: Set doubles = new HashSet(); doubles.add(1.5); doubles.add(2.5); // doubles.add(“three”); // Compile-time error double sum = 0.0; for (double d : doubles) { sum += d; } Set gewährleistet, dass nur Double-Werte hinzugefügt werden können. Das verhindert Laufzeitfehler, die durch nicht korrektes Casting entstehen können. Map und HashMap Wir können so viele generische Typen deklarieren, wie wir möchten. Im folgenden ein Key-Value-Datenstrukturbeispiel in Form einer Map: public interface Map { … } Nun ersetzen wir den Key-Type K durch String und den Value-Type V durch Integer: Map map = new HashMap(); map.put(“Duke”, 30); map.put(“Juggy”, 25); // map.put(1, 100); // This line would cause a compile-time error Dieses Beispiel zeigt eine HashMap, die String-Keys Integer-Values zuordnet. Einen Key vom Typ Integer hinzuzufügen, ist nicht erlaubt und führt zu einem Kompilierungsfehler. Generic Types in Java nutzen – Beispiele Im nächsten Schritt sehen wir uns einige Beispiele an, um besser zu durchdringen, wie Generic Types in Java deklariert und verwendet werden. Generics mit beliebigen Objekten nutzen Generic Types lassen sich jeder Klasse deklarieren – es muss sich nicht um einen Collection-Typ handeln. Im folgenden Code-Beispiel deklarieren wir den Generic Type E, um jedes Element innerhalb der Box-Klasse zu manipulieren. Zu beachten ist dabei, dass der Generic Type nach dem Klassennamen deklariert wird. Erst dann können wir ihn als Attribut, Konstruktor, Methodenparameter und Methodenrückgabetyp nutzen: // Define a generic class Box with a generic type parameter E public class Box { // Variable to hold an object of type E private E content; public Box(E content) { this.content = content; } public E getContent() { return content; } public void setContent(E content) { this.content = content; } public static void main(String[] args) { // Create a Box to hold an Integer Box integerBox = new Box(123); System.out.println(“Integer Box contains: ” + integerBox.getContent()); // Create a Box to hold a String Box stringBox = new Box(“Hello World”); stringBox.setContent(“Java Challengers”); System.out.println(“String Box contains: ” + stringBox.getContent()); } } Der Output dieses Beispiels lautet: Integer Box contains: 123 String Box contains: Java Challengers Zu beachten ist dabei: Die Box-Klasse verwendet den Typparameter E als Platzhalter für das Objekt, das die Box enthalten wird. Dadurch lässt sich Box mit jedem Objekttyp verwenden. Der Konstruktor initialisiert eine neue Instanz der Box-Klasse mit dem bereitgestellten Inhalt. Der E-Typ stellt dabei sicher, dass der Konstruktor jeden Objekttyp akzeptieren kann, der bei der Erstellung der Instanz definiert wurde – und gewährleistet so die Typsicherheit. getContent gibt den aktuellen Inhalt von Box zurück. Durch die Rückgabe von E wird sichergestellt, dass er dem Generic Type entspricht, der bei der Erstellung der Instanz angegeben wurde –  und der richtige Typ bereitgestellt wird. Casting ist dazu nicht erforderlich. setContent aktualisiert den Inhalt von Box. Weil E als Parameter verwendet wird, ist sichergestellt, dass nur ein Objekt des richtigen Typs als neuer Inhalt festgelegt werden kann. Das gewährleistet umfassende Type Safety, solange die Instanz genutzt wird. In der main-Methode werden zwei Box-Objekte erstellt: integerBox enthält eine Integer, stringBox einen String. Jede Box-Instanz arbeitet mit ihrem spezifischen Datentyp. Dieses Beispiel veranschaulicht, wie Generics in Java grundlegend implementiert und verwendet werden. Es unterstreicht, wie Objekte beliebigen Typs „type-safe“ erstellt und bearbeitet werden können. Generics mit unterschiedlichen Datentypen nutzen Sie können so viele Typen als generisch deklarieren, wie Sie möchten. In der folgenden Pair-Klasse können wir so die generischen Werte hinzufügen: class Pair { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } public void setKey(K key) { this.key = key; } public void setValue(V value) { this.value = value; } } public class GenericsDemo { public static void main(String[] args) { Pair person = new Pair(“Duke”, 30); System.out.println(“Name: ” + person.getKey()); System.out.println(“Age: ” + person.getValue()); person.setValue(31); System.out.println(“Updated Age: ” + person.getValue()); } } Dieser Code erzeugt folgenden Output: Name: Duke Age: 30 Updated Age: 31 Zu beachten ist dabei: Die generische Klasse Pair weist zwei Typparameter auf, wodurch sie für jeden Datentyp vielseitig einsetzbar ist. Konstruktoren und Methoden in der Pair-Klasse verwenden diese Typparameter, was striktes Type Checking ermöglicht. Ein Pair-Objekt wird erstellt, um einen String (den Namen einer Person) und einen Integer (ihr Alter) zu speichern. Accessors (getKey und getValue) sowie Mutators (setKey und setValue) manipulieren und rufen die Pair-Daten ab. Die Pair-Klasse kann verwandte Informationen speichern und managen und ist dabei nicht an bestimmte Datentypen gebunden. Dieses Beispiel demonstriert, wie Generics zu wiederverwendbaren, typsicheren Komponenten mit unterschiedlichen Datentypen beitragen – und zur Wiederverwendbarkeit und besseren Wartbarkeit von Code. Generic Types innerhalb einer Methode deklarieren Sie können Generic Types auch direkt innerhalb einer Methode deklarieren. Das bewerkstelligen Sie, indem Sie den Generic Type vor dem Rückgabetyp der Methodensignatur deklarieren: public class GenericMethodDemo { // Declare generic type and print elements with the chosen type public static void printArray(T[] array) { for (T element : array) { System.out.print(element + ” “); } System.out.println(); } public static void main(String[] args) { // Using the generic method with an Integer array Integer[] intArray = {1, 2, 3, 4}; printArray(intArray); // Using the generic method with a String array String[] stringArray = {“Java”, “Challengers”}; printArray(stringArray); } } Der Output sieht wie folgt aus: 1 2 3 4 Java Challengers Raw Types vs. Generics Bei einem Raw Type handelt es sich im Grunde um den Namen einer Generic Class (beziehungsweise eines Generic Interface), jedoch ohne Typargumente. Diese waren vor der Generics-Einführung in Java 5 weit verbreitet. Heutzutage kommen Sie vor allem zum Einsatz, um die Kompatibilität mit Legacy-Code oder die Interoperabilität mit nicht-generischen APIs zu gewährleisten. Es empfiehlt sich also, zu wissen, wie Raw Types im Code zu erkennen und zu verwenden sind. Ein gängiges Beispiel für den Raw-Type-Einsatz ist, eine List ohne Typparameter zu deklarieren: List rawList = new ArrayList(); In diesem Beispiel deklariert List rawList eine Liste ohne generischen Typparameter. rawList kann jeden Objekttyp enthalten, einschließlich Integer, String, Double und so weiter. Weil kein Typ spezifiziert ist, wird im Rahmen der Kompilierung nicht überprüft, welche Objekttypen der Liste hinzugefügt werden. Compiler-Warnung bei Raw Types Der Java-Compiler sendet Warnmeldungen bezüglich der Verwendung von Raw Types in Java. Diese werden generiert, um Entwickler auf potenzielle Risiken im Zusammenhang mit der Typsicherheit hinzuweisen, wenn Raw- statt Generic Types verwendet werden. Wie Sie Generics nutzen, überprüft der Compiler die Objekttypen in den Collections (wie List und Set), die Rückgabetypen von Methoden und die Parameter. Das geschieht, um sicherzustellen, dass diese mit den deklarierten Generic Types übereinstimmen. Das verhindert gängige Bugs wie ClassCastException zur Laufzeit. Wenn Sie einen Raw Type nutzen, kann der Compiler diese Prüfungen nicht durchführen. Das liegt daran, dass Raw Types nicht den Typ der Objekte spezifizieren, die sie enthalten. Infolgedessen gibt der Compiler Warnmeldungen aus, um darauf aufmerksam zu machen, dass die Type-Safety-Mechanismen der Generics umgangen werden. Beispiel für eine Compiler-Warnung Im Folgenden ein simples Beispiel, das veranschaulicht, wie die Compiler-Warnung aussieht, wenn Raw Types zum Einsatz kommen: List list = new ArrayList(); // Warning: Raw use of parameterized class ‘List’ list.add(“hello”); list.add(1); Wenn Sie diesen Code kompilieren, gibt der Java-Compiler in der Regel eine Meldung aus, wie beispeislweise: Note: SomeFile.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Wenn Sie mit der Flag -Xlint:unchecked kompilieren, erhalten Sie detailliertere Informationen darüber, wo und warum diese Warnmeldung generiert wurde: warning: [unchecked] unchecked call to add(E) as a member of the raw type List list.add(“hello”); ^ where E is a type-variable: E extends Object declared in interface List Wenn Sie sicher sind, dass es keine Risiken birgt, Raw Types in Ihrem Code zu verwenden (oder Sie mit Legacy-Code arbeiten, der sich nicht so einfach für die Nutzung von Generics umgestalten lässt), können Sie @SuppressWarnings(„unchecked“) nutzen, um diese auszublenden. Das sollten Sie mit Bedacht nutzen, schließlich könnten dabei andere, echte Probleme unter den Tisch fallen. Raw Types verwenden – die Folgen Zwar sind Raw Types mit Blick auf die Abwärtskompatibilität nützlich. Allerdings hat das auch ganz wesentliche Nachteile. Insbesondere: geht die Type Safety verloren. erhöhen sich die Wartungskosten. Ein Beispiel für ein Type-Safety-Problem: Wenn Sie List (Raw Type) anstelle des generischen List verwenden, erlaubt es der Compiler, beliebige Objekttypen zur Liste hinzuzufügen – nicht nur Strings. Wenn Sie ein Element aus der Liste abrufen und versuchen, es in einen String umzuwandeln, dieses Element aber tatsächlich von einem anderen Typ ist, kann das in Laufzeitfehlern resultieren. (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox! 

Tutorial: Generics in Java nutzen​ : Lesen Sie, wie Generics in Java optimale Wirkung entfalten.THP Creative | shutterstock.com

Mit Version 5 von Java wurden Generics eingeführt. Sie verbessern die Typsicherheit des Codes und machen ihn leichter lesbar. Das trägt auch dazu bei, Fehler zur Laufzeit wie ClassCastException zu verhindern. Dieser tritt auf, wenn Objekte in inkompatible Typen umgewandelt werden sollen.

Dieses Tutorial beschäftigt sich eingehend mit dem Thema Generics in Java und vermittelt Ihnen:

welchen Mehrwert Generics bringen,

wie Sie diese im Java Collection Framework nutzen,

wie Sie Generic Types in Java konkret einsetzen (inklusive Beispielen), und  

was mit Blick auf Raw Types und Generics zu beachten ist.

Was Generics bringen

Generics werden gängigerweise innerhalb des Java Collection Frameworks genutzt mit:

java.util.List,

java.util.Set und

java.util.Map.

Darüber hinaus sind sie auch in anderen Teilen von Java zu finden, beispielsweise in:

java.lang.Class,

java.lang.Comparable und

java.lang.ThreadLocal.

Bevor Generics eingeführt wurden, mangelte es Java-Code regelmäßig an Type Safety. Hier ein Beispiel für Java-Code im Prä-Generics-Zeitalter:

List integerList = new ArrayList();

integerList.add(1);
integerList.add(2);
integerList.add(3);

for (Object element : integerList) {
Integer num = (Integer) element; // Cast is necessary
System.out.println(num);
}

Mit diesem Code sollen Integer-Objekte in einer Liste gespeichert werden. Dabei können Sie jederzeit weitere Typen hinzufügen, etwa einen String:

integerList.add(“Hello”);

Würden Sie versuchen, den String in einen Integer umzuwandeln, würde dieser Code zur Laufzeit eine ClassCastException verursachen.

Mit Hilfe von Generics lässt sich dieses Problem lösen und der Fehler zur Laufzeit vermeiden. Dazu nutzen wir sie, um die Typen von Objekten zu spezifizieren, die eine Liste enthalten darf. In diesem Fall können wir auf einen Class Cast verzichten, was dazu führt, dass der Code sicherer wird und leichter zu verstehen ist:   

List integerList = new ArrayList();

integerList.add(1);
integerList.add(2);
integerList.add(3);

for (Integer num : integerList) {
System.out.println(num);
}

List bedeutet „eine Liste von Integer-Objekten“. Auf Grundlage dieser Anweisung stellt der Compiler sicher, dass ausschließlich Integer-Objekte zur Liste hinzugefügt werden können.

Generics im Java Collections Framework

Um eine Typprüfung während der Kompilierung zu ermöglichen und die Notwendigkeit einer expliziten Typumwandlung zu beseitigen, sind Generics im Java Collections Framework integriert. Wenn Sie eine Collection mit Generics nutzen, spezifizieren Sie den Typ der Elemente, die erstere enthalten soll. Der Java-Compiler nutzt diese Spezifikation, um sicherzustellen, dass nicht versehentlich ein inkompatibles Objekt in die Collection einfließt. Das reduziert Fehler und macht den Code besser lesbar.

Um zu veranschaulichen, wie Generics im Java Collections Framework angewendet werden, werfen wir im Folgenden einen Blick auf drei Beispiele.

Namenskonventionen für GenericsGeneric Types können Sie in jeder beliebigen Klasse deklarieren und dafür jeden beliebigen Namen verwenden. Vorzugsweise sollten Sie sich dabei aber auf eine Namenskonvention verlassen. In Java bestehen die Namen von Typparametern in der Regel aus einzelnen Großbuchstaben. Dabei steht:E für Element,K für Key,V für Value, undT für Type.Insofern sollten Sie davon absehen, bedeutungslose Benennungen wie „X“, „Y“ oder „Z“ zu verwenden.

List und ArrayList

Im zuletzt angeführten Code-Beispiel haben wir bereits eine einfachere Möglichkeit gesehen, um ArrayList zu nutzen. Dieses Konzept sehen wir uns nun genauer an, indem wir einen Blick darauf werfen, wie das List-Interface deklariert wird:  

public interface List extends SequencedCollection { … }

In diesem Code deklarieren wir unsere generische Variable als „E“. Diese kann durch jeden beliebigen Objekttyp ersetzt werden.

Sehen wir uns nun an, wie die Variable E durch den gewünschten Typ für unsere List ersetzt wird. Im folgenden Code ersetzen wir die Variable durch :

List list = new ArrayList();
list.add(“Java”);
list.add(“Challengers”);
// list.add(1); // This line would cause a compile-time error.

Hier spezifiziert List, dass die Liste lediglich String-Objekte enthalten kann. Eine Integer hinzuzufügen, führt zu einem Kompilierungsfehler, wie Sie in der letzten Code-Zeile sehen.

Set und HashSet

Das Set-Interface ähnelt dem von List:

public interface Set extends Collection { … }

Wir ersetzen zudem durch , so dass wir nur einen Double-Wert in das entsprechende Set einfügen können:

Set doubles = new HashSet();
doubles.add(1.5);
doubles.add(2.5);
// doubles.add(“three”); // Compile-time error

double sum = 0.0;
for (double d : doubles) {
sum += d;
}

Set gewährleistet, dass nur Double-Werte hinzugefügt werden können. Das verhindert Laufzeitfehler, die durch nicht korrektes Casting entstehen können.

Map und HashMap

Wir können so viele generische Typen deklarieren, wie wir möchten. Im folgenden ein Key-Value-Datenstrukturbeispiel in Form einer Map:

public interface Map { … }

Nun ersetzen wir den Key-Type K durch String und den Value-Type V durch Integer:

Map map = new HashMap();
map.put(“Duke”, 30);
map.put(“Juggy”, 25);
// map.put(1, 100); // This line would cause a compile-time error

Dieses Beispiel zeigt eine HashMap, die String-Keys Integer-Values zuordnet. Einen Key vom Typ Integer hinzuzufügen, ist nicht erlaubt und führt zu einem Kompilierungsfehler.

Generic Types in Java nutzen – Beispiele

Im nächsten Schritt sehen wir uns einige Beispiele an, um besser zu durchdringen, wie Generic Types in Java deklariert und verwendet werden.

Generics mit beliebigen Objekten nutzen

Generic Types lassen sich jeder Klasse deklarieren – es muss sich nicht um einen Collection-Typ handeln. Im folgenden Code-Beispiel deklarieren wir den Generic Type E, um jedes Element innerhalb der Box-Klasse zu manipulieren. Zu beachten ist dabei, dass der Generic Type nach dem Klassennamen deklariert wird. Erst dann können wir ihn als Attribut, Konstruktor, Methodenparameter und Methodenrückgabetyp nutzen:

// Define a generic class Box with a generic type parameter E
public class Box {
// Variable to hold an object of type E
private E content;

public Box(E content) { this.content = content; }
public E getContent() { return content; }
public void setContent(E content) { this.content = content; }

public static void main(String[] args) {
// Create a Box to hold an Integer
Box integerBox = new Box(123);
System.out.println(“Integer Box contains: ” + integerBox.getContent());

// Create a Box to hold a String
Box stringBox = new Box(“Hello World”);
stringBox.setContent(“Java Challengers”);
System.out.println(“String Box contains: ” + stringBox.getContent());
}
}

Der Output dieses Beispiels lautet:

Integer Box contains: 123
String Box contains: Java Challengers

Zu beachten ist dabei:

Die Box-Klasse verwendet den Typparameter E als Platzhalter für das Objekt, das die Box enthalten wird. Dadurch lässt sich Box mit jedem Objekttyp verwenden.

Der Konstruktor initialisiert eine neue Instanz der Box-Klasse mit dem bereitgestellten Inhalt. Der E-Typ stellt dabei sicher, dass der Konstruktor jeden Objekttyp akzeptieren kann, der bei der Erstellung der Instanz definiert wurde – und gewährleistet so die Typsicherheit.

getContent gibt den aktuellen Inhalt von Box zurück. Durch die Rückgabe von E wird sichergestellt, dass er dem Generic Type entspricht, der bei der Erstellung der Instanz angegeben wurde –  und der richtige Typ bereitgestellt wird. Casting ist dazu nicht erforderlich.

setContent aktualisiert den Inhalt von Box. Weil E als Parameter verwendet wird, ist sichergestellt, dass nur ein Objekt des richtigen Typs als neuer Inhalt festgelegt werden kann. Das gewährleistet umfassende Type Safety, solange die Instanz genutzt wird.

In der main-Methode werden zwei Box-Objekte erstellt: integerBox enthält eine Integer, stringBox einen String.

Jede Box-Instanz arbeitet mit ihrem spezifischen Datentyp.

Dieses Beispiel veranschaulicht, wie Generics in Java grundlegend implementiert und verwendet werden. Es unterstreicht, wie Objekte beliebigen Typs „type-safe“ erstellt und bearbeitet werden können.

Generics mit unterschiedlichen Datentypen nutzen

Sie können so viele Typen als generisch deklarieren, wie Sie möchten. In der folgenden Pair-Klasse können wir so die generischen Werte hinzufügen:

class Pair {
private K key;
private V value;

public Pair(K key, V value) {
this.key = key;
this.value = value;
}

public K getKey() {
return key;
}

public V getValue() {
return value;
}

public void setKey(K key) {
this.key = key;
}
public void setValue(V value) {
this.value = value;
}
}

public class GenericsDemo {
public static void main(String[] args) {
Pair person = new Pair(“Duke”, 30);

System.out.println(“Name: ” + person.getKey());
System.out.println(“Age: ” + person.getValue());

person.setValue(31);
System.out.println(“Updated Age: ” + person.getValue());
}
}

Dieser Code erzeugt folgenden Output:

Name: Duke
Age: 30
Updated Age: 31

Zu beachten ist dabei:

Die generische Klasse Pair weist zwei Typparameter auf, wodurch sie für jeden Datentyp vielseitig einsetzbar ist.

Konstruktoren und Methoden in der Pair-Klasse verwenden diese Typparameter, was striktes Type Checking ermöglicht.

Ein Pair-Objekt wird erstellt, um einen String (den Namen einer Person) und einen Integer (ihr Alter) zu speichern.

Accessors (getKey und getValue) sowie Mutators (setKey und setValue) manipulieren und rufen die Pair-Daten ab.

Die Pair-Klasse kann verwandte Informationen speichern und managen und ist dabei nicht an bestimmte Datentypen gebunden.

Dieses Beispiel demonstriert, wie Generics zu wiederverwendbaren, typsicheren Komponenten mit unterschiedlichen Datentypen beitragen – und zur Wiederverwendbarkeit und besseren Wartbarkeit von Code.

Generic Types innerhalb einer Methode deklarieren

Sie können Generic Types auch direkt innerhalb einer Methode deklarieren. Das bewerkstelligen Sie, indem Sie den Generic Type vor dem Rückgabetyp der Methodensignatur deklarieren:

public class GenericMethodDemo {

// Declare generic type and print elements with the chosen type
public static void printArray(T[] array) {
for (T element : array) {
System.out.print(element + ” “);
}
System.out.println();
}

public static void main(String[] args) {
// Using the generic method with an Integer array
Integer[] intArray = {1, 2, 3, 4};
printArray(intArray);

// Using the generic method with a String array
String[] stringArray = {“Java”, “Challengers”};
printArray(stringArray);
}
}

Der Output sieht wie folgt aus:

1 2 3 4
Java Challengers

Raw Types vs. Generics

Bei einem Raw Type handelt es sich im Grunde um den Namen einer Generic Class (beziehungsweise eines Generic Interface), jedoch ohne Typargumente. Diese waren vor der Generics-Einführung in Java 5 weit verbreitet. Heutzutage kommen Sie vor allem zum Einsatz, um die Kompatibilität mit Legacy-Code oder die Interoperabilität mit nicht-generischen APIs zu gewährleisten. Es empfiehlt sich also, zu wissen, wie Raw Types im Code zu erkennen und zu verwenden sind.

Ein gängiges Beispiel für den Raw-Type-Einsatz ist, eine List ohne Typparameter zu deklarieren:

List rawList = new ArrayList();

In diesem Beispiel deklariert List rawList eine Liste ohne generischen Typparameter. rawList kann jeden Objekttyp enthalten, einschließlich Integer, String, Double und so weiter. Weil kein Typ spezifiziert ist, wird im Rahmen der Kompilierung nicht überprüft, welche Objekttypen der Liste hinzugefügt werden.

Compiler-Warnung bei Raw Types

Der Java-Compiler sendet Warnmeldungen bezüglich der Verwendung von Raw Types in Java. Diese werden generiert, um Entwickler auf potenzielle Risiken im Zusammenhang mit der Typsicherheit hinzuweisen, wenn Raw- statt Generic Types verwendet werden.

Wie Sie Generics nutzen, überprüft der Compiler die Objekttypen in den Collections (wie List und Set), die Rückgabetypen von Methoden und die Parameter. Das geschieht, um sicherzustellen, dass diese mit den deklarierten Generic Types übereinstimmen. Das verhindert gängige Bugs wie ClassCastException zur Laufzeit.

Wenn Sie einen Raw Type nutzen, kann der Compiler diese Prüfungen nicht durchführen. Das liegt daran, dass Raw Types nicht den Typ der Objekte spezifizieren, die sie enthalten. Infolgedessen gibt der Compiler Warnmeldungen aus, um darauf aufmerksam zu machen, dass die Type-Safety-Mechanismen der Generics umgangen werden.

Beispiel für eine Compiler-Warnung

Im Folgenden ein simples Beispiel, das veranschaulicht, wie die Compiler-Warnung aussieht, wenn Raw Types zum Einsatz kommen:

List list = new ArrayList(); // Warning: Raw use of parameterized class ‘List’
list.add(“hello”);
list.add(1);

Wenn Sie diesen Code kompilieren, gibt der Java-Compiler in der Regel eine Meldung aus, wie beispeislweise:

Note: SomeFile.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Wenn Sie mit der Flag -Xlint:unchecked kompilieren, erhalten Sie detailliertere Informationen darüber, wo und warum diese Warnmeldung generiert wurde:

warning: [unchecked] unchecked call to add(E) as a member of the raw type List
list.add(“hello”);
^

where E is a type-variable:
E extends Object declared in interface List

Wenn Sie sicher sind, dass es keine Risiken birgt, Raw Types in Ihrem Code zu verwenden (oder Sie mit Legacy-Code arbeiten, der sich nicht so einfach für die Nutzung von Generics umgestalten lässt), können Sie @SuppressWarnings(„unchecked“) nutzen, um diese auszublenden. Das sollten Sie mit Bedacht nutzen, schließlich könnten dabei andere, echte Probleme unter den Tisch fallen.

Raw Types verwenden – die Folgen

Zwar sind Raw Types mit Blick auf die Abwärtskompatibilität nützlich. Allerdings hat das auch ganz wesentliche Nachteile. Insbesondere:

geht die Type Safety verloren.

erhöhen sich die Wartungskosten.

Ein Beispiel für ein Type-Safety-Problem: Wenn Sie List (Raw Type) anstelle des generischen List verwenden, erlaubt es der Compiler, beliebige Objekttypen zur Liste hinzuzufügen – nicht nur Strings. Wenn Sie ein Element aus der Liste abrufen und versuchen, es in einen String umzuwandeln, dieses Element aber tatsächlich von einem anderen Typ ist, kann das in Laufzeitfehlern resultieren. (fm)

Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!

Tutorial: Generics in Java nutzen​ Weiterlesen »

Meta will 65 Milliarden in KI-Infrastruktur investieren​

Allgemein

width=”2500″ height=”1406″ sizes=”(max-width: 2500px) 100vw, 2500px”>Meta will in Louisiana ein Rechenzentrum mit 2 GW Leistung bauen. dotshock/Shutterstock.com Um seine KI-Infrastruktur auszubauen und einen „KI-Ingenieur“-Agenten zu entwickeln, will Meta noch in diesem Jahr 60 bis 65 Milliarden Dollar investieren Zudem plant der Konzern, ein neues Rechenzentrum zu bauen. Das sogenannte „Richland Parish Center Data Center“ soll im Nordosten von Louisiana entstehen. Laut einem Facebook-Post von Mark Zuckerberg, CEO von Meta, soll das Rechenzentrum eine Leistung von 2 Gigawatt (GW) haben. Noch in diesem Jahr will man etwa 1 GW Rechenleistung online bringen und dafür mehr als 1,3 Millionen GPUs verbauen. Neues Meta-RZ in Louisiana Die Arbeiten an dem vier Millionen Quadratmeter großen und zehn Milliarden Dollar teuren Rechenzentrum auf einem 2.250 Hektar großen Gelände sollen bis 2030 andauern. Nach seiner Fertigstellung sei es das größte von mehr als 20 Meta-Rechenzentren weltweit, heißt es. In Sachen Stromverbrauch hat sich Meta dazu verpflichtet, mit 100 Prozent sauberer und erneuerbarer Energie zu arbeiten. Zudem will man mehr als 200 Millionen Dollar in die Verbesserung der lokalen Infrastruktur investieren. KI soll Code beisteuern Ferner schreibt Zuckerberg in seinem Facebook-Post, dass Meta auch seine KI-Teams „erheblich“ erweitern werde. Ferner plane man einen KI-Agenten für KI-Ingenieure zu entwickeln. Dieser soll dann Code für die F&E-Bemühungen von Meta beisteuern. Die jetzt veröffentlichen Investitionspläne für 2025 sind eine Steigerung von 50 Prozent gegenüber den Ausgaben des Vorjahres. Und Zuckerberg will in den nächsten Jahren weiter investieren. „Wir haben das Kapital“, so der Meta-Chef. Verglichen mit dem 500 Milliarden Dollar schweren Stargate-Projekt wirken Zuckerbergs Investitionen jedoch eher wie Peanuts. Zumal es sich dort um eine branchenweite Zusammenarbeit handelt, bei der OpenAI, Oracle, SoftBank, MGX, Arm, Nvidia und Microsoft mit im Boot sind. 

Meta will 65 Milliarden in KI-Infrastruktur investieren​ width=”2500″ height=”1406″ sizes=”(max-width: 2500px) 100vw, 2500px”>Meta will in Louisiana ein Rechenzentrum mit 2 GW Leistung bauen.
dotshock/Shutterstock.com

Um seine KI-Infrastruktur auszubauen und einen „KI-Ingenieur“-Agenten zu entwickeln, will Meta noch in diesem Jahr 60 bis 65 Milliarden Dollar investieren Zudem plant der Konzern, ein neues Rechenzentrum zu bauen. Das sogenannte „Richland Parish Center Data Center“ soll im Nordosten von Louisiana entstehen.

Laut einem Facebook-Post von Mark Zuckerberg, CEO von Meta, soll das Rechenzentrum eine Leistung von 2 Gigawatt (GW) haben. Noch in diesem Jahr will man etwa 1 GW Rechenleistung online bringen und dafür mehr als 1,3 Millionen GPUs verbauen.

Neues Meta-RZ in Louisiana

Die Arbeiten an dem vier Millionen Quadratmeter großen und zehn Milliarden Dollar teuren Rechenzentrum auf einem 2.250 Hektar großen Gelände sollen bis 2030 andauern. Nach seiner Fertigstellung sei es das größte von mehr als 20 Meta-Rechenzentren weltweit, heißt es.

In Sachen Stromverbrauch hat sich Meta dazu verpflichtet, mit 100 Prozent sauberer und erneuerbarer Energie zu arbeiten. Zudem will man mehr als 200 Millionen Dollar in die Verbesserung der lokalen Infrastruktur investieren.

KI soll Code beisteuern

Ferner schreibt Zuckerberg in seinem Facebook-Post, dass Meta auch seine KI-Teams „erheblich“ erweitern werde. Ferner plane man einen KI-Agenten für KI-Ingenieure zu entwickeln. Dieser soll dann Code für die F&E-Bemühungen von Meta beisteuern.

Die jetzt veröffentlichen Investitionspläne für 2025 sind eine Steigerung von 50 Prozent gegenüber den Ausgaben des Vorjahres. Und Zuckerberg will in den nächsten Jahren weiter investieren. „Wir haben das Kapital“, so der Meta-Chef.

Verglichen mit dem 500 Milliarden Dollar schweren Stargate-Projekt wirken Zuckerbergs Investitionen jedoch eher wie Peanuts. Zumal es sich dort um eine branchenweite Zusammenarbeit handelt, bei der OpenAI, Oracle, SoftBank, MGX, Arm, Nvidia und Microsoft mit im Boot sind.

Meta will 65 Milliarden in KI-Infrastruktur investieren​ Weiterlesen »

Das sollten Projektmanager 2025 können​

Allgemein

srcset=”https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?quality=50&strip=all 7680w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=300%2C168&quality=50&strip=all 300w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=768%2C432&quality=50&strip=all 768w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1024%2C576&quality=50&strip=all 1024w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1536%2C864&quality=50&strip=all 1536w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=2048%2C1152&quality=50&strip=all 2048w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1240%2C697&quality=50&strip=all 1240w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=150%2C84&quality=50&strip=all 150w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=854%2C480&quality=50&strip=all 854w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=640%2C360&quality=50&strip=all 640w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=444%2C250&quality=50&strip=all 444w” width=”1024″ height=”576″ sizes=”(max-width: 1024px) 100vw, 1024px”>Mit dem Fokus auf bestimmte Projektmanagement-Skills können Freelancer ihre Erfolgsschancen deutlich verbessern. Andrey_Popov/Shutterstock Einer Analyse von freelancermap zufolge weichen die für Projekte ausgeschriebenen Anforderungen und die angebotenen Skills von Freiberuflern häufig voneinander ab. Zwar wird der Begriff „Projektmanagement“ in Ausschreibungen immer an erster Stelle genannt – und wenig überraschend von Freelancern mit entsprechendem Fokus auch gesucht. Bei den zugehörigen Kompetenzen stellt der Betreiber einer Freiberufler-Plattform jedoch eine deutliche Diskrepanz zwischen Angebot und Nachfrage fest. Grundlage waren über 70.000 Freelancer-Profile und 100.000 Projektausschreibungen:  Die Auftraggeber suchen vornehmlich Fähigkeiten in den Bereichen Stakeholder Management, Projektplanung, sowie Qualitätsmanagement. Auch die Softwareentwicklung und Budgetierung sind gefragte Tätigkeiten.  Die Freelancer spezialisieren sich dagegen vor allem auf Beratung, Scrum und Change Management.  Software-Know–how: SAP dominiert  Besser sieht es bei den Skills rund um Software-Tools aus. Laut Untersuchung decken sich hier die angeforderten mit den angebotenen Fähigkeiten. Mit großem Abstand sind SAP-Applikationen am gefragtesten, gefolgt von  Jira,   Confluence und Microsoft Project.   Spezielle Kenntnisse bei Programmiersprachen werden dagegen bei Projekten nur selten angefragt, auch wenn Freelancer diese häufig angeben. Im Vordergrund stehen hier vor allem SQL und Java.   Spezialisierung ist Trumpf   Basierend auf den Ergebnissen der Analyse empfiehlt Thomas Maas, CEO von freelancermap, den Freiberuflern, ihre Marktchancen durch eine gezielte Spezialisierung in stark nachgefragten, aber unterrepräsentierten Bereichen, zu verbessern – beispielsweise Stakeholder Management. „Wer genau hinsieht, wo Auftraggeber händeringend nach Experten suchen und entsprechend sein Angebot ausrichtet, kann sich als Freelancer nicht nur erfolgreich positionieren, sondern auch langfristig eine stabile Auftragslage sichern.“ 

Das sollten Projektmanager 2025 können​ srcset=”https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?quality=50&strip=all 7680w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=300%2C168&quality=50&strip=all 300w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=768%2C432&quality=50&strip=all 768w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1024%2C576&quality=50&strip=all 1024w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1536%2C864&quality=50&strip=all 1536w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=2048%2C1152&quality=50&strip=all 2048w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=1240%2C697&quality=50&strip=all 1240w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=150%2C84&quality=50&strip=all 150w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=854%2C480&quality=50&strip=all 854w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=640%2C360&quality=50&strip=all 640w, https://b2b-contenthub.com/wp-content/uploads/2025/01/shutterstock_2516795871_16.jpg?resize=444%2C250&quality=50&strip=all 444w” width=”1024″ height=”576″ sizes=”(max-width: 1024px) 100vw, 1024px”>Mit dem Fokus auf bestimmte Projektmanagement-Skills können Freelancer ihre Erfolgsschancen deutlich verbessern. Andrey_Popov/Shutterstock

Einer Analyse von freelancermap zufolge weichen die für Projekte ausgeschriebenen Anforderungen und die angebotenen Skills von Freiberuflern häufig voneinander ab. Zwar wird der Begriff „Projektmanagement“ in Ausschreibungen immer an erster Stelle genannt – und wenig überraschend von Freelancern mit entsprechendem Fokus auch gesucht. Bei den zugehörigen Kompetenzen stellt der Betreiber einer Freiberufler-Plattform jedoch eine deutliche Diskrepanz zwischen Angebot und Nachfrage fest. Grundlage waren über 70.000 Freelancer-Profile und 100.000 Projektausschreibungen: 

Die Auftraggeber suchen vornehmlich Fähigkeiten in den Bereichen Stakeholder Management, Projektplanung, sowie Qualitätsmanagement. Auch die Softwareentwicklung und Budgetierung sind gefragte Tätigkeiten. 

Die Freelancer spezialisieren sich dagegen vor allem auf Beratung, Scrum und Change Management. 

Software-Know–how: SAP dominiert 

Besser sieht es bei den Skills rund um Software-Tools aus. Laut Untersuchung decken sich hier die angeforderten mit den angebotenen Fähigkeiten. Mit großem Abstand sind SAP-Applikationen am gefragtesten, gefolgt von 

Jira,  

Confluence und

Microsoft Project.  

Spezielle Kenntnisse bei Programmiersprachen werden dagegen bei Projekten nur selten angefragt, auch wenn Freelancer diese häufig angeben. Im Vordergrund stehen hier vor allem SQL und Java.  

Spezialisierung ist Trumpf  

Basierend auf den Ergebnissen der Analyse empfiehlt Thomas Maas, CEO von freelancermap, den Freiberuflern, ihre Marktchancen durch eine gezielte Spezialisierung in stark nachgefragten, aber unterrepräsentierten Bereichen, zu verbessern – beispielsweise Stakeholder Management. „Wer genau hinsieht, wo Auftraggeber händeringend nach Experten suchen und entsprechend sein Angebot ausrichtet, kann sich als Freelancer nicht nur erfolgreich positionieren, sondern auch langfristig eine stabile Auftragslage sichern.“

Das sollten Projektmanager 2025 können​ Weiterlesen »

Tutorial: File Handling mit serverseitigem JavaScript​

Allgemein

Dieses File-Handling-Tutorial bringt JavaScript-Entwickler weiter.dee karen | shutterstock.com Mit Dateien auf einem Server zu arbeiten, ist für Softwareentwickler Alltag. Dafür bieten serverseitige JavaScript-Plattformen flexible und relativ simple Optionen. In diesem Tutorial erfahren Sie, wie Sie die fs-Bibliothek von JavaScript für die gängigsten File-Handling-Aufgaben einsetzen. Zum Beispiel: Dateien (im asynchronen oder synchronen Modus) lesen, schreiben, aktualisieren und verschieben, Verzeichnisse auflisten, oder Files in Blöcken streamen. (fs) – die Dateisystem-Bibliothek von JavaScript Die fs-Bibliothek ist ein Modul in JavaScript-Plattformen wie Node, Deno oder Bun. Sie müssen diese deshalb nicht über einen Package Manager wie NPM installieren, sondern können die Bibliothek einfach mit Hilfe von Skripten und ES6-Modulen importieren: import fs from ‘fs’; Ein anderer Weg führt über Common.js-Syntax: const fs = require(‘fs’); Darüber hinaus erlauben neuere Node-Versionen auch, die Namespace-Version zu nutzen: const fs = require(‘node:fs’); Sobald fs installiert ist, stehen Ihnen zwei Möglichkeiten zur Verfügung, um mit dem Dateisystem zu interagieren: synchron oder asynchron: Während synchrones File Handling für simpleren Code sorgt, bietet die asynchrone Variante mehr Optimierungsmöglichkeiten auf Plattformebene (weil sie die Execution nicht blockiert). Letztgenannte Option ermöglicht zudem, Callbacks oder Promises einzusetzen. Dafür müssen allerdings auch die entsprechenden Packages installiert sein (‘node:fs/promises’). Dateien erstellen Im ersten Schritt erstellen wir nun eine Datei (File). Unser write-Skript ist dabei write.mjs (das liegt daran, dass Node auf die Modul-Erweiterung .mjs besteht, wenn ES6-Module eingesetzt werden). Das resultierende File ist koan.txt – und enthält den Text einer Kurzgeschichte aus dem Zen-Buddhismus. import fs from ‘node:fs’; const content = `A monk asked Chimon, “Before the lotus blossom has emerged from the water, what is it?” Chimon said, “A lotus blossom.” The monk pursued, “After it has come out of the water, what is it?” Chimon replied, “Lotus leaves.”`; try { fs.writeFileSync(‘koan.txt’, content); console.log(‘Koan file created!’); } catch (error) { console.error(‘Error creating file:’, error); } Für den Fall, dass ein Fehler auftritt, nutzen wir einen try-Block als Wrapper, wenn wir eine Datei schreiben. Besonders einfach macht das die fs.writeFileSync()-Methode. Sie sehen auch die Teile von fs, die mit Destrukturierung importiert wurden. Zum Beispiel: import { writeFileSync } from ‘node:fs’; An dieser Stelle verzichten wir darauf, auf weitere fs-Funktionen einzugehen – etwa Dateieigenschaften und Kodierungen zu definieren. Die Standardeinstellungen sind für unsere Zwecke an dieser Stelle gut geeignet. Im nächsten Schritt werfen wir einen Blick darauf, wie das File asynchron geschrieben wird. Dabei nehmen wir an, dass es sich um dieselbe content-Variable handelt: // writeAsync.js const fs = require(‘fs’); const content = “…”; const filename = “asyncKoan.txt”; fs.writeFile(filename, content, (err) => { if (err) { console.error(“Error writing file:”, err); } else { console.log(`File ‘${filename}’ written successfully!`); } }); In diesem Beispiel haben wir fs mit require von Common.js importiert – die Datei kann also eine simple .js-Extension sein. Dann haben wir einen asynchronen Ansatz mit Callbacks angewandt. Dieser akzeptiert das Argument err – das befüllt wird, wenn ein Fehler auftritt. Dasselbe lässt sich auch mit dem Promise-basierten Ansatz realisieren: // writePromise.js const fs = require(‘node:fs/promises’); const content = “…”; const filename = “promiseKoan.txt”; async function writeFileWithPromise() { try { await fs.writeFile(filename, content); console.log(`File ‘${filename}’ written successfully!`); } catch (err) { console.error(“Error writing file:”, err); } } writeFileWithPromise(); In diesem Beispiel nutzen wir async/await, um das Promise synchron zu verarbeiten. Wir könnten dazu auch die Promise-then/catch-Handler direkt verwenden: // writePromiseDirect.js const fs = require(‘node:fs/promises’); const content = “…”; const filename = “promiseKoan.txt”; fs.writeFile(filename, content) .then(() => console.log(`File ‘${filename}’ written successfully!`)) .catch((err) => console.error(“Error writing file:”, err)); Promises bieten maximale Flexibilität, allerdings auf Kosten einer etwas höheren Komplexität. Files lesen Wenn wir nun unser koan.txt-File mit dem synchronen Ansatz lesen möchten, gehen wir folgendermaßen vor: // readFile.mjs import { readFileSync } from ‘node:fs’; let file = readFileSync(‘test.txt’); console.log(file.toString(‘utf8’)); Wenn wir das File ausführen, erhalten wir: $ node readFile.mjs A monk asked Chimon… An dieser Stelle ist zu beachten, dass die Datei manuell per UTF8 in einen String dekodiert werden muss. Anderenfalls erhalten wir den Raw Buffer. Um dieselbe Aktion asynchron mit Callbacks durchzuführen, nutzen Sie folgenden Code: const fs = require(‘fs’); const filename = ‘koan.txt’; fs.readFile(filename, (err, data) => { if (err) { console.error(‘Error reading file:’, err); } else { console.log(data.toString(‘utf8’)); } }); Dateien aktualisieren Ein File zu aktualisieren, funktioniert mit einer Kombination des bisher Behandelten. Die Datei wird gelesen, der Inhalt verändert und geschrieben. Ein Beispiel: const fs = require(‘fs’); const filename = ‘koan.txt’; fs.readFile(filename, ‘utf8’, (err, data) => { if (err) { console.error(‘Error reading file:’, err); return; } const updatedContent = data.replace(/lotus blossom/g, ‘water lily’); fs.writeFile(filename, updatedContent, (err) => { if (err) { console.error(‘Error writing file:’, err); } else { ‘${filename}’ updated successfully!`); } }); }); Auch in diesem Beispiel verwenden wir den asynchronen Stil mit Callbacks. Dieser ist ganz allgemein vorzuziehen, wenn es darum geht, Dateien zu aktualisieren, weil das verhindert, dass der Event Loop während den Read- und Write-Schritten blockiert wird.   Textdaten-Formate Falls Sie eine Textdatei lesen und in strukturierter Form parsen müssen, können Sie dazu einfach den String benutzen, den Sie aus dem File extrahieren. Handelt es sich dabei beispielsweise um eine JSON-Datei, gehen Sie folgendermaßen vor: let myJson = JSON.parse(data); Dann modifizieren Sie: myJson.albumName = “Kind of Blue”; Und schreiben anschließend die neuen Informationen mit Hilfe von JSON.stringify(myJson). Ein ähnlicher Prozess könnte auch für andere Formate wie YAML, XML und CSV genutzt werden. Das würde allerdings auch eine Parsing-Bibliothek von einem Drittanbieter erfordern – insofern es effektiv ablaufen soll. Files löschen Eine Datei zu löschen, ist ein simpler Prozess. Mit dem synchronen Ansatz (der in der Regel ausreicht), geht das wie folgt: const fs = require(‘node:fs’); const filename = ‘koan.txt’; try { fs.unlinkSync(filename); console.log(`File ‘${filename}’ deleted successfully!`); } catch (err) { console.error(‘Error deleting file:’, err); } Weil fs auf POSIX-ähnlichen Operationen basiert, wird der Löschvorgang der Datei mit „unlinkSync“ bezeichnet. Dabei wird die Verknüpfung der Datei im Dateisystem aufgehoben und so gelöscht. Nicht-Textdateien verarbeiten Dateien im Textformat sind die gängigste Form – allerdings ist JavaScript auch in der Lage, Binärdateien zu verarbeiten. Handelt es sich dabei um Bilder oder Audio-Dateien (oder etwas Exotischeres wie ein proprietäres Speicherformat in Games oder ein Firmware-Update), erfordert das, sich näher mit dem Pufferspeicher zu befassen. Das folgende simple Beispiel soll Ihnen einen Eindruck davon vermitteln, wie das funktioniert. Für unser Beispiel erstellen wir einfach ein Fake-Binary: const fs = require(‘fs’); const filename = ‘binary.bin’; const buffer = Buffer.from([0xDE, 0xAD, 0xBE, 0xEF]); fs.writeFile(filename, buffer, (err) => { if (err) { console.error(‘Error writing file:’, err); return; } console.log(`Binary file ‘${filename}’ written successfully!`); }); Der Output: const fs = require(‘fs’); const filename = ‘binary.bin’; fs.readFile(filename, (err, data) => { if (err) { console.error(‘Error reading file:’, err); return; } console.log(data); // process the Buffer data using Buffer methods (e.g., slice, copy) }); Files streamen Dateien in Blöcken (Chunks) zu streamen, ist eine weitere File-Handling-Facette, die insbesondere für den Umgang mit großen Dateien wichtig ist. Im Folgenden ein konstruiertes Beispiel, um in Streaming Chunks zu schreiben: const fs = require(‘fs’); const filename = ‘large_file.txt’; const chunkSize = 1024 * 1024; // (1) const content = ‘This is some content to be written in chunks.’; // (2) const fileSizeLimit = 5 * 1024 * 1024; // // (3) let writtenBytes = 0; // (4) const writeStream = fs.createWriteStream(filename, { highWaterMark: chunkSize }); // (5) function writeChunk() { // (6) const chunk = content.repeat(Math.ceil(chunkSize / content.length)); // (7) if (writtenBytes + chunk.length fileSizeLimit) { console.error(‘File size limit reached’); writeStream.end(); return; } console.log(`Wrote chunk of size: ${chunk.length}, Total written: ${writtenBytes}`); } } writeStream.on(‘error’, (err) => { // (10) console.error(‘Error writing file:’, err); }); writeStream.on(‘finish’, () => { // (10) console.log(‘Finished writing file’); }); writeChunk(); Streaming erhöht die Performance, wirft aber auch Mehrarbeit auf. Dazu zählt, Blockgrößen zu definieren und auf Events zu reagieren, die darauf basieren. So lässt sich vermeiden, dass zu große Files auf einen Schlag in den Speicher geladen werden. Stattdessen werden die Dateien in kleine Teile zerlegt, von denen jedes einzelne bearbeitet wird. Im Folgenden einige Anmerkungen zu obenstehendem Code-Beispiel (die Zahlen korrespondieren mit den entsprechenden Vermerken am Ende der Code-Zeilen). Wir spezifizieren die Chunk-Größe in Kilobyte an. In diesem Fall handelt es sich um einen 1-MB-Block. Das heißt, es wird jeweils ein MB geschrieben. Fake-Content, um zu schreiben. Wir beschränken die Dateigröße – in diesem Fall auf 5 MB. Diese Variable trackt, wie viele Bytes wir geschrieben haben (damit die 5-MB-Grenze respektiert wird). Wir erstellen das eigentliche writeStream-Objekt. Das highWaterMark-Element gibt an, wie groß die Datenblöcke sind, die akzeptiert werden. Die writeChunk()-Funktion ist rekursiv: Immer, wenn ein Datenblock verarbeitet werden muss, ruft sie sich selbst auf – solange, bis das Limit erreicht ist. In diesem Fall wird die Funktion beendet. Hier wiederholen wir lediglich den Beispieltext, bis 1 MB erreicht ist. Kommen wir zum interessanten Teil. Wenn die Dateigröße nicht überschritten wird, rufen wir writeStream.write(chunk) auf: Wenn die Puffergröße überschritten wird, gibt writeStream.write(chunk) false zurück. Wird der Puffer überstrapaziert, tritt der drain-Event ein. Dieser wird vom ersten Handler verarbeitet, den wir hier mit writeStream.once(‘drain’, writeChunk); definieren. Hierbei handelt es sich um einen rekursiven Callback von writeChunk. Das trackt, wie viel wir geschrieben haben. Wenn wir damit fertig sind zu schreiben, wird der Stream-Writer mit writeStream.end(); beendet. Veranschaulicht, wie Event Handler für error und finish hinzugefügt werden. Und von der Festplatte „zurückzulesen“, können wir eine ähnliche Methode einsetzen: const fs = require(‘fs’); const filename = ‘large_file.txt’; const chunkSize = 1024 * 1024; // 1 MB chunk size again const readStream = fs.createReadStream(filename, { highWaterMark: chunkSize }); let totalBytesRead = 0; readStream.on(‘data’, (chunk) => { totalBytesRead += chunk.length; console.log(`Received chunk of size: ${chunk.length}, Total read: ${totalBytesRead}`); // Other work on chunk }); readStream.on(‘error’, (err) => { console.error(‘Error reading file:’, err); }); readStream.on(‘end’, () => { console.log(‘Finished reading file’); }); (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox! 

Tutorial: File Handling mit serverseitigem JavaScript​ Dieses File-Handling-Tutorial bringt JavaScript-Entwickler weiter.dee karen | shutterstock.com

Mit Dateien auf einem Server zu arbeiten, ist für Softwareentwickler Alltag. Dafür bieten serverseitige JavaScript-Plattformen flexible und relativ simple Optionen. In diesem Tutorial erfahren Sie, wie Sie die fs-Bibliothek von JavaScript für die gängigsten File-Handling-Aufgaben einsetzen. Zum Beispiel:

Dateien (im asynchronen oder synchronen Modus) lesen, schreiben, aktualisieren und verschieben,

Verzeichnisse auflisten, oder

Files in Blöcken streamen.

(fs) – die Dateisystem-Bibliothek von JavaScript

Die fs-Bibliothek ist ein Modul in JavaScript-Plattformen wie Node, Deno oder Bun. Sie müssen diese deshalb nicht über einen Package Manager wie NPM installieren, sondern können die Bibliothek einfach mit Hilfe von Skripten und ES6-Modulen importieren:

import fs from ‘fs’;

Ein anderer Weg führt über Common.js-Syntax:

const fs = require(‘fs’);

Darüber hinaus erlauben neuere Node-Versionen auch, die Namespace-Version zu nutzen:

const fs = require(‘node:fs’);

Sobald fs installiert ist, stehen Ihnen zwei Möglichkeiten zur Verfügung, um mit dem Dateisystem zu interagieren: synchron oder asynchron:

Während synchrones File Handling für simpleren Code sorgt,

bietet die asynchrone Variante mehr Optimierungsmöglichkeiten auf Plattformebene (weil sie die Execution nicht blockiert).

Letztgenannte Option ermöglicht zudem, Callbacks oder Promises einzusetzen. Dafür müssen allerdings auch die entsprechenden Packages installiert sein (‘node:fs/promises’).

Dateien erstellen

Im ersten Schritt erstellen wir nun eine Datei (File). Unser write-Skript ist dabei write.mjs (das liegt daran, dass Node auf die Modul-Erweiterung .mjs besteht, wenn ES6-Module eingesetzt werden). Das resultierende File ist koan.txt – und enthält den Text einer Kurzgeschichte aus dem Zen-Buddhismus.

import fs from ‘node:fs’;

const content = `A monk asked Chimon,
“Before the lotus blossom has
emerged from the water, what
is it?” Chimon said, “A lotus
blossom.” The monk pursued,
“After it has come out of the
water, what is it?” Chimon
replied, “Lotus leaves.”`;

try {
fs.writeFileSync(‘koan.txt’, content);
console.log(‘Koan file created!’);
} catch (error) {
console.error(‘Error creating file:’, error);
}

Für den Fall, dass ein Fehler auftritt, nutzen wir einen try-Block als Wrapper, wenn wir eine Datei schreiben. Besonders einfach macht das die fs.writeFileSync()-Methode.

Sie sehen auch die Teile von fs, die mit Destrukturierung importiert wurden. Zum Beispiel:

import { writeFileSync } from ‘node:fs’;

An dieser Stelle verzichten wir darauf, auf weitere fs-Funktionen einzugehen – etwa Dateieigenschaften und Kodierungen zu definieren. Die Standardeinstellungen sind für unsere Zwecke an dieser Stelle gut geeignet.

Im nächsten Schritt werfen wir einen Blick darauf, wie das File asynchron geschrieben wird. Dabei nehmen wir an, dass es sich um dieselbe content-Variable handelt:

// writeAsync.js
const fs = require(‘fs’);

const content = “…”;
const filename = “asyncKoan.txt”;

fs.writeFile(filename, content, (err) => {
if (err) {
console.error(“Error writing file:”, err);
} else {
console.log(`File ‘${filename}’ written successfully!`);
}
});

In diesem Beispiel haben wir fs mit require von Common.js importiert – die Datei kann also eine simple .js-Extension sein. Dann haben wir einen asynchronen Ansatz mit Callbacks angewandt. Dieser akzeptiert das Argument err – das befüllt wird, wenn ein Fehler auftritt.

Dasselbe lässt sich auch mit dem Promise-basierten Ansatz realisieren:

// writePromise.js
const fs = require(‘node:fs/promises’);

const content = “…”;
const filename = “promiseKoan.txt”;

async function writeFileWithPromise() {
try {
await fs.writeFile(filename, content);
console.log(`File ‘${filename}’ written successfully!`);
} catch (err) {
console.error(“Error writing file:”, err);
}
}

writeFileWithPromise();

In diesem Beispiel nutzen wir async/await, um das Promise synchron zu verarbeiten. Wir könnten dazu auch die Promise-then/catch-Handler direkt verwenden:

// writePromiseDirect.js
const fs = require(‘node:fs/promises’);

const content = “…”;
const filename = “promiseKoan.txt”;

fs.writeFile(filename, content)
.then(() => console.log(`File ‘${filename}’ written successfully!`))
.catch((err) => console.error(“Error writing file:”, err));

Promises bieten maximale Flexibilität, allerdings auf Kosten einer etwas höheren Komplexität.

Files lesen

Wenn wir nun unser koan.txt-File mit dem synchronen Ansatz lesen möchten, gehen wir folgendermaßen vor:

// readFile.mjs
import { readFileSync } from ‘node:fs’;

let file = readFileSync(‘test.txt’);
console.log(file.toString(‘utf8’));

Wenn wir das File ausführen, erhalten wir:

$ node readFile.mjs
A monk asked Chimon…

An dieser Stelle ist zu beachten, dass die Datei manuell per UTF8 in einen String dekodiert werden muss. Anderenfalls erhalten wir den Raw Buffer.

Um dieselbe Aktion asynchron mit Callbacks durchzuführen, nutzen Sie folgenden Code:

const fs = require(‘fs’);

const filename = ‘koan.txt’;

fs.readFile(filename, (err, data) => {
if (err) {
console.error(‘Error reading file:’, err);
} else {
console.log(data.toString(‘utf8’));
}
});

Dateien aktualisieren

Ein File zu aktualisieren, funktioniert mit einer Kombination des bisher Behandelten. Die Datei wird gelesen, der Inhalt verändert und geschrieben. Ein Beispiel:

const fs = require(‘fs’);

const filename = ‘koan.txt’;

fs.readFile(filename, ‘utf8’, (err, data) => {
if (err) {
console.error(‘Error reading file:’, err);
return;
}

const updatedContent = data.replace(/lotus blossom/g, ‘water lily’);

fs.writeFile(filename, updatedContent, (err) => {
if (err) {
console.error(‘Error writing file:’, err);
} else { ‘${filename}’ updated successfully!`);
}
});
});

Auch in diesem Beispiel verwenden wir den asynchronen Stil mit Callbacks. Dieser ist ganz allgemein vorzuziehen, wenn es darum geht, Dateien zu aktualisieren, weil das verhindert, dass der Event Loop während den Read- und Write-Schritten blockiert wird.  

Textdaten-Formate

Falls Sie eine Textdatei lesen und in strukturierter Form parsen müssen, können Sie dazu einfach den String benutzen, den Sie aus dem File extrahieren. Handelt es sich dabei beispielsweise um eine JSON-Datei, gehen Sie folgendermaßen vor:

let myJson = JSON.parse(data);

Dann modifizieren Sie:

myJson.albumName = “Kind of Blue”;

Und schreiben anschließend die neuen Informationen mit Hilfe von JSON.stringify(myJson).

Ein ähnlicher Prozess könnte auch für andere Formate wie YAML, XML und CSV genutzt werden. Das würde allerdings auch eine Parsing-Bibliothek von einem Drittanbieter erfordern – insofern es effektiv ablaufen soll.

Files löschen

Eine Datei zu löschen, ist ein simpler Prozess. Mit dem synchronen Ansatz (der in der Regel ausreicht), geht das wie folgt:

const fs = require(‘node:fs’);

const filename = ‘koan.txt’;

try {
fs.unlinkSync(filename);
console.log(`File ‘${filename}’ deleted successfully!`);
} catch (err) {
console.error(‘Error deleting file:’, err);
}

Weil fs auf POSIX-ähnlichen Operationen basiert, wird der Löschvorgang der Datei mit „unlinkSync“ bezeichnet. Dabei wird die Verknüpfung der Datei im Dateisystem aufgehoben und so gelöscht.

Nicht-Textdateien verarbeiten

Dateien im Textformat sind die gängigste Form – allerdings ist JavaScript auch in der Lage, Binärdateien zu verarbeiten. Handelt es sich dabei um Bilder oder Audio-Dateien (oder etwas Exotischeres wie ein proprietäres Speicherformat in Games oder ein Firmware-Update), erfordert das, sich näher mit dem Pufferspeicher zu befassen.

Das folgende simple Beispiel soll Ihnen einen Eindruck davon vermitteln, wie das funktioniert. Für unser Beispiel erstellen wir einfach ein Fake-Binary:

const fs = require(‘fs’);

const filename = ‘binary.bin’;

const buffer = Buffer.from([0xDE, 0xAD, 0xBE, 0xEF]);

fs.writeFile(filename, buffer, (err) => {
if (err) {
console.error(‘Error writing file:’, err);
return;
}

console.log(`Binary file ‘${filename}’ written successfully!`);
});

Der Output:

const fs = require(‘fs’);

const filename = ‘binary.bin’;

fs.readFile(filename, (err, data) => {
if (err) {
console.error(‘Error reading file:’, err);
return;
}
console.log(data);

// process the Buffer data using Buffer methods (e.g., slice, copy)
});

Files streamen

Dateien in Blöcken (Chunks) zu streamen, ist eine weitere File-Handling-Facette, die insbesondere für den Umgang mit großen Dateien wichtig ist. Im Folgenden ein konstruiertes Beispiel, um in Streaming Chunks zu schreiben:

const fs = require(‘fs’);

const filename = ‘large_file.txt’;
const chunkSize = 1024 * 1024; // (1)
const content = ‘This is some content to be written in chunks.’; // (2)
const fileSizeLimit = 5 * 1024 * 1024; // // (3)

let writtenBytes = 0; // (4)

const writeStream = fs.createWriteStream(filename, { highWaterMark: chunkSize }); // (5)

function writeChunk() { // (6)
const chunk = content.repeat(Math.ceil(chunkSize / content.length)); // (7)

if (writtenBytes + chunk.length fileSizeLimit) {
console.error(‘File size limit reached’);
writeStream.end();
return;
}
console.log(`Wrote chunk of size: ${chunk.length}, Total written: ${writtenBytes}`);
}
}

writeStream.on(‘error’, (err) => { // (10)
console.error(‘Error writing file:’, err);
});

writeStream.on(‘finish’, () => { // (10)
console.log(‘Finished writing file’);
});

writeChunk();

Streaming erhöht die Performance, wirft aber auch Mehrarbeit auf. Dazu zählt, Blockgrößen zu definieren und auf Events zu reagieren, die darauf basieren. So lässt sich vermeiden, dass zu große Files auf einen Schlag in den Speicher geladen werden. Stattdessen werden die Dateien in kleine Teile zerlegt, von denen jedes einzelne bearbeitet wird. Im Folgenden einige Anmerkungen zu obenstehendem Code-Beispiel (die Zahlen korrespondieren mit den entsprechenden Vermerken am Ende der Code-Zeilen).

Wir spezifizieren die Chunk-Größe in Kilobyte an. In diesem Fall handelt es sich um einen 1-MB-Block. Das heißt, es wird jeweils ein MB geschrieben.

Fake-Content, um zu schreiben.

Wir beschränken die Dateigröße – in diesem Fall auf 5 MB.

Diese Variable trackt, wie viele Bytes wir geschrieben haben (damit die 5-MB-Grenze respektiert wird).

Wir erstellen das eigentliche writeStream-Objekt. Das highWaterMark-Element gibt an, wie groß die Datenblöcke sind, die akzeptiert werden.

Die writeChunk()-Funktion ist rekursiv: Immer, wenn ein Datenblock verarbeitet werden muss, ruft sie sich selbst auf – solange, bis das Limit erreicht ist. In diesem Fall wird die Funktion beendet.

Hier wiederholen wir lediglich den Beispieltext, bis 1 MB erreicht ist.

Kommen wir zum interessanten Teil. Wenn die Dateigröße nicht überschritten wird, rufen wir writeStream.write(chunk) auf: Wenn die Puffergröße überschritten wird, gibt writeStream.write(chunk) false zurück. Wird der Puffer überstrapaziert, tritt der drain-Event ein. Dieser wird vom ersten Handler verarbeitet, den wir hier mit writeStream.once(‘drain’, writeChunk); definieren. Hierbei handelt es sich um einen rekursiven Callback von writeChunk.

Das trackt, wie viel wir geschrieben haben.

Wenn wir damit fertig sind zu schreiben, wird der Stream-Writer mit writeStream.end(); beendet.

Veranschaulicht, wie Event Handler für error und finish hinzugefügt werden.

Und von der Festplatte „zurückzulesen“, können wir eine ähnliche Methode einsetzen:

const fs = require(‘fs’);

const filename = ‘large_file.txt’;
const chunkSize = 1024 * 1024; // 1 MB chunk size again

const readStream = fs.createReadStream(filename, { highWaterMark: chunkSize });

let totalBytesRead = 0;

readStream.on(‘data’, (chunk) => {
totalBytesRead += chunk.length;
console.log(`Received chunk of size: ${chunk.length}, Total read: ${totalBytesRead}`);
// Other work on chunk
});

readStream.on(‘error’, (err) => {
console.error(‘Error reading file:’, err);
});

readStream.on(‘end’, () => {
console.log(‘Finished reading file’);
});

(fm)

Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!

Tutorial: File Handling mit serverseitigem JavaScript​ Weiterlesen »

LEP 2025: Jetzt bewerben und IT-Nachwuchs digital fit machen​

Allgemein

IDG Nie war es wichtiger, die eigene IT-Mannschaft fit zu machen für die Herausforderungen der digitalen Transformation. Das sind schließlich nicht wenige: Die IT-Budgets stehen in ökonomisch schwierigen und unsicheren Zeiten zunehmend unter Druck – gleichzeitig wachsen die Ansprüche des Managements. CIOs und ihre IT-Abteilungen sind gefordert, Prozesse effizienter und resilienter zu machen, ja sogar ganz neue Geschäftsmodelle mit zu entwickeln und umzusetzen. Die IT sitzt also an den entscheidenden Schalthebeln für den digitalen Wandel in den deutschen Unternehmen. Um die Weichen richtig zu stellen, braucht es jedoch die passenden Skills. Genau dafür bieten CIO gemeinsam mit der WHU-Otto Beisheim School of Management mit dem Leadership Excellence Program (LEP) ein spezielles Weiterbildungsprogramm für Führungskräfte in den Bereichen IT und Digitalisierung an. Das Klassenziel ist klar: Die digitalen Fähigkeiten und Führungskompetenzen für die Transformation so weiterzuentwickeln und zu verbessern, um den Erfolg Ihres Unternehmen auch in Zukunft langfristig und nachhaltig zu sichern und zu stärken. Konkrete Tipps für mehr Innovation Dazu bietet das LEP eine einmalige Chance: Bewerben Sie sich jetzt mit ihrem Nachwuchs für einen Platz im diesjährigen Kurs, der vom 24. bis 28 November 2025 im Campus der WHU in Düsseldorf stattfindet. Angemeldet sind bereits unter anderem IT-Executives von Schenker, Stada und dem TÜV Süd. Profitieren Sie außerdem bis zum 31. Januar vom Frühbucherrabatt und sparen Sie 500 Euro – 3950 statt regulär 4450 Euro! Hier finden Sie mehr Infos zum Leadership Excellence Program​​ Mit dem LEP verbessern Sie die Kompetenzen ihres IT-Nachwuchs. Knüpfen Sie wertvolle Kontakte mit Führungskräften aus anderen Unternehmen und Branchen und bauen Sie so ihr persönliches professionelles Netzwerk aus. Werden Sie Teil des bereits über 220 Mitglieder zählenden LEP-Alumni-Netzwerks und profitieren Sie von einem regelmäßigen Austausch. Leadership Executive Program: Erfolgreich netzwerken im digitalen Zeitalter​ “Dieses Programm setzt sich von anderen ab”, sagt Leonora Beifuß, Head of IT Process & Project Management bei der Maingau Energie GmbH und LEP-Teilnehmerin. “Ich nehme hier wichtige Thesen für meine Zukunft mit.” Christian Lang, Vice President Data & Analytics and Western Europe, Stada, hebt als Highlight hervor, dass LEP konkretisiert, wie man Innovation ins Unternehmen bringt. “Ein Executive Leadership Programm auf Top Niveau für Führungskräfte in einer digitalen, sich wandelnden Welt”, bringt es Patrick Bernardi, Global Head of IT-Strategy, Digitalization & Innovation bei Siemens Financial Services, auf den Punkt “Tolle Impulse und Praktiken für mehr Nachhaltigkeit in der Führung.” Die Klassenfahrt geht weiter Und das bereits im 14. Jahrgang. “Ich freue mich sehr, dass wir mit dem LEP ein so einzigartiges Weiterbildungsprogramm für IT-Manager etabliert haben”, kommentiert Mirja Wagner als Programmverantwortliche von CIO den diesjährigen Start. “2024 hatten wir den größten Jahrgang jemals, das LEP-Alumni-Netzwerk wächst! Ich freue mich auf alles, was noch kommt – die Klassenfahrt geht weiter.” Strategische Innovation mit Lego. Dozent Dries Faems verband seine Themen und Lerneinheiten 2024 spielerisch in gemeinschaftliches Lego-Bauen.Foundry / IDG Machen Sie also mit und bewerben Sie sich beim diesjährigen Leadership Excellence Program. Das Programm richtet sich ausschließlich an CIOs und IT-Managerinnen und -Manager aus Anwenderunternehmen. Nach erfolgreichem Abschluss des Programms erhalten Sie ein WHU Executive Education Certificate. Alle weiteren Information zu Programm und Anmeldung bekommen Sie bei Mirja Wagner (mirja.wagner@foundryco.com) und auf der Website des LEP: https://www.leadership-excellence-program.de/ 

LEP 2025: Jetzt bewerben und IT-Nachwuchs digital fit machen​ IDG

Nie war es wichtiger, die eigene IT-Mannschaft fit zu machen für die Herausforderungen der digitalen Transformation. Das sind schließlich nicht wenige: Die IT-Budgets stehen in ökonomisch schwierigen und unsicheren Zeiten zunehmend unter Druck – gleichzeitig wachsen die Ansprüche des Managements. CIOs und ihre IT-Abteilungen sind gefordert, Prozesse effizienter und resilienter zu machen, ja sogar ganz neue Geschäftsmodelle mit zu entwickeln und umzusetzen.

Die IT sitzt also an den entscheidenden Schalthebeln für den digitalen Wandel in den deutschen Unternehmen. Um die Weichen richtig zu stellen, braucht es jedoch die passenden Skills. Genau dafür bieten CIO gemeinsam mit der WHU-Otto Beisheim School of Management mit dem Leadership Excellence Program (LEP) ein spezielles Weiterbildungsprogramm für Führungskräfte in den Bereichen IT und Digitalisierung an. Das Klassenziel ist klar: Die digitalen Fähigkeiten und Führungskompetenzen für die Transformation so weiterzuentwickeln und zu verbessern, um den Erfolg Ihres Unternehmen auch in Zukunft langfristig und nachhaltig zu sichern und zu stärken.

Konkrete Tipps für mehr Innovation

Dazu bietet das LEP eine einmalige Chance: Bewerben Sie sich jetzt mit ihrem Nachwuchs für einen Platz im diesjährigen Kurs, der vom 24. bis 28 November 2025 im Campus der WHU in Düsseldorf stattfindet. Angemeldet sind bereits unter anderem IT-Executives von Schenker, Stada und dem TÜV Süd. Profitieren Sie außerdem bis zum 31. Januar vom Frühbucherrabatt und sparen Sie 500 Euro – 3950 statt regulär 4450 Euro!

Hier finden Sie mehr Infos zum Leadership Excellence Program​​

Mit dem LEP verbessern Sie die Kompetenzen ihres IT-Nachwuchs. Knüpfen Sie wertvolle Kontakte mit Führungskräften aus anderen Unternehmen und Branchen und bauen Sie so ihr persönliches professionelles Netzwerk aus. Werden Sie Teil des bereits über 220 Mitglieder zählenden LEP-Alumni-Netzwerks und profitieren Sie von einem regelmäßigen Austausch.

Leadership Executive Program: Erfolgreich netzwerken im digitalen Zeitalter​

“Dieses Programm setzt sich von anderen ab”, sagt Leonora Beifuß, Head of IT Process & Project Management bei der Maingau Energie GmbH und LEP-Teilnehmerin. “Ich nehme hier wichtige Thesen für meine Zukunft mit.” Christian Lang, Vice President Data & Analytics and Western Europe, Stada, hebt als Highlight hervor, dass LEP konkretisiert, wie man Innovation ins Unternehmen bringt. “Ein Executive Leadership Programm auf Top Niveau für Führungskräfte in einer digitalen, sich wandelnden Welt”, bringt es Patrick Bernardi, Global Head of IT-Strategy, Digitalization & Innovation bei Siemens Financial Services, auf den Punkt “Tolle Impulse und Praktiken für mehr Nachhaltigkeit in der Führung.”

Die Klassenfahrt geht weiter

Und das bereits im 14. Jahrgang. “Ich freue mich sehr, dass wir mit dem LEP ein so einzigartiges Weiterbildungsprogramm für IT-Manager etabliert haben”, kommentiert Mirja Wagner als Programmverantwortliche von CIO den diesjährigen Start. “2024 hatten wir den größten Jahrgang jemals, das LEP-Alumni-Netzwerk wächst! Ich freue mich auf alles, was noch kommt – die Klassenfahrt geht weiter.”

Strategische Innovation mit Lego. Dozent Dries Faems verband seine Themen und Lerneinheiten 2024 spielerisch in gemeinschaftliches Lego-Bauen.Foundry / IDG

Machen Sie also mit und bewerben Sie sich beim diesjährigen Leadership Excellence Program. Das Programm richtet sich ausschließlich an CIOs und IT-Managerinnen und -Manager aus Anwenderunternehmen. Nach erfolgreichem Abschluss des Programms erhalten Sie ein WHU Executive Education Certificate.

Alle weiteren Information zu Programm und Anmeldung bekommen Sie bei Mirja Wagner (mirja.wagner@foundryco.com) und auf der Website des LEP: https://www.leadership-excellence-program.de/

LEP 2025: Jetzt bewerben und IT-Nachwuchs digital fit machen​ Weiterlesen »

Warum Arbeitgeber internes Vernetzen fördern sollten​

Allgemein

srcset=”https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?quality=50&strip=all 7480w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=300%2C168&quality=50&strip=all 300w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=768%2C432&quality=50&strip=all 768w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1024%2C576&quality=50&strip=all 1024w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1536%2C864&quality=50&strip=all 1536w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=2048%2C1152&quality=50&strip=all 2048w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1240%2C697&quality=50&strip=all 1240w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=150%2C84&quality=50&strip=all 150w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=854%2C480&quality=50&strip=all 854w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=640%2C360&quality=50&strip=all 640w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=444%2C250&quality=50&strip=all 444w” width=”1024″ height=”576″ sizes=”(max-width: 1024px) 100vw, 1024px”>Arbeitgeber haben viele Möglichkeiten, steuernd auf die Netzwerkbildung von Mitarbeitenden einzuwirken und die zwischenmenschliche Kommunikation auf vielen Ebenen zu erleichtern.NicoElNino – Shutterstock 2160544605 Der Start in eine neue berufliche Tätigkeit ist immer mit Unsicherheiten verbunden. Gerade für Berufseinsteiger ist der Beginn in einem unbekannten Umfeld herausfordernd: neue Themen und Technologien, interne Prozesse und insbesondere eine Vielzahl neuer Menschen – verbunden mit der Integration in bestehende soziale Strukturen. Und oftmals starten neue Kolleginnen und Kollegen gleichzeitig in unterschiedlichen Rollen und an verschiedenen Standorten.   Die erste Zeit sollte dabei für alle gleich sein – unabhängig vom Erfahrungshintergrund. Beim SAP-Dienstleister abat beispielsweise kommen am Anfang eines jeden Monats alle neuen Kolleginnen und Kollegen im Rahmen des einwöchigen new@abat am Standort Bremen zusammen. Das Ziel: Möglichkeiten der Begegnung schaffen, die Unternehmenskultur kennenlernen sowie interne Prozesse verstehen und ein Netzwerk aufbauen.   Die Einführung in ein neues Unternehmen sollte dabei von vielen verschiedenen Informationen aus unterschiedlichen Teams leben. Darum bringen sich optimalerweise auch Vorstand oder Geschäftsleitung in dieser Woche ein, fungieren als Ansprechpartner und unterstützen beim Ankommen.  Denn ein gelungener Start in den ersten Wochen, zusammen mit einem starken Netzwerk, bilden das Fundament für eine langfristige Beschäftigung und einen hohen Grad an Zufriedenheit und Bindung. Dabei können Netzwerke nicht vorgegeben werden, einmal entwickelt schaffen sie aber Möglichkeiten der Begegnung und einen Rahmen, in dem sich die Menschen kennenlernen und eine Verbindung aufbauen können.   Dementsprechend hilft es auch, vielfältige Angebote zu schaffen, die gerne genutzt werden können, aber nicht müssen. Und bei der Gestaltung ihrer täglichen Arbeit sollten die Mitarbeitenden in Abstimmung mit Kunden und Projektteam weitgehend frei sein. Beispielsweise in der Frage, welche Aufgaben im Büro oder im Home-Office erledigt werden.     Möglichkeiten zur Begegnung schaffen Es gibt viele Möglichkeiten, die Netzwerkbildung von Mitarbeitenden zu unterstützen und zu erleichtern. Erfahrungsgemäß funktioniert allerdings kein One-Size-Fits-All-Ansatz. Für ein effizientes Onboarding haben sich indes vier Kernelemente bewährt:   – Kennenlernen aller Teilnehmenden in entspannter Atmosphäre, unterstützt durch digitale Kollaborationstools. Dabei erstellen beispielsweise alle einen persönlichen Steckbrief mit einer Kurzvorstellung, da es in kleinen Runden doch mal etwas „stocken“ kann.  – Gemeinsames Mittag- und Abendessen, an dem immer wieder verschiedene erfahrene Kollegen aus dem Unternehmen dabei sind.  – Erstellen eines Vorstellungsvideos in Gruppen für interne Zwecke, etwa als Kurzvorstellung für das Intranet.  – Hybride Vorstellungsrunde vor Ort und remote, mit anschließenden Gesprächen als „Türöffner“.  Die verschiedenen Elemente helfen, mögliche Anknüpfungspunkte zu schaffen und die „Hürde“ für das Vernetzen und Kennenlernen möglichst niedrig zu halten. Sie leben auch von der aktiven Teilnahme aller Beschäftigten – deshalb eine hybride Vorstellungsrunde, an der alle Mitarbeitenden teilnehmen können – und das jedes Mal.     Fachlichen und überfachlichen Austausch ermöglichen Allen neuen Mitarbeitenden sollte der Arbeitgeber mindestens einen erfahrenen Kollegen als „Buddy“ zur Seite stellen. Diese angepasste Form eines Mentoring-Programmes verfolgt zwei Ziele. Gerade zu Beginn stehen die Buddys für jegliche Art von Fragen zur Verfügung und helfen, die neuen Kollegen in Kontakt zu bringen und in das soziale Umfeld zu integrieren.  Im Laufe der Zeit werden die fachlichen Themen wichtiger, sodass die Buddys dann als Coach fungieren und zum Beispiel einen individuellen Lernpfad entwickeln und bei den ersten Kundenterminen zur Seite stehen. Viele Kollegen werden durch diese Art des Mentoring zudem nach mehreren Jahren noch im engen Austausch mit ihren Buddys stehen, auch wenn sich das „Match“ aufgrund des fachlichen Schwerpunktes oder des Projektes in der Zwischenzeit verändert haben sollte.    Aufgrund von Projektgeschäften gibt es häufig fachliche Teams und Projektteams, die allen Mitarbeitenden offenstehen. Die Teams organisieren sich zumeist eigenverantwortlich und sollten daher Team-Meetings, regelmäßigen Austausch oder auch gemeinsame Aktivitäten veranstalten. Denn das hilft den Neuen bei der projekt- und fachübergreifenden Vernetzung.     Gemeinsam zum Ziel Im Bereich der Weiterbildung helfen umfangreiche und offene Angebote, damit sie die Mitarbeitenden gerne in Anspruch nehmen. Die Trainingsformate sollten dabei immer auch eine gemeinsame Aktivität zum Teambuilding und Vernetzen beinhalten. Denn das Lernen macht mehr Spaß, wenn man gemeinsam auf Lernziele hinarbeitet. Um den Lernprozess zu strukturieren, Orientierung zu geben und bestmöglich unterstützen zu können, sollte der Arbeitgeber verschiedene Lerngruppen anbieten.   Dieses Konzept hat sich gerade für Berufseinsteiger bewährt, die zum Beispiel gemeinsam die Grundlagen der Software-Entwicklung erlernen möchten oder auf eine Zertifizierung hinarbeiten. Durch die intensive Zusammenarbeit und überschneidende persönliche Lernziele entsteht unter den Gruppenmitgliedern eine starke Bindung, die häufig von langer Dauer ist und auch im weiteren Berufsleben wertvoll sein wird.    Zusammen Erfolge feiern Nichts verbindet mehr als gemeinsam Erfolge zu erleben und diese auch entsprechend zu feiern. Als übergreifenden Rahmen bieten Teamevents eine geeignete Kulisse, zu der alle Mitarbeitenden und bei einigen Events auch die Partner eingeladen sind. Auch die Projekt- und fachlichen Teams sollten den Freiraum erhalten, selbstorganisiert und eigenverantwortlich zusammen zu kommen – wie etwa nach einem erfolgreichen Projektabschluss.   Dazu eignet sich beispielsweise ein lockeres Grillen am oder in der Nähe des Unternehmensstandortes – eine gute Gelegenheit, sich nicht nur fachlich auszutauschen, sondern auch eine persönliche Gesprächsebene zu finden. Denn wenn man Gespräche führt, findet sich eventuell eine gemeinsame Geschichte, die einander näherbringt und zu einem erfolgreichen Team zusammenschweißt.  

Warum Arbeitgeber internes Vernetzen fördern sollten​ srcset=”https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?quality=50&strip=all 7480w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=300%2C168&quality=50&strip=all 300w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=768%2C432&quality=50&strip=all 768w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1024%2C576&quality=50&strip=all 1024w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1536%2C864&quality=50&strip=all 1536w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=2048%2C1152&quality=50&strip=all 2048w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=1240%2C697&quality=50&strip=all 1240w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=150%2C84&quality=50&strip=all 150w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=854%2C480&quality=50&strip=all 854w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=640%2C360&quality=50&strip=all 640w, https://b2b-contenthub.com/wp-content/uploads/2025/01/Vernetzen-shutterstock_2160544605.jpg?resize=444%2C250&quality=50&strip=all 444w” width=”1024″ height=”576″ sizes=”(max-width: 1024px) 100vw, 1024px”>Arbeitgeber haben viele Möglichkeiten, steuernd auf die Netzwerkbildung von Mitarbeitenden einzuwirken und die zwischenmenschliche Kommunikation auf vielen Ebenen zu erleichtern.NicoElNino – Shutterstock 2160544605

Der Start in eine neue berufliche Tätigkeit ist immer mit Unsicherheiten verbunden. Gerade für Berufseinsteiger ist der Beginn in einem unbekannten Umfeld herausfordernd: neue Themen und Technologien, interne Prozesse und insbesondere eine Vielzahl neuer Menschen – verbunden mit der Integration in bestehende soziale Strukturen. Und oftmals starten neue Kolleginnen und Kollegen gleichzeitig in unterschiedlichen Rollen und an verschiedenen Standorten.  

Die erste Zeit sollte dabei für alle gleich sein – unabhängig vom Erfahrungshintergrund. Beim SAP-Dienstleister abat beispielsweise kommen am Anfang eines jeden Monats alle neuen Kolleginnen und Kollegen im Rahmen des einwöchigen new@abat am Standort Bremen zusammen. Das Ziel: Möglichkeiten der Begegnung schaffen, die Unternehmenskultur kennenlernen sowie interne Prozesse verstehen und ein Netzwerk aufbauen.  

Die Einführung in ein neues Unternehmen sollte dabei von vielen verschiedenen Informationen aus unterschiedlichen Teams leben. Darum bringen sich optimalerweise auch Vorstand oder Geschäftsleitung in dieser Woche ein, fungieren als Ansprechpartner und unterstützen beim Ankommen. 

Denn ein gelungener Start in den ersten Wochen, zusammen mit einem starken Netzwerk, bilden das Fundament für eine langfristige Beschäftigung und einen hohen Grad an Zufriedenheit und Bindung. Dabei können Netzwerke nicht vorgegeben werden, einmal entwickelt schaffen sie aber Möglichkeiten der Begegnung und einen Rahmen, in dem sich die Menschen kennenlernen und eine Verbindung aufbauen können.  

Dementsprechend hilft es auch, vielfältige Angebote zu schaffen, die gerne genutzt werden können, aber nicht müssen. Und bei der Gestaltung ihrer täglichen Arbeit sollten die Mitarbeitenden in Abstimmung mit Kunden und Projektteam weitgehend frei sein. Beispielsweise in der Frage, welche Aufgaben im Büro oder im Home-Office erledigt werden.  

 

Möglichkeiten zur Begegnung schaffen

Es gibt viele Möglichkeiten, die Netzwerkbildung von Mitarbeitenden zu unterstützen und zu erleichtern. Erfahrungsgemäß funktioniert allerdings kein One-Size-Fits-All-Ansatz. Für ein effizientes Onboarding haben sich indes vier Kernelemente bewährt:  

– Kennenlernen aller Teilnehmenden in entspannter Atmosphäre, unterstützt durch digitale Kollaborationstools. Dabei erstellen beispielsweise alle einen persönlichen Steckbrief mit einer Kurzvorstellung, da es in kleinen Runden doch mal etwas „stocken“ kann. 

– Gemeinsames Mittag- und Abendessen, an dem immer wieder verschiedene erfahrene Kollegen aus dem Unternehmen dabei sind. 

– Erstellen eines Vorstellungsvideos in Gruppen für interne Zwecke, etwa als Kurzvorstellung für das Intranet. 

– Hybride Vorstellungsrunde vor Ort und remote, mit anschließenden Gesprächen als „Türöffner“. 

Die verschiedenen Elemente helfen, mögliche Anknüpfungspunkte zu schaffen und die „Hürde“ für das Vernetzen und Kennenlernen möglichst niedrig zu halten. Sie leben auch von der aktiven Teilnahme aller Beschäftigten – deshalb eine hybride Vorstellungsrunde, an der alle Mitarbeitenden teilnehmen können – und das jedes Mal.  

 

Fachlichen und überfachlichen Austausch ermöglichen

Allen neuen Mitarbeitenden sollte der Arbeitgeber mindestens einen erfahrenen Kollegen als „Buddy“ zur Seite stellen. Diese angepasste Form eines Mentoring-Programmes verfolgt zwei Ziele. Gerade zu Beginn stehen die Buddys für jegliche Art von Fragen zur Verfügung und helfen, die neuen Kollegen in Kontakt zu bringen und in das soziale Umfeld zu integrieren. 

Im Laufe der Zeit werden die fachlichen Themen wichtiger, sodass die Buddys dann als Coach fungieren und zum Beispiel einen individuellen Lernpfad entwickeln und bei den ersten Kundenterminen zur Seite stehen. Viele Kollegen werden durch diese Art des Mentoring zudem nach mehreren Jahren noch im engen Austausch mit ihren Buddys stehen, auch wenn sich das „Match“ aufgrund des fachlichen Schwerpunktes oder des Projektes in der Zwischenzeit verändert haben sollte.   

Aufgrund von Projektgeschäften gibt es häufig fachliche Teams und Projektteams, die allen Mitarbeitenden offenstehen. Die Teams organisieren sich zumeist eigenverantwortlich und sollten daher Team-Meetings, regelmäßigen Austausch oder auch gemeinsame Aktivitäten veranstalten. Denn das hilft den Neuen bei der projekt- und fachübergreifenden Vernetzung.  

 

Gemeinsam zum Ziel

Im Bereich der Weiterbildung helfen umfangreiche und offene Angebote, damit sie die Mitarbeitenden gerne in Anspruch nehmen. Die Trainingsformate sollten dabei immer auch eine gemeinsame Aktivität zum Teambuilding und Vernetzen beinhalten. Denn das Lernen macht mehr Spaß, wenn man gemeinsam auf Lernziele hinarbeitet. Um den Lernprozess zu strukturieren, Orientierung zu geben und bestmöglich unterstützen zu können, sollte der Arbeitgeber verschiedene Lerngruppen anbieten.  

Dieses Konzept hat sich gerade für Berufseinsteiger bewährt, die zum Beispiel gemeinsam die Grundlagen der Software-Entwicklung erlernen möchten oder auf eine Zertifizierung hinarbeiten. Durch die intensive Zusammenarbeit und überschneidende persönliche Lernziele entsteht unter den Gruppenmitgliedern eine starke Bindung, die häufig von langer Dauer ist und auch im weiteren Berufsleben wertvoll sein wird. 

 

Zusammen Erfolge feiern

Nichts verbindet mehr als gemeinsam Erfolge zu erleben und diese auch entsprechend zu feiern. Als übergreifenden Rahmen bieten Teamevents eine geeignete Kulisse, zu der alle Mitarbeitenden und bei einigen Events auch die Partner eingeladen sind. Auch die Projekt- und fachlichen Teams sollten den Freiraum erhalten, selbstorganisiert und eigenverantwortlich zusammen zu kommen – wie etwa nach einem erfolgreichen Projektabschluss.  

Dazu eignet sich beispielsweise ein lockeres Grillen am oder in der Nähe des Unternehmensstandortes – eine gute Gelegenheit, sich nicht nur fachlich auszutauschen, sondern auch eine persönliche Gesprächsebene zu finden. Denn wenn man Gespräche führt, findet sich eventuell eine gemeinsame Geschichte, die einander näherbringt und zu einem erfolgreichen Team zusammenschweißt. 

Warum Arbeitgeber internes Vernetzen fördern sollten​ Weiterlesen »

Nach oben scrollen
×