Wie Manager Programmiersprachen auswählen

23

Es ist für niemanden ein Geheimnis, dass Manager die Programmiersprache, die für ein Projekt verwendet wird, auferlegen können und werden.

Als Programmierer habe ich das noch nie verstanden.

Aber jetzt denke ich: Ich hatte gerade eine Enthüllung, als Joel Spolsky im Podcast sagte, sie sollten QuickBooks verwenden, weil "jeder Buchhalter auf der Welt weiß, dass". Dies kam mir sehr ähnlich vor, als ich "Java gewählt habe, weil es jeder Programmierer auf der Welt kennt".

Nachdem ich dasselbe Problem aus einer anderen Perspektive gesehen habe, weiß ich nicht viel über Buchhaltung, aber ich weiß etwas über Programmierung. Ich frage mich, wie ein Programmierer dazu beitragen kann, dass die richtige Programmiersprache für ein Projekt ausgewählt wird ?

Weltingenieur
quelle
Denken Sie immer daran, dass ein Manager jemand ist, der glaubt, dass neun Frauen ein Baby in einem Monat zur Welt bringen können!
minusSeven

Antworten:

29

Der Fehler, den viele Programmierer machen, ist, dass sie den Punkt nur auf der Grundlage des technischen Werts argumentieren (oder einfach zustimmen oder nicht zustimmen). Mit dem Management - und dem Geschäft als Ganzes - müssen Sie zuerst den Business Case und die Vorzüge für das Geschäft und dann die technischen Vorzüge diskutieren.

Dies geht über die Auswahl der Programmiersprache hinaus und durchdringt praktisch jede technische Entscheidung.

Lassen Sie mich ein Beispiel geben: PCs. Joel argumentiert (richtig), dass Entwickler erstklassige Maschinen haben sollten, weil Entwicklerzeit teuer ist. Damit hat er vollkommen recht. Aber wie argumentieren Sie das? Einfach:

Beispiel: Ich erstelle den Code ungefähr 20 Mal am Tag. Jedes Mal dauert es 3 Minuten. Wenn ich einen schnellen PC hätte, könnte ich ihn in 1,5 Minuten bauen. Für zusätzliche 1.000 USD alle zwei Jahre kann ich eine zusätzliche halbe Stunde pro Tag erhalten, was für einen Programmierer, der 100.000 USD verdient (mit Einstandskosten von mindestens weiteren 50%), ungefähr 10.000 USD pro Jahr entspricht.

Am anderen Ende streitet die Personalabteilung darüber, dass eine Größe für alle gilt, wenn es um Richtlinien und PCs geht. Daher verdienen ein Callcenter-Mitarbeiter 25.000 US-Dollar und ein Programmierer viermal, die aus irgendeinem Grund denselben PC haben sollten.

Die Technologieplattform und die Sprachen werden viele Faktoren in den Entscheidungsmix einbeziehen:

  • Strategische Beziehung zu bestimmten Anbietern. Wenn Ihr Unternehmen ein Microsoft Gold-Partner ist (oder wie auch immer es jetzt heißt), dann viel Glück beim Einstieg in Java oder Python.
  • Die IT-Abteilung argumentiert mit einer bestimmten Konfiguration, weil das Geld für die PCs aus ihrem Budget stammt.
  • Die IT-Abteilung entscheidet, dass alle Benutzer Windows 2000 ausführen sollten, da sie keine Linux-Benutzer haben.
  • Welche anderen Systeme hat das Unternehmen bereits (z. B. wenn sie Java für alles andere verwenden, ist es sinnvoll, es dafür zu verwenden, obwohl es für sich allein möglicherweise nicht die beste Wahl ist);
  • Risikoaversion gegenüber verschiedenen Plattformen oder Sprachen, einfach aufgrund mangelnder Erfahrung;
  • Mehr daran interessiert, mit dem oberen Management über Risiken zu streiten, als Entwickler glücklich zu machen;
  • Einige Manager treffen ihre Entscheidungen einfach, weil ihnen die Hände gebunden sind.
  • Budgetbedingte Gründe, obwohl dies auch zu Ihren Gunsten sein kann, da teure Boondoggles wie PVCS, alles, was von Rational hergestellt wird, usw. nicht in Ihr Haus gelangen.
  • Abneigung der Rechtsabteilung gegen Open-Source-Lizenzen;
  • Keine Einbeziehung des technischen Personals in die Planung und Projektschätzung;
  • Vertrautheit des Managers mit einer bestimmten Plattform (auch technische Leute sind daran schuld, aber in beiden Fällen ist es nicht unbedingt eine schlechte Sache - mit vielen Tools, die die Arbeit besser machen können, der Teufel, den Sie kennen).
  • Erfahrung des technischen Personals. Warum sollten sie Java, Python oder Ruby verwenden, wenn sie alle einen C # -Hintergrund haben?
  • Viele andere Gründe

