Das Spannungsfeld zwischen "Mensch & Technologie"

Wir sind die perfekten „Dolmetscher“ zwischen der „technischen und menschlichen“ Sprache.

Was zunächst etwas einfach klingen mag, ist weitaus tiefergehend und kann ihnen in vielerlei Hinsicht helfen.

Maßgeblich dann, wenn Sie die technische Sprache weniger oder etwas schwerer verstehen, im Alltag jedoch Verantwortung in einer Position tragen, in welcher mit Technologien umgegangen werden muss. Und vor allem: Wenn Sie ein neues Projekt planen oder Probleme in einem bereits bestehenden Projekt haben sollten.

Sinn und Zweck dieses Beitrages ist es Sie besser verstehen zu lassen, warum sich speziell im Bereich der Technologien Denkweisen unterscheiden und gewisse Aufgaben vielleicht nicht so erledigt oder selbstständig weitergedacht werden, wie man es vielleicht selbst handhaben oder denken würde.

Wir sind uns sicher, dass Sie nach diesem Beitrag von uns einiges mehr verstehen werden.

Spricht man eine Sprache nicht oder ist diese nur schwer verständlich ist jedem klar, dass Kommunikation nicht leichtfällt und zwangsweise auch zu Missverständnissen führt.

  • Gerade dann, wenn beispielsweise gewisse Budgets in eine Software-Entwicklung oder Hardware investiert wurden oder investiert werden sollen. Wenn sich diese Projekte von Anfang an oder anschließend auf Dauer ziehen, gefühlt niemals enden wollen und auch Ausgaben und eingehende Rechnungen den Budgetrahmen bereits übersteigen gilt es zu handeln, oder dem von Anfang an vorzubeugen.


    Ein konkretes Beispiel für Software-Entwicklungen sind Projekte, die in Teilen schon umgesetzt wurden, aber deren Funktionalität am Ende nicht dem entspricht was man sich eigentlich vorgestellt oder in Auftrag gegeben hat. Bedienung und Anwendung zu komplex sind, bis hin zu Abstürzen und Fehlermeldungen von Systemen.


    Noch komplexer sind Projekte, welche vor Jahren auf eine Anforderung hin geplant und in Auftrag gegeben wurden, bis heute immer noch nicht fertig gestellt sind und man sich der Frage stellen muss, ob die vor Jahren gestellten Anforderungen heute noch dem entsprechen, was vor Jahren geplant und benötigt wurde.


    Diese Probleme können in allen Bereichen der Entwicklung auftreten. Vom einfachen Onlineshop bis hin zu komplexen Schnittstellen welche unterschiedliche Systeme miteinander vernetzen, APP-Entwicklungen für mobile Endgeräte, oder komplett individuell entwickelte Software die bestimmten Abläufen und Prozessen dienen soll.

  • Im Bereich Hardware sind es oftmals Komponenten, welche überraschend nachgekauft werden müssen und Anfangs nicht in diesem Umfang geplant wurden, und damit relativ schnell den eigentlichen Budgetrahmen übersteigen. Auch die unerwartete Erweiterung von Klimasystemen zur Kühlung innerhalb von Rechenzentren, bei größeren Projekten beispielsweise auch zusätzlicher Brandschutz oder erweiterte Stromversorgung welche benötigt wird sind keine Seltenheit und führen oftmals zu zusätzlichen, nicht geplanten Ausgbaen.


    Es ist entsprechend auch keine Seltenheit, dass man in solchen Fällen von den entsprechenden Abteilungen, Systemadministratoren, Programmierern oder extern beteiligten Firmen hört: „Das war so nicht geplant, dass sind neue Anforderungen, dies war so leider nicht absehbar, dafür sind wir leider nicht mehr zuständig, dass hat uns so keiner gesagt, das kostet mehr“.


    Aus diesem Grunde bringen auch gegenseitige Schuldzuweisungen nichts und tragen nicht zur Problemlösung bei!


    Bei bestehenden Projekten kann man dies lösen, bei neuen Projekten von Anfang an vorbeugen.

  • Warum solche Probleme entstehen, versuchen wir ihnen im Ansatz anhand von Software Projekten verständlich zu erklären:


    Programmierer erlernen die Entwicklung von Software durch das Erlernen einer Programmiersprache. Wie z.B. deutsch, englisch oder spanisch. Nur heißen diese Sprachen anders. Beispielsweise C und C++, C# (C-Sharp ausgesprochen), JavaScript, PHP, Scratch - um nur einige zu nennen. Was genau der Unterschied dieser Sprachen ist und wann welche zum Einsatz kommt, spielt zunächst einmal keine Rolle und ist an dieser Stelle auch nicht wichtig.


    Was alle Programmiersprachen jedoch gemeinsam haben: Das was in der menschlichen Sprache „Worte“ sind, sind in einer Programmiersprache „Anweisungen“, bzw. wenn man so möchte „Befehle“. In der Programmierung werden diese auch als „Schlüsselwörter“ bezeichnet.


    Wie aus der menschlichen Sprache bekannt, können aus verschiedenen „Worten“ auch innerhalb einer Programmiersprache verschiedene „Anweisungen“ schrittweise zusammengeführt werden. In der menschlichen Sprache bezeichnen wir dieses zusammenführen als „Satz“, in der Programmiersprache als „Syntax“.


    Allerdings gibt es hier große Unterschiede zu beachten, die vielleicht schon jetzt im Ansatz klar machen, warum ein gewisses Spannungsfeld zwischen Mensch und Technologie existiert und warum es im Laufe der Zeit zu Missverständnissen zwischen Menschen kommt, welche zusammen an einem Projekten arbeiten:

  • > Eine Person welche eine andere Sprache erlernt (z.B. englisch oder spanisch), macht dies in der Regel, um in dieser neu erlernten Sprache mit anderen Personen bzw. seinem Umfeld zu kommunizieren.

    > Eine Person welche eine Programmiersprache erlernt, lernt diese, um mit einer Maschine zu kommunizieren, bzw. einem Computer Anweisungen zu geben.

  • Dies sind zwei völlig unterschiedliche Ansätze. Wenn man sich fragt „warum“, lässt es sich wohl am besten damit erklären, dass die Kommunikation durch eine Sprache zwischen Menschen auf „Lebewesen“ und eine „Intelligenz“ trifft, während Maschinen und Systeme die durch Computerprozessoren bzw. Software gesteuert werden weder leben, noch intelligent sind. Es sind hart gesprochen, leere „Blechbüchsen“ eben ohne jegliche Form von Wissen, ohne Intelligenz, ohne Einfühlungsvermögen, ohne Emotion, ohne Leben.


    Maschinen können nicht denken wie wir Menschen (auch nicht wenn künstliche Intelligenz (KI) zum Einsatz kommt), was zum nächsten Problem zwischen der Menschlichen- und einer Programmiersprache führt:

  • Wie wir alle wissen, gibt es in den verschiedenen menschlichen Sprachen Wortstellungen innerhalb von Sätzen, bzw. auch eine Grammatik beim Schreiben.


    Diese erlauben jedoch bis zu einem gewissen Grad Fehler und können in vielen Fällen dennoch verstanden oder zugeordnet werden.


    Ein Beispiel:
    Sie lesen in einer Zeitung den Satz:


    Die Film-Neustarts am kommenden Donnerstag im Kino


    Dieser Satz ist eindeutig und klar formuliert. Sie würden diesen Satz als Mensch jedoch auch verstehen, wenn er wie folgt abgedruckt wäre:


    Die Fillm Neustart am komen den donersTag im Kihno

    Ähnlich verhält es sich mit der menschlichen Sprache: Wenn Sie jemand fragt:


    „Wissen Sie was ab Donnerstag im Kino läuft?“


    würden Sie ebenso verstehen, wie wenn Sie jemand fragen würde:


    „Was läuft Kino ab Donnerstag?“

