« Quelque chose ne va vraiment pas avec les développeurs "modernes" »
Un développeur à "l'ancienne" critique la multiplication des bibliothèques

21PARTAGES

19  0 
William Edwards, un développeur “senior” attire l’attention dans un article de blog sur les choix des développeurs qu’il appelle « modernes » et qui pour lui auraient de très mauvais effets sur l’industrie.

Les développeurs opteraient de plus en plus pour une multitude de bibliothèques externes modernes pour la conception d’une application.

Ces bibliothèques, bien qu’offrant chacune de bonnes performances, seraient utilisées sans une réelle maîtrise des spécificités de celles-ci, et le produit qui en ressortirait serait souvent complexe, et dans la plupart des cas assez difficile à maintenir voire peu performant.

William Edwards part d’un commentaire d’un lecteur sur un article qui expliquait comment l’outil NooSFere peut comprimer à 90% des emails.

L’application NooSFere utilise un cache avec l’algorithme LRU (Least Recently Used). Les mails deviennent une liste de pointeurs de chaine partagée et la compression est effectuée en arrière-plan en utilisant l’algorithme de compression de données LZMA (Lempel-Ziv-Markov chain-Algorithm).

L’utilisation uniquement des ressources du langage (table de hachage Java normale et listes liées) ayant permis un gain de performance énorme a été cependant critiquée par un développeur.

Celui-ci dans son commentaire se demande pourquoi Redis (système de gestion de base de données NoSQL, clef-valeur libre, scalable, hautes performances) n’a pas été utilisé dans le projet pour la LRU. Proposition qui est soutenue par une autre personne qui trouve que Redis couplé à node.js sont connus pour être assez performants. Donc, une orientation vers une solution Web.

« Les projets sont de plus en plus des sites Web » regrette Edwards, qui ajoute. « Vous n’avez pas besoin d’être un puissant programmeur. Vous pouvez utiliser JavaScript, exécuter node.js et utiliser MongoDB ou Redis en arrière-plan et vous pensez que votre solution est performante ? ».

De façon générale pour William Edwards, les développeurs optent beaucoup plus pour la facilité que pour la simplicité. Résultat, ils se retrouveraient très souvent avec des solutions complexes disposant de plusieurs briques logicielles (bases de données NoSQL, interfaces, divers scripts issus des copier/coller, bibliothèques d’accès aux données, etc.) et peu performantes.

« Il y a une nouvelle mentalité – un mouvement moderne – le développement d’une application revient à réfléchir sur comment relier une constellation de composants logiciels différents […] ils veulent utiliser tous les nouveaux outils qui brillent» conclut Edwards.

Pour lui, il serait presque toujours préférable d’utiliser une base de données locale (sqllite, levelDB, BDB etc.), un langage rapide reposant sur un runtime (et éviter les langages dynamiques), et utiliser le moins de machines possible pour effectuer une transaction (le premier ennemi de la performance serait le nombre de machines).

Bref, un avis tranché qui ressemble fort à une incompréhension générationnelle. Mais qui n’est pas dénué d’analyse.

Un avis, en tout cas, qui suscite débat et réactions.

Le billet de blog William Edwards

Et vous ?

Partagez-vous le point de vue de William Edwards ?

Pensez-vous que le choix de plusieurs outils récents pour développer un produit n’est pas le meilleur ?

Vous reconnaissez-vous dans sa définition d’un “développeur moderne” ? Et que lui répondriez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de deathness
Membre émérite https://www.developpez.com
Le 06/03/2012 à 16:43
Apparemment il fustige les dev qui suivent à l'excès l'école de pensée "ça sert à rien de réinventer la roue".

Tout dépend du contexte, c'est franchement dur de répondre comme ça.

A mon avis la question c'est plus:
quel doivent être les critères pour juger si on peut réutiliser de l'existant?

Des choses comme le fait que l'existant soit open ou close-source, maintenu ou non, criticité de la chose, etc...
11  2 
Avatar de gagaches
Membre confirmé https://www.developpez.com
Le 06/03/2012 à 17:31
De ce que j'ai compris,

il préconise "d’utiliser une base de données locale (sqllite, levelDB, BDB etc.), un langage rapide reposant sur un runtime (et éviter les langages dynamiques), et utiliser le moins de machines possible pour effectuer une transaction (le premier ennemi de la performance serait le nombre de machines)."

Mais ... bien sûr !
C'est l'évidence même.
(bon, sauf pour le langage qui peut avoir son utilité, bref.)