Was auch immer der Fall ist, Sie müssen den Grund verstehen (und ich garantiere Ihnen, dass es mehrere Gründe geben wird) und die Verdienste in diesen Begriffen argumentieren. Einige Programmierer sind in dieser Abteilung ziemlich naiv und scheinen zu glauben, dass solche Entscheidungen aus Unwissenheit oder sogar Rachsüchtigkeit getroffen werden, wenn fast immer viele Faktoren im Spiel sind.


quelle
Sehr gute und ausführliche Antwort!
1
"teure Boondoggles aus Ihrem Haus wie PVCS, alles, was von Rational produziert wird". Hah! Komisch, weil es wahr ist;)
Rig
Mein Unternehmen ist Microsoft Gold-Partner, aber wir verwenden ALLES, was wir vernünftigerweise benötigen. Sie müssen Ihren Fall präsentieren und dafür kämpfen, aber für kluge
Köpfe
16

So wie es mir in meinem Unternehmen vorkommt: Wenn Manager eine Programmiersprache wählen, tun sie dies normalerweise sehr konservativ. Dabei ist zu berücksichtigen, welche Programmierkenntnisse derzeit im Team verfügbar sind (und ob es einfach wäre, weitere einfach einzustellen) ), ob es sich um eine gut etablierte Sprache handelt, die versucht, etwas auszuwählen, das zur aktuellen Infrastruktur passt, und keine großen Anstrengungen unternimmt, um es in das zu integrieren, was bereits vorhanden ist. Wenn sich Programmierer für eine Programmiersprache entscheiden, sieht die Sache oft etwas anders aus - sie möchten oft eine neue Herausforderung haben und möchten sich mit dem neuesten Trend auseinandersetzen und etwas aussuchen, bei dem sie neue Dinge lernen können.

Im Idealfall geht es darum, die Vor- und Nachteile zwischen dem Manager und dem Entwicklerteam zu besprechen und die Lösung zu finden, die am besten zum Problem passt. Das ist normalerweise mit viel Reden und Überzeugen verbunden :-)


quelle
Warum die Abstimmungen?
2
Ich habe abgestimmt, weil Sie meine Frage nicht beantwortet haben. Du hast gerade ein paar allgemeine Aussagen gemacht. Bis auf den letzten Satz, der als Antwort aufgefasst werden kann. Aber es ist ziemlich nutzlos.
14

Späte Antwort, aber da es noch keine akzeptierte Antwort gibt, werde ich es versuchen. Ich nehme es als zwei Fragen und werde versuchen, sie getrennt zu beantworten:

Wie wählen Manager Programmiersprachen aus?

