Zu Beginn meiner Karriere im Bereich Informatik stieß ich auf eine nützliche Klassifikation von Software, die sie in drei Kategorien unterteilt: Systemsoftware, Anwendungssoftware und Skripte. Obwohl diese Abstraktion nicht perfekt ist, dient sie als hilfreicher konzeptueller Rahmen für Ingenieure und Manager gleichermaßen. Jede Kategorie offenbart einzigartige Einblicke in Softwareentwicklung, Nutzung und die Arten von Personen, die sie schreiben.\n\nAn der Basis liegt die Systemsoftware, zu der Betriebssysteme, Compiler und Datenbanken gehören. Diese dienen als generische, grundlegende Komponenten, die für den Aufbau aller anderen Softwaretypen notwendig sind. Während Systemsoftware weit verbreitet ist, ist sie von Natur aus undifferenziert und führt für sich genommen keine sinnvollen Aufgaben aus. Es gibt relativ wenige produktionsreife Systemsoftwareoptionen – nur eine Handvoll Betriebssysteme, etwa zehn populäre Programmiersprachen und ein paar Dutzend bedeutende Datenbank-Engines. Die Knappheit der Auswahl resultiert aus wirtschaftlichen und technischen Herausforderungen, da die Erstellung zuverlässiger Systemsoftware große Teams hochqualifizierter Entwickler erfordert und oft mehrere Generationen umfasst. Bedeutende Beispiele sind Unix und der gcc-Compiler, die die Komplexität und den Umfang verdeutlichen. Trotz ihrer Bedeutung spezialisieren sich nur wenige Softwareingenieure auf die Entwicklung von Systemsoftware.\n\nÜber dieser Schicht befindet sich die Anwendungssoftware, die alle benannten Programme umfasst, die für spezifische Aufgaben entwickelt wurden. Beispiele reichen von Verbraucherprodukten wie Photoshop, Excel und TikTok bis hin zu unzähligen internen Werkzeugen wie Helpdesk-Ticketsystemen oder Werkzeugmaschinensteuerungen. Anwendungen bauen auf Systemsoftware und manchmal anderen Anwendungen auf und sind darauf ausgelegt, bestimmte Aufgaben mit begrenzten Anpassungs- oder Skriptmöglichkeiten zu erfüllen. Im Vergleich zur Systemsoftware haben Anwendungen tendenziell kürzere Lebenszyklen, obwohl einige wie Microsoft Office, Google Search und Midnight Commander seit Jahrzehnten bestehen. Anwendungssoftware macht den Großteil der professionellen Softwareentwicklung aus, und entsprechend konzentriert sich die Mehrheit der professionellen Entwickler auf die Erstellung dieser Anwendungen.\n\nDie dritte Kategorie, Skripte, umfasst Software, die verschiedene Komponenten automatisiert oder miteinander verbindet, oft zugeschnitten auf sehr spezifische und enge Anwendungsfälle. Skripte können so einfach sein wie die Verknüpfung einer Tabellenkalkulation mit einem E-Mail-Dienst mittels Tools wie Zapier oder so komplex wie Datenanalyseskripte, die Bibliotheken wie Numpy nutzen. Der Großteil der Software weltweit fällt in diese Skriptkategorie. Im Gegensatz zu professionellen Entwicklern zählen Skriptautoren oft auch Nicht-Professionelle Programmierer wie Büroangestellte, die Excel-Formeln erstellen, oder Wissenschaftler, die Datenanalysecode schreiben. Obwohl Skripte im Allgemeinen weniger komplex sind als vollwertige Anwendungen, beinhalten sie dennoch Programmierung und dienen klaren praktischen Zwecken, anstatt als eigenständige Produkte zu existieren.\n\nDieses Framework ordnet elegant ein breites Spektrum an Programmieraktivitäten – von NoCode-Lösungen bis hin zu Mikrocode – auf derselben Kontinuumsskala ein und hebt die vielfältigen Werkzeuge hervor, die Entwickler beherrschen sollten. Es ermutigt Entwickler auch dazu, zu überlegen, ob ein einfaches Skript oder eine Automatisierung angemessener ist als der Aufbau einer vollständigen Anwendung, da Skripte günstiger zu entwickeln sind und schnellere Iterationen ermöglichen. Interessanterweise entwickeln sich Skripte oft zu Anwendungen weiter, und Anwendungen können zu Systemsoftware heranwachsen, was eine fraktale Natur über die Schichten hinweg widerspiegelt.\n\nInnerhalb von Organisationen manifestieren sich diese Kategorien auf unterschiedliche Weise. Plattformteams passen oft Systemsoftware an unternehmensspezifische Bedürfnisse an, um die Komplexität der für die Anwendungsentwicklung genutzten Werkzeuge zu reduzieren. Historisch hatten interne Anwendungen begrenzte Skriptunterstützung, doch Fortschritte in Robotic Process Automation (RPA), NoCode-Plattformen und Business Intelligence (BI)-Tools haben die Automatisierungs- und Anpassungsfähigkeiten für Nicht-Professionelle Entwickler erhöht. Für die Zukunft wird erwartet, dass Nicht-Professionelle mehr Softwareanpassungsrollen übernehmen, angetrieben durch verbesserte Werkzeuge und wachsende Anforderungen an Softwarelösungen. Professionelle Entwickler konzentrieren sich derweil auf Kernsystem- und benutzerorientierte Software und stellen APIs und Datenströme bereit, die von höherstufigen Skript- und Automatisierungstools genutzt werden können.\n\nInsgesamt klärt diese Klassifikation nicht nur, wie Software gebaut und gewartet wird, sondern bietet auch wertvolle Karriereeinblicke. Das Verständnis dieser Schichten kann Fachleuten helfen, zu entscheiden, worauf sie sich spezialisieren und wie sie effektiv mit anderen im Software-Ökosystem zusammenarbeiten können.