Quel besoin de sortir, je cite, "JavaScript, exécuter node.js et utiliser MongoDB ou Redis en arrière-plan" ...
soit un serveur web (avec support de javascript), 1 base de donnée NoSql ... et un client web ...
pour faire la même chose qu'un runtime en arrière-plan ?

Il n'est pas utile de sortir toute la machinerie "web" (client/serveur) pour un besoin local sur la machine.

C'est plutôt typique des personnes qui développement des applications middleware pour du SI : ils ont la liberté de choisir ce qu'ils veulent et ont souvent déjà les serveurs disponibles pour le faire.

En embarqué, par exemple, on n'a pas le choix ! On est contraint par l'environnement technique donc le choix devient forcément plus "pertinent" vis-à-vis des contraintes.
0  0 
Avatar de vampirella
Membre éclairé https://www.developpez.com
Le 06/03/2012 à 17:50
A mon humble avis (puisque c'est ce qu'on me demande ), la bonne documentation et la maintenabilité des librairies / code existant sont les deux facteurs essentiels. Bien sûr il y a plein d'autres facteurs, mais ce sont pour moi les plus proéminents, car ils permettent déjà de répondre aux questions prioritaires :

1) Que fait exactement la librairie ? Comment fonctionne-t-elle ?
2) Répond-t-elle vraiment à notre besoin ?
3) Les auteurs réalisent-ils un support ? Si oui, quel est la durée garantie ?
4) Peut-on rendre la (ou les) fonction(s) plus efficace(s) ? Si oui, quel sera le coût (temporel / monétaire) de refaire ne serait-ce que l'exact équivalent ?

Certes, dans ces questions se glisse un peu la notion d'accès au code-source, qui détermine en partie la maintenabilité de la librairie.

Ceci dit, je trouve qu'Edwards ne fait que remettre sur le plateau une autre version de l'interrogation : comment dire qu'on code "correctement" ?
Il y a plusieurs constantes (ex : pouvoir être relu par quelqu'un d'extérieur) et plusieurs variables dépendante du contexte et du besoin. Sans parler des éventuels standards propres aux langages ...

Chacun sa sauce. Pour lui, c'est "ne pas intégrer n'importe quel librairie". Un point de vue qui se respecte.
0  0 
Avatar de zeyr2mejetrem
Membre chevronné https://www.developpez.com
Le 06/03/2012 à 17:52
Citation Envoyé par deathness Voir le message
Apparemment il fustige les dev qui suivent à l'excès l'école de pensée "ça sert à rien de réinventer la roue".

Tout dépend du contexte, c'est franchement dur de répondre comme ça.

A mon avis la question c'est plus:
quel doivent être les critères pour juger si on peut réutiliser de l'existant?

Des choses comme le fait que l'existant soit open ou close-source, maintenu ou non, criticité de la chose, etc...
Je pense surtout qu'il est comme beaucoup de monde ... excédé de se récupérer des usines à gaz.

En PHP il n'était pas rare que je me retrouve à faire de la maintenance logicielle sur des applis déployant toute l'infra Zend_Framework ... juste pour pouvoir exécuter des requêtes dans une base de donnée sans avoir à écrire l'ouverture de connexion

Il est clair qu'on ne doit pas réinventer la roue ... mais parfois ca peut être salutaire pour la maintenance de se demander si on utilise pas le marteau pour écraser la mouche.
16  0 
Avatar de nflowerpower
Membre du Club https://www.developpez.com
Le 06/03/2012 à 17:53
Deathness, tu commentes alors que tu n'as même pas lu l'article....

Et pour gagaches, ne te focalise pas sur un des exemples qu'il donne.

L'idée générale de ce poste; c'est essentiellement de critiquer la manie qu'on les nouveau développeur à vouloir absolument utiliser toutes les technologies les plus récentes en oubliant de répondre à cette question essentielle:
- quelle(s) technologie(s) va être la plus efficace pour répondre à mon problème.

