Et ce que Javier est vrai : chaque dev front code son truc à sa sauce, ce qui fait qu'une doc ne servirait à rien pour le prochain car quelqu'un de bon saura lire le code, le comprendre et l'adapter/refaire à sa sauce.
Pas forcément quand même.
Pour avoir été à la place de quelqu'un qui met les pieds dans du code front contraint et forcé (réduction de budget, tout le monde met la main à la patte, …), je peux te garantir que sur un framework fait maison, une doc aide quand même pas mal. C'est pas la panacée mais ça permet de rentrer dans le code plus rapidement, même si une relecture complète sera nécessaire.
Pour donner un ordre d'idée, je viens de commencer dans une entreprise, je remplace 3 personnes qui sont parties ces deux dernières semaines et il n'y a pas de doc : j'ai déjà recodé certaines pages. Et Bootstrap n'est pas une solution, j'ai vu des choses vraiment très mal réalisées malgré l'intégration de Bootstrap dans le projet.
Ça n'empêche pas de mal réaliser certaines choses. Cependant j'ai vécu la transition 1 dev front (intégrateur) => 0 dev front que des dev back. Et Bootstrap a énormément aidé sur ce point. Ses conventions sont assez faciles à comprendre pour n'importe quel développeur. Une fois le gros boulot pénible de "je surcharge Bootstrap pour qu'il colle à notre identité visuelle", ça rend quand même le boulot plus simple pour des développeurs qui ne sont pas spécialisés dans le front (c'est mon cas par exemple). L'énorme avantage, c'est que la doc est déjà écrite. En gros : adaptation de Bootstrap (ou un autre hein) à notre charte / identité visuelle, pour le layout on essaie de conserver le comportement de la doc. C'est pas la panacée absolue mais ça permet de s'en sortir.
Dans l'absolu, ce qu'on peut faire, mais qui est moche, c'est d'inclure les exports CSS, JS et images dans le dépôt. C'est immonde, mais tout le monde aurait tout à jour sans problème. Seul risque : quelqu'un qui modifie les fichiers compilés et qui serait écrasé à la prochaine modification propre.
C'est peut-être plus simple pour quelqu'un qui ne touchera qu'au back, c'est une piste à creuser que j'ai déjà vue appliquée en pratique.
Par curiosité Javier : quels choix techniques tu aurais fait sur un site tel que ZdS ?
Au niveau layout CSS, comme c'est vraiment pas mon métier à la base, si j'avais du m'y coller, j'aurais choisi Bootstrap pour les raisons citées plus haut.
-
Je serais quand même allé plus vite mine de rien. Ça me prend toujours du temps de faire de la CSS "from scratch" j'ai pas vraiment les bons réflexes et j'ai parfois du mal à debugger du CSS. Bootstrap m'a souvent aidé sur ce point. Notamment pour des colonnages "responsive" ou ce genre de choses. Quand je commence à fouiller dans les mediaqueries ça finit généralement en une CSS relartivement difficile à lire. Donc en connaissant mes faiblesses, j'aurais cherché à les contourner comme cela.
-
La doc. C'est con mais dire "c'est un bouton de soumission tu lui appliques la classe btn-submit comme c'est marqué dans la doc" bah ça va quand même plus vite que ré-écrire une doc. Sur ZdS c'est un peu le cas déjà, mais autant essayer de coller au plus près des normes qu'ils ont établies, ça permet de bénéficier de leur doc.
-
Le côté "chat perché". Justement pour ce qui se produit en ce moment si tu quittes le projet. T'as un bon argument pour dire "c'est pas la mort, vous prenez n'importe quel zozo qui connaît Bootstrap et vous lui montrez bootstrap-zds-override.css" et il devrait s'en sortir s'il est pas totalement manchot.
-
L'approche déclarative que je trouve plus lisible. Je surcharge bootstrap à UN endroit, après on retrouve l'organisation que tu as sans doute mise en place (un fichier css par famille de composants : forms, …). Le fait d'utiliser Bootstrap renforce un peu cette approche, puisque tout ce qui est différent du Bootstrap de base peut se trouver dans un seul et même fichier.
Au niveau JS la question est délicate.
Je n'aime pas faire du Vanilla JS, mais sans doute parce que je ne crée pas de site comme ZdS. Je fais essentiellement des UI de pilotage d'écrans, de gestion d'énormes monceaux de données, de présentation de trucs qui s'update en temps réel, qui bougent beaucoup etc. Voire des petits bouts d'app mobiles avec PhoneGap (toujours avec pas mal de contraintes d'interactivité, de réactivité, …). J'ai quasi-systématiquement besoin de me reposer sur une API pour me servir les données (et c'est d'ailleurs plus découplé et un peu plus facile à tester finement) et d'un framework JS pour organiser la page.
J'ai utilisé AngularJS, beaucoup, React, un peu, et j'ai vu Mithril par curiosité. Je comprends l'intérêt de React quand il y a un vrai soucis de performances. Je préfère par contre énormément l'approche AngularJS beaucoup plus déclarative. En regardant le template tu comprends mieux la structure de l'application et ses différents composants. La logique est bien découpée, bien séparée.
Maintenant pour ZdS est-ce-que c'était possible ? Non. Ou alors il aurait fallu partir sur une API à t0. Est-ce-que c'était un choix raisonnable d'imposer ça ? Non, probablement pas. Les écrans sont très statiques. Les templates Django m'ont l'air plutôt bien fichus (et encore une fois, plutôt dans l'ère des frameworks modernes plebiscités) donc autant en tirer parti. Il y a fort à parier qu'avec Angular ou un autre, la difficulté de transition avec un autre développeur aurait été encore plus grande. Et je ne pense pas qu'il y en avait réellement besoin. Seule la partie éditeur markdown (voire édition de tutoriel) aurait pu faire l'objet de cette réflexion (glisser / déposer pour organiser son tutoriel, …).
Maintenant, au niveau des outils techniques… Dur pour moi d'y répondre. Je n'aime pas "les outils front" tout seul. (genre gulp, grunt, et consorts). J'ai besoin qu'ils s'intègrent avec les outils du back. Si je prends par exemple mon projet perso (dont je parle vaguement ici), j'ai besoin de SASS, évidemment, d'Angular, puis de plein d'autres choses. Je vais avoir besoin de minifier les fichiers en prod mais pas en dev, bref, standard. J'ai essayé de ne travailler qu'avec des outils standards fournis par la plateforme (en l'occurrence des plugins Grails lui pour gérer les ressources et comment elles sont organisées et servies, lui pour angular, lui pour compiler à la volée en dev et minifier en prod, lui pour les menus, fil d'ariane etc.), quitte à mettre un peu de côté des fonctionnalités si jamais je ne pouvais pas les implémenter de façon standard.
Autre exemple, contexte pro. Si jamais on ne peut faire autrement que de faire appel à des tâches "front" (gulp, grunt, node, …), alors j'essaie de les wrapper dans un mécanique de build connu (plugin maven, tâche ant, ou mieux : tâche Gradle) pour que ce soit "découplable". Je ne sais pas si ce dont je parle s'applique à un projet Django, mais la lourdeur du processus d'install que vous décrivez serait sans doute (au moins partiellement) résolue par Gradle et une séparation en sous-tâches "setup-dev-environment", "build-back-only", "run-back-tests", le tout attaché à des scripts qui font le boulot pour vous (e.g. récupérer le résultat du build des fichiers scss et ne pas y toucher après, ou que sais-je encore).
Je comprends que vous ayez fait appel à ces outils, mais ça me rend barge quand ce n'est pas correctement wrappé dans une mécanique de build connue et surtout commune à tout le monde. Sur un projet Java par ex. un dev back qui ne connaît pas Maven ou Ant (et plus récemment Gradle) ça me semble rare. Il sera à même de comprendre où et comment sont invoqués certaines tâches qui ne l'intéresse pas. "Ah ouais mais pourquoi je faire un gradle build-all
j'ai pas besoin du front ! Bref, c'est un peu naïf expliqué comme ça sans connaître les outils existant en Python+Django.
C'est le choix du from scratch qui te repousse ?
Non, c'est le temps déjà, soyons honnête deux secondes. Je sais le temps que ça prend et j'ai envie (et presque besoin, en fait) d'avancer sur mon projet perso.
Ensuite, je suis incapable de faire ce que tu as fait visuellement, c'est pas mon métier. Je sais me débrouiller pour intégrer des maquettes et réfléchir sur l'ergonomie d'une interface, mais là y'a un vrai travail de design que je n'aurais pas pu faire moi-même (ou alors ça m'aurait pris un temps fou, que je peux me permettre sur mon petit projet à moi, mais pas sur ZdS).
Enfin, je l'ai dit, il y a 50 bonnes façons de s'investir dans ZdS, et développer en front pour ce site ne m'intéresse pas. Je le fais à ma sauce sur mes projets, je bidouille avec des frameworks inconnus au bataillon, … Bref, je m'amuse. Ici j'aime participer, essayer d'apporter un éclairage quand je pense que je suis à peu près compétent sur un domaine, aider quand je le peux. ZdS n'est pas le bac à sable dont j'ai envie côté front. Et je suis certain que je ne suis pas le seul, c'est pour cela que je faisais cette remarque à Kje.
Et je comprends aussi très bien qu'un dev back qui n'a quasiment jamais touché au front (autrement que pour s'amuser) ne puisse pas le comprendre. Je fais les deux, je m'éclate à chercher des solutions élégantes pour construire des APIs par exemple, ou modéliser un truc tordu de façon élégante côté back pour que ce soit réutilisable etc. J'aime ça, et ZdS est totalement là-dedans. Le module de cours est complexe, repose sur Git, etc. Une API se met en place et est vraiment cruciale pour le développement du site, et est vraiment destinée à quelqu'un d'autre qu'à toi-même (honnêtement c'est rare ce genre de projets, dans 80% des cas ton API tu la mets en place pour UN client voire le mec assis juste à côté de toi, ou un mec d'un service deux étages plus haut). C'est un excellent terrain de jeu et d'apprentissage. Depuis les specs jusque dans les tests.
Mais côté front on ne retrouve pas ça. Et je trouve dommage que certains ne le voient pas. Je pense qu'il faut imaginer un dev back sur un projet de gestion (genre avec que des lignes de saisie, des taux de TVA, et des rapports Excel à générer), le modèle est "straightforward", c'est des lignes les unes derrière les autres, Excel pourrait le faire mais le client veut un truc custom en Swing. Et attention : pas le droit à l'erreur, parce que d'une "C'est quand même pas bien compliqué pour quelqu'un comme toi !!" et de deux "c'est sensible !", ouais, mais c'est chiant à mourir.
Si certains dev back ne pigent pas trop le sentiment de Sandhose ou Alex, essayez de vous représenter cela. Pour un dev front, ZdS ça peut revenir un peu à ça.
Ensuite j'aimerais revenir deux secondes sur la réflexion de Shigerum. Alors j'ai pas toute la vue du projet, des gens, de ce qui se passe en coulisse etc. Mais je trouve, moi, ton message plutôt exécrable. Alors qu'on recherche des solutions (techniques d'abord, humaines ensuite) à un problème plutôt complexe honnêtement et qui mérite sans doute une bonne grosse dose de recul, parce que oui, ça fait intervenir l'humain, on est sur un projet non-professionnel : les gens ont pas nécessairement envie que ça leur bouffe du temps, et leur moral. Je suis pas vraiment convaincu que de rentrer dans le lard des deux principaux intéressés soit franchement la meilleure réaction à adopter.
J'peux comprendre un certain agacement suite au message de Sandhose (qui a bien fait de s'excuser je le répète), mais il y a des réflexions et des mots pour lesquels je ne vois pas d'autre intérêt que de blesser.
"le site d'Alex qui est trop claaaaaaaasse" : ça veut dire quoi sincèrement ? Etc.
Vraiment déçu pour le coup. Je m'étends pas plus parce qu'il y a certainement des raisons que je ne connais pas qui te poussent à penser cela. Soit.