Informatik - Kreativ vs. Arbeit

Das ist eben kein Problem. Dann muss man eben den Stack so wählen, dass er zu den Leuten passt. Die einzelnen Teile des Stacks so anpassen, dass man keine Experten dafür braucht.
Gibt es Abstriche? Ja klar. Interessieren aber niemanden.

In einer grösseren Organisation, hat man früher für alles irgendwo seine Spezialisten gehabt. Und die haben auch ihr „Revier“/Arbeitsplatz/Status verteidigt. Oft auch zum Nachteil der Firma und der Kollegen.

Auf der anderen Seite, kannst du heute als Solo-Entwickler loslegen und kannst mehr oder weniger aus dem vollen schöpfen ohne erst ein Expertenteam anzuwerben und Kapital im 6 bis 9-stelligen Bereich zu besorgen.

Das sind Breitband 50 MBit, 2 Sekunden. Mit Glasfaser 1GBit oder aus dem Cache weniger als eine Sekunde. Aber vielleicht hilft es ja, webpack einen production-Build (-p) machen zu lassen. Mobil eine Katastrophe klar, ansonsten juckt es eigentlich niemanden ausser Puristen.

das Thema des Threads, falls es eins gibt, schwankt, der von mir gewählte Titel evtl. nicht ideal :wink:

nur um des Diskutieren willens und abgesehen davon dass es zu ‚Full Stack‘ schon eigenen Thread gab: nein, ist nicht generell ein Problem,
alles hat seine Berechtigung, allein für dein Beispiel ‚Angular-Frontend mit Spring-Boot-Backend von Jenkins in Docker-Container packen und der AWS-Cloud deployen‘, was immer das alles ist,

aber gut, war ja auch eher Negativ-Beispiel, nur müßig hier ganze Industriezweige zu verdammen mit welcher Alternative, jede Firma soll 10 Spezialisten anstellen und eine originale Software von Grund auf entwickeln?..

‚Wiederverwendbarkeit, Modularität‘ wiederum, aber ist denn die Cloud, der angesprochene Container und die anderen angewendeten Frameworks nicht viel Wiederverwendung?


das kann man sehr wohl kopieren, einmal erfunden tausendfach gebaut, oder in neuen Serien leicht verändert oder für individuelle Kunden minimal angepasst,
auch für neue ähnliche Erfindungen oder Sprünge zu Kettensägen, Trennschleifern, Kläranlagen, Flugzeug und Raketen soweit berücksichtigt wie möglich, klar,

der Standard ist gut (genug) für die Masse, braucht nicht jedes Mal neu legendär-kreativen japanischen Schwertschmied, sondern kann von normalen Angestellten in langweiligen Jobs mit Gähnen weitgehend nach Anleitung hergestellt/ angepasst werden,
um einen gewissen Rundgang mehrerer angerissener Themen zu nehmen :wink:

:persevere: Aber das ist es doch: Wer passt die Teile des Stacks an? Wer erstellt die Scripte und Buildfiles und Config-Dateien, die niemand anderes mehr ändern muss (oder auch ändern dürfen sollte)? Jemand, der sich damit auskennt. Wer implementiert das Frontend mit der Visualisierung? Jemand der sich damit auskennt. Wer implementiert das Machine Learning in Hintergrund? Jemand der sich damit auskennt. Wer kümmert sich um die Datenbankschicht, oder die Sicherheit? … Wer behauptet, dass er das „alles“ kann, macht sich lächerlich. Und das allgemeine Gegenargument, dass das, was jeder dahergelaufene Bachelor hinkriegt, nachdem er sich einen Blogpost mit einem Tutorial durchgelesen hat, „gut genug“ ist, erscheint mir haarsträubend, und kann nur von Leuten stammen, die in ihrem Leben bisher viel zu wenig von dem mitbekommen haben, was dabei rauskommt. (Wir reden in 10 Jahren nochmal, OK?)

Wie, „Software entwickeln“? Total verrückt :roll_eyes: *seufz* Natürlich gibt es Building Blocks. Und natürlich kann man viel machen, indem man diese Building Blocks einfach mit Glue Code zusammenkleistert. Aber die Frage ist doch: Was ist dann noch die „Informatisch-Programmiererische Leistung“, die da dahinter steckt? Oder wichtiger: Wer hat die Building Blocks erstellt? (Und was sind die Bedingungen, die erfüllt sein müssen, damit etwas als „Building Block“ vorliegen kann?).

Theoretisch ja. Und das ist grundsätzlich auch gut. So gesehen sind Container das technisch und konzeptuell eine Ebene höher liegende Analogon zur guten, alten JAR. Aber die Fragen nach den Building Blocks stellen sich nach wie vor. Unter anderem: Welche Aufwände müssen für das Zusammenkleistern betrieben werden? An jeder Schnittstelle müssen sich zwei Experten unterhalten. Da führt meines Erachtens kein Weg dran vorbei.

Wenn du meinst. Dennoch sei mir noch letzte Frage erlaubt. Meinst du wirklich, wenn nur noch Experten Software entwickeln würden, nach jeglichen Best-Practices und erst wenn das Stadium der Perfektion erreicht wäre das ganze dann ausgeliefert würde, würden wir dann in diesem Forum überhaupt noch diese Unterhaltung führen können?