Avec pour résultat, des applications complexes souvent peu performante, mais utilisant de nombreux outils/langages/framework modernes.
Alors qu'un résultat plus performant aurait pu être obtenue en utilisant moins d'outils/langages (qu'il soit moderne ou non

Cogs bad = les engrenages, c'est mal.

En effet, à vouloir utiliser de trop nombreux outils/langages/framework (pour ne pas réinventer la roue); le développeur crée une très grand complexité pour faire fonctionner ensemble tous ces éléments qu'il a choisis, non pas parce qu’ils répondent à un besoin, mais parce que c'est à la mode de les utiliser.
14  3 
Avatar de mithraw
Nouveau membre du Club https://www.developpez.com
Le 06/03/2012 à 18:28
Je pense un peu comme lui...
Je dois dire que souvent, les frameworks/api fournissent beaucoup plus de fonctionnalités que celles qui sont réellement nécessaire au fonctionnement du soft, on se retrouve a embarquer un grand nombre de truc dont 10% sera utilisés...

Ca permet certes d'avoir un bon potentiel d'évolutivité du soft, mais ça a la risque d'alourdir énormement le tout.

Me concernant il m'est déjà arrivé par exemple de recoder un client xml / webservice, ca m'a pris 3 jours a partir de libs de bases tel que tinyxml et libcurl (pour du c/c++) et ca m'a permis de m'affranchir d'usines a gaz monstrueuses.
9  0 
Avatar de kolodz
Modérateur https://www.developpez.com
Le 06/03/2012 à 18:30
Cette après-midi, j'ai eu une réunion sur l'ajout d'un outil sur le site sur lequel je fait de la "maintenance et amélioration". (Comprendra qui voudra)

Le but étant de :
Savoir si la page convertit... mieux.. dans cette configuration...
Logiquement, je répond qu'on a déjà des outils d'analyse sur tout le site et que je ne vois pas pourquoi ils ne peuvent pas faire l'affaire.

J'ai pour simple réponse qui justifie tout :
Si les grosses sociétés l'utilisent, c'est qu'elle est forcément mieux.(1)
Je répond donc :
Je remplace donc les outils actuelles par celui-ci ? Vue qu'ils ont aussi pour but de savoir si nos pages convertisses...

Tout ça pour dire qu'il est parfois difficile d'être un développeur ( au service du client) moderne.

Le problème n'est pas de savoir si la librairie est nouvelle ou non. Mais de savoir si celle-ci n'est pas en doublon ou s’intègre à l'environnement pré-existant.

Cordialement,
Patrick Kolodziejczyk.

(1) : Argument du pseudo technicien-marketeux(2)
(2) : Marche aussi avec pseudo développeur ou tout autre variante
12  0 
Avatar de Vimaire
Membre habitué https://www.developpez.com
Le 06/03/2012 à 18:42
a voir surtout la maintenabilité :

un framework existant sera documenté,

je n'ai jamais vu un développeur qui avait développé une brique maison pondre une documentation équivalente à celle de spring, pour comparer à une usine connue.

En revanche, j'en ai vu un réinventer son framework Ioc pour son entreprise.
Plus performant ? peut être, mais un gain de 100ms est cher payé en cout de développement quand son framework ne fonctionnait pas comme il devait (trop souvent).
3  6 
Avatar de nextdev
Membre actif https://www.developpez.com
Le 06/03/2012 à 18:50
Ce qu'il veut dire, c'est que à l'heure actuelle, et plus on avance, Plus il y a d'applications mal programmées ! Et que ceci est la faute des librairies préfaites, où tous ces "devs" modernes ont l'air de se jeter les yeux bandés...

Parceque il y a de plus en plus de "devs" qui ne font que jouer à un puzzle sans rien y comprendre... (le genre de mec qui va meme pas ouvrir les librairies toutes faites pour examiner ce qui se passe vraiment dedans...)

...et voila ils collent ça sans aller plus loin.
Ça "marche" (sur le coup lol) et c'est tout ce qu'ils désirent...

Il n'y a pas bcp "d'outils récents" ou même vieux qui soient des bonnes choses pour le dev d'une appli propre(simple) Et performante, et sécurisé.

Edit: nflowerpower
5  2 
Avatar de Gruik
Membre expérimenté https://www.developpez.com
Le 06/03/2012 à 20:04
Pour un projet en php à l'heure actuelle ça me semble assez inconcevable de ne pas utiliser de framework.. Sauf cas particulier, ce serait prétentieux de vouloir monter le sien pour l'occasion (je parle bien d'aujourd'hui, y a 5 ans jdis pas)..

C'est sur que c'est mieux de tailler son outil pour le besoin, mais y a des contraintes économiques qui entrent en jeu ; pour des projets web faut être préparé à de forts changements de specs qui font que l'outil super optimisé pour le besoin à un instant T risque de ne plus l'être par la suite.
3  2 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web