Dies hängt stark von der Größe der Organisation und der Erfahrung des Managers ab, umfasst jedoch im Allgemeinen die Bewertung der aktuellen Situation sowie der zukünftigen Szenarien und Anforderungen. Dies geschieht normalerweise durch PESTLE oder eine ähnliche Analyse und um nur einige Proben in jeder Kategorie zu geben:

  • Politisch
    • "Niemand wurde für den Kauf von IBM entlassen" - eine sichere Wahl.
    • CEO hörte, dass Java cool ist - Hype.
    • Chefarchitekt liebt .NET - Haustierprojekt.
    • Die Sprache wird von einem feindlichen Konkurrenten kontrolliert - warum Google sich nicht auf C # verlässt.
  • Wirtschaftlich
    • Lizenzkosten.
    • Schulungskosten für Entwickler.
    • Kosten für die Codebasismigration.
  • Sozial
    • Buy-in vom Team.
    • Fachkräfteverfügbarkeit im Haus (Schulungsbedarf, Kontinuität).
    • Verfügbarkeit von Fähigkeiten auf dem Markt.
    • Bedrohung des bestehenden Status Quo innerhalb des Entwicklerteams.
    • Verfügbarkeit einer ausreichend großen Praxisgemeinschaft.
  • Technologisch
    • Produktivitätssteigerung.
    • Qualitätsverbesserung.
    • Interoperabilität mit vorhandener Codebasis.
    • Einhaltung von Standards.
    • Reife.
  • Legal
    • Lizenzbestimmungen.
    • Technologiekontrolle (Wer besitzt und kontrolliert die Technologie? Welche zukünftige Lizenzierungsstrategie ist wahrscheinlich?)
    • Einhaltung gesetzlicher und behördlicher Vorschriften.
  • Umwelt
    • Bestehende Infrastruktur im Unternehmen.
    • Vorhandene Fähigkeiten im Unternehmen.
    • Integration mit externen Partnern.
    • Technologische Unterstützung durch ein breiteres Umfeld.

Dann kann eine Reihe von Sprachen, die den Kriterien entsprechen, unter Verwendung von SWOT , Kosten- Nutzen-Analyse oder ähnlichem weiter bewertet werden .

Der gesamte Prozess kann recht komplex sein, aber unter dem Strich entscheiden sich die meisten Unternehmen oder Projektteams angesichts der aktuellen Umstände für die sicherste Option, die immer noch die Funktionen bietet, die sie benötigen. Sehr oft kann es bedeuten, länger auf der aktuellen Plattform zu bleiben.

Wie kann ein Programmierer sicherstellen, dass die richtige Programmiersprache für ein Projekt ausgewählt wird?

Es wurde hoffentlich gezeigt, dass ein typischer Programmierer normalerweise nur ein Sechstel des gesamten Inputs in den Entscheidungsfindungsprozess hat. Und in der Regel würde er oder sie sich hauptsächlich nur für die Sprachkenntnisse interessieren!

Nun, der beste Weg, die Entscheidung zu beeinflussen, scheint ein breiteres Bild des Auswahlprozesses zu haben, Verbündete innerhalb und außerhalb des Teams zu bilden, eine gute Einweisung in die technologische Seite der Dinge zu erstellen und sich nicht nur auf die Sprachfähigkeiten zu konzentrieren.

Und natürlich muss man sich in eine Position begeben, in der ein Projekt- oder Entwicklungsleiter (oder jeder andere Verantwortliche) die Vorteile des gesamten Evaluierungsprozesses erkennt und bereit ist, die Risiken und Unwägbarkeiten eines Wechsels zu einem anderen zu berücksichtigen Sprache an erster Stelle. Dazu muss nachgewiesen werden, dass:

  1. Die aktuelle Plattform ist nicht mehr ausreichend.
  2. Eine neue Plattform verspricht Vorteile, die den Aufwand bei weitem überwiegen.

Hätten Sie jedoch gefragt, "Wie kann ich die Sprache, die ich mag, am besten bei der Arbeit verwenden?"

Vlad Gudim
quelle
5

Manager A geht zu einem Sommerurlaub, wo er Manager B trifft.

A: Welche Sprache verwenden Sie in Ihrem Unternehmen? B: Oh, wir verwenden CA Visual Objects, das macht die Drohnen so viel produktiver als COBOL.

Und so wurde die Entscheidung getroffen. Ende der wahren Begebenheit.

Spikolynn
quelle
Welche Firma ist das?
3

Jede Plattform hat gute und schlechte Seiten. .NET ist cool und mächtig, aber Sie haben sich ziemlich auf Windows-Server festgelegt. Ruby ist cool, aber langsam. Es wäre schwierig, Entwickler für Haskell zu finden.

Der springende Punkt ist, dass die Sprache keinen Einfluss darauf hat, wie schnell ein Projekt durchgeführt wird und wie schön der Code sein wird, sondern auch darauf, welche Dinge Manager beachten. Wenn du sie also beeinflussen willst, solltest du sie jetzt bevorzugen und so viele gute Seiten in ihrer Perspektive finden, wie du nur kannst.