ein Autoschrauber hat keine Ahnung davon was im Zylinder vor sich geht, welche Materialkennwerte das Metall haben muss, welche chemischen Eigenschaften der Treibstoff, außer soweit vorgegeben nach Anleitung wichtig, etwa zu prüfen,

der Messerfabrik-Angestellte würde vor einem Schmiedefeuer dumm dastehen, usw.,

und Informatiker müssen auch nicht alles bis ins Detail wissen,
dass es im Studium mehr oder weniger oberflächlich drankommt ist nicht mehr die übliche Schulbeschäftigung, Wissen für Prüfung lernen und danach in 8 von 10 Fächern wieder vergessen, bis auf die eigenen Interessengebiete,

jemand könnte sich mit allen Details zu einem Gebiet auskennen, ja, aber wem hilft das? nicht einer Firma die noch 9 andere Spezialisten anstellen muss weil der Purist nur ein Gebiet beherrscht,
ein Generalist weiß genug von allem, bekommt es lauffähig hin und damit Ergebnis, oder arbeitet im Team besser auf Anforderungen anderer usw., was ist daran schlecht?
wenn es nicht klappen würde, würde es sich schon von selbst korrigieren, so schlau sind alle Beteiligten,
es ist (mehr oder weniger) so, eben weil es klappt,

Tools von DB bis Visualisierer sind so komplex, keiner kann das alles beherrschen bzw. bringt überwiegend nix,
es ist durchaus Platz für Experten in Bereichen, wo Expertenwissen wichtig ist, DB-Optimierung, beste Präsentation, höchste Sicherheit, ob in wichtiger Anwendung oder eben auch kreativer Fortentwicklung,

und es gibt den tausendfachen Masseneinsatz, wo die Standard-Grenzen meist ausreichen, und eben Kosten der entscheidende Faktor ist, da muss man nicht in Schönheit bankrott gehen, sondern effizient alles umsetzen, Tutorial-Stand reicht in der Tat

es bleibt schon noch genug übrig…,
z.B. DB-Queries schreiben und mit der Java-Fachlogik verbinden, ohne ein Jahr den Aufbau der DB in allen Nuancen zu studieren?!

vielleicht wieder ein langweiliger Job, aber der den es braucht für überschaubares Geld, damit die Wirtschaft läuft,

mit einem Genialen, der lieber kreativ die Welt voranbringen will, ob auch für Spitzengehalt oder nicht, kann die Standardfirma 0815 nicht viel anfangen…,
genauso die Kunden dahinter, die Online-Überweisungen oder funktionierendes youtube laufen haben wollen, keinen neuen Quantendurchbruch

Eine Unterhaltung ohne Titten, Saufen und Kiffen - soviel zum Thema Kreativität.

Womöglich hat er auch noch nie Scrum-Floskeln auf bunte Post-Its geschrieben und an eine Wand geklebt.

Hi Leute,

bin wieder da!

1 „Gefällt mir“

Vermutlich alles wegen meines neuen Hintergrundprofilbildes.
Behalte mir vor, das morgen wieder in Meeresquallen zu ändern.
Willkommen zurück.

Nun, wie so oft: Es gibt keine klaren Abgrenzungen. Es gibt einige „Schwellen“, die überschritten werden müssen. Das Forum hier (d.h. discourse) z.B: Man kann lesen, schreiben, scrollen, sieht eine MD-Vorschau, abgesendete Beiträge landen in der DB. Wenn es da Hacks oder Workarounds oder „unschöne Konstrukte“ gibt, oder auch mal eine Funktion nicht kommentiert ist ( :astonished: ) ist das nicht so wichtig. Die Schwelle, die überschritten wurde, ist: Es funktioniert. (Können wir uns darauf einigen, dass das eine sinnvolle baseline ist?). Ein wichtiger Punkt: Wenn etwas nicht funktioniert, dann ist jemand dafür verantwortlich. Es wird eine issue in GitHub gestellt, und dann wird sich hoffentlich jemand darum kümmern, der 1. sich damit auskennt, 2. engagiert ist, 3. eine gute Lösung finden will.

„Alle Nuancen“ - ja, das ist der slippery slope. Wenn derjenige dann eine SQL-Tabelle ohne Primary Key erstellt und mit 5 Threads gleichzeitig queries mit NOT IN absetzt und, weil das ja so langsam ist, die Daten in einer public static ArrayList<ResultSet> cacht, aus denen er dann bei einem GET mit einer stream().function(that -> spans(several)).hundred(characters -> because.stream().functions.and(lambdas).are(currently -> what(isHypedAndFancy).in(java)))) Daten rauslutscht, und jemand anderes dann rausfinden muss, warum ~„im Frontend manchmal falsche Daten angezeigt werden“, wird derjenige nicht begeistert sein.

(Spoiler: Ich bin „derjenige“. Meistens. Anscheinend.)

Irgendwie scheinen manche meiner Aussagen solche „extremen Gegenpositionen“ zu provozieren :confused: Darum nochmal die Fragen:

  • Gibt es Unterschiede in bezug auf die Kompetenz, was Softwareentwicklung angeht?
  • Hat diese Kompetenz Einfluß auf die Qualität der Software? (Wenn nicht: Worauf dann?)
  • Gibt es Entwickler, die das, was ich als „Symptome schlechter Software“ bezeichnen würde (d.h. unnötige Komplexität, unklare Schnittstellen, unüberschaubare und undokumentierter Zustandsraum etc) gut finden?
  • Will irgendeine Firma „schlechte Software“?
    (Das letzte ist heikel. Natürlich sagen alle „Nein!“, aber … gute Software kostet eben Geld, darum … tja…)

Du meinst, er ist ein richtiger Softwareentwickler® (im Gegensatz zum "Softwareentfrickler)? Gut möglich, das würde die (für mich schon fast ans naive grenzende) Annahme erklären, die hier teilweise durchzuschimmern scheint: „Vieeeel schlechter als das, womit ich mich beschäftige, kann das, was es da draußen so gibt, ja gar nicht sein“. Doch. Das ist nach unten hin offen.

(TODO: Hier einen Frauenwitz einfügen, speziell um Bleiglanz angemessen zurückzubegrüßen)

Klingt nach „falscher Arbeitgeber“ oder „falsches Projekt“. Ich entwerfe und entwickle Software. Ich weiß auch nicht, was Du mit Lakai meinst, aber meist baut man Software für Menschen. Für die bin ich natürlich ein Lakai - in dem Sinne, das mein Team und ich Lösungen für die Probleme finden.

Auch hier: Vermutlich falsche Firma oder falsches Projekt. Meine Erfahrung ist da ganz anders. Natürlich muss das Frontend gut aussehen, denn damit wird gearbeitet. Und ich kenne kein Framework, dass mit DDD und hexagonale Architektur abnimmt. Oder das fachliche und technische Schneiden von Domänen. Und ich muss irgendwie ziemlich viel implementieren.

Schön, dass Bleiglanz hier wieder gastiert, aber wo hat er @Conny gelassen? :smile:

wie steht es bei dir mit Extremen? :wink:

man kann natürlich alles falsch machen und bei einen unbekannten Framework X nach einer Seite Tutorial in der Tat so rangehen,
aber DB mit Primary Keys usw., das ist ja nun etwas was fast jeder vom Studium noch in Erinnerung hat und was in Tutorials auch überall drankommt, auf Seite 10 dann eben, kein Geheimwissen,

mit ‚Allen Nuancen‘ meinte ich wiederum, wie die DB an Code implementiert ist, oder auch nur die internen Konzepte einer effizienten Ausführungsumsetzung eines Joins auf zwei Tabellen, das muss man einfach nicht wissen, einfach nur das fertige Tool korrekt anwenden

zur Anwendung der DB gehört natürlich die Kenntnis der Dinge, die eben in der Macht der Anwender zur direkten Anwendung stehen, SQL mit alle seinen Mitteln, Primary Key, Indexe, die richtigen Joins, wo Filter, Gruppierung, Sortierung eingesetzt usw.

das kann man angemessen beherrschen oder halt ein Dummy sein, das gilt überall, aber auf jeden Fall kann das ein Fullstack (und schon Informatik-Student) so beherrschen wie es für die meisten Anwendungsfälle sehr gut reicht,
es braucht (in den meisten Fällen) keinen DB-Spezialisten, der zu allen anderen Themen nur Däumchen dreht,

wenn etwas nicht hinhaut fällt es bald auf und dann wird dran gearbeitet, notfalls intensiver mit einer Schicht zu beschätigen, das ist nicht haarsträubend, sondern Realität,


ich selber kann DB einigermaßen und paar andere Dinge,
aber z.B. gar nicht Webdesign, wenn ich das machen müsste würde ich auch erst die erste Seite Tutorial lesen und wahrscheinlich ein Webseiten-Äquivalent zu ‚ohne Primary Key‘ bauen,
das ist dann auch klar, und wenn man sofort viel besseres wollte könnte man jemanden extra dafür anstellen,

will man aber nicht, und es reicht der einfache Stand, evtl. nach und nach verbessert,
wenn es nicht mehr reicht ruft man einen echten Experten oder einen FullStack mit mehr Erfahrung in diesem Bereich und der kann dann den Quälkot anschauen oder auch gleich neu anfangen

→ wo liegt bei diesem Ablauf ein Problem vor?
alles jederzeit bekannt und zu behandeln mit so viel Geld wie einzusetzen zu dem Zeitpunkt an dem es für richtig gehalten

wenn man nur Angestellte hat die in allen Dummy sind, das ist ein Problem, das gilt aber immer und überall, kein besonderes Informatik-Thema,
man kann auch einen vermeintlichen (selbsternannten) Experten haben der doch auch nur Müll produziert :wink:


dass jeden Tag 100 Programme irgendwo im Lande platzen und dann vielleicht Experten zur Reparatur gerufen werden mag sein, wie in jedem Berufs-/Wirtschaftszweig, aber genauso funktioniert es an 10.000 anderen Stellen ohne Probleme,

würde man alles nur mit Superexperten machen dann vielleicht fast nie Probleme, aber auch nur 1000 Programme zu entwickeln möglich, weil nicht mehr Experten da, und jeweils 3x so teuer…

würde das Konzept Fullstack oder jedes andere Konzept nicht konstant funktionieren wäre es doch sofort im Verruf, würde sich selber korrigieren,
nicht von einzelnen Fällen auf alle schließen…

Find’ ich toll. Vor allem als Konter auf andere :wink:

Da schließt du vielleicht von dir auf andere. Und das Beispiel „DB ohne primary key“ war ein Suggestivbeispiel, das ich aus meinem Websuchergebnis zu ~„bad practices SQL“ kopiert hatte. Gewusst hätte ich das nicht. Und das mit dem NOT IN noch viel weniger. Aber wenn mir morgen jemand die Aufgabe hinwirft: „Hier, erstell’ mal eine SQL-DB, und frag’ dann alle Kunden ab, die noch kein Produkt bezahlt haben“, dann mache ich das eben. Da wird dann eine Table "customers" rauskommen, vermutlich ohne primary key, und wenn stack overflow (oder schlimmer: irgendein Blog post, oder noch schlimmer: irgendeine Anleitung) sagt, dass man das so machen kann, wird da bei der Abfrage ein WHERE customer NOT IN buyers vorkommen. Und derjenige, der das morgen warten muss, wird entsetzt aufschreien: „Welcher Stümper hat denn das verbockt?! Wir müssen die komplette DB neu erstellen, und die ganze Abfragelogik ändern!“. Und mit ist das dann egal. Was ich gemacht habe, hat ja „„funktioniert““, und ich muss meine Zeit nicht mit der Wartung des Mists verschwenden, den ich da verzapft habe. Die Zeit verschwenden andere. Die Kosten für die durch unprofessionelle Arbeit verursachten Zeitaufwände habe ich nicht zu tragen, und genaugenommen können diese Kosten nichtmal beziffert werden. Nach mir die Sintflut.

(Irgendwo ist da gerade Ironie und Sarkasmus reingerutscht…)

Aber das gehört überall dazu. Und wie aufwändig ist es, das alles zu lernen? Ich meine, richtig - nicht so, dass man es erstmal falsch macht, und dann von einem Kollegen gesagt bekommen muss: „Hey, mach’ hier mal nen outer join“, um dann mit Google nach „How to outer join“ und StackOverflow durch irgendwelche Implementierungsversuche zu stolpern.

Und wenn in einem Projekt dann Java, Maven, Spring Boot, Neo4J, Solr, Kafka, Flink, Angular, TypeScript, Jenkins und Docker zusammenkommen, kann man das dann alles „angemessen beherrschen“? Wenn man es nicht kann, wie lange dauert es, bis man sich eingearbeitet hat? (Rhetorische Frage. Wozu einarbeiten, wenn es Google+SO gibt).

Natürlich: Was auch immer man da (dann ggf. zum ersten mal) macht, es wird nicht gut sein. Wenn man sich mit Angular beschäftigen will, dann arbeitet man ein Tutorial durch, erstellt mal ein TicTacToe damit, spielt ein bißchen rum, liest anderen Code und Best Practice Guides. Wenn man das einfach machen muss, macht man irgendwelchen Mist, über den sich der Nachfolger ärgert. Kann es sein, dass ich einfach eine Form von Verantwortungsbewußtsein habe, die andere nicht haben?

Wie, etwa ein Purist, der nur ein Gebiet beherrscht? :roll_eyes: Vielleicht hat auch keiner die Eier, „„zuzugeben““: „Ich bin Experte für ein bestimmtes Thema“. Vielleicht traut sich keiner, zuzugeben, dass es auch Dinge gibt, mit denen man sich nicht auskennt? Wer nicht alles kann, hat ja quasi schon versagt. Jeder muss die Fassade des Universalisten aufrecht erhalten. (Das funktioniert aber nur bedingt. Eine Bedingung ist, dass man nur mit solchen Leuten zu tun hat. Blender durchschauen sich nicht gegenseitig.).

Ich bin jedenfalls überzeugt, dass ein Team von 10 Leuten, die sich in ihrem Fach auskennen, weit bessere Ergebnisse erzielen kann, und das auch weit schneller (und damit im Endeffekt billiger), als 10 Leute, bei denen jeder alles macht, und sich in jedes Thema gerade so weit einarbeitet, dass er den größten Mist, den sein Kollege am Tag vorher gemacht hat, erkennen und zu anderem (nicht notwendigerweise kleinerem!) Mist refactoren kann, so dass es mal wieder läuft.

Ööhhh… nein?! Es geht ja nicht um „platzende“ Programme. Das ist eine falsche Wahrnehmung oder Annahme, die mir schon oft begegnet ist. Es ist nicht so, dass etwas „platzt“ und dann „kaputt“ ist. Natürlich gibt es das für jede Instanz eines Programms: Da fliegt dann eine Exception, und man muss die beheben und neu starten. Aber wenn dann eine andere Exception fliegt, oder einzelne Funktionen ~„irgendwie nicht richtig funktionieren“, oder die Umsetzung eines Trivial-Features mehrere Wochen dauert, dann merkt man, dass das alles Symptome eines Prozesses sind. Und diesen Prozess würde ich nicht damit vergleichen, dass etwas „platzt“, sondern dass man sich in Morast festfährt oder in Treibsand versinkt. Alles geht immer langsamer. Alles wird immer aufwändiger. Alles wird immer schlechter. Und früher war alles besser :wink:

(Nochmal: Die Aufwände kann man nicht beziffern oder vergleichen. Innerhalb der IT kann man praktisch kein ROI definieren. Suggestiv: Es wird Zeit für Bugfixing allokiert, und das ist zu wenig, und die Frage, warum es so viele Bugs gibt, stellt niemand…)

Es mag programmiererischer Weltschmerz sein, oder Idealismus, aber … vielleicht mal die Frage, an diejenigen, die „Software entwickeln“: Glaubt ihr nicht, dass ihr viel effizienter arbeiten könntet, wenn ihr euch nicht so viel mit ~„dem ganzen Drumherum“ (und insbesondere den Fehlern, die andere verursacht haben) beschäftigen müßtet?

Etliche Abstraktionsebenen höher: Unsere gesamte Zivilisation ist erst durch Aufgabenteilung (d.h. die Spezialisierung einzelner) entstanden, sogar erst dadurch möglich geworden. Aber in der IT ist das irgendwie andersrum? Lötkolben, anyone? :roll_eyes:

EDIT: Schwer, da was profunderes als List of failed and overbudget custom software projects - Wikipedia zu finden. Wer gibt es schon gerne zu? :wink:

Mal von unten nach oben.

Ach, solange es nicht zu dem BLOB wird…?

Endlich weiß ich, wie das heißt. :wink:

Frustrierlich oder gar the Blob!

Jeder Relation eine ID-Spalte spendieren. :wink: *duck und wegrenn*


Wochenende Thread. :wink:

ein paar Seiten weiter oben war das Thema vielleicht noch (interpretiert) 'Informatik ist nur langweilige Standard-Jobs, wer will 10.000 Euro für Rumsitzen, wo ist die ‚Informatisch-Programmiererische Leistung‘?) und inzwischen eher Allgemeinkritik dass zu viele Programmierer Dummys sind, die sich nicht mit einem Thema besonders beschäftigen?

schwierig jeweils mitzukommen, immer nur auf ein Thema zu reagieren und dann ins nächste gedriftet…

jedenfalls kann ich beim aktuellen auch nicht recht mitziehen,
sorry, die Welt besteht nicht aus lauter Experten, die entweder gleich alles können oder jeweils ein Thema jahelang studieren (zusätzlich zu Informatik an sich), und jedes Team setzt sich nur aus mehreren solcher Experten zusammen,

Informatik ist Massenarbeit, ein ‚Studium‘ in Deutschland ist nur eine besserklingende Ausbildung, die 1-10% Experten haben es, ja, vielleicht noch höheres wie Doktorarbeit dazu um sich wirklich abzusetzen, aber auch ein Teil der Normalos hat Studium, ganz normaler Schritt nach Gymnasium,
vielen ist dieser Weg versperrt, nur Realschule, Ausbildung, aber eher wegen Armut/ fehlende Konzentration in Jugend

Studium/ Informatik ist nichts elitäteres, sind die Mechaniker der heutigen Zeit, weil Computer die Autos der heutigen Zeit sind,
muss man nicht bejubeln, aber eben auch kein Weltschmerz, die normalste Sache der Welt, in jedem Wirtschaftszweig,

im Mittelalter waren auch Buchhalter und Lehrer noch eine höhere Zunft, praktisch alles über Bauer und Lagerarbeiter hinaus, heute alles Jobs für Jedermänner und -frauen,

wenige wie Architekten/ Richter/ Künstler halten sich etwas rein, mehr Klasse als Masse, und in jedem Job findet eine mehr oder weniger funktionierende Selbstsortierung statt, die besten Kräfte für die höheren Stellen, kreativen Entscheidungen und Weiterentwicklungen, die Normalos für die Standardaufgaben

Informatik ist der Durchschnitt der Gesellschaft, nicht elitäres, und Fullstack das Normale darin, kein Team besonderer Experten…, zu ggfs. x Monaten Einführung in ein benötigtes Thema reicht es allemal, wenn wichtig, und natürlich Lernen von erfahrenen Kollegen, ein Grundpfeiler jedes Unternehmens/ des Funktioniernes der Welt!

klar liefern Experten bessere Ergebnisse, wie in anderen Jobs ein Team von Isaac Newtons, aber wieviele solche Teams wären möglich zu welchen Kosten, und was sollten die 90% der Gesellschaft machen außer zuschauen? auch im Kindergarten wird jemand solche Theorien aufstellen können, wie doch Supererzieher besser wären als die Standardkräfte (auch ein Studium)

Meiner Erfahrung nach passt ein Teil der Grundannahme nicht wirklich zu meinen Erfahrungen.

Jemand der Experte auf einem Gebiet ist, ist oft auch in vielen anderen Gebieten sehr gut. Erfahrungen aus der Schulzeit sind, dass manche Schüler eben über alle Fächer hinweg die besten Noten gehabt haben. Studium dito. Und auch im Job gibt es die Leute, die einfach “überall” bescheid wissen und die dann die erste Anlaufstelle sind.
Also kein Entwederoder, sondern eher ein Und. Das rührt daher, dass man bestimmte Skills braucht (Intelligenz/Fleiss/Organisationstalent/Strukturierte Arbeitsweise) um Experte auf einem Gebiet zu werden und diese Skills auf dem Weg dorthin weiter geschult werden. Damit tut man sich dann auch um einiges leichter andere Gebiete zu meistern. Zudem ist es auch ein Training des Gehirns, dass dann eben trainierter ist und besser funktioniert.


Bei Teams ist auch die Arbeitsweise von belang. 10 Experten auf ihren Gebieten wären wohl daher auch besser, wenn jeder von ihnen nur eine fachfremde Aufgabe übernehmen würde, als das andere beschriebene Team.
Ein Team von Experten das miteinander arbeiten soll, zieht aber auch den entsprechenden Kommunikations und Organisationsaufwand nach sich.

Ein Typischer Use-Case ist eine Anwendung zu erweitern um Daten aus der Datenbank zu holen und dem User anzuzeigen. Ein Full-Stack macht da in Spring einen Controller, der den Request entgegen nimmt. Schickt eine Query zur Datenbank um das Ergebnis in einem Template zu rendern. Wobei das Template eine Kopie eines der vielen anderen Templates ist, die man schon in der Anwendung hat. Das wird dann getestet und der CI-Server deployt das ganze.
Klar kann ich da auch 5 Experten (Backend, Frontend, DB, QA, Build-Spezi) beschäftigen. Die vereinbaren dann ein Meeting in 2 Wochen um die Details zu klären, planen dann ein wann sie für das ganze Zeit haben. Um dann weitere 2 Wochen später die Ergebnisse zu besprechen und das ganze dann im nächsten Jahr zu releasen weil QA keine Zeit zum Testen hat.


Ein Grossteil der Welt beschäftigt sich nur mit reparieren oder ersetzen defekter Geräte. Selbst Ärzte, weil die Leute zu doof sind gesund zu bleiben (Ich kucke ganz unauffällig auf die Raucher). Automechaniker. Klemptner, Elektriker und ganz zu schweigen von Verkäufern, die defekte Geräte durch einen Neuverkauf ersetzen. Warum sollte es in der Informatik nicht auch so sein.
Es liegt oftmals in der Natur der Sache, dass es nicht möglich ist fehlerfreie Produkte zu entwickeln. Das ist durch die Komplexität getrieben. Aber das ist auch das was die Kunden sich wünschen. Ein VW-Käfer ist robust und einfach zu reparieren. Aber versuch doch heute mal einen Neuwagen ohne Kat, ESP, ABS, Airbag, Elektrische Fensterheber, Klimaanlage, Servolenkung, Navi, OBD, Bluetooth-Radio, Bremskraftverstärker, mit 36PS zu verkaufen.

Darüber kann man sich Ärgern oder man akzeptiert es, weil man das nicht ändern kann oder will.

Das hängt IMHO schon zusammen: Ein guter Frontend-Entwickler kann ein exzellentes, intuitives, wartbares, modulares (kurz: „gutes“) Fontend entwickeln. Ein DB-Experte eine gute DB aufsetzen. Ein REST-Experte eine gute Schnittstelle definieren. Ein DevOps-Experte eine gute build-Infrastruktur. (Dass ich da jetzt noch nirgendwo reinpasse, ist ein anderer Punkt :roll_eyes: ).

Aber wenn keiner von denen, die sich damit beschäftigen, „Experte“ ist, und jeder sich um alles kümmert, dann ist einfach nichts davon gut. Es gibt keinen Punkt, an dem sich jemand mit dem, was er da macht, identifizieren oder sich darin „verwirklichen“ kann. Auch wenn das pathetisch klingt: Das ist das, woraus das Gefühl resultiert, für etwas verantwortlich zu sein, und das Bestreben, dafür überhaupt eine gute Lösung zu finden.

Dass meine persönliche Präferenz die ist, auch mal kreativ-experimentell neue (ekliges buzzword: innovative) Sachen zu machen (manche nennen das dann „Forschung“ :roll_eyes: ), ist eher ein Detail. Ich beschäftige mich in meiner Freizeit auch (oder sogar überwiegend) damit, zu versuchen, pragmatische, sinnvolle, nützliche Sachen zu machen. Ich behaupte nicht, dass ich das schaffe, aber ein suggestives Beispiel: Wenn man auf GitHub nach „obj loader“ sucht, findet man >500 Ergebnisse. Nicht alle, aber sicher noch einige hundert sind loader für Wavefront OBJ-Dateien. Irgendwann habe ich (trotzdem!) mal GitHub - javagl/Obj: A simple Wavefront OBJ file loader erstellt, und da mit recht konkreten Zielen versucht, was vernünftiges zu machen. Wenn dort ein Bug drin ist, dann kümmere ich mich darum. Wenn dort ein Feature gewünscht wird, dann nehme ich das ernst. Und offenbar ist dieser loader jetzt ein asset, das von vielen Leuten als „nützlich“ angesehen wird. Leute können das verwenden, und sie sparen daduch Zeit, und können sich um die Sachen kümmern, mit denen sie sich auskennen, und wo sie eben ihre Zeit investieren wollen. Vielleicht ein Frontend in Angular, mit dem man die geladenen OBJs anzeigen kann. Außerhalb der Open-Source-Welt scheint es aber eben so zu sein, dass jeder alles macht, so dass es „gerade so läuft“, ohne echtes committment, und ohne, dass irgendwas rauskommt, was hinausgeht über eine Webseite die hübsch aussieht aber letztendlich kaum mehr als ein Datenbankadministrationsfrontend ist.

Das alles ist mein Eindruck, der falsch sein könnte, den ich aber nicht zuletzt hier zu vermitteln versuche, um mein verzerrtes Weltbild durch die Antworten gerade biegen zu lassen. Das passiert aber nicht. Stattdessen zucken alle mit den Schultern und sagen „Joa, das ist halt so!?“.

Schade.

Informatik ist die „Wissenschaft von der systematischen Darstellung, Speicherung, Verarbeitung und Übertragung von Informationen, besonders der automatischen Verarbeitung mithilfe von Digitalrechnern

Das sagt zumindest Wikipedia :wink:

Und ich widerspreche den meisten Punkten ja nicht (sofern sie sich nicht auf Informatik allgemein beziehen, sondern auf Softwareentwicklung). Der Nerd, der alleine zuhause sitzt und irgendeine hyperspezische Lib bastelt und als Open Source bereitstellt bestenfalls eine nützliche Kuriosität. Schlagworte wie „Teamarbeit“ und „über den Tellerrand schauen“ braucht man jetzt nicht breitzutreten.

Ich widerspreche aber vehement dem Gedanken, dass Spezialisierung etwas „schlechtes“ sein soll, und lieber jeder alles nur so gut können sollte, dass er gerade so irgendwas zum laufen bringt, und nur bei Bedarf mit viel Flickschusterei dort nachgebessert wird, wo’s knirscht.

Und ich stelle kritischst in Frage, ob das mehrfach verklausuliert vorgetragene Argument der geringeren Kosten wirklich zutrifft. Wieder mal suggestiv: Es werden entweder 5 Leute eingestellt, die jeweils 40k kosten, und „Allroundtalente“ sind (d.h. alles ein bißchen können, aber nichts richtig). Oder es werden 5 Leute eingestellt, die auch jeweils 40k kosten, aber echte T-shaped skills haben, und sich gegenseitig ergänzen, und auch Verantwortung für ihren Aufgabenbereich übernehmen können und wollen. Welches Team wird in kürzerer Zeit die bessere Lösung liefern? Wo gibt es weniger „churn“ durch Bugfixing? Wo gibt es weniger Verzögerungen, weil Leute sich noch schnell in ein Thema einlesen müssen, bevor sie ein Ticket bearbeiten? Und wo gibt es weniger Refactoring von halbgaren, auf Blog-Tutorials basierenden Lösungen, die die Leuite erstellt haben, die sich nur schnell in ein Thema eingelesen haben, bevor sie ein Ticket bearbeitet haben?

(Ich mag es zumindest, wenn es nich so schwer ist, sich einzureden, man wüßte, was man tut :confused: )

Ich denke, ein wesentlicher Teil ist eben der Unterschied zwischen Arbeit und Freizeit. Wenn du in deiner Freizeit an deinen Projekten arbeitest, dann ist es eben deine Freizeit und dein „Herzblut“. Nur davon lässt sich schlecht der Magen füllen.
Ich bin der Meinung, dass es oft vorkommt, das Informatiker im Job Dinge auch mal etwas unschöner lösen. Es mehr frickelnd damit es dann am Ende wenigstens läuft. Seien wir doch mal ehrlich, wenn der Chef meint du brauchst für den Kram zu lange und jemand anderes kriegt das schneller für weniger Geld hin, dann hast DU das Problem deinen Job zu behalten. Und wenn es der Firma am Ende um die ohren fliegt, tja dann letztendlich auch.
Aber da ist das Problem dann nicht zwingend bei den Entwicklern sondern bei denen die letztendlich auf die Finanzen schauen/achten.
Natürlich gibt es auch Ausnahmen wo ruhig auch mehr investiert werden kann für die optimale Lösung aber dann muss man eben so eine Arbeit erstmal finden, wenn es so wichtig ist.
Und ja Open Source lebt sehr davon, dass wenn Features gewünscht werden, diese eingebaut werden.
Aber wenn du dafür Geld verlangst, lässt du dir natürlich auch die Änderungen bezahlen, wir könne noch nicht von Luft und Liebe leben (gewisse zurückgekehrte Personen vllt ausgeschlossen. scnr)

Ich denke nicht, dass hier darin großartig wiedersprochen wird. Nur muss man eben auch sehen, was die Firmen einstellen und was nicht. Und am Ende geht es nur ums Geld. Selber mitbekommen: DB Spezialist raus und dafür 3 andere rein weil sie billiger sind.
Wenn eine Firma es sich leisten kann und auch den Sinn darin sieht nur Experten einzustellen wird sie das auch nach Verfügbarkeit eben jener tun. Wenn sie einfach nur was hingeklatscht haben will, dann eben nicht

was war die Quintessenz dieses Abschnitts?
jede Firma die vielleicht auch mal einen OBJ-Loader oder was auch immer einsetzt würde es lieben, ein Team einen Monat hinsetzen und die perfekte Lösung für alle Ewigkeit bauen zu können, nur zufällig weder die Zeit bzw. vor allem nicht die zig Tausend Euro dafür,
sondern noch 10 andere Aufgaben am gleichen Tag

wenn es seriöse Open Source/ fertige Frameworks zu akzeptablen Preisen gibt, wird sie gerne genutzt, sonst wohl intern irgendwas halbgares gebaut, auf 1/3 Weg zu fertigen Open Source gestoppt, von laufender Unterstützung ganz abgesehen,

100 Firmen machen das so zum Preis von z.B. 100xY, während eine koordiniere Entwicklung zum Preis von 3xY besser für alle wäre,
aber das ist ja auch so ein Standardproblem, welche Firma übernimmt die dreifachen Kosten, kümmert sich später darum usw.?

in wichtigen Fällen findet sich ein kommerzieller Anbieter für Frameworks, bei Kleinkram halt nicht, private Wohltäter helfen ein wenig über die Lücke hinweg


du stellst gleich mal 5 Dummys 5 vermeintlichen Qualitätskräften zum gleichen Preis gegenüber? sehr fair :wink: ,
wo macht es Sinn, 5 Leute mit gleichen Fähigkeiten zu haben, eher nicht bei langfristiger Entwicklung eines einzelnen Projektes…

aber wenn die Firma verschiedene zu besuchende Kunden hat,
verschiedene langfristige Programme mit nur seltenen Eingriffen,
soll bei jedem kleinen Bug potentiell das ganze Team für einzelne Stufen beteiligt werden, Meetings?


ein perfektes Team zu einer Aufgabe mühsam zusammengesucht kann ideal sein, aber schon nicht die neue Aufgabe des nächsten Tages genauso optimal lösen,

es gibt Krankheiten + Urlaube, von 5 Leuten fehlt im Worst Case locker ein halbes Jahr immer jemand,
Teams wechseln/ Mitarbeiter kommen und gehen, wenn nur einer eine Ahnung und Verantwortung in einem Bereich hat, dann bei Wegfall echtes Problem,

in einer idealen Welt mit perfekten Tests, Anforderungskatalogen + Doku, Nachfolger mit gleichen tiefen Verständnis für natürlich optimalen Code des Qualitätsentwicklers, geht es reibungslos, aber die Realität…

wie steht es auch mit Skalierung bei schwankender Arbeitslast, entweder 5 neue dazu oder gar keiner? aus welchem Gebiet der einzelne 6. Angestellte oder doch mit Allrounder angefangen?..

wo kommen eigentlich die Experten her, nach Studium im Eigenstudium weiter oder doch eher als Dummy in Firmen und mitauszubilden?

für ein konkretes einzelnes Projekt, absehbaren Aufgaben, Budget usw., da mag ein neu zusammengestelltes Team auf Zeit klappen,
weniger für eine Firma, die genau Geld für ~5 IT-Kräfte hat und dauerhaft besteht…

1 „Gefällt mir“

Sicher. Sich da etwas vorzumachen, wäre naiv. Zu glauben, dass jemand, der 8 Stunden am Tag für die Firma arbeitet nicht auch mal 12 Stunden für die Firma arbeiten würde, wenn er die Möglichkeit hätte, dann etwas gutes und sinnvolles zu machen, aber auch.

Da steckt schon wieder diese Annahme drin. Ich hab nicht den blassesten Schimmer, wo die herkommt. :confused: Wofür geht denn bei den Leuten, die eine „“„normale Informatiker-Arbeit“„“ haben, jeden Tag die meiste Zeit drauf? Planen? Überlegen? Implementieren? Testen? Oder „alten Code lesen und versuchen, rauszufinden, warum er nicht funktioniert“?

Wenn man sich Mühe gibt, und ein klares Ziel hat, kommt vielleicht etwas raus, was irgendjemandem nützt, und damit Zeit und damit Geld spart. Warum erscheint es anscheinend allen so abwegig, dass es sinnvoll sein könnte, zu versuchen, etwas „gut“ zu machen?

Das " :wink: " verstehe ich nicht. Wenn jemand behauptet, dass er sich mit 20 Technologien auskennt und Full-Stack-Entwickler ist, dann (ist das, meinen Definitionen nach, eine Lüge, aber die bemerkt niemand - siehe oben - und dann) bekommt er als das Universalgenie, das überall gesucht wird auch ein hohes Gehalt.

Da kommen jetzt viele Sachen zusammen. Die Frage, wie breit der waagerechte Strich des „T“ (der T-Shaped Skills) ist, wie viel Überlappung es gibt, Truck Number, wie gut die Dokumentation ist, wie schnell die Belegschaft wechselt, und (ganz wichtig) : Wie schnell sich Projektinhalte ändern.

Für irgendeinen halbseidenen „IT-Dienstleister“, der eben genau solche Universalgenie-Absolventen mit „abwechslungsreicher Arbeit“ anlockt und ihnen die Möglichkeiten gibt, die sie suchen, und sie dann auf ahnungslose Kunden losläßt, ist die hier bisher angeklungene Einstellung vielleicht noch eher angebracht als für eine Firma, die ein konkretes Ziel, eine Aufgabe oder ein Produkt hat. Eben eine Firma, die nicht den 1001. Webshop mit MEAN-Stack für einen mittelständischen Getränkevertrieb runtercodet.

(Das schwang schon in meiner Frage nach der „Software als Asset“ mit. Es gibt natürlich auch viel Wegwerf-Code. Der kann auch von Wegwerf-Programmierern geschrieben werden. Identifiziert sich jemand mit diesem Begriff? :wink: )

Entweder in Beruf: Softwareentwickler. Gibt es das? oder hier muss ich das einfach posten:

(Ich hoffe, jeder erkennt den Bezug…)

1 „Gefällt mir“