In Programmiersprachen ist dies jedoch anders. Und zwar ausnahmslos:

Nur das geringste, also wirklich nur das geringste Abweichen von der „Wortstellung“ bzw. dem Abweichen von der „Syntax“ wird von einer Maschine, bzw. einem Computer nicht verstanden und sofort mit Fehlermeldungen oder auch Abstürzen bestraft.

Aus diesem Grunde muss ein Programmierer in einigen Bereichen anders denken wenn er „seine Sprache“ spricht, als wie beispielsweise Sie, welcher sich in vielleicht noch nicht so perfektem spanisch mit einem einheimischen Spanier unterhält. Man aber dennoch weiß was gemeint ist. Oder eben, wie im oberen Beispiel verdeutlicht Sätze liest, die grammatikalisch oder von der Wortstellung her nicht perfekt sind, aber dennoch einen Sinn ergeben.

  • Für Computer bzw. eine Software machen kleinste, abweichende Änderungen außerhalb der klar definierten „Syntax“ keinen „Sinn“. Und werden entsprechend nicht verstanden, bzw. nicht verarbeitet.

  • Eine Programmierung hat neben dieser Tatsache abstrakt zu erfolgen. Durch die abstraktive Denkweise wird zwischen dem gesamten Konzept und der dahingehenden Umsetzung unterschieden. Sinn und Zweck dieser Denkweise ist es Einzelheiten einer Aufgabe zunächst auf das wesentliche zu reduzieren.

  • Informatiker zerlegen somit komplexe Aufgaben in Einzelschritte und beschäftigen sich demnach Schritt für Schritt mit den Details einer Aufgabe. Welches Detail dies zunächst ist, hängt aus Sicht und aus der Perspektive des Programmierers ab, bevor alle Einzelschritte später in ihrer Gesamtheit zur Lösung beitragen sollen.

