7
votes

Ma productivité diminue car le projet devient plus grand. Comment augmenter la productivité en tant que taille des augmentations de projets?

J'ai initialement démarré avec un petit projet, éditer des fichiers PHP et tel dans le NotePad ++. Il était facile de penser à une fonctionnalité et de l'ajouter sous forme de fichier séparé sur le projet. Au fur et à mesure que le projet devenait grand, ma productivité a commencé à diminuer car je ne me souvenais pas de toutes les fonctions que j'ai faites et où elles ont été stockées, etc. Ensuite, j'ai ajouté un IDE (PHPP) et SVN, puis j'ai remarqué un grand boost de productivité.

Je me trouve à nouveau sur la productivité (car tout devient trop complexe). Le projet est passé d'environ 20 fichiers ou donc des fichiers, et devient difficile de gérer tous dans ma tête (même en utilisant un IDE). Je me demande si les gens ont des conseils sur ce que je peux faire pour accroître la productivité. (Quel est le niveau suivant? S'il y en a un)

Tous les outils logiciels ou conseils sur la manière d'approcher la conception du programme / rendre les choses plus simples pour visualiser au moins?

Je sais qu'il n'y a pas de balle d'argent, mais toutes les idées seraient utiles.

Par exemple, utilisez-vous certains outils pour passer la journée à partir d'une IDE / SVN. En outre, écrivez-vous du code d'une certaine manière afin que cela ne soit pas un problème à l'avenir? (Spécificités s'il vous plaît).


0 commentaires

23 Réponses :


2
votes

Des langues non typées et de procédure se décomposent dans de grands projets. C'est toujours comme ça, c'est pourquoi OO a été fait et des choses comme le découplage et l'encapsulation sont considérées comme des méthodologies de conception de bonnes méthodes.


0 commentaires

2
votes

Bien sûr, utilisez d'abord la programmation et l'héritage OO. Ensuite, j'utiliserais le cadre comme le code allumeur de code pour commencer, ajoutez un module pour la mise en page (vous auriez donc une mise en page cohérente du site) et peut-être peu d'autres, point de ne pas passer trop de temps sur des choses courantes. Malheureusement, les migrations de CI ne sont pas géniales, mais elles existent, alors quelque chose due à ces lignes serait utile pour faire face à la DB. Avec ceux-ci, vous pouvez avoir votre productivité à nouveau car vous ne passerez pas de temps sur de petites choses.

chose avec des projets plus importants est qu'ils ont plusieurs aspects et plus ceux-ci existent, plus vous avez besoin de passer en compte.

J'espère que cela aide.


0 commentaires

9
votes

Ne soyez jamais fier de la modification du code dans un bloc-notes! L'IDE économise votre temps et augmente votre efficacité. Lorsque le projet devient grand, vous devez prendre soin de la gestion de projet et coller à un "modèle de processus" efficace, tel que RUP (processus rationnel unifié), EUP ou OOSP. Votre SVN fait partie de la SCM . Bien sûr, il existe de beaucoup plus d'activités définies dans un motif.As pour le problème de gestion de fichiers, vous pouvez les diviser en différents forfaits et les sauvegarder dans différents endroits. Si vous n'avez aucune idée de "Génie logicielle", vous pouvez vous référer à des livres écrits par Scott W Ambler ou d'autres sur SE (Génie logiciel). N'oubliez pas que le logiciel est bien plus que Code!

Un bon développeur sait qu'il y a plus de développement que de la programmation. Un grand développeur sait qu'il y a plus de développement que de développement. de Scott W Ambler


4 commentaires

+1 IDE sont parfaits pour la complexité de masquage. Le problème est que la complexité existe toujours. Et malheureusement, les idées ont souvent leur propre taxe de complexité.


Il a déjà mentionné qu'il utilise un IDE ...


Il a déjà mentionné l'IDE, il demande à quelle est la prochaine étape ... et tous ces Moppets Up-vote Top Réponse ...


L'utilisation d'un IDE n'est pas l'idée principale de ma réponse. J'ai dit d'utiliser un IDE juste pour soutenir son choix. Choisissez un modèle de processus et apprendre des concepts de base d'ingénierie logicielle sont les plus importants.



12
votes

dessiner et / ou écrivez-le. Si vous dites que c'est «tout dans votre tête», alors prenez du temps du codage et documentez votre travail. Cela peut inclure des paragraphes expliquant pourquoi vous avez fait quelque chose.

Les diagrammes et autres visuels vous aideront également à le garder organisé.

