En 2008, ça se fait encore...
Par NiCoS le lundi 8 septembre 2008, 13:38 - Intégration - Lien permanent
Besoin : afficher les 8 dernières actualités et mettre en place un système de pagination pour accéder aux actualités
Réponse obtenue et livrée d'un développeur d'une SSII :
- Récupération de toutes les news (via l'équivalent d'un joli SELECT *) dans un tableau en PHP
- Parcours du tableau pour conter le nombre d'éléments du tableau obtenu précédemment et gérer ainsi la pagination
- Récupération en base des 8 dernières news en vue de leur affichage (ce serait trop bête d'utiliser le tableau obtenu précédemment)
- Pas d'utilisation du mécanisme de cache fourni par le CMS (eZ Publish) - donc à chaque rechargement de page, on recommence...
Quand il y a une 20aine d'actualités, coté temps d'affichage ça va encore - lorsqu'il y en a >1000, ça le fait tout de suite moins.
Réponse attendue d'un développeur sensible aux bonnes pratiques du web et conscient des problématiques de charges :
- Utilisation de COUNT (ou plutôt de son équivalent dans le langage du CMS utilisé)
- Récupération en base des 8 dernières actualités en vue de leur affichage
- Mise en cache du résultat obtenu
C'est dans ces cas aussi que l'on souhaite une professionnalisation des métiers du web. Certains diront que la qualité se vend mal. C'est sur que si les clients ont déchanté face aux promesses de qualité faites par les SSII/Editeurs, ils vont avoir du mal à acheter une telle qualité annoncée. Le problème tient au fait pour les SSII de prouver à leurs clients que la qualité annoncée sera au rendez-vous et de former le cas échéant ces collaborateurs. Pour le bien de tous (développeur, SSII, client), il est évident que cette professionnalisation se fasse mais faut-il encore le vouloir et le financer... Dans ce cadre, on ne peut pas demander à un collaborateur de se former sur son temps libre ou chez un client...
Commentaires
Et là tout le monde attend le nom de la SSII en question ;-).
Arg.
@David : non pas moyen, j'ose espérer que tous leurs collaboratuers ne sont pas comme ça
Et le pire c'est que même chez des très gros industriels, je vois encore très souvent ce genre de ... bouses...
Je suis content de n'être que developpeur passioné et bientot freelance, pour ne pas être obligé de subir ce genre de codes. (et la création de mon framework par la même occasion qui se comportera de la manière la plus économique possible)
@Anthony : attention en freelance tu es parfois "obligé" de reprendre de l'existant...
Comme je viens de répondre sur nota bene, je ne suis pas sûr que le problème soit au niveau de la professionnalisation des métiers du web. Des professionnels du web, il y en a, mais peut-être plus dans les agences qu'en SSII.
Et dans ton cas, comme tu le soulignes, le vrai problème est de formation: je fais du eZ Publish depuis un certain temps maintenant, mais continue à faire des erreurs de débutant, parce que je me suis formé sur le tas, au fur et à mesure des projets et en lisant la doc. Comme j'en ai sauté quelques pages, il me manque encore certaines bases. Je ne pense pas qu'il faille jeter la pierre à ton développeur, s'il a été mis sur eZ sans aucune formation il n'est pas étonnant qu'il fasse ce genre de bourde. Par contre, il faudrait remonter les bretelles à la SSII qui envoie au casse-pipe des gens non formés (ce n'est jamais agréable pour un dev de devoir se faire passer pour expert d'un truc que tu ne maîtrises pas) et ne fait même pas de revue de code avant de livrer. Mais sans se faire d'illusion, cela fait si longtemps que les SSII, y compris des "bonnes", fonctionnent comme ça que je ne me fais aucune illusion sur leur capacité à se corriger...
Euh, comme réponse attendue, j'aurais plutôt mis : une seule requête récupérant le nombre de ligne total ainsi que les 8 premiers résultats + mise en cache
SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT
@Simon: en fait je pense que les requêtes n'ont pas été faites en SQL, mais avec le langage de template d'eZ, donc à coup d'instruction "fetch". Et il faut connaître leur syntaxe pour savoir qu'on peut trier leur résultat et n'afficher que n résultats à partir du x-ième, ou qu'il existe une fonction de fetch spéciale équivalente à un count(*). Mais pour savoir que ces fonctions existent, il faut avoir été formé ou au minimum avoir eu le temps de lire la doc et d'étudier toutes les options de toutes les fonctions disponibles dans les templates. Ce qui demande plus de 5 minutes.
Je viens d'entrer dans une SSII, et je suis sur eZ depuis bientôt six mois. Les premiers templates que j'ai écrit n'ont jamais été revus par quelqu'un avec plus de bouteille ( quand je les revois ils me piquent les yeux ). Il est vrai qu'au début l'encadrement manque. Il est facile de faire un template qui marche, mais ce qui concerne les performances est moins évident. Il ne faut surtout pas hésiter à déranger les collaborateurs plus expérimentés (après avoir cherché un peu hein ^^)
@Anthony : comme le dit David, tu risques de récupérer un existant (ou cohabiter avec). Par contre, vu le nombre de framework web sur le net, pourquoi inventer le tien ? N'y gagnerais tu pas plus à connaitre le framework Zend ou Symfony plutôt que d'investir dans ton propre framework ? Sans compter que quand tu es freelance, tu as peut être autre chose à faire que maintenir ton framework et qu'il est peut être aussi plus judicieux pour toi de profiter des avancées des autres...
@Clochix : quand tu parles d'agences, tu parles d'agence de comm' ? Sinon pour revenir au développeur, je ne lui reproche rien en tant que tel. C'est plus le delta entre la qualité vendue et la qualité obtenue par la SSII que je condamne. Je partage malheureusement ton pessimisme (cela explique peut être aussi pourquoi je ne suis plus en SSII) et sur le fait que ce n'est pas en faisant des économies de bout de chandelle qu'une SSII améliorera ses marges, ni n'arrivera à augmenter son TJM moyen ou encore sa rentabilité.
@Simon : je pensais pas que c'était possible directement en SQL et comme le dit Clochix, dans le cas présent il faut en plus passer par la syntaxe du CMS. D'ailleurs ta syntaxe fonctionne pour toutes les bases (mysql, sql-server, postgresql, oracle, etc ?)
@Macman : je te réponds demain
NiCoS, c'est justement après avoir discuté avec un des createur d'un gros framework (et d'un moteur de blog que tu utilises) qu'il m'as convaincu du bien fondé de créer son propre framework. Tu maitrise parfaitement ce qu'il fait, l'optimisation dont tu as besoin, les fonctionnalités sans arriver a une usine à gaz qui fait tout. Ensuite, tout dépend du temps qu"il te faut pour coder ton framework par rapport au temps nécéssaire a t'adapter et apprendre un framework fait par d'autres.
Agences web, agences interactives, les dénominations changent. De plus en plus font à présent la DA et l'intégration. Un choix financièrement coûteux (les intégrateurs sont encore un peu mieux payés ici qu'en offshore), mais très payant sur le total du projet, puisque le graphiste et l'intégrateur travaillent davantage ensemble. Et pour ce que j'en vois, de plus en plus de réponses à des AO sont des tickets communs entre une agence pour la DA et l'intégration client, et une SSII pour l'intégration serveur.
@Macman : tout à fait d'accord - toutefois, attention à ne pas remplacer la formation à l'outil par cette "accompagnonage", bien que fort utile, n'est pas forcément idéal (expert sollicité, manque de temps, etc)
@Anthony : certes, mais pour un client, c'est peut être plus vendeur pour lui de voir qu'il va prendre une presta avec un framework "répandu" et pour lesquels les compétences sont nombreuses, plutot qu'un framework "perso" maintenu par une personne et dont la pérennité n'est pas garantie. Cela reviendra presque pour ton client à acheter un produit "propriétaire" ou du moins à rentrer dans une logique d'éditeur...
@Clochix : en effet, c'était pour être sur d'avoir bien compris tes propos - je pense en effet que ces réponses communes sont plutôt un bon choix pour avoir eu l'occasion de travailler plusieurs fois dans ce mode.
NiCoS, moi je connais la SSII dont tu parles, même si l'article n'est pas méchant, la moindre des choses aurait été d'attendre la fin du projet pour écrire un tel article. Car dans l'équipe de cette SSII certains lisent ton blog et ce genre d'article je le crains, peut entacher des relations déjà difficile avec ta boite. (commentaire en retard, je te l'accorde).
Samuel (déjà, désolé pour le délai de publication, tu étais passé dans les spam) : je comprends ta réaction dans une certaine mesure. Toutefois, je ne cherche pas à blâmer le développeur en tant que tel mais plus le système des SSII dans lequel il évolue. Le développeur a le droit d'être débutant mais que ce soit dit et que ce soit clair pour tout le monde. Que l'on ne dise pas au client qu'il est expert Truc ou expert Bidule. Et là, je ne parle même pas du fait qu'il est vendu (ou pas) comme expert...
Je n'ai rien contre le/les développeur(s) de cette SSII, même si l'accumulation de bugs et la longueur finale du projet peuvent laisser penser le contraire parfois... Faut voir aussi que ce projet devait me prendre une 20aine de jours et qu'au final, j'y passe entre 50% et 60% de mon temps depuis avril, avec les autres projets sur lesquels je dois travailler et qui ne prennent (malheureusement) pas de pause pendant ce temps... Mais bon, on touche au but...