Diese Eigenschaften hängen auch damit zusammen, dass Computer bzw. Software zunächst einmal regelbasierte Systeme sind. Entsprechend muss ein Programm auch regelbasiert arbeiten.

  • In Kombination mit der abstrakten Denkweise und regelbasierten Systemen ein Beispiel:


    Es gibt viele abstrakte Begriffe. Nehmen wir den in der Informatik gerne verwendeten und abstrakten Begriff „Tier“.


    In der Abstraktion weiß zumindest jeder einmal grob was mit „Tier“ gemeint ist. Wir wissen aber noch nicht welches. Und wir wissen noch nicht einmal ob tot oder lebendig. Dennoch wird in der Informatik zunächst einmal abstrakt auf den „Oberbegriff“ bzw. die „Klasse“ – in dem Falle „Tier“ - verwiesen, bevor weitere Abstraktionsebenen eingeführt werden. Grob dargestellt, damit Sie ein besseres Verständnis dafür bekommen, sieht dies in der Welt der Informatik etwa wie folgt aus:

  • KLASSE = TIER

    ZUSTAND = LEBENDIG

    TIERARTEN: SCHWEIN, HUHN, PFERD

    WENN HUNRIG: GIB FUTTER

    WENN NICHT HUNGRIG: GIB KEIN FUTTER

    WENN GEGESSEN: AN EINEN ANDEREN ORT BRINGEN

    WENN NICHT GEGESSEN: AN ORT LASSEN


    Damit wurde der Oberbegriff bzw. die Klasse „Tier“ schon einmal etwas besser formuliert und eingeteilt. Allerdings müssen jetzt weitere abstrakte Ebenen für jede Wahrscheinlichkeit und jedes Detail beschrieben, bzw. weitere abstrakte Ebenen eingezogen werden, damit das Ganze funktionieren kann.

    Beispiel:


    KLASSE TIER: TIERART= HUHN und

    ZUSTAND= LEBENDIG und

    HAT KEINEN HUNGER= GIB KEIN FUTTER und

    HAT NICHT GEGESSEN = AN ORT LASSEN

  • Dies muss entsprechend für jeden denkbaren Zustand eines jeden Tieres und den unterschiedlichen Wahrscheinlichkeiten gemacht werden. Kommen noch mehrere Kriterien hinzu die berücksichtigt werden sollen, wie z.B. eine Einteilung in Tiere die Milch geben oder nicht, unterschiedliches Futter, Alter, Geschlecht, verschiedene Standorte und vieles mehr, wird es entsprechend komplexer. Es entstehen dann sowohl weitere abstrakte Details, aber auch logische Verbindungen untereinander, in welchen dann letztlich alles miteinander verbunden wird.

    Mit dem Ziel am Ende eine funktionierende Lösung des Ganzen zu haben.


    Dies mag alles durchaus seltsam für Sie erscheinen. Es ist jedoch die Welt in welcher wir mittlerweile alle Leben. In jedem Mobilfunktelefon, Autos, Fernsehern und unzähligen anderen Systmen laufen Prozezze dieser Art ab.

Was hat dies aber jetzt mit einem Projekt zu tun und warum ist ggf. überhaupt etwas schiefgelaufen?

Im Grunde genommen ist dies einfach erklärt:

Wenn ein Projekt geplant wird, werden von den Projektplanern unterschiedliche Aufgaben und Prozesse definiert, welche gelöst werden müssen. Diese Aufgaben werden so gut es geht „durchdacht“ und anschließend für die Projektumsetzung an verschiedene Stellen vergeben. An sich eine normale Vorgehensweise.


Diese Projektplanungen sind jedoch in der Regel niemals zu 100% sicher und im Laufe eines Projektes stellt sich heraus, dass das ein oder andere fehlt, oder an anderer Stelle zu viel ist.