J'ai trouvé certains programmeurs ignorent les facteurs non techniques dans les projets. Cela est particulièrement vrai pour les développeurs isolés qui n'ont pas la structure d'un groupe pour les guider. Votre travail est plus que le code et vous devriez examiner tous les aspects de votre processus.


1 commentaires

Je suis d'accord 500%. Tout le code du monde ne veut rien dire si vous ne pouvez pas gérer comment il est entièrement mis en place, et après un certain point de complexité, la plupart des gens ne peuvent tout simplement pas faire cela. La mettre sur papier ou utiliser des outils de cas sont de grandes façons de visualiser la manière dont les choses fonctionnent, bien mieux que de tout garder tout dans la tête.



7
votes

Le développement axé sur les tests pourrait vous être utile.

Créez d'abord vos tests, puis écrivez le code pour transmettre ces tests.

Lorsque vous ajoutez / modifiez n'importe quel code, demandez une suite de test de régression que vous pouvez exécuter pour vous assurer que vous n'avez pas brisé quelque chose. Dans mon expérience, cela permet d'économiser de temps, en particulier comme une application pousse en complexité et à la taille.


0 commentaires

5
votes

La productivité sur les grandes bases de code est moins sur les outils et plus sur le code que vous écrivez. Passez du temps à améliorer la qualité de votre code, à la fois nouveaux et existants. Oui, cela vous ralentit à court terme, mais il vous permet de maintenir votre rythme au fil du temps.

Ceci s'applique quelles que soient vos outils ou votre langue. Les meilleurs outils du monde n'aideront pas à quelqu'un qui sort de faire du désordre. Pour commencer, je garderais des idées simples à l'esprit:

  • La qualité du code est un investissement dans la productivité future.
  • Si votre intestin vous dit que le code est mauvais, complexe, mauvais, laids ... c'est probablement, réparez-le.
  • Arrêtez d'écrire un mauvais code, maintenant, pas demain.

    Pour beaucoup plus d'informations approfondies sur la façon de concevoir un excellent code Je suggère d'avoir une navigation sur ici .


0 commentaires

5
votes

J'avais l'habitude de travailler sur un projet qui avait environ un million de lignes de code (C #, C ++) et il s'agit toujours de grandir.

1) Pour gérer une telle base de code, la structure de dossiers de l'archive SVN a été créée de manière à imiter diverses couches architecturales de notre produit. De cette façon, il est devenu plus facile de trouver notre chemin à travers les archives.

2) Nous avons également eu notre propre outil de construction personnalisé. Lorsque vous avez une base de code énorme, il pourrait ne pas être réalisable de tout construire à tout moment vous souhaitez tester une petite fonctionnalité. Notre outil de construction personnalisé a eu beaucoup d'options, qui pourrait construire les archives à n'importe quelle granularité.

3) Habituellement ce que j'ai observé, c'est si vous obtenez les fonctionnalités génériques / les aides à droite, construire de nouvelles choses sur elle devient plus facile et évite également le blague de code.

4) Configurez un wiki, si le nombre de développeurs travaillant sur votre projet est plus. La documentation Wiki est sans effort, la recherche capable et utile si elle est bien faite.

C'est tout ce que je peux penser en ce moment. J'espère que cela aide


0 commentaires

2
votes

L'utilisation d'un cadre PHP MVC réduirait considérablement la quantité de code que vous devez suivre. Cela s'occupera de nombreuses choses que vous avez probablement dû vous écrire comme une session, une couche de base de données, etc. En utilisant un cadre, cela vous aidera à organiser vos fichiers logiquement.


0 commentaires


3
votes

Qu'en est-il de ce mythe flottant autour de cette OOP sauvera la journée? Si c'est vrai, comment se fait-il que les gars de Linux / noyau poussent encore de nouvelles versions sur une base hebdomadaire? En d'autres termes, tous les programmeurs ASM / C sont condamnés à la complexité «Hello World»?

