Ce que votre CTO possède

Feb 13, 2020
Blog

Avant de commencer à travailler sur un projet, qu’il s’agisse d’une petite application «quotidienne» ou d’une solution d’Enterprise monumentale, la question qui se pose à ceux qui initient le développement est: «Quelle langue allons-nous utiliser pur écrire?». Il peut sembler que la réponse soit assez facile, mais tout le monde ne sait pas qu’il faut commencer par la question «Qu’est-ce qu’on va écrire?».

Cette question n’est pas en reste, car la réponse à cette question devrait être beaucoup plus précise qu’elle pourrait paraître à première vue. Il arrive souvent que des personnes qui sont parfois loin de ce développement participent à la décision de commencer le développement, au niveau des entreprises déjà de taille moyenne. Bien sûr, le plus souvent, un directeur technique se charge de déterminer lui-même un cours de développement spécifique, mais que se passe-t-il s’il n’y a pas une telle personne? Un auditeur externe, en la personne d’un développeur expérimenté, ne lira pas dans le marc de café, ce que vous voulez obtenir en resultat. Il refusera simplement de vous aider ou donnera une réponse incomplète, dans laquelle, en fait, il aura tout à fait raison: ils répondent a la mode que vous le demandez.

Dans cet article, nous aborderons les points principaux dans le choix des technologies de développement et les erreurs commises par les gestionnaires, y compris la manière dont nous ne devons pas suivre la mode changeante.

Supposons que vous ayez déjà une idée précise du futur projet et ses spécifications. Maintenant, pour ne pas trébucher lors du choix des technologies de développement, il faut au moins avoir une idée de base de la façon dont les langages de programmation diffèrent entre eux. Il y a beaucoup de réponses à cette question, mais maintenant nous parlons de différences fondamentales et de domaines d’application. Seulement si vous comprenez ces différences, vous pouvez poser une question sérieuse: «Quels sont les avantages et les inconvénients du langage de programmation N?» et obtenir une réponse claire qui peut être «appliquée» aux exigences de votre projet.

Nous ne fonctionnerons pas avec des termes professionnels et ne diviserons pas les langues en haut, bas, orienté objet, etc. Dans notre cas, nous avons besoin d’une liste restreinte de cinq positions, chacune d’entre elles se rapportant simplement et de manière transparente à n’importe quelles cahierы des charges:

1. La plate-forme d’application (le domaine d’application du langage).

2. La flexibilité de la langue.

3. La durée du développement et de la « vie » du projet.

4. Performance.

5. La communauté de langue.

Les réponses à ces cinq questions seront données par tout spécialiste qualifié. En outre, elles sont assez simples à comprendre, transparentes et, surtout, indiquent clairement si nous pouvons utiliser l’une ou l’autre langue dans le développement ou non.

Différents domaines d’application pour les langues différentes

La meilleure façon de définir un langue de programmation et un vecteur primaire du développement est de profiter de l’expérience de la communauté. En même temps, pour prendre la bonne décision, il n’est pas nécessaire d’être soi-même un développeur. Il suffit de regarder quels langages de programmation sont populaires dans le domaine requis et de se familiariser avec leurs caractéristiques conformément à la liste jointe ci-dessus.

Chaque langue de programmation a ses propres forces et faiblesses

Prenons par exemple le Python. Ce langue de programmation est similaire à un couteau suisse, dans lequel se trouve un autre couteau suisse plus petit. En théorie, vous pouvez écrire n’importe quoi, bien sûr, si vous n’avez pas d’exigences en termes de consommation de mémoire et de rapidité du produit final. De plus, le Python a un seuil très bas pour entrer dans la langue, et la recherche de développeurs (et même entraîner vos propres développeurs lors du développement du projet) ne posera pas de problème, et un grand nombre de bibliothèques ouvertes faciliteront la vie des développeurs. Cependant, dès que vous avez besoin non seulement d’une application simple, mais également d’une application rapide en termes de travail, soumise à des restrictions strictes en matière de consommation des ressources système, vous devez oublier le Python. Ou si vous avez besoin d’une application multipipeline: l’implémentation du Python elle-même ne supporte pas l’application multipipeline.

Revenons à notre liste de déterminants et examinons du Python:

1. Le domaine d’application: presque n’importe quoi et n’importe où.

2. Flexibilité: impressionnante.

3. Temps du développement: rapide.

4. Performance: disponible uniquement si vous disposez d’une puissance de calcul importante ou illimitée.

5. Communauté de langue: une immense armée de développeurs de tous niveaux.

Comme vous pouvez le voir, le principal problème du Python, consideré comme exemple, est sa consommation de resources. Si nous créons une application Web qui sera «tourner» sur les serveurs de Google, nous pouvons alors nous permettre un développement en cette langue. Mais si nous parlons d’une application mobile ou même bureautique, lorsque l’équipement cible peut être de faible puissance, vous devriez oublier le Python.

Et ce qui est plus important encore: n’importe quel langage de programmation possède de telles nuances. Certains d’entre eux peuvent ne pas être importants pour vous, alors que d’autres peuvent être fatals. Et pour bien comprendre ce qui va affecter le projet et ce qui ne l’est pas, vous devez savoir ce que vous obtiendrez exactement après le développement et qui utilisera ce développement.

Prenons un autre langue, par exemple le C ++. Le seuil pour y entrer est beaucoup plus élevé que en même Python, mais il possède un certain nombre d’avantages que Python ne possède pas. Par exemple, le C ++ vous permet de contrôler clairement la consommation de ressources de notre logiciel, ce qui le fait un excellent choix pour le développement d’applications productives devant fonctionner dans un environnement limité. Ainsi, le C ++ est très populaire dans le secteur du jeu, lorsqu’une équipe doit «fourrer» une logique très complexe et de la taille immense dans l’espace restreint de la configuration de l’utilisateur final, loin du serveur en termes de puissance. Ici, vous pouvez également enregistrer des applications et des jeux mobiles, qui doivent se contenter de processeurs de faible puissance et d’une quantité de mémoire RAM très modeste, qui, en outre, devront être partagés avec d’autres « utilisateurs » de l’instrument.

D’autre part, on doit comprendre que le C ++ est comme une épée entièrement constituée d’une lame, sans poignée. Un développeur expérimenté le gérera magistralement, mais une équipe faible créera une application qui, dans sa consommation de ressources, ne differera pas beaucoup d’un projet sur le Python plus énergivore, mais en même temps, son assemblage sera plus lent. En outre, il n’existe pas dans le C ++ d’environnement du développement contrôlé existant dans de jeunes langues plus «architecturaux», c’est-à-dire que le processus de création du logiciel sera long et pénible et que le résultat obtenu à la sortie risque de ne pas plaire.

En conséquence, parcourons notre liste de facteurs, maintenant dans l’application du C ++:

1. Le domaine d’application: les applications qui ont besoin de la vitesse et travaillant dans un environnement limité.

2. Flexibilité: faible.

3. Temps du développement: plus long que le moyen.

4. Performances: le C ++ est une langue qui permet d’utiliser efficacement chaque mégabyte de mémoire. Les applications les plus efficaces en termes de consommation d’énergie sont developpées en cette langue.

5. Communauté de la langue: une énorme armée de développeurs, mais certains d’entre eux sont des « parasites », car le seuil pour entrer dans la langue est très élevé.

Les exemples ci-dessus sont un peu exagérés, mais très indicatifs et, surtout, ils rejettent les affirmations sur l’ultimatum du type « la langue N est la meilleure » ou « la langue N est convenable à n’importe quel but». Comme vous pouvez le constater, une langue universel n’existe pas. Chacune d’entre elles présente un certain nombre de différences notables qui rendront votre projet extrêmement progressif ou l’enterreront aux cours de cycles sans fin de corrections et d’améliorations.

Langues de programmation à la mode et leur danger

En plus des langues de programmation populaires qui sont au coeur de l’actualité, il existe également une mode au sens littéral du terme. Le plus souvent il s’agit de nouveaux produits offrant des fonctionnalités avancées non disponibles dans d’autres langues ou elles possèdent une syntaxe particulière. En fait, ce n’est pas si important. Mais il est vraiment important que le choix d’une langue de programmation à la mode plutôt que d’une langue populaire soit très probablement une voie directe vers l’abîme.

Tous les langues de programmation à la mode ont une chose en commun: il y a très peu de développeurs vraiment expérimentés dans leur communauté et encore moins de manuels, de documentation et d’expertise.

En fait, cela signifie que les développeurs n’ont pas encore trouvé ni développé de moyens optimaux de résoudre tels ou tels autres problèmes en utilisant cette langue et, par conséquent, ils expérimentent. Mais les expériences sont acceptables sur des projets à domicile et, mais quand il s’agit du développement commercial, de telles surprises sont inutiles car le business aime la prévisibilité et la spécificité.

Il arrive également que vous ayez déjà un développeur expérimenté dans un langage à la mode: selon la liste de facteurs, le langage vous convient parfaitement, alors pourquoi ne pas commencer le développement?

Le problème est qu’en plus du développement de l’application, vous devez le plus souvent conserver pendant le temps suffisant et que des ressources humaines sont nécessaires pour cela. Heureusement ou malheureusement, les langues de programmation exotiques / à la mode sont rarement suffisamment répandus pour que leur communauté atteigne des tailles vraiment remarquables. Cela signifie que si vous avez besoin d’un deuxième, d’un troisième ou d’un dixième développeur dans une équipe, vous pourvoirez le poste vacant pendant des mois, si vous pouvez le faire du tout. La plupart du temps, les projets dans des langues à la mode seront, à l’avenir, soutenus par des personnes qui maîtriseront cette langue même sur le lieu du travail ou par une réécriture complète pour quelque chose de plus commun et compréhensible. Les deux options coûtent du temps supplémentaire, de l’argent et un guidage des cellules nerveuses.

Voici un exemple. Il y a déjà trois ou quatre ans, des centaines d’entreprises et de projets recherchaient des développeurs experimentés dans Ruby qui connaissaient spécifiquement le canevas du « Ruby on Rails » plutôt que des développeurs dans PHP ou JavaScript. Les « rails » étaient si populaires, et les développeurs étaient tellement rémunérés que les représentants de cette communauté se sont permis de dire:

«Ruby on Rails et PHP est comme Apple Macintosh et PC. Nous sommes peu nombreux mais nous sommes l’élite. Ruby on Rails et PHP est une culture contre le chaos»

Il semblait que le RoR avait un avenir, mais la mode, impliquée dans la nécessité technique a passé ; plusieurs nouvelles bibliothèques ont été publiées pour le JavaScript stable, qui couvraient les besoins en fonctionnalités du développement de « Ruby on Rails », et la popularité de la langue Ruby et de son canevas commençait à s’estomper. Oui, le « Ruby on Rails » est encore utilisé dans de nombreux projets. Les développeurs expérimentés de RoR sont en demande sur le marché, mais les offres d’emploi sont plusieurs fois moins nombreuses qu’il y a plusieurs années. Cela est dû principalement au fait que les langues de programmation en concurrence avec le « Ruby on Rails » ne sont pas non plus restés immobiles et que, grâce aux mises à jour, à la création de nouveaux canevas et de nouvelles bibliothèques, le besoin urgent du RoR au fil du temps a disparu.

Une fois toutes les deux ou trois années, une langue ou un canevas font un carton, une petite communauté est s’arrange autour d’elle très rapidement. Par exemple, le Rust ou le Golang sont maintenant populaires. Et personne ne sait si ces langues vont s’implanter ou si elles seront supplantées par des «anciens» plus stables et plus matures. En général, il est très dangereux de se lancer dans un développement basé sur une langue ou une technologie à la mode, car à l’avenir, le support risque de poser de problèmes sérieux, que nous aborderons en détail ultérieurement.

Domaines d’application, conditions et support

Il est extrêmement important de comprendre dans quel domaine le projet est en cours de développement, car il n’existe pas de langue de programmation universelle – elles vivent et se développent dans leurs propres créneaux. De plus, les langues et les technologies sont segmentées non seulement dans le domaine du développement (Web, mobile, ordinateur de bureau, etc.), mais également dans le champ d’application. Par exemple, le même développement Web peut être divisé en une interface client et un serveur. Et pour ces deux parties du même projet Web, les langues et les technologies seront différentes. En d’autres termes, pour créer un projet Web, il ne suffit pas d’engager une équipe de développeurs dans JavaScript ou PHP qui vous en feront la partie initiale, vous aurez également besoin de spécialistes en back-end. Souvent, cette nuance évidente échappe aux personnes éloignées de la programmation, ce qui a comme consequences au mieux une expansion des estimations et, au pire, une perte de temps et de budget.

Un autre aspect très souvent ignoré: le cycle de vie du projet. Souvent, le client est basé uniquement sur le temps du développement à partir du moment de la réception du cahier des charges jusqu’à la livraison d’un projet en cours. Une des caractéristiques de la sphère du développement est qu’après une phase du développement actif, une période de soutien moins intensive, mais extrêmement importante, commence. Un grand nombre d’entreprises trébuchent en matière de soutien.

Le scénario classique est le suivant: ignorant la nécessité d’un soutien futur et de conseils d’experts, le client choisit l’option la plus rapide et la moins chère pour une technologie qui est n’est pas bien convenable. De mauvais choix et des délais serrés se traduisent par un code de mauvaise qualité et respectent le principe suivant: « nous paçons ici une béquille parce que nous n’avons pas du temps ». A l’avenir, la prise en charge d’un tel code, l’introduction de nouvelles fonctionnalités et de simples améliorations coûteront plusieurs fois, voir des ordres de grandeur, plus.

En outre, un projet sans soutien minimal est voué à l’abandon et à la stagnation en un an ou deux ; le secteur informatique est en constante évolution et offre de plus en plus de solutions nouvelles à des problèmes anciens qui deviennent instantanément la «norme». Vous n’avez pas besoin d’aller très loin pour avoir un exemple, ouvrez simplement un site Web datant d’une décennie, dont le support et la mise à jour n’a pas été effectué depuis, et voyez quelles solutions dans le domaine du développement Web étaient utilisées à cette époque. Au moins ils provoquent un sourire ironique, et plus souvent ce sont l’indignation et le mécontentement.

La méthode de vérification simple et absolument transparente que nous avons décrite est nécessaire pour éviter les situations où vous êtes convaincu de créer quelque chose dans une langue «pratique» pour l’ interpréteur ou le conseiller. Par exemple, si vous êtes persuadé d’écrire un jeu mobile pour Android en Python ou si vous êtes convaincu qu’au lieu d’utiliser du code JavaScript ou PHP transparent et clair, vous devez implémenter un peu coûteux et obsolète « Ruby on Rails » en termes de salaires, ou essayer la langue à la mode actuelle.

Les experts et les développeurs expérimentés doivent toujours l’écouter, car c’est leur territoire, mais une simple liste de facteurs «la domaine d’application, flexibilité, temps, productivité, communauté» aidera à identifier une tentative de fraude impudente ou à prévenir une erreur très grosse en ignorant l’opinion des professionnels.

Soyez attentifs.

 

Article précédent