Forum dédié au moteur de recherche et aux techniques d'optimisation par #taggle
Vous n'�tes pas identifi�.
Une petite question me turlupine depuis quelques temps amis développeurs
Avez vous des méthodos de dev spécifiques ?
Ce que je veux dire, c'est quand vous vous attaquez à un projet, vous le réfléchissez de quelle manière ?
BackOffice, je suppose en premier donc toute la partie coding only, mais même là, vous commencez par quoi ? Les objets, classes, fonctions globales, la page index de votre appli, une fonctionnalité précise ?
De manière générale, n'ayant recu aucune formation de développeur, existe il des méthodos de travail concernant le dev permettant de travailler de manière rapide et efficace ?
Je ne parle pas de système de versionning de fichier quand on bosse à plusieurs, ca je connais, mais plutôt vraiment de l'aspect purement technique de reflexion lors des premieres lignes de codes et celles qui suivent.
Hors ligne
mwa, je travaille en programmation spontanée.
(/mode relancer le troll qui s'étend sur 21 pages de developpez.net)
Pour l'instant, je n'ai abordé que des projets qui étaient au dessus de mon niveau (je veux dire, mis à part des hacks ou des refontes de CMS existants) : donc la méthodo, c'est plutot : "tiens, comment on pourrait faire ca ?"
Sur la v3 de zewol, je travaille plus propre : deja j'aborde sérieusement la POO, je commence à me construire quelques classes, et puis j'ai modélisé la base avant de la remplir (parait que c mieux ).
Mais j'essaie, dans la mesure ou je developpe seul, de pas trop théoriser, plutot de faire des schemas sur les flux, de détecter les points ou ca va bloquer, etc.
Hors ligne
Quand je bossais en agence, le séquencage était non-linéaire, mais ressemblait plutôt à :
1. conception (publics, objectifs, priorités, contenu, fonctionnalités,choix de navigation...)
2. charte graphique front office (puis validatrion client et codage HTML)
3. Ecriture/rassemblement des contenus
4. Dev. des fonctionnalités, avec livraisons par tranches : autant que possible 1 fonctionnalité = 1 cycle court de maquettage, dev, tests unitaires et d'intégration, livraison, corrections.
Hors ligne
En ce qui me concerne j'ai appris par moi meme donc ca part un peu dans tous les sens
On peut dire que ca commence toujours par le stylo et la feuille, je mets tout par ecrit :
1 : Description du projet, pour un site par exemple : les pages, les menus, quel resultat pour quelle action
2 : Je decide ensuite en fonction de ça ce qu'il faut comme backoffice, et donc nouvelle feuille avec la liste des pages en admin et les menus
3 : Je reflechis a ce que je n'ai pas integré au projet mais qui pourrait l'etre a l'avenir eventuellement : typiquement, le multilingue, des plugins, la possibilité de changer la charte graphique, la possibilité de changer d'herbergement pour un site, de changer de base de donnees etc afin d'adapter au mieux les parties plus techniques suivante pour que le projet soit au maximum portable et evolutif.
4 : A ce niveau je fais en general une premiere reflexion sur les problemes de securité que je vais pouvoir rencontrer ET sur la meilleure facon de faire pour que les scripts soient plus rapides ou moins gourmand en espace (avec ou sans bdd, quel langage utilise, quel type de programmation).
5 : Je lache le stylo et je passe au clavier : Creation des tables pour la base de données et creation de l'arborescence des fichiers.
6 : Je code, il n'y a en general pas d'ordre entre commencer par l'admin ou par le front, c'est selon l'envie du moment Pour l'un et l'autre, le graphisme n'etant pas mon fort je le zappe (pensant qu'on pourra arranger cela avec une feuille css par la suite, mais en general j'ai quand meme une idee visuelle de ce que je veux)
7 : dans de rare cas, ca va plus loin, c'est a dire que je finis Alors il faut debuguer, et au final trouver une bonne ame pour me faire un design ou qqs logos
Finaliser est sans doute le plus dur, surtout il ne faut pas partir de rien sans avoir rien mis sur le papier (on est pas oblige non plus de faires des specs facon ssii, en general on est trop pressé) ; ne pas negliger les possibilités d'etendre son projet facilement est important aussi (conception des bdd et de l'arbo surtout) car il n'est pas rare que de nouvelles idées viennent au fur et a mesure qu'on developpe et si le truc est mal pensé à la base, c'est le cas typique où il n'aboutira jamais...
Le temps passé en amont est donc du temps gagné pour la suite, pour ça ya pas photo ; il peut même y avoir un avantage a laisser murir un projet longtemps avant d'attaquer vraiment la partie coding, car si le truc est bien ficelé ça ira plus vite le plus ralentissant et le plus chiant étant vraiment le fait d'avoir de nouvelles idées alors que le dev est déjà bien lancé.
Hors ligne
J'ajoute que mon angoisse n°1 en ce moment - mais ca tient à la nature de mes projets, c'est la scalabilité. C'est donc un des points que j'intègre le plus en amont dans ma reflexion, pour eviter de me retrouver avec des bases qui explosent en deux mois ou des espaces disques saturés
Hors ligne
Mais j'essaie, dans la mesure ou je developpe seul, de pas trop théoriser, plutot de faire des schemas sur les flux, de détecter les points ou ca va bloquer, etc.
[...]et le plus chiant étant vraiment le fait d'avoir de nouvelles idées alors que le dev est déjà bien lancé.
Je suis un peu comme ca aussi dans la mesure ou de toute manière, l'appli évolue en fonction de mon avancement, j'appele un truc et jme dis merde, ca serait bien si je l'appelais aussi comme ca, et hop une nouvelle fonctionnalité, dur dur d'arriver à définir le périmètre définitif de l'application sans tout remettre en cause.
Et pourtant, dès le départ, je m'étais dis, tu te limites à la base des fonctionnalités ..
Sans parler des facteurs bloquant qui nécessite de revoir l'angle d'attaque du problème :p
Bref, merci pour vos retours, je vais essayer de m'organiser pour avancer malgré ca
T'as des docs pratique sur ces notions de scalabilité que tu évoques ou il faut sortir les gros théorêmes mathématiques ? :p
Hors ligne
sur la scalabilité, je traite des gros volumes, et je me suis fait avoir sur la version 1 (par exemple, j'ai plusieurs tables à plus de 500 Mo, sur lesquelles je dois faire des SELECT complexes, je te fais pas de dessins). Du coup, pour la scalabilité MySQL donc, j'atomise à mort, je relationnise etc. J'ai pas encore de souci scalabilité trafic (quoique mon plateau de frequentation actuel va surement exploser d'ici l'été, ou je passe sur un "vrai" dédié). Et j'ai pas encore résolu d'autres problèmes de traitement lourd de textes (lourd, genre 250 mo de texte à parser, ordonner, tagger, etc).
donc ni docs, ni théorèmes, sur PHP/MySQL j'en suis toujours au stage LEGO
Derni�re modification par Malaiac (02-05-2007 14:42:59)
Hors ligne
Théorie:
le cycle de dev / methodologie dépend du projet sur lequel on bosse, et de la taille du projet et des equipes.
Le cycle standard est le cycle en V: http://fr.wikipedia.org/wiki/Cycle_en_V
S'il y a du prototypage "intensif" (ou itératif) on parle de cycle en spirale: http://fr.wikipedia.org/wiki/Cycle_de_d … en_spirale (ça donne une idée mais c'est pas trop explicite)
Pratique:
C'est souvent du 'freestyle programming'
Tout commence par un bon CDCH fourni par le client (ca peut etre un service de ton entreprise).
Tu fais des specs (tu rentres plus dans le detail que ton client, pour etre sûr d'avoir bien compris)
Tu t'entends sur une charte graphique. Au top, le client l'a déjà fait faire chez un graphiste, ou a des codes couleurs tout prêts.
Ensuite conception (perso je fais beaucoup de graphes, MCD merise pour les BDD et graphes de sequencement UML) a terme j'aimerai savoir concevoir completement mes applis web en UML. A ce qu'il parait c'est fesable, mais c'est assez chaud.
Codage
Tests, tests, tests ... unitaires (module par module) integration (tout s'emboite bien) et non regression (je modifie un truc, ca plante pas de l'autre côté)
Livraison et recette
Coté gestion de projet:
tu définis les taches et les profils, plus les durées de chaque tache (en jour / homme) + combien ca coute par jour. Tu fais un diagramme de GANTT pour visualiser la parallélisation des taches, et tu arrives a voir dans combien de temps ton dev sera pret.
bon je fais vite & court mais on peut aller dans le detail
qq'un a déjà testé les méthode d'extreme programming? (c'est à la mode: http://fr.wikipedia.org/wiki/Extreme_programming)
Hors ligne
Regle d'Or : Ne jamais montrer au client un dev. qui n'est pas fini. T'as pas fini qu'il te fait déjà tout recommencer.
Sinon, commencer par la base de données : Si t'arrives à faire la base, alors le reste coule de source
Enfin : Café, chocolat, et clavier, clavier, clavier
Hors ligne
En ce qui concerne la création de sites web, je vous recommande chaudement la lecture du chapitre "goal-oriented design" -conception orientée objectif- de Webdesign from scratch.
Ma méthode de travail est franchement adaptée de celle-ci.
Je pourrais vous montrer un projet réalisé sur ces bases à l'occasion d'une prochaine rencontre (avec CDC et brief de créa... etc.).
Hors ligne
Anonymus a �crit:
Sinon, commencer par la base de données : Si t'arrives à faire la base, alors le reste coule de source
Exact :-) , la premiere chose a faire est de modeliser les données, on peut ensuite le penser suffisament atomique pour que de nouvelles fonctionnalités puissent venir se greffer dessus sans probleme.
Si on regarde les cycles en V/ méthode merise and co, on voit une etapes fonctionnelles importantes, pour le net, definir ses écrans finement revient ensuite à obtenir un decoupage des pages et des fonctionnalités assez simplement.
Ensuite suffit de se faire sa/ses petite(s) lib(s) pour que ce soit un minimum organiser et voila.
Hors ligne