Vous ne savez pas exactement ce que vous demandez exactement. Je veux dire travailler sur les problèmes avant et quand ils se produisent:

  • Si vous avez à plusieurs fichiers et locs, je vous réduisez et réorganisez-les. Par exemple, en construisant ou en utilisant des cadres solides rock pour certaines tâches (PDO au lieu de MySQL ()). En d'autres termes, ne vous répétez pas. Noms de fonction courtes, accrocheuses et similaires: get_user_id (), get_task_id (), db_query () ....

  • La communication dans le groupe est-elle un problème? Essayez Wikis, essayez interne im, essayez d'utiliser plus de commentaires, demandez au groupe ce qu'ils n'aiment pas et que vous souhaitez être amélioré. Cela dépend totalement du projet.

  • Si vous travaillez dans un groupe, ne soyez pas partout. Travailler sur vos pièces et les améliorer. Cela fait gagner du temps que vous devez entrer dans les autres membres de l'état d'esprit des programmeurs. Un changement à la fois. N'ouvrez pas 200 fichiers et modifiez des objets totalement indépendants.

  • automatiser et accélérer tout, si possible: déploiement, version de la version, documentation, tests.

  • Les grands projets sont de gros projets et ceux-ci sont toujours difficiles à comprendre. Le baiser est bon, mais dans mon expérience, il est parfois utile de décomposer la chose à des composants de travail indépendamment communiquant via XML, des interfaces spécifiques à la langue, etc. En bref: faites beaucoup de petits projets hors du grand.

  • Je garde une liste personnelle todo / mémoriser comme "myName.todo.txt".

  • Le déploiement rapide est obligatoire! Par exemple, installez une lampe locale / XAMPP et affichez directement vos modifications.


0 commentaires

2
votes

Vous avez un projet énorme pour PHP, à mon avis. Cela peut être fait, mais vous avez vraiment besoin d'organiser.

rompre autant que possible dans des morceaux indépendants, chacun avec une petite interface.

"Terminer" autant que vous le pouvez. Traitez ensuite que le code «fini» en tant qu'API, vous n'avez donc plus besoin de le regarder. 4,5 jours de la semaine, supposons que quelqu'un d'autre l'a écrit et que vous ne connaissez que l'interface.


0 commentaires

3
votes

