Die Corona-Pandemie befeuert die Digitalisierung auch und gerade im Bildungswesen. Basierend auf dem Medienkompetenzrahmen NRW haben viele Kommunen Medienentwicklungspläne (MEP) erstellen lassen, auf deren Grundlage die IT-Ausstattung von Schulen geplant wird, so auch die Stadt Kempen.

In diesen MEP werden neben Ausstattungskonzept und Infrastruktur auch Wartung und Betrieb thematisiert. Der 1st Level Support wird dabei i. d. R. bei der Schule angesiedelt, der 2nd Level Support beim Schulträger, also meist der Kommune oder dem Kreis.

Entsprechend freigestellte Lehrer sollen (wie 2008 in der Vereinbarung »Wartung und Pflege von IT-Ausstattungen in Schulen« festgelegt) den 1st Level Support erbringen, was damit begründet wird, dass eine strikte Trennung zwischen technischem und pädagogischem Support nicht möglich sei. Was ein schlauer Plan für den Schulträger ist, denn Lehrer sind dafür zwar eigentlich zu teuer, werden aber vom Land bezahlt. Aber auch der Schulträger kommt nicht ungeschoren davon, denn die empfohlenen Schlüssel verdoppeln gut und gerne das bisherige Personal.

Für den 2nd Level Support suchen die Schulträger laufend Personen auf Fachinformatiker-Niveau, wobei die im Tarifvertrag für den öffentlichen Dienst (TVöD) eigentlich festgezurrten Eingruppierungen immer häufiger nach oben »gedehnt« werden, bis in den Bereich des gehobenen Dienstes, für den eigentlich ein Bachelor-Abschluss notwendig ist: »Die Eingruppierung richtet sich zunächst nach Entgeltgruppe 9a TVöD«, »Vergütung bis Entgeltgruppe 10 TVöD (Vergütung erfolgt je nach Qualifikation)«. Oft wird auch gar keine konkrete Eingruppierung mehr genannt, sondern lediglich eine »Vergütung je nach persönlicher Voraussetzung entsprechend TVöD«, nach dem Motto: »Schau’n mer mal«. Einen guten Überblick über aktuelle Stellenangebote erhält man unter https://www.service.bund.de/Content/DE/Stellen/Suche/Formular.html.

Fazit: Der Bedarf an Personen auf dem Niveau von ausgebildeten Fachinformatikern explodiert also gerade.

Die Frage ist: Woher soll entsprechend qualifiziertes Personal in der gesuchten Größenordnung herkommen?

Wenn man von Personen mit Bachelor-Abschluss absieht, die für Kommunen wegen der abschlussorientierten Eingruppierung des TVöD dafür zu teuer sind, bleiben nur zu qualifizierende Quereinsteiger oder eine deutliche Erhöhung der Zahl der Auszubildenden in den IT- und verwandten Berufen.

Zur ersten Alternative greift zum Beispiel das Ministerium für Wirtschaft, Innovation, Digitalisierung und Energie des Landes Nordrhein-Westfalen (MWIDE), das eine Landesqualifizierung für IT-Berufe mit der Zielgruppe schwerbehinderte Menschen durchgeführt.

Die zweite Alternative scheitert oft daran, dass Personaler für Auszubildende in den IT-Berufen nur selten auf Kandidaten mit Hauptschulabschluss zurückgreifen, da sie leider aus Erfahrung den Anforderungen der dualen Ausbildung dieser anspruchsvollen Berufe nicht gewachsen sind.

Abgeschlossene Ausbildungsverträge in Deutschland (Stand 31.12.2019)

Alle Berufe % Fachinformatiker/-in
FR Systemintegration
%
ohne Hauptschulabschluss 41.895 3,2 192 2,1
Hauptschulabschluss 296.070 22,3 456 5,0
Realschul- oder vergleichbarer Abschluss 570.048 42,9 3.330 36,2
Hochschul- oder Fachhochschulreife 395.118 29,7 5.070 55,2
Im Ausland erworbener Abschluss (nicht zuordenbar) 25.833 1,9 141 1,5
Insgesamt 1.328.964 100,0 9.189 100,0

