Montag, 19. Januar 2009

Satyam

Der viertgrößte IT-Anbieter Indiens ist von einem Finanzskandal betroffen. Es besteht der Verdacht, daß die Gewinne der letzten Jahre nicht erarbeitet wurden, sondern kreativer Buchführung zu verdanken sind. Dies wurde in den letzten Wochen in den Wirtschaftsseiten der Zeitungen ausgiebig diskutiert. Die Vorgänge setzen ein Fragezeichen für die gesamte indische Softwarebranche. Allerdings haben die meisten Kommentatoren immer noch eine gute Chance gesehen, daß der Aufschwung in Indien weitergehen könnte, wenn die Firmen, die jetzt von der Finanzkrise betroffen sind, weitere Einsparmöglichkeiten suchen werden. Ich muß allerdings gestehen, daß mich die Ereignisse weniger überrascht haben, als der Umstand, daß es solange gedauert hat, bis es dazu gekommen ist. Wenn man in der Branche arbeitet, lernt man mit der Zeit immer mehr große Softwareprojekte kennen, die von indischen Firmen übernommen wurden und dann scheitern. Entweder werden sie mit großer Verspätung geliefert oder ganz aufgegeben. Es geht da um wirklich große Beträge. Wenn bei Airbus sich die Fertigstellung einer A380 verspätet, befindet sich die Firma in einer Krise. Trotz offensichtlicher Rückschläge bei den indischen Softwarefirmen hörte man bislang aber nur Erfolgsmeldungen.

Zudem habe ich Zweifel, ob es im Geschäft mit der Produktion von Individualsoftware den indischen Firmen wirklich gelingen kann, wesentlich günstiger zu produzieren wie einheimische Konkurrenten. Wenn ich damit recht habe, so rechnen entweder die Auftraggeber falsch oder die Inder zahlen bei vielen Projekten drauf.

Softwareproduktion in Indien

Die indische Softwareindustrie ist in den letzten Jahren enorm gewachsen. Jedes Jahr stellt sie Tausende neue Mitarbeiter ein. Das ist die optimistische Sicht der Dinge. Die Kehrseite ist, daß ein großer Teil der Mitarbeiter kaum Erfahrung hat. Die billigen Kräfte besitzen die Qualifikation eines Studenten, wie wir ihn in den 90er Jahren bei uns mitarbeiten haben lassen zu einem Stundenlohn unter dem eines indischen Mitarbeiters. Allerdings hatten wir dann immer Kandidaten für Neueinstellungen, die wir genau kannten und die praktisch keine Einarbeitung brauchten.

In Indien herrscht eine große Fluktuation von Mitarbeitern. Wenn man Leute eingearbeitet hat und sich das Projekt verzögert, so haben die Leute innerhalb kürzester Zeit einen neuen Arbeitsplatz. Bei einem anspruchsvollen Projekt braucht es aber eher Monate als Wochen, bis sich ein neuer Mitarbeiter eingearbeitet hat. Durch den Weggang eines Mitarbeiters entstehen so erhebliche Kosten. Daher werden mindestens zweimal soviele Mitarbeiter bei einem indischen Projekt gebraucht, als es bei einer stabilen Belegschaft notwendig wäre. Damit schmilzt der Vorsprung bei den Lohnkosten zusammen.

Individualsoftware und Kommunikation

Bei der Erstellung von Individualsoftware wird die Software nach de Spezifikation des Kunden erstellt. Die Kunst der Softwareerstellung besteht aber darin, aus einer zunächst unpräzisen Beschreibung in natürlicher Sprache ein präzises, nach den Gesetzen der Logik ablaufendes Computerprogramm zu erstellen. Wenn man in der Lage wäre, vollständige, widerspruchsfreie und in sich abgeschlossene Beschreibungen zu erstellen, würde man danach keine weiteren Entwickler mehr benötigen, sondern könnte die Software daraus automatisch erstellen. Aus dieser Überlegung ergibt sich aber zwingend, daß der Softwareentwickler einen großen Teil des Tages damit verbringt, Unklarheiten aus den ihm vorliegenden Konzepten zu klären. Dies erfordert einen Dialog mit dem Kunden. Je schwieriger dieser Dialog ist, desto teurer wird die Softwareentwicklung und desto größer ist die Gefahr des Scheiterns des Projekts.

Die Kommunikation eines indischen Softwareentwicklers mit einem europäischen Kunden erfolgt aber meist nur indirekt über mehrere zwischengeschalteten Personen. Dazu kommen Probleme wie Zeitverschiebung und Sprache. Bei Sprache geht es nicht nur darum, daß die mündliche Ausdrucksfähigkeit der meisten Inder im Englischen eher beschränkt ist. Noch schwieriger ist es, die problemspezifische Sprache des Kunden zu dem Entwickler zu bringen. Jede Firma hat ihre eigene Art, sich auszudrücken, die außerhalb oft schwer verständlich ist. Wenn der Entwickler nie direkten Kontakt mit dem Kunden hat, wird es da immer zu Mißverständnissen kommen.

Wert des Wissens

Es ist bekannt, daß die Software auf den Unternehmenssystemen für heutige Firmen oft einen erheblichen Wert darstellt. Was sich die meisten Firmen nicht klar machen, ist, daß dieser Wert zu einem nicht unerheblichen Teil im Wissen der Leute besteht, die die Software entwickeln. Wenn die Softwareentwicklung ausgelagert wird, gehen damit Werte verloren, die meist nicht beziffert werden. Wenn dann der neue Anbieter ausfällt, so wird es noch teurer, da dann eine kontrollierte Übergabe nicht mehr realisierbar ist. Die Auswirkungen können für die betroffenen Firmen existenzbedrohend sein.