Obtenez l'habitude d'étudier régulièrement votre code et de rechercher des moyens de Éliminer la répétition (c'est-à-dire appliquer le principe de ne pas vous répéter ni le principe séché), et soyez impitoyable dans le refactoring de cette répétition. Plus vous appuyez sur des extraits de code communs en méthodes et classes réutilisables, plus il est facile d'écrire un nouveau code et plus vous gagnez sur le problème.

Utiliser un bon IDE vous aidera à trouver des points communs et à appliquer des refacteurs.

Recherchez également la source ouverte Cray-Frameworks et outils qui automatient les aspects de votre logiciel. Les utiliser sont une application massive du principe sec.


0 commentaires

4
votes
  1. refacteur après chaque itération - maintient la base de code propre
  2. Dépendances de casse - aide le codebase à être simple à comprendre
  3. ont des tests d'unités automatisés et son harnais de test - réduit le délai d'exécution d'une nouvelle fonctionnalité
  4. mise à jour de la documentation et de la trauvité après chaque itération - aide à comprendre le code.

0 commentaires

0
votes

gros projet en php? Pas seulement des balles d'argent, il n'y a pas de balles de plomb et même des balles argileuses sont rares.

langue différente!


0 commentaires

3
votes

Ma première pensée est que vous devez écrire des objets. Votre commentaire sur "C'est tout dans ma tête" m'inquiète que

  1. Finalement, vous allez oublier quelque chose de sérieux important et de perdre du temps à la reconstruction de notre ou de reconstruire quelque chose parce que vous ne vous souvenez pas.
  2. Les futurs programmeurs sur le projet vont vous haïr pour ne rien documenter.

    Je trouve un wiki, même si je suis le seul utilisateur, est utile phénoménalement pour organiser mes pensées. Le processus d'édition est facile et rapide, ce qui me permet de vider littéralement le contenu de mon cerveau dans un milieu numérique interrogeable.

    Peu importe quel wiki vous choisissez, prenez juste un peu de temps pour apprendre vraiment la syntaxe, de sorte que vous n'aborquez pas constamment votre attention sur le formatage.

    Assieds-toi et Dump .

    Une fois que vous avez des trucs sur la page, vous pouvez commencer à réorganiser vos pensées et il est plus facile de voir l'ensemble de l'architecture du système à un niveau élevé quand il est juste à l'avant de vous.

    J'ai aussi trouvé de nombreuses façons intelligentes et intéressantes de réparer mon architecture en faisant tout cela devant moi dans un moyen complètement différent.


1 commentaires

+1 pour ce que je voulais dire. Vous ne devriez pas avoir besoin de vous "rappeler". Vous devriez être capable de parcourir votre documentation pour trouver tout ce qui existe dans le système. Vous avez des docs, non? Sinon, faites ce que Bob dit.



3
votes

Comme Steve McConnel dit, le principal défi de la programmation est la gestion de la complexité.

Vous avez plusieurs façons de le gérer:

  1. Utilisation des bons outils (bons IDes, VCS, etc.), vous pouvez gérer une complexité plus élevée - mais comme la complexité augmente, tôt ou tard, vous ne pourrez pas le gérer.
  2. en utilisant les bonnes techniques (OOP, TDD, etc.), vous pouvez réduire la complexité - mais elle augmentera bientôt régulièrement.
  3. en utilisant les approches appropriées (refactoring, tests unitaires, etc.) et beaucoup de discipline, vous pouvez réduire le rythme à laquelle la complexité augmente - mais elle augmentera néanmoins.
  4. L'utilisation d'interfaces claires peut permettre de scinder le projet parmi plus de personnes, chacune d'entre elles devra gérer une complexité plus faible - mais comme l'équipe se développe, la complexité des communications d'équipe augmentera de plus en plus.

    Dans mon opinion personnelle, les deux premiers points (outils et techniques) sont en effet bonne, mais pas quelque chose qui change vraiment. Par exemple, j'ai des collègues de mon équipe qui utilisent des anciens éditeurs et sont presque aussi productifs que des collègues utilisant Eclipse.
    Les deux autres points, d'autre part, aideront beaucoup plus: la discipline, les bonnes conceptions et le refactoring aideront à maintenir la complexité aussi bas que possible et à une bonne équipe de travail permet de s'attaquer à des projets plus importants que seul serait vraiment trop complexe.

    Cependant, comme vous l'avez déjà signalé, il n'y a pas de balle d'argent. En fin de compte, la complexité de tout logiciel réussi augmente à un point où sa maintenance peut devenir si coûteuse de nécessiter une nouvelle génération complète.
    Et c'est la vie dans le logiciel: -)


0 commentaires

1
votes

Arrêtez de prétendre que vous pouvez tout garder dans votre tête. À un moment donné (on dirait que vous l'avez atteint), ce n'est tout simplement plus possible. Comment traiter un projet trop grand pour mémoriser? Eh bien, de la même manière que vous traitez des projets écrits par une autre personne ou que vous écrivez pour être maintenu par quelqu'un d'autre.

L'élément le plus important: écrire un bon code. Utilisez des noms cohérents et significatifs pour les classes, les méthodes, les variables, etc. Ecrire des fonctions (resp. Les méthodes) qui font exactement ce que dit le nom, pas plus, pas moins. Pas de raccourcis délicat, des effets secondaires inattendus, des fusques de temps, des surprises. Vous devez être capable d'utiliser une fonction en toute confiance, sans lire sa mise en œuvre pour vérifier ce qu'elle fait et comment.

Organisez votre code. Code GUI séparé du code logique des entreprises. Gardez-les dans des dossiers séparés. Si un fichier contient les deux, le refacteur. Si vous avez généré un code, conservez-le dans un dossier séparé (vous n'êtes donc jamais tenté de le modifier).

Utilisez un système de contrôle de révision. (Vous ne pouvez pas dire trop souvent)


0 commentaires

2
votes

Aller sur un membre ici, mais rompre le projet dans des projets plus petits / API / modules / forfaits / assemblages (appelez-les ce que vous voulez) devrait être la prochaine étape logique ici.

  • a commencé petit, peu de fichiers, petit éditeur, constructions de ligne de commande, tout était bon ...
  • a été plus gros, les versions ont été plus difficiles, déplacées vers SVN et IDE ... BiIIG Boost de productivité
  • Puis le projet a été encore plus grand et que le sentiment d'être accablé de rampe de retour ...

    Le cerveau humain ne peut traiter que de tellement de choses en même temps, il y a tant que notre mémoire de travail peut gérer. Cacher des détails plus petits derrière un niveau d'abstraction plus élevé vous permettra d'oublier ces fichiers jusqu'à ce qu'il y ait quelque chose qui ne va pas sous la hotte. Si cela ne se passe jamais, il suffit d'ouvrir ce capot particulier pour le réparer là-bas. Utilisez un niveau différent d'abstractions et vos projets deviendront soudainement beaucoup plus petits, où seule une poignée d'unités aura un sens alors que le reste est juste de les faire fonctionner. Le POO est très bon pour cacher des détails sur la mise en œuvre tout en exposant des fonctionnalistes de niveau supérieur. Cela étant dit qu'il y ait d'autres paradigmes que le POOV que vous pouvez choisir.

    Donc, mon conseil à vous à ce stade

    • décompose vos projets en petits morceaux chacun avec une interface qui vous donnera un point d'accès unique au reste.
    • Utilisez des tests unitaires et d'autres techniques de test avec un bon cadre de test pour tester chaque morceau individuellement. Cela vous permettra de tester l'interface et de voir si elle est utile.
    • n'accumule jamais les trucs derrière l'interface, si vous ressentez le besoin, changez l'interface, les tests, puis utilisez l'interface. C'est la partie la plus importante, en ignorant cela vous rappellera dans le problème que vous avez maintenant (trop de couplage), réduisez donc autant que possible les points d'interaction entre les morceaux, d'où les interfaces.

      Cela vous permettra de réduire considérablement le nombre de choses que vous devez vous souvenir de votre projet et de bien augmenter la prochaine commande de magnitude.

      Ensuite, votre prochaine étape consistera à examiner plus en profondeur et en savoir plus sur les modèles d'architecture et de conception. Ils vous aideront à réduire encore plus le domaine de votre système.

      Tidbits utiles


0 commentaires

1
votes

Profil de votre processus!

Tout comme le code de profil, vous pouvez profiler votre processus de développement.

Look a été le plus de temps passé et essayer d'optimiser cette partie de votre processus.


0 commentaires

3
votes

Je pense que vous devriez lire le livre classique de Brooks ' Le mythique mensuel de l'homme, édition anniversaire '. Bien que le livre original décrit le travail effectué au milieu des années 60, les vérités sous-jacentes sont toujours exactes. Et le dernier papier sur ' Aucune balle d'argent ' (qui est incluse avec l'édition anniversaire) est très perspicace.

Mettez succinctement, le livre explique que, comme les programmes grossissent, ils deviennent plus difficiles à gérer (comprendre, entretenir, développer) car il y a plus de choses à penser. Presque toutes les techniques de conception et les techniques de programmation autour sont utilisées pour tenter de limiter ces problèmes, mais les problèmes existent car les logiciels deviennent plus gros (c'est la partie «essence» du sous-titre de Bullet Silver »).


1 commentaires

+1 pour le contexte historique et recommander ce livre.



0
votes

Le plus grand coup pour votre argent viendra probablement de:
Contrôle de la version (par exemple SVN, Mercurial, Git, etc.)
Serveur de construction (par exemple Hudson)
Tests
Refactoring


0 commentaires

6
votes

Le fait froid est que l'efficacité du développeur va diminuer avec la taille du projet. Cela est connu depuis des décennies. Il existe des méthodes pour aider, mais elles nécessitent une certaine discipline.

La meilleure solution consiste à aller à un niveau d'abstraction plus élevé. Écrivez des routines qui serviront de blocs de construction, que vous pouvez utiliser comme si elles étaient des constructions de bibliothèque ou de langue standard. Documenter leurs interfaces et programmer uniquement les interfaces. Si vous avez déjà eu l'impression de savoir comment une routine que vous ne travaillez pas est mise en œuvre, vous utilisez le problème ou ne pas documenter suffisamment l'interface. Soyez lent à ajouter à une interface, plus lentement pour supprimer n'importe quoi et rappelez-vous que les éléments changeants de celui-ci peuvent vous mordre mal.

La localité est votre ami. Plus vous pouvez vous concentrer sur une petite zone, mieux vous êtes. La programmation aux interfaces aide ceci. Garder les routines cohésives l'aide, de sorte que les routines font une chose à la fois.

L'orientation objet est très utile, car elle favorise les deux ci-dessus. Il favorise l'encapsulation et le codage à une interface et des groupes de code associés ensemble.

Le développement axé sur les tests est précieux pour appliquer la programmation à une interface. Écrivez des tests basés sur l'interface, pas sur la mise en œuvre. Cela a l'effet secondaire intéressant que les suites de test eux-mêmes aident à définir l'interface. S'il n'est pas testé pour, vous ne comptez pas dessus. Assurez-vous de pouvoir exécuter facilement des suites de test et d'entrer dans l'habitude.

Le refactoring va être nécessaire. Planifiez-le, en particulier lorsque vous changez. Vous avez besoin de code propre. De plus, vous constaterez inévitablement que vous avez mis la fonctionnalité au mauvais endroit.

N'oubliez pas non plus qu'aucun de cela ne va résoudre entièrement le problème. Les grands projets logiciels sont intrinsèquement difficiles.


0 commentaires

0
votes

Vous devez récupérer votre processus de construction de code. Peut-être votre code aussi.

Je suggère également de lire le code de lecture.


0 commentaires