Quelle: Eigene Berechnungen mit den absoluten Zahlen aus

  • DESTATIS (https://www-genesis.destatis.de/genesis/online)
  • Vorbildung der Auszubildenden mit neu abgeschlossenem Ausbildungsvertrag 2019 absolut (https://www.bibb.de/de/berufeinfo.php)

Ein Ausweg aus dem Dilemma könnte der »Schulversuch FOS Informatik« sein, der den Übergang in das duale System erleichtern will.

Dazu werden neben einem Curriculum diverse Handreichungen zur Verfügung gestellt, wie die Lernsituation 2.1.6: “Außerhalb des Main()streams”.

Da ich auch Anwendungsentwicklung unterrichtet hatte, schaute ich mir darin die Aufgabenstellung und die vorgeschlagene Lösung etwas näher an:

Abgesehen davor, dass es mich gruselt, wenn ich einen Quellcode sehe, der in einem Textverarbeitungsprogramm wie MS Word mit einer proprtionalen Schriftart editiert wurde, musste ich auch beim Inhalt die Stirn runzeln.

Ich schlüpfe dann mal in die Rolle des Support-Mitarbeiters und verfasse ein Antwortschreiben:

Sehr geehrte Frau lleen,

Sie schreiben: »Leider sind die produzierten Werte nicht korrekt«. Das ist korrekt. Aber leider sind auch die von Ihnen angenommenen Soll-Werte nicht korrekt. Zinsen in Höhe von 236,74 EUR werden bei einem Kapital von 100,00 EUR, angelegt zu 9 % jährlicher Verzinsung, auch nach 10 Jahren nicht erreicht, sondern lediglich 136,74 EUR. Wenn die Jahreszinsen banküblich gerundet und jährlich dem Kapital zugeschlagen werden, sind es sogar nur 136,73 EUR. Könnte es sein, dass Sie das Endkapital meinen? Bitte schlagen Sie bei Gelegenheit in einem Lehrbuch der Fianzmathematik die Zinseszinsformel nach.

Und: Atomphysiker dürfen gerne mit Gleitkomma-Arithmetik hantieren, bei Geld hört aber der Spaß auf und es ist Dezimal-Arithmetik gefragt, um Rundungsfehler zu vermeiden.

Und dass es automatisierte Tests gibt, will ich nur am Rande erwähnen.

Das Quellprogramm habe ich etwas umgeschrieben, als Zugabe um einen Blick in das Mutterland aller Bänker erweitert, und zu Ihrer Information unten beigefügt.

Freundliche Grüße
M. Ichael

P.S.: Nur aus Neugier: Verraten Sie mir, wo Sie aktuell 9 % Zinsen bekommen?

Quellcode:


using System;
using System.Diagnostics;

namespace FOS_Informatik_Business
{
	// Beispielprogramm(C#)

	public class Program
	{
		public static void Main()
		{
			// Variablendeklaration
			decimal testValue; // Variable für Ergebnisse
			decimal testAmount = 55.00M; // Testbetrag entspricht 55,00 
			decimal testInterestRate = 0.02M; // Zinssatz entspricht 2%

			// Methodenaufrufe
			testValue = CalculateInterest(100.00M, 0.09M, 10); // Sollte 136,74 ergeben
			Console.WriteLine(testValue);
			// Das Resultat überprüfen, z. B. so:
			Debug.Assert(testValue == 136.74M, "Methode CalculateInterest arbeitet für (100.00M, 0.09M, 10) nicht korrekt.");

			testValue = CalculateInterestYearly(100.00M, 0.09M, 10); // Sollte 136,73 ergeben
			Console.WriteLine(testValue);

			testValue = CalculateInterest(testAmount, 0.09M, 10); // Sollte für 55,00 ein Ergebnis von 75,21 ergeben
			Console.WriteLine(testValue);

			testValue = CalculateInterest(100.00M, testInterestRate, 10); // Sollte bei 2% ein Ergebnis von 21,90 ergeben
			Console.WriteLine(testValue); 

			// Two more test's

			testValue = CalculateInterest(0.75M, 0.01M, 1); // Sollte für 0,75 ein Ergebnis von 0,01 ergeben
			Console.WriteLine(testValue);

			testValue = CalculateInterestYearly(0.75M, 0.01M, 1); // Sollte für 0,75 ein Ergebnis von 0,01 ergeben
			Console.WriteLine(testValue);

			// Sollte für 0,75 Franken (75 Rappen) ein Ergebnis von 0,00 Franken/Rappen ergeben
			testValue = CalculateInterestSwiss(0.75M, 0.01M, 1);
			Console.WriteLine(testValue);
		}

		public static decimal CalculateInterest(decimal amount, decimal interestRate, int numberOfPeriods)
		{
			// Klassische Zinseszinsformel
			Console.WriteLine("Klassische Zinseszinsformel:");
			// Für MS Dynamics gibt es die Funktion public static decimal Power (decimal arg, decimal exponent)
			// Ansonsten möchte Math.Pow() mit Double gefüttert werden
			decimal result = Convert.ToDecimal(Math.Round(Convert.ToDouble(amount) * Math.Pow(1.0 + Convert.ToDouble(interestRate), Convert.ToDouble(numberOfPeriods)), 2, MidpointRounding.AwayFromZero));
			result -= amount;
			return result;
		}

		public static decimal CalculateInterestYearly(decimal amount, decimal interestRate, int numberOfPeriods)
		{ 
			decimal result = amount;

			// Bankmäßige Rechnung
			Console.WriteLine("Bankmäßige Rechnung:");
			for (int i = 1; i <= numberOfPeriods; i++) 
			{
				result += Math.Round(result * interestRate, 2, MidpointRounding.AwayFromZero);
				Console.WriteLine(Convert.ToString(i) + " - " + result);
			}

			result -= amount;
			return result;
		}

		public static decimal CalculateInterestSwiss(decimal amount, decimal interestRate, int numberOfPOeriods)
		{
			decimal result = amount;

			// Bankmäßige Rechnung
			Console.WriteLine("Schweizer bankmäßige Rechnung:");
			for (int i = 1; i <= numberOfPOeriods; i++)
			{
				result += SwissCommercialRound(result * interestRate);
				Console.WriteLine(Convert.ToString(i) + " - " + result);
			}
			result -= amount;
			return result;
		}

		// Runden auf 5 Rappen
		public static decimal SwissCommercialRound(decimal amount)
		{
			return Math.Round(amount * 20.0M, MidpointRounding.AwayFromZero) * 0.05M;
		}

	}
}

Beitragsbild: Volkskunde- und Freilichtmuseum Roscheider Hof / Rainer Blazejewicz [CC0]