Die Geschäftssoftware bildet die Geschäftsprozesse des Unternehmens ab. Diese stellen aber die Grundlage eines Vorsprungs gegenüber der Konkurrenz dar. Wenn dieses Wissen aus dem Unternehmen ausgelagert wird, besteht die Gefahr, diesen Vorsprung zu verlieren.

Stärken der Entwicklung in Indien

Software, bei der eine Einbeziehung eines Kunden nicht notwendig ist, kann heute kaum noch zu konkurrenzfähigen Preisen in Westeuropa oder Nordamerika entwickelt werden. Es handelt sich hierbei um Software, die Dinge abbildet, die z.B. durch Standards definiert sind. Gleiches gilt für Softwareprodukte, deren Funktion allgemein bekannt ist, wie zum Beispiel Textverarbeitungsprogramme.

Auch Entwicklungswerkzeuge lassen sich nur noch in Ländern mit günstigen Löhnen produzieren, auch wenn hier Osteuropa führend ist. Dadurch, daß viele kostenlose Open-source-Programme zur Verfügung stehen, lassen sich keine Preise mehr realisieren, die eine Entwicklung woanders erlauben würde.

Auch hat die indische Softwareindustrie einen großen Vorteil auf dem asiatischen Markt, da sie eben da näher dran ist und besser mit dem Kunden kommunizieren kann.

Konsequenz

Firmen, die meinen, Geld einsparen zu können, indem sie die Softwareentwicklung nach Indien verlagern, sollten sich wesentlich besser der Risiken bewußt werden und die Einsparmöglichkeiten realistischer einschätzen. Geschieht das nicht, so ist leicht die Existenz der betroffenen Firmen in Frage gestellt.

Man muß sich die Frage stellen, ob die Versprechungen der großen indischen Softwarehäuser wirklich mehr Wert sind, als die der Lehman Bank für eine sichere Anlage und die der Madoff-Fonds für eine stabile Rendite.

Wenn Geld eingespart werden soll, so gibt es gewöhnlich enorme Einsparmöglichkeiten durch effizientere Entwicklung. So sind viele Projekte grotesk mit Mitarbeitern überbesetzt, die sich nur gegenseitig im Wege stehen. Hier liegen die größeren Chancen füer Einsparungen.

Sonntag, 4. Januar 2009

Der Schrecken am Ende

Bei der Entwicklung neuer Software wird gewöhnlich darauf geachtet, daß die Software am Ende fehlerfrei den Anforderungen entspricht. Was häufig nicht betrachtet wird, ist, daß sie nachher auch betrieben werden muss. Es gibt eine ganze Menge technische Aspekte zu beachten, aber heute will ich nicht darauf beschränken, zu überlegen, welche Leute dafür nötig sind, den Betrieb aufrechtzuerhalten. Es ist ja nicht so, dass die Software entwickelt wird, und dann an irgendein Rechenzentrum übergeben wird, wo sicheine Wartungsmannschaft darum kümmert, daß die Software auf den Rechner zur Verfügung steht. Vielmehr muß die Software auch gewartet werden. Wenn wir ein hübsches System ausgedacht haben mit allen möglichen interessanten Technologien, laufen wir da leicht in eine Falle. Während der Entwicklung hatten wir all die Leute, die auf die kompliziertesten Aspekte der Architektur verstanden haben und auch denjenigen, der mal schnell ein Regelsystem aufsetzen konnte, mit dem wir die Dinge, bei denen die Anforderung unklar waren, so schön flexibel realisieren konnten. Wenn jetzt im Betrieb aber ein Problem auftritt, sind all diese Leute dann noch vorhanden? Das erste Problem ist offensichtlich. Während des Betriebes steht häufig ein wesentlich kleineres Budget für Softwareentwicklung zur Verfügung, so daß wir all die Leute überhaupt nicht bezahlen können. Gleichzeitig wird aber Softwaresupport das ganze Jahr über angefordert. Wenn die Kenntnis einer bestimmten Technik aber nur bei einer oder weniger Personen, so ist mit einem Engpaß zu rechnen, da diese Personen auch krank werden können und Anspruch auf Urlaub haben. Ein anderer Aspekt wird gewöhnlich ignoriert. Die Leute, die während der Entwicklung die kreativsten Ideen haben, sind meistens nicht bereit, Wartung zu machen. Das ist nicht böser Wille, sondern die Aufgaben setzen unterschiedliche Persönlichkeiten voraus. Wer lange Zeit Softwarewartung macht, der bindet seinen beruflichen Wert an das von ihm gewartete System. Will man Leute für diesen Job haben, so muss man ihnen eine gewisse Sicherheit bieten. Leute, die freiwillig Softwarewartung machen, sind daher häufig auch solche, die genau so eine Sicherheit suchen. Die besten Ideen bei der Entwicklung eines neuen Systems kommen hingegen von Leuten, für die Sicherheit weniger wichtig ist, die in ihrer Arbeit vielmehr Selbstverwirklichung und Abenteuer suchen. Um ein wartbares System zu bekommen, ist es demnach auch wichtig, die verwendeten Technologien so auszuwählen, daß sie schließlich auch von der Verfügung stehenden Wartungsmannschaft betreut werden können. Auch wenn es noch so attraktiv scheint, daß irgendwelche Heinzelmännchen heimlich die kompliziertesten Probleme lösen, so muß doch darauf geachtet werden, daß genügend Leute diese Problemlösungen auch verstehen. Um Nischentechnologien mit einzusetzen, reicht es nicht, daß wir zufällig einen Experten dafür besitzen, sondern wir müssen auch einrechnen, daß wir weitere Leute in dieser Technologie ausbilden müssen.