Ich suche nach einer Methode zur Auswahl einer Sprache. Ich frage nicht nach Meinungen über Sprachen. Ich wurde beauftragt, die aktuelle Sprache unseres Shops mit anderen verfügbaren zu vergleichen. Wir sind übrigens ein Webentwicklungsshop.
Unser CEO hätte gerne ein umfassendes Whitepaper zu allen verfügbaren webbasierten Sprachen, zu welcher übergeordneten Sprache sie abgeleitet sind (z. B. ist jsp von java, das von c / c ++ stammt). Ich muss eine Matrix mit allen Schlüsselfaktoren einer bestimmten Sprache und den Nachteilen dieser bestimmten Sprache erstellen. Ist die Sprache durch die Plattform begrenzt, ist sie für funktionale Programmierung, prozedurale oder OO ausgelegt oder kann sie mit jedem Programmierparadigma verwendet werden?
Ich muss auch weniger technische Informationen haben, wie die Größe des Talentpools für eine bestimmte Sprache und das mittlere Gehalt in diesem Pool. Wie wird der Marktplatz unsere Wahl sehen?
Wir haben begonnen, einen Berater zu suchen, der uns hilft, all diese Dinge zu verstehen, aber wir haben festgestellt, dass die meisten Berater einen Entwicklungshintergrund haben und oft die Antwort lautet: " xxx ist die beste Sprache, weil es die ist, die ich bin habe in den letzten n Jahren am meisten benutzt und es hat mich nie im Stich gelassen. Du könntest es mit yyy für das Frontend ergänzen und die zzz- Bibliothek verwenden. "
Ich fühle mich von dieser Aufgabe überwältigt, und angesichts dessen, wonach unser CEO sucht, ist es die beste Vorgehensweise, einen Blick in die Welt der Wissenschaft zu werfen und einen Professor ohne tatsächliche Entwicklungserfahrung einzustellen, um uns "beizubringen" über alle möglichen Sprachen.
Musste noch jemand diese Übung machen? Wenn ja, können Sie die Schritte und / oder Methoden mitteilen, die Sie verwendet haben, um den Prozess zu durchlaufen?
Antworten:
@FrustratedWithFormsDesigner hat dies oben angedeutet, ich bin stumpfer: Ihnen wurde eine teure, aber nutzlose Aufgabe angelastet.
Ich vermute, der CEO sucht nach unwiderlegbaren, objektiven Beweisen, die seine Wahl der Sprache unterstützen. Das Problem ist, dass die Präferenz der Sprache mit viel zu vielen subjektiven und extrinsischen Faktoren beladen ist, als dass das Whitepaper sinnvoll oder gar nützlich wäre.
Anders ausgedrückt, wenn es eine ideale Sprache gäbe, würde sie jeder anstelle dieser "objektiv" fehlerhaften Sprachen verwenden. Es spricht auch für ein gewisses Mikromanagement, das die Provinz der Ingenieure sein sollte, die dafür sorgen müssen, dass es funktioniert. Erlang mag der "objektiv beste" sein, aber wenn es niemand weiß, addieren Sie 6 Monate / Techniker-Startkosten und 6 weitere Monate / Techniker, um Kompetenz zu erlangen.
Da ich Ihren Job nicht habe, mache ich mir keine Sorgen, ihn zu verlieren, obwohl Sie es vielleicht tun. Ich würde dem CEO ein Papier über die Physical Church-Turing Thesis geben. Ich würde mich dann mit den leitenden Ingenieuren zusammensetzen und ihre nicht strenge, nicht objektive Meinung dazu einholen, was verwendet werden soll, und dem CEO sagen, dass Sie das verwenden sollen. Im Gegenzug versprechen Sie den Ingenieuren, sich von Vorstandssitzungen, CFOs, Buchhaltungsmethoden, der Auswahl von Vizepräsidenten usw. fernzuhalten. Es gibt einen Grund, warum wir uns spezialisiert haben, und er hat in den technischen Vorlieben nicht mehr Platz als Sie in seiner Domäne.
quelle
Einige breite Pinselstriche zu beachten:
Popularität der Sprache
Dies sollte eigentlich keine Rolle spielen, da Popularität nicht unbedingt mit Produktivität, Ausdruckskraft oder einer der anderen wichtigen Sprachqualitäten gleichzusetzen ist. Diese Überlegung ist jedoch häufig wichtiger als alle anderen Überlegungen, da:
Anwendbarkeit auf die Problemdomäne
Jedes Programm kann in einer beliebigen Programmiersprache von Turing-complete geschrieben werden. Einige Sprachen eignen sich jedoch besser für bestimmte Problembereiche als andere. Wenn Sie Webanwendungen schreiben, werden Sie sich wahrscheinlich für Sprachen und Tools interessieren, die dafür gut geeignet sind, und sie werden höchstwahrscheinlich objektorientierte Sprachen sein.
Auf der anderen Seite werden Sie sich wahrscheinlich für Sprachen interessieren, die funktionale Paradigmen umfassen, wenn Sie Software schreiben, die hauptsächlich auf Forschung oder Mathematik basiert .
Und natürlich gibt es alles dazwischen. Viele Sprachen unterstützen mehrere Paradigmen, und einige Softwaremuster existieren nur, um Einschränkungen in den Sprachen zu überwinden, denen bestimmte Funktionen oder Paradigmen fehlen.
Ausdruckskraft und Produktivität
Einige Sprachen sind ausdrucksvoller als andere. Was mit tausend Codezeilen in einer Sprache geschrieben werden kann, kann mit hundert Codezeilen in einer ausdrucksstärkeren Sprache geschrieben werden. Der Nachteil ist, dass die hundert Codezeilen wahrscheinlich in einer weniger populären Sprache geschrieben sind, von Leuten mit größerem Fachwissen.
Viele der Codezeilen in objektorientierten Sprachen, die zum Schreiben von Branchenanwendungen verwendet werden, sind Zeremonien. Diese Zeremonie kostet zwar Zeit und Mühe, um sich zu entwickeln, bietet aber auch eine sichtbare Struktur, die sonst in einer ausdrucksstärkeren Sprache nicht ohne weiteres erkennbar wäre. Es ermöglicht Personen mit weniger Fachwissen, als sie ansonsten mit einem geringeren Risiko an dem Code arbeiten müssten.
Die Ära der mehreren Sprachen
Abschließend behaupte ich, dass der Wunsch, sich für eine einzelne Sprache zu entscheiden, ein falsches Dilemma sein kann. Bewerbungen werden heute oft nicht nur in einer, sondern in mehreren Sprachen verfasst. Jede Sprache hat ihre eigenen Stärken und ist (theoretisch) spezifisch auf die jeweilige Aufgabe zugeschnitten. Einige Problemdomänen (wie die Webbrowser-Logik oder der Datenbankzugriff) erfordern bestimmte Sprachen.
quelle
Es gibt geschäftliche Gründe für die Wahl einer Sprache und technische Gründe für die Wahl einer Sprache, und die beiden treffen sich nicht immer. Aus akademischen Gründen wird es wahrscheinlich noch schlimmer machen. Ich bezweifle, dass ein Professor Ihnen so helfen kann, wie Sie es brauchen.
Die Fakten über die Abstammung und Merkmale einer Sprache sind ziemlich leicht zu finden. Sie könnten wahrscheinlich einen Tag auf Wikipedia verbringen, um das meiste davon auszufüllen. Größe und Gehalt des Talentpools sind schwieriger, da sich die meisten Menschen nicht als einsprachige Programmierer betrachten. Unternehmen, die weniger beliebte Sprachen wie Scala verwenden, erwarten, dass sie gute allgemeine Programmierer einstellen, die keine sprachspezifische Erfahrung haben. Nach einigen Präsentationen zu urteilen, die ich gesehen habe, scheint diese Strategie gut funktioniert zu haben.
Selbst wenn Sie die Fakten kennen, haben Sie immer noch eine ziemlich subjektive Wahl. Ihr CEO möchte, dass es sich auf eine grobe Metrik wie Dollar pro Feature reduziert. Um ein genaues Bild zu erhalten, müssen Sie einige Prototypen erstellen und dann darüber sprechen, wie einfach das Erlernen eines Prototyps war, wie schnell es war, einen Prototyp zu schreiben, nachdem Sie die Grundlagen erlernt hatten und wie einfach die Wartung Ihrer Meinung nach wäre und wie allgemein Sie glauben, dass dies für die Art von Arbeit gilt, die Sie normalerweise ausführen.
Anstatt zu versuchen, alle Sprachen abzudecken, würde ich versuchen, Vertreter aus den verschiedenen Programmierparadigmen und Framework-Typen zu gewinnen und in jedem einen Prototyp zu implementieren.
Hier ist eine grobe Liste der Back-End-Kategorien:
Am vorderen Ende:
Ein oder zwei Tage für jede Kategorie zu investieren, um einen einfachen Prototyp zu implementieren, würde ein paar Monate dauern. Danach könnten Sie die Stärken und Schwächen jeder Kategorie besser einschätzen. Vielleicht könnten Sie einige aufgrund der Kultur oder Erfahrung Ihres Unternehmens schneller ausschließen.
Da es sich um einen Geschäftsbericht handelt, würde ich mir auch etwas Zeit nehmen, Dinge wie "Welche Sprache verwendet <Firma>" zu googeln, um verschiedene von Ihnen bewunderte Firmen zu ersetzen. Viele von ihnen haben eigene Whitepapers darüber verfasst, warum sie bestimmte Sprachen gewählt haben, was für Sie eine hervorragende Referenz wäre.
quelle
Identifizieren und kosten Sie die Mängel, die Ihrem vorhandenen Entwicklungsprozess inhärent sind, als $ A. Ermitteln Sie die Kosten für den Wechsel zu einem anderen Entwicklungsprozess als $ B.
Wenn $ A kleiner als $ B ist, stoppen Sie.
Wenn Ihre bekannten Mängel die Änderungskosten überwiegen (und das ist ein großes Wenn!), Analysieren Sie die Mängel im Detail und suchen Sie nach einer Sprache / Entwicklungsumgebung / Entwicklungsprozess-Änderung, die sie behebt und keine weiteren teureren Probleme mit sich bringt.
Um ehrlich zu sein: Wenn Sie derzeit nicht versuchen, Web-Apps in Fortran zu entwickeln, wirkt sich die verwendete Sprache nur auf die Kosten der Vertragspartner aus, mit denen Sie die Lücken schließen. Mainstream- und ausgereifte Sprachen / Tools / Entwicklungsprozesse haben bereits die meisten Probleme gelöst, mit denen Sie wahrscheinlich konfrontiert sind, da die heißesten, neuesten und sexysten Tools die teuersten Trainer und Auftragnehmer, aber die am wenigsten ausgereiften Lösungen enthalten. Und wenn Sie Mängel haben, die eine solche Änderung rechtfertigen, ist es unwahrscheinlich, dass Ihre Wahl der Sprache diese in vollem Umfang angeht.
Wenn Rentabilität hier jedoch nicht das vorrangige Ziel ist, müssen Sie das Stigma, als altmodisch zu gelten, gegen das Ansehen der Spitzenklasse einkalkulieren. Fragen Sie Ihren Chef nach den Dollarwerten, die für diesen Teil der Gleichung verwendet werden sollen.
quelle