Aus unserer Erfahrung heraus lässt sich ableiten, dass 90-95% gut durchdacht und in „“ schnell gelöst und umgesetzt sind. Die Krux und da wo es richtig teuer werden kann, liegt in den restlichen 5-10%.

  • Nehmen wir unser Beispiel von gerade: In ihrer Planung berücksichtigen Sie beispielsweise 95 unterschiedliche Tiere und unterschiedliche Handhabungen, also wan in Abhängigkeit von verschiedenen Parametern mit diesen Tieren passieren soll. Nehmen wir an 5 Tiere fehlen, wie sich zu einem späteren Zeitpunkt herausstellt. In der Programmierung werden zunächst auf abstrakter Ebene und später durch die logische Verknüpfung der Ebenen untereinander die Probleme für die zunächst 95 geplanten Tiere und deren Handhabung gelöst. Ab Tier 96 bis Tier unendlich gibt es in der Informatik dann die einfachste Lösung: Tier 96 bis Tier ∞ = tue nichts.


    Und so böse es klingen mag: Machen Sie sich bitte nicht vor, dass ein Programmierer in der Regel von alleine auf die Idee kommt, evtl. weitere Dinge mit zu berücksichtigen als wie vorgegeben. Es gibt Programmierer die dies tun, aus unserer Erfahrung heraus jedoch eher selten. Programmierer arbeiten in der Regel 1:1 das ab, was vorgegeben wurde. Und genau hier sind wir wieder auch bei dem Thema: "Spannungsfeld zwischen Mensch und Technologie".


    Wenn Sie jetzt den Programmierer bitten, Tier 96 bis 100 mit einzubauen, bedeutet dies den ersten Mehraufwand. Was ggf. noch einfach ist. Problematisch wird es dann, wenn bei nur einem der Tiere 96-100 weitere Handhabungen hinzukommen, welche sich ggf. auch auf die Tiere 1-95 auswirken.

  • In diesem Moment kann es passieren, dass abstrakte und logisch damit verbundene Verkettungen nicht mehr funktionieren und das ganze Konstrukt zusammenbricht.


    In der Regel wird die bereits bestehende Arbeit und Software dann zwar nicht entsorgt, sondern man wird versuchen die neuen Bedingungen „irgendwie“ mit zu berücksichtigen und einzubauen, jedoch stört dies die bisher erbrachten abstrakten und logischen Denkprozesse. Dies verursacht, ob man es hören will oder nicht, auf jeden Fall eines: Chaos!


    Wirkt sich dieses Chaos unter Umständen dann noch auf andere Teilbereiche des Projektes aus (z.B. Hardware), gerät das Projekt zunehmend außer Kontrolle.


    Wie Eingangs beschrieben, wurde dieses Beispiel und evtl. daraus resultierende Probleme anhand der Software-Ebene beschrieben. Es hätte umgekehrt auch anhand der Hardware- oder einer anderen Ebene beschrieben werden können, welche sich dann ggf. negativ auf die Hardware selbst, oder andere Bereiche auswirkt.

Was wir für Sie tun können!

Sollte ihnen das ein oder andere hier aus diesem Beitrag bekannt vorkommen, Sie ein neues Projekt planen oder Schwierigkeiten mit einem bereits bestehenden Projekt haben, können wir Sie dabei unterstützen Probleme dieser Art von Anfang an zu vermeiden, oder bestehende Probleme zu lösen.

Wir haben jahrelange Erfahrung im Bereich von Hard- & Software-Projekten, sowohl auf der Planungs- als auch auf der Umsetzungsebene, damit verbundenen Infrastrukturen und vor allem auch im Bereich der vorbeugenden oder aktiven Problemlösung.

Bei neuen, aber auch bestehenden Projekten koordinieren wir die von ihnen erstellten Planungen mit den dafür benötigten Fachabteilungen und/oder extern benötigter Firmen und setzen das gewollte ihrer Planung in die die technisch notwendige Sprache der jeweils Beteiligten um. Ebenso übersetzen wir die technische Sprache in eine einfach verständliche zurück, wie z.B. für Management, Geschäftsführung oder Vorstände.

Durch diese Art der Kommunikation wissen wir aus einer breiten Erfahrung heraus, dass bei der Planung und der anschließenden Umsetzung, unvorhersehbare Dinge durch den Einsatz bestimmter Methoden und Verfahren, als auch durch notwendige Kommunikation auf den unterschiedlichen „Sprachebenen“ von Anfang an vermieden, oder bei bestehenden Projekten gelöst werden können.

Wr greifen rechtzeitig ein, beovr Probleme entstehen, lösen bestehende Probleme, sorgen für reibungslose Abläufe und helfen dabei unnötige und unvorhersehbare Kosten zu vermeiden.

Sollten Sie weitere Fragen an uns haben, jederzeit gerne. Verwenden Sie hierzu einfach unser Kontaktformular.

Zum Kontaktformular