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 ?
quelle
Antworten:
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:
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
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
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:
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:
Hätten Sie jedoch gefragt, "Wie kann ich die Sprache, die ich mag, am besten bei der Arbeit verwenden?"
quelle
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.
quelle
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
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;
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
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
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
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).
quelle
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. :)
quelle
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 ):
quelle
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!
quelle
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
.exe
Datei 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.
quelle
Nach meiner Erfahrung ist es immer abhängig von:
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