quelle
1
Sie sprechen einige interessante Punkte an, sind aber falsch, wenn Sie Haskell-Entwickler finden. Die meisten Leute, die in Haskell programmieren, machen das nicht bei einem Job, aber sie wollen (und sie sind im Allgemeinen ziemlich schlau)
1
Ich weiß, dass sie schlau sind :) Aber das bedeutet, dass sie keinen Support-Job machen, weil es langweilig ist oder man ihnen viel bezahlen müsste. Es ist wirklich wie bei COBOL, man könnte eine Person finden, die es weiß, aber man müsste viel Zeit damit verbringen, nachzuschauen und mehr zu bezahlen, als man es für jeden anderen Kerl tun würde.
Nein, Sie würden nicht wissen, dass ich weit über 300 Haskell-Entwickler kenne, die die gleichen Jobs wie jetzt zu einem erheblich geringeren Preis ausführen würden, als sie jetzt nur für die Arbeit in Haskell erhalten.
Rayne
2

Durch die Trennung von Anliegen. Unternehmen sollten für Geschäftsentscheidungen verantwortlich sein und Techniker sollten für Technikerentscheidungen verantwortlich sein. Ich mag den Begriff "Akzeptierte Verantwortung". Wenn ich Verantwortung übernehmen will, muss ich auch die Entscheidungen treffen, die meine Problemdomäne betreffen. Das Geschäft gibt mir und meinen technischen Kollegen die geschäftlichen Anforderungen und wir antworten mit ein oder zwei Alternativen, wie wir die Verantwortung für die Lieferung übernehmen können. Es sollte niemals so aussehen wie "Wir machen das in Python oder C #". Lieber;

"Wir können hier zwei unterschiedliche Aufgaben übernehmen: Wenn wir diesen Weg gehen, können wir dies schnell umsetzen und diese geschäftlichen Anforderungen wirklich gut erfüllen, und diese sind etwas schwieriger. Wir könnten es auch so machen, und das gibt diesen geschäftlichen Anforderungen den Trumpf." Alternative A fordert diese Ressourcen und Alternative B bedeutet, dass wir dies und das auch tun müssen ... "

Dann entscheidet sich das Geschäft, aber beachten Sie, dass sich das Geschäft nach den Auswirkungen auf das Geschäft und nicht auf das Technische richtet. Und sie können nicht zwischen Alternativen wählen, bei denen die Technologie nicht bereit ist, die Verantwortung des Technologieteils zu übernehmen.


quelle
Sehr interessant.
1

Werden Sie Manager. (Grinsen)

Im Ernst, Sie müssen nur die Angelegenheit mit dem betreffenden Entscheidungsträger besprechen und Ihre Argumente vorbringen. Wenn sie sich dafür entscheiden, bei einer wirklich falschen Entscheidung zu bleiben , ist ihre allgemeine Kompetenz wahrscheinlich nicht so hoch und es könnte sich lohnen, nach etwas anderem Ausschau zu halten.


quelle
Oder es sind Ihre eigenen Kommunikationsfähigkeiten, die versagt haben, und Sie sollten versuchen, diese zu verbessern.
Das gibt es auch.
1

Ich denke, der Unterschied zwischen dem, wovon Sie sprechen, und dem, wovon Joel gesprochen hat, besteht darin, dass Programmierung eine Kernkompetenz ist, während Rechnungswesen keine Kernkompetenz ist. Der Punkt mit Quickbooks ist vermutlich, weil Sie kein Buchhalter sind und Buchhalter Ihnen dabei helfen können. Wenn jedoch das Programmieren Ihre Kernkompetenz ist und wenn Sie vermutlich Programmierer sind, dann sind die Spielregeln etwas anders.


quelle
2
Programmieren ist für Manager meist keine Kernkompetenz.
Nun, vermutlich handelt es sich um eine Kernkompetenz des Geschäfts oder der Abteilung, die sich stark von der Diskussion über Quickbooks unterscheidet.
Ich kann nicht folgen. Vergleichen Sie Äpfel mit Orangen?
Warum die Gegenstimme? Ich habe nur auf Ihre fehlerhafte Logik hingewiesen. Was Äpfel und Orangen betrifft, denke ich, dass Topf und Kessel sich treffen. Was Joel über Quickbooks sprach, ist viel anders als Manager, die sich nur für Java entschieden haben.
1

Es hängt sehr stark von der Persönlichkeit des Managers ab:

Es gibt solche, die sich für Schlagworte entscheiden. Finden Sie einfach heraus, welche Schlagworte sie mögen, und verwenden Sie sie, wenn Sie mit ihm in Verbindung mit der Sprache sprechen, die Sie verwenden möchten.

Andere vertrauen nur Dingen, die sie selbst kennen (wie zum Beispiel VB 6.0). Machen Sie die Sprache Ihrer Wahl für sie verständlich ("Sie wissen, es ist wie in guten alten VB" - auch wenn Sie über Haskell sprechen ...)

Aber in Wirklichkeit sind die meisten Manager nicht so dumm, wie wir Freaks gerne denken, und man kann mit ihnen argumentieren. Wichtig hierbei ist, dass Sie ihre Sichtweise verstehen: Sie interessieren sich normalerweise nicht für bestimmte technische Details, sie interessieren sich für Ergebnisse. Sagen Sie ihnen also nicht, dass .net oder Java oder Delphi oder was auch immer diese großartige Funktion von Megacool hat. Sagen Sie ihnen, dass (geben Sie hier Ihre Sprache ein) eine gute Wahl ist, da die Funktion A zu kürzeren Entwicklungszeiten in einem Projekt wie diesem führt, oder dass die Funktion B zu weniger Fehlern führt und daher die für das Testen erforderliche Zeit verkürzt. Stellen Sie einfach sicher, dass Ihre Argumentation stichhaltig ist, lügen Sie ihn nicht an.

Mit anderen Worten: Behandle ihn wie ein intelligentes Wesen (er ist es wahrscheinlich).

Treb
quelle
1

Denken Sie über die Sprache nach, die Sie verwenden sollen. Stellen Sie sicher, dass Sie wissen, dass es keine gute Sprache für den Job ist, und fragen Sie den Manager, ob Sie möglicherweise einen Vorschlag für eine andere bessere Sprache für den Job machen. Geben Sie alle Informationen an, die belegen, dass die Sprache für den Job nicht gut ist, und sehen Sie, was er sagt. Es kann nicht weh tun. :)

Rayne
quelle
Interessanter Punkt. Ich bin jedoch der Meinung, dass die Beweislast bei der Person liegen sollte, die die Sprache aufdrängt, und nicht umgekehrt.
In einer Märchenwelt vielleicht.
Rayne
1

Die Wahl der Programmiersprache ist oft eine geschäftliche Entscheidung. Kunden / Benutzer interessieren sich nicht. Hier ist ein kurzes Zitat (von http://www.ericsink.com/bos/Geeks_Rule.html ):

Programmiersprachen werden hauptsächlich aus geschäftlichen Gründen gewählt. Die meiste Zeit arbeite ich mit Sprachen, die ich nicht wirklich mag, weil die Sprachen, mit denen ich arbeiten möchte, geschäftliche Nachteile aufweisen, die ihre technischen Vorzüge überwiegen. Das ist die Natur des Spiels. Ich kann die Situation akzeptieren (meine Wahl) oder einen neuen Arbeitgeber finden. Jammern darüber, wie ich Java oder Python oder was auch immer bei der Arbeit nicht verwenden kann, ist keine Option.

Peter Štibraný
quelle
Da stimme ich zu Ich denke aber auch, dass es wichtig ist zu beachten, dass Tech in Anbetracht der beiden Rollen Business und Tech den wichtigsten Einfluss darauf hat, welche Sprache / welches Framework die geschäftlichen Anforderungen erfüllen wird. Die Anzüge haben sehr selten die erforderlichen technischen Kenntnisse.
1

Zuallererst ist das Programmieren eine andere Form der Kunst. Eine sehr logische Form der Kunst. Wenn Ihr Manager an seinen außergewöhnlichen Softwareprojekten interessiert ist, die in gewissem Maße Meisterwerke sind, dann fragen Sie diesen Manager nach Folgendem:

Wie viel Energie und Zeit würde es Rembrandt zusätzlich kosten , nicht mit seinem Lieblingspinsel zu malen, sondern mit einem Pinsel, der ihm nach sorgfältiger Abwägung durch die Geschäftsführung vor 400 Jahren und bevor seine Werke berühmt wurden. Wird sein Gemälde mehr oder weniger das wert sein, was Sie denken?

Wenn Sie einem Programmierer mitteilen, welche Sprache verwendet werden soll, sollten Sie konsistent sein und einem Maler mitteilen, welche Pinselgrößen verwendet werden sollen. ODER, alternativ, überlassen Sie diese Wahl einfach den Leuten, die jeden Tag und (wie die meisten Meisterwerke) die Nacht damit arbeiten müssen!

Sam
quelle
Eine bessere Analogie wäre es, Kunst mit Pastellen gegen Ölfarben zu schaffen. Die Vor- und Nachteile liegen jedoch immer noch auf der geschäftlichen Seite - auch wenn der Künstler Ölfarben bevorzugt, erfordert das Projekt möglicherweise billige Materialien / erfordert möglicherweise weniger Vorbereitungszeit / erfordert möglicherweise eine längere Lebensdauer für diesen Kunden / usw. Der Künstler sollte sich an dieser Wahl beteiligen, muss sich jedoch darüber im Klaren sein, dass die Last der Überzeugung und des Beweises auf seinen Schultern liegt.
lunchmeat317
0

Das sind unterschiedliche Konzepte.

Bei der Buchhaltung teilen Sie Ihre Ergebnisse mit: Steuern, Recht, Investoren usw. Sie benötigen ein Tool, um das Ergebnis Ihrer Arbeit zu sehen, und dieses Tool muss gut bekannt sein.

Bei der Programmierung verwenden Sie ein beliebiges Tool, sofern es eine .exeDatei ausgibt , die Sie unter Windows ausführen können. Dies ist genau das Gleiche wie ein in Quick Books lesbares Dokument im Falle einer Buchhaltung.

Wenn Sie also einen Toaster entwickeln, können Sie Ihre internen Unterlagen auf Chinesisch aufbewahren, aber Sie sollten besser ein englisches Handbuch bereitstellen.

Es gibt noch eine Sache: Wenn die Regeln Ihres Unternehmens davon ausgehen, dass das Ergebnis Ihres Codes kein Produkt selbst, sondern ein Quellcode dafür ist, können sie mit Sicherheit entscheiden, wie es aussehen wird (indem sie die gewünschte Sprache auswählen).

Was sie wählen, hängt von ihren Zielen ab: Wenn sie leicht austauschbare Programmierer wollen, wählen sie Java; Wenn sie es an eine andere Abteilung senden, wird es die Anforderung dieser Abteilung usw. sein.

Quassnoi
quelle
Im übertragenen Sinne ist das Toaster-Äquivalent zu dem, worüber ich spreche, das Management, dass die interne Dokumentation auf Spanisch verfasst werden muss, da es mehr Menschen gibt, die Spanisch auf der Erde sprechen.
Genau. Wenn spanisch sprechende Toaster-Monteure leichter auf dem Arbeitsmarkt verfügbar sind, sollte die Dokumentation natürlich auf Spanisch sein.
0

Nach meiner Erfahrung ist es immer abhängig von:

  1. Haben wir die Ressourcen, um die Sprache zu verwenden?
  2. Haben wir die Ressourcen, um die Sprache zu pflegen?
  3. Wenn wir nicht über die Ressourcen verfügen, um die Sprache zu verwenden und zu pflegen, wie schwierig / teuer ist es, diese Ressourcen zu erhalten?
  4. Was ist die "Zukunft" der Sprache?

Sofern das Projekt nichts benötigt, was nur eine bestimmte Sprache / Plattform / Technologie / Framework bietet, kommt es auf das an, was wir bereits kennen und verwenden. Sowohl die Einstellung neuer Mitarbeiter als auch die Schulung bestehender Programmierer sind für die meisten Unternehmen ziemlich kostspielig. Bei der Einstellung berücksichtigen wir immer die Sprache und stellen sicher, dass die Kandidaten wissen, welche Sprache (n) sie wahrscheinlich verwenden werden.

Hoffentlich haben Sie einen Programmierer, der auch Manager ist und Programmierer bei solchen Entscheidungen vertreten kann. Wenn nicht, ist dies eine gefährliche Situation und Sie sollten mit Ihrem Vorgesetzten sprechen, wenn Sie wissen, dass eine solche Entscheidung getroffen wird.


quelle