Je recherche une méthodologie pour choisir une langue. Je ne demande pas d'avis sur les langues. J'ai été chargé du processus de comparaison de la langue actuelle de notre boutique avec d'autres qui sont disponibles. Nous sommes une boutique de développement web btw.
Notre PDG voudrait un livre blanc complet sur toutes les langues Web disponibles, de quelle langue parente elles sont dérivées (par exemple, jsp vient de java qui est de c / c ++). J'ai besoin de créer une matrice avec tous les facteurs clés d'une langue particulière ainsi que les défauts de cette langue donnée. Le langage est-il limité par la plate-forme, est-il conçu pour la programmation fonctionnelle, procédurale ou OO ou peut-il être utilisé avec n'importe quel paradigme de programmation?
J'ai également besoin d'avoir des informations moins techniques, comme la taille du vivier de talents pour une langue donnée et le salaire médian dans ce vivier. Comment le marché verra-t-il notre choix?
Nous avons commencé à chercher un consultant pour nous aider à comprendre toutes ces choses, mais ce que nous avons constaté, c'est que la plupart des consultants viennent d'un milieu de développement et il semble souvent que la réponse est " xxx est le meilleur langage car c'est celui que je J'ai utilisé le plus au cours des n dernières années et cela ne m'a jamais déçu. Vous pouvez le compléter avec yyy pour le frontal et utiliser la bibliothèque zzz "
Je me sens dépassé par cette tâche et je pense que la meilleure façon d’agir, étant donné ce que recherche notre PDG, est de regarder dans le monde universitaire et d’embaucher un professeur sans réelle expérience de développement pour venir nous «enseigner». sur toutes les langues possibles.
Quelqu'un d'autre a-t-il dû faire cet exercice? Si vous en avez, pouvez-vous partager les étapes et / ou la méthodologie que vous avez utilisées pour passer par le processus?
Réponses:
@FrustratedWithFormsDesigner a fait allusion à cela ci-dessus, je serai plus franc: vous avez été accusé d'une tâche coûteuse mais inutile.
Je soupçonne le PDG de rechercher des preuves irréfutables et objectives qui étayeront son choix de langue. Le problème est que la préférence de la langue est chargée de beaucoup trop de facteurs subjectifs et extrinsèques pour que le livre blanc soit significatif et encore moins utile.
Autrement dit, s'il y avait un langage idéal, tout le monde l'utiliserait à la place de ces langages défectueux "objectivement". Elle témoigne également d'un degré de microgestion qui devrait incomber aux ingénieurs qui devront le faire fonctionner. Erlang est peut-être le "meilleur objectivement" mais si personne ne le sait, ajoutez un coût de démarrage de 6 mois / ingénieur et 6 mois / ingénieur de plus pour gagner en compétence.
Comme je n'ai pas votre travail, je ne suis pas inquiet de le perdre, bien que vous le puissiez. Je donnerais au PDG un document sur la thèse de l'Église physique-Turing. Je me réunissais ensuite avec les ingénieurs principaux et j'obtenais leur avis non rigoureux et non objectif sur ce qui devrait être utilisé et je disais au PDG que c'était ce que vous utiliseriez. En échange, vous promettez aux ingénieurs de ne pas participer aux réunions du conseil d'administration, aux directeurs financiers, aux méthodes comptables, à la sélection des vice-présidents, etc. Il y a une raison pour laquelle nous nous spécialisons, et il n'a pas plus de place dans les préférences d'ingénierie que vous dans son domaine.
la source
Quelques grands coups de pinceau à considérer:
Popularité de la langue
Cela ne devrait vraiment pas avoir d'importance, car la popularité n'équivaut pas nécessairement à la productivité, à l'expressivité ou à l'une des autres qualités linguistiques qui importent plus, mais cette considération l'emporte souvent sur toutes les autres considérations car:
Applicabilité au domaine problématique
Tout programme peut être écrit dans n'importe quel langage de programmation complet de Turing, mais certains langages sont mieux adaptés à certains domaines problématiques que d'autres. Si vous écrivez des applications Web, vous vous tournerez probablement vers des langages et des outils qui sont bien adaptés à cela, et ils seront très probablement des langages orientés objet.
D'un autre côté, si vous allez écrire des logiciels principalement basés sur la recherche ou les mathématiques, vous vous orienterez probablement vers des langages qui embrassent des paradigmes fonctionnels .
Et, bien sûr, il y a tout entre les deux. De nombreux langages prennent en charge plusieurs paradigmes, et certains modèles de logiciels existent uniquement pour surmonter les limitations dans les langages qui manquent de certaines fonctionnalités ou paradigmes.
Expressivité et productivité
Certaines langues sont plus expressives que d'autres. Ce qui peut être écrit dans une langue en utilisant mille lignes de code peut être écrit dans une langue plus expressive en utilisant cent lignes de code. Le compromis est que les cent lignes de code sont probablement écrites dans une langue moins populaire, par des personnes plus compétentes.
Beaucoup de lignes de code présentes dans les langages orientés objet utilisés pour écrire des applications métier sont des cérémonies. Cette cérémonie, tout en coûtant du temps et des efforts pour se développer, fournit également une structure visible qui autrement ne serait pas facilement apparente dans un langage plus expressif. Il permet aux personnes ayant moins d'expertise que ce dont elles auraient autrement besoin de travailler sur le code avec un risque réduit.
L'ère des langues multiples
Je conclurai en affirmant que le désir de décider d'une seule langue peut être un faux dilemme. Aujourd'hui, les candidatures sont souvent rédigées, non pas dans une seule, mais dans de nombreuses langues. Chaque langue a ses propres forces et (en théorie) est spécifiquement conçue pour la tâche qu'elle est utilisée. Certains domaines problématiques (tels que la logique du navigateur Web ou l'accès à la base de données) nécessitent des langues spécifiques.
la source
Il y a des raisons commerciales pour choisir une langue, et il y a des raisons techniques pour choisir une langue, et les deux ne se rencontrent pas toujours. Jeter des raisons académiques risque d'aggraver les choses. Je doute qu'un professeur puisse vous aider de la façon dont vous en avez besoin.
Les faits sur l'ascendance et les caractéristiques d'une langue sont assez faciles à trouver. Vous pourriez probablement passer une journée sur wikipedia pour remplir la majeure partie de cela. La taille du pool de talents et le salaire sont plus difficiles, car la plupart des gens ne se considèrent pas comme des programmeurs unilingues. Les entreprises qui utilisent des langues moins populaires comme Scala s'attendent à peu près à embaucher de bons programmeurs généraux qui n'ont pas d'expérience linguistique spécifique. À en juger par certaines présentations que j'ai vues, cette stratégie semble avoir bien fonctionné.
Même connaître les faits vous laisse encore un choix assez subjectif. Votre PDG voudra que cela se résume à une métrique approximative, comme des dollars par fonctionnalité. Pour obtenir une image précise, vous devrez faire quelques prototypes, puis parler de la facilité d'apprentissage, de la rapidité avec laquelle écrire un prototype une fois que vous avez appris les bases, de la facilité de maintenance que vous pensez et dans quelle mesure vous pensez que ce serait largement applicable au type de travail que vous effectuez habituellement.
Plutôt que d'essayer de couvrir tous les langages, je chercherais à obtenir des représentants des différents paradigmes de programmation et types de frameworks, et à implémenter un prototype dans chacun.
Voici une liste approximative des catégories principales:
À l'avant:
Passer un jour ou deux sur chaque catégorie, mettre en œuvre un prototype simple, vous prendrait quelques mois, après quoi vous auriez une bien meilleure idée des forces et des faiblesses de chacune. Vous pourriez peut-être en exclure certains plus rapidement en fonction de la culture ou de l'expérience de votre entreprise.
Puisqu'il s'agit d'un rapport d'activité, je prendrais également un peu de temps à googler des choses comme «Quelle langue est utilisée par la société», en remplaçant diverses sociétés que vous admirez. Beaucoup d'entre eux ont rédigé leurs propres livres blancs sur les raisons pour lesquelles ils ont fait des choix linguistiques spécifiques, ce qui constituerait d'excellentes références à inclure.
la source
Identifiez et chiffrez les lacunes inhérentes à votre processus de développement existant en $ A. Identifiez le coût du passage à tout autre processus de développement comme $ B.
Si $ A est inférieur à $ B, arrêtez.
Si vos lacunes connues l'emportent sur le coût du changement (et c'est un gros si!), Analysez les lacunes en détail et commencez à rechercher un langage / environnement de développement / processus de développement qui les corrige, un qui n'introduira pas d'autres problèmes plus coûteux.
Pour être honnête, à moins que vous n'essayiez actuellement de développer des applications Web dans Fortran, le seul impact que la langue que vous utiliserez aura sur le coût des entrepreneurs que vous utilisez pour combler les lacunes. Le flux principal et les langages / outils / processus de développement matures ont déjà résolu la plupart des problèmes auxquels vous êtes susceptible d'être confronté, car les outils les plus chauds, les plus récents et les plus sexy viennent avec les formateurs et les entrepreneurs les plus chers, mais les solutions les moins matures. Et si vous avez des lacunes qui justifient un tel changement, il est peu probable que votre choix de langue les comble pleinement.
Cependant, si la rentabilité n'est pas l'objectif principal ici, vous devez prendre en compte la stigmatisation d'être considéré comme démodé contre les félicitations d'être à la pointe. Demandez à votre patron les valeurs en dollars à utiliser pour cette partie de l'équation.
la source