Wie sozial muss man als Programmierer sein?
Ich habe mal nach Jobs recherchiert, wo man möglichst viel alleine und ohne sozialen Kontakten arbeitet. Auf fast allen Webseiten stand, dass Programmierer/Software Entwickler genau so ein Beruf ist
Aber soweit ich weiß, arbeiten Programmierer oft in Teams und sind selbst im Homeoffice in zb Zoom meetings. Auch wird bei den Stellungsausschreibungen eine gewisse soziale Begabung gefordert
Mal eine Frage an die Programmierer, was davon stimmt denn jetzt?
8 Antworten
Reine Programmierer (= Codierer, die nur umsetzen, was andere an Lösungsideen entworfen haben) will man heute gar nicht mehr haben.
Was man braucht sind Software-Entwickler. Deren Aufgabe besteht aber nur zu etwa 15 bis 20 Prozent aus Programmierarbeit. Der gesamte Rest sind Arbeiten, die enge Kooperation, also viel Kommunikation mit Auftraggebern und Kollegen im Team erfordern.
Gegen Ende der 60-er Jahre kam es zur sog "Software-Krise". Sie ist überwunden worden durch die Erkenntnis, dass es nicht ausreicht, einfach nur zu programmieren. Wirklich notwendig im Projekt sind alle Aufgaben, die beschrieben sind z.B. hinter Links auf Seite https://ggreiter.wordpress.com/2013/02/12/notwendiges-wissen-kompetenter-software-entwickler/ .
Lies auch: https://ggreiter.wordpress.com/category/software-engineering/
Wer (in der Rolle des Auftragnehmers) Software für einen Kunden zu entwickeln hat, sollte i.A. folgende Faustregel zugrunde legen:
Raster für kompletten Entwicklungsaufwand:
Auf Basis » reiner Entwicklungsaufwand = 1 « kommen hinzu:
- 0.1 für politisches Projektmanagement
- 0.2 für technisches Projektmanagement
- 0.1 für Qualitätsmanagement
- 0.1 für Anpassen von Entwicklungswerkzeug, Integration und Configuration Management
- 0.5 für Test
- und wenigstens 0.1 für Dokumentation
Unter reinem Entwicklungsaufwand (= 1) verstehe ich dabei
- Anforderungs- und Change Management (= 0.3)
- Entwurf und Schnittstellenspezifikation (= 0.4)
- Codierung (= 0.3)
Configuration Management für sich allein erfordert deutlich weniger als 1% des Entwicklungsaufwands.
Ihr diskutiert also den ganzen Tag wie man Geld einsparen kann und das Projekt sauberer umsetzen kann.
Ja, auch darum geht es. In erster Linie aber geht es darum, das gewonnene Projekt überhaupt erfolgreich abschließen zu können.
Ganz im Gegenteil: Die Kunst besteht darin, ein gewonnenes Projekt im versprochenen Zeit- und Kostenrahmen erfolgreich abschließen zu können: So also, dass man damit Geld verdient und der Kunde gerne wieder kommt.
Möglich ist das nur durch genaue Anforderungsanalyse und schriftlich erstelltes Systemdesign (= gut durchdachter Entwurf von Applikationsarchitektur und Spezifikation aller internen Schnittstellen der Anwendung) noch bevor man beginnt zu programmieren. Zu programmieren ist dann nichts weiter, als die so entworfene Lösung in Code umzusetzen und danach erfolgreich zu testen.
Das gilt auch für Einzelentwickler. Wer anders vorgeht, kommt nur zu Code, der sich schon bald als unwartbar herausstellt, da kein Mensch mehr sehen kann, was genau er denn eigentlich zu leisten beabsichtigt.
Ich selbst habe mal versucht, nur 40 kB in C++ geschriebenen Code so zu verstehen, dass ich begriffen hätte, was genau er denn eigentlich tut: Es ist mir nicht gelungen, obgleich ich an dieser Analyse etwa 3 Monate gearbeitet habe. Ich war keineswegs der einzige, wohl aber der letzte, der versucht hat, diesen Code zu verstehen.
Heute sieht man das so:
Code, den nur sein Autor versteht, ist wertlos. Einfach deswegen, da sein Autor früher oder später nicht mehr verfügbar ist, man den Code aber dennoch weiter neuen Anforderungen anzupassen hat. Ihn anpassen zu können erfordert, ihn im Detail genau verstanden zu haben.
Größere Zusammenhänge zu verstehen erfordert schriftliches Komponenten-Design (erstellt BEVOR man programmiert). Die entsprechenden Dokumente müssen von Release zu Release pingelig genau aktualisiert werden, um nicht wertlos zu werden.
Sie nicht verfügbar zu haben bedeutet auch, die Applikation gar nicht wirksam genug testen zu können.
Softwareentwicklung ist Teamarbeit. Du arbeitst eng mit Deinem Team zusammen. Zusätzlich tauscht sich Dein Team mit anderen Teams oder Vorgesetzten und natürlich mit dem Kunden aus.
Auf viele soziale Kontakte verzichten kannst Du als normaler Programmierer nicht und schon gar nicht als Freiberufler/Selbstständiger. Da hängt Deine Existenz von Deinen Kontakten ab.
Wenn Du keine/kaum Kontakte haben willst, kannst Du Deine Dienste auf Seiten wie Fiver anbieten. Wirklich Leben wirst Du davon aber nicht können.
möglichst viel alleine und ohne sozialen Kontakten
Funktioniert schon in kleinen Projekten nicht. Denn da wird wenigstens der direkte Kundenkontakt stattfinden, ohne den man aus dem Lastenheft kaum sein Pflichtenheft vollständig erstellen kann.
Und dann stellt sich auch die Frage, ob man Kundenrückmeldungen bereits während der Entwicklung einfliessen lässt oder erst am Ende feststellt, dass man am Ziel vorbei gearbeitet hat und Teile komplett umwerfen will....
Ohne die Kontakte zu Kunden und auch Kollegen (die ggfs. am gleichen Projekt arbeiten) kann keine Abstimmung erfolgen. Und ohne Abstimmung wird man zwangsläufig irgendwo den Punkt erreichen, an dem die Entwicklung für die Tonne war.
Natürlich sitzen viele Programmierer auch in Meetings und besprechen sich, da ja meist viele Programmierer ein Programm/Projekt betreuen.
Hier ist sozialer Kontakt schon wichtig, da man sich ja besprechen und organisieren muss.
Programmierer hatten früher den Schlag, das sie immer schwarz gekleidet sind, nie an die Sonne gehen und nur Rock und Metal hören :D
Die Zeiten sind mehr als vorbei, meiner Meinung nach.
Es mag solche Typen geben, die allein in ihrem Keller sitzen und Code absondern. Die können in ihrer Nische sogar gut sein. In der Praxis sind die aber eher selten. Ein Softwareprojekt ist fast immer Teamarbeit mit regelmäßiger Rückkopplung und Diskussion im Team.
Ein Projekt in "Einzelhaft" zu machen, war mir immer höchst unangenehm, denn meistens kommt nix dabei heraus, man wurschtelt viel zu oft am Bedarf vorbei. Deshalb habe ich auch ziemlich unter dem Homeoffice in der Coronazeit gelitten, Videokontakte sind einfach kein Ersatz für ein gemeinsames Mittagessen, den Kaffee auf dem Flur oder die Zigarette in der Horde.
Und dann ist da noch ein Punkt. Es ist unausweichlich, ein Leben lang weitere Techniken zu lernen und neue Ideen in die Arbeit einfließen zu lassen. Das geht in "Einzelhaft" niemals - neue Erkenntnisse werden nur im Team besprochen und gemeinsam ausgewertet.
what nur 15 bis 20 % ist programmieren. Was denn kannst du da ein Beispiel nennen. Wie sieht so ein Tag ca. aus?