Computerhaus Quickborn

Allgemein

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 »

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 »

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 »

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 »

OpenAI: KI-Agent Operator erledigt Web-Aufgaben​

Allgemein

OpenAI präsentiert Operator: Ein KI-Agent, der Webseiten-Aufgaben automatisiert! Im Gegensatz zu bisherigen KI-Tools erledigt Operator selbstständig Aufgaben wie Formulare ausfüllen und online bestellen. Basierend auf GPT-4 und Reinforcement Learning interagiert er direkt mit grafischen Benutzeroberflächen (GUIs). Eine Research-Preview für OpenAI Pro-Nutzer in den USA läutet eine neue Ära der KI-Automatisierung ein.

OpenAI: KI-Agent Operator erledigt Web-Aufgaben​ Weiterlesen »

DeepSeek AI – Chinas KI-Geheimwaffe?​

Allgemein

Chinas KI-Startup DeepSeek revolutioniert das Feld mit DeepSeek-R1, einem kosteneffizienten, leistungsstarken Large Language Model. Es übertrifft westliche Konkurrenten und unterstreicht Chinas wachsende Innovationskraft trotz Chip-Beschränkungen. DeepSeeks Erfolg spiegelt Chinas strategische KI-Ambitionen wider, die durch massive Investitionen und ein starkes Ökosystem unterstützt werden.

DeepSeek AI – Chinas KI-Geheimwaffe?​ Weiterlesen »

Nach oben scrollen
×