Combien un programmeur peut-il faire seul? [fermé]


13

Les produits logiciels nécessitant des équipes entières de développement, combien un programmeur peut-il accomplir seul? En d'autres termes, une seule personne pourrait-elle écrire Photoshop, MS Word, etc ...? Et s'ils ne le pouvaient pas, le développement web serait-il un domaine où un programmeur pourrait faire beaucoup?


2
Je ne sais pas ce qui est demandé ici. Si vous avez le mojo pour développer un logiciel, vous pouvez certainement le faire vous-même - web ou non. Cela peut prendre un certain temps, car tout Facebook n'a pas été développé en un jour par MZ.
CoolBeans

Jetez un œil à blitwise.com pour un travail de développement unique.
Michael K

La productivité du codeur varie très largement. Certains codeurs codent 10 fois plus vite que d'autres ...
Denis de Bernardy

2
S'il s'agissait d'un seul bâtiment devloper, photoshop et ms word, ils feraient environ 1/100 de la taille. Je ne considère pas cela comme une mauvaise chose.
JeffO

1
Ça dépend. :-)
richard

Réponses:


14

Commencer petit

Linux est actuellement beaucoup plus gros que ses premières itérations, mais l'important est qu'il soit sorti avec suffisamment de choses pour gagner du terrain.

Seulement si ça vaut le coup

J'ai la règle personnelle que les gros trucs valent la peine d'être faits s'ils sont fondamentalement différents des autres. Sinon, vous plongez dans un océan rouge .

Bon pour commencer, mais pas toujours durable

Si votre logiciel est assez bon, vous voudrez peut-être le prendre au sérieux. Prenez par exemple Markus "Notch" Persson, créateur de Minecraft. IIRC il a commencé le jeu seul, et quand le jeu a gagné du terrain, il a commencé à chercher des collaborateurs et a même commencé une entreprise.

Tout en récompensant de réaliser quelque chose seul, les grands projets réalisent leur potentiel par la collaboration des développeurs, pas un seul génie, ce qui m'amène à mon prochain point.

Un mythe

Consultez The Myth of the Genius Programmer , une conférence de Ben Collins-Sussman et Brian Fitzpatrick à Google I / O 2009. Vous devriez y avoir toutes les fausses attentes. Le point principal que je veux souligner ici est que, parfois, un seul développeur obtient le crédit pour l'ensemble, alors qu'il y avait plus de gens derrière.

C'est tout à fait possible

Un autre exemple, à part Linus Torvalds, est John Carmack. Il a porté Wolfenstein en seulement quatre jours, quand EA avait estimé une équipe complète pour deux mois.

Ce n'est pas la quantité de code, c'est la connaissance architecturale et technique qui vous permet de réaliser de grandes choses avec moins de code que vous attendez.

Compte tenu des compétences et des connaissances (au-delà du niveau moyen), vous pouvez faire en sorte que beaucoup de travail vous semble peu.


7
+1 IMO, Linus n'a pas de merde sur Carmack. Ses trucs sont des trucs de légende.
Steven Evers

1
qui est la légende? Linus ou John. n'a pas récupéré votre argot là
Chani

1
@RYUZAKI: Je suppose que le commentaire de @ SnOrfus est une question entière pour le stackexchange anglais.
Spoike

1
@RYUZAKI - John a l'étoffe de la légende, dans le commentaire de SnOrfus.
ocodo

1
Carmack a-t-il touché le salaire complet de 2 mois pour ses 4 jours de travail, ou juste une tape dans le dos?
Drew

5

En raison de la nature du travail que je fais, j'ai développé moi-même quelques applications assez volumineuses. Alors oui, c'est faisable. Je pourrais continuer à ce sujet pendant des heures, mais je n'ai pas beaucoup de temps maintenant, alors voici quelques avantages et inconvénients de mon expérience personnelle.

Avantages:

  • vous êtes en plein contrôle et il n'y a pas d'équipe avec laquelle lutter, vous pouvez donc choisir ce que vous pensez / savez être le mieux. Pas de perte de temps dans des discussions sans fin sur un tout petit aspect du code.
  • vous avez toute l'architecture en tête, vous savez littéralement tout à ce sujet, le support client est un jeu d'enfant puisque vous connaissez vous-même toutes les réponses
  • vous apprenez beaucoup sur tous les aspects de la programmation. Interface utilisateur de bas niveau, de niveau intermédiaire, de haut niveau, ...

Les inconvénients:

  • pas d'équipe avec laquelle se battre, donc parfois vous prenez de mauvaises décisions sans que personne ne vous le dise
  • il est facile de s'y perdre, de ne plus voir la situation dans son ensemble. Et personne ne peut vous aider. (sauf SO / SA et autres:]))
  • passer beaucoup de temps sur le support client que vous préférez consacrer à la programmation

3

Avec un certain dévouement et des compétences, une seule personne peut certainement accomplir beaucoup. Ce n'est pas facile cependant, être un bon programmeur ne suffit pas. Pour réussir un projet, vous devez souvent penser aux cas d'utilisation, à la conception de l'interface utilisateur, à la documentation, au support et bien plus encore. Une fois que les choses commenceront et que le nombre d'utilisateurs augmentera, tout cela à lui seul deviendra de plus en plus irréaliste - c'est le point où soit plus de personnes se joignent au projet (via la participation communautaire, l'embauche de personnes ou autrement) ou le projet meurt.


1

Cela dépend du logiciel qu'il essaie de développer, des contraintes de temps et des compétences. S'il développe une application SIG simple, il est tout à fait possible qu'il puisse le faire en peu de temps. Essayer de développer un logiciel aussi compliqué que Photoshop, MS Word, Blender, Flash et etc. c'est possible mais cela prend beaucoup de temps et il a la fonction la plus basique et les fonctionnalités sont simples.


1

Tout dépend des compétences, du temps passé et de la volonté de le faire. Plus vous avez de connaissances, moins il vous faudra de temps pour accomplir quelque chose. Vous obtiendrez une connaissance extrêmement intime de la base de code en tant que développeur unique, ce qui peut également accélérer le processus de définition / refactorisation / débogage.

J'ai personnellement travaillé sur une application de transfert de bureau à serveur. J'ai codé l'application serveur et l'application de bureau et j'ai tout testé moi-même. J'ai même écrit le programme d'installation de l'application. J'ai trouvé un moyen de permettre le glisser-déposer sur les icônes de la barre d'état système sous Windows et j'ai même fini par écrire une nouvelle bibliothèque Java à partir de zéro. Je l'ai fait au cours d'une année et c'est toujours en cours de développement et de test.

L'ensemble de ce projet a été une épreuve unique. Tous les jours après l'école, j'ai travaillé sur le projet ainsi que les week-ends. Est-il aussi massif que MS Word, Photoshop, etc.? Nan. Le projet est toujours important et ne cesse de croître et il est possible de réaliser beaucoup de choses.


Voir c'est ce que je me demandais ... cela peut prendre plus de temps mais puisque vous savez ce que fait tout le code, il serait probablement plus facile de déboguer. Et une grande expérience d'apprentissage.
fender1901

@ fender1901 Eh bien, la programmation devrait être constamment une expérience d'apprentissage, le jour où elle n'est pas, c'est quand vous savez tout ou avez besoin de trouver une tâche plus difficile.

1

Je travaille actuellement sur un tel projet moi-même pendant mon temps libre (c'est une application web, pas une application de bureau, mais les principes sont les mêmes). Voici ce que j'ai trouvé jusqu'à présent:

1) Ne réinventez pas la roue . Utilisez les bibliothèques / frameworks existants, plutôt que de tout faire à partir de zéro. Une mise en garde ici: assurez-vous de prêter attention aux licences car elles s'appliquent à la distribution / version / quel que soit le modèle souhaité. Certaines licences de copyleft exigeront que vous "open-source" votre "travail dérivé". Certaines licences autorisent une utilisation non commerciale uniquement. Gardez une trace des bibliothèques / frameworks que vous utilisez afin que vous puissiez fournir une attribution appropriée dans votre écran / zone "Crédits" / peu importe

2) Travailler de manière itérative . Cela rejoint ce que dukeofgaming a dit avec "Start Small" . Vous êtes beaucoup plus susceptible de vous en tenir à un projet si vous pouvez voir des résultats. Jusqu'à ce que vous puissiez voir quelque chose fonctionner, tout développement que vous faites est l'équivalent de la peinture dans l'obscurité.

3) N'ayez pas peur de demander des commentaires / de l'aide dès le début . Il y a de fortes chances que vous ne soyez pas bon en tout. Si vous êtes doué pour le codage de bas niveau, vous craignez probablement pour l'interface utilisateur. L'inverse s'applique également. Cela ne fait jamais de mal de demander conseil à ceux qui sont meilleurs que vous dans un certain domaine. Beaucoup de gens éviteront cela parce qu'ils craignent que quelqu'un vole leur idée. Ne vous inquiétez pas à ce sujet - si quelqu'un essaie de vous copier, cela signifie que vous êtes sur quelque chose de valable. Les idées sont bon marché, la mise en œuvre est la clé. Apple n'a pas inventé le lecteur MP3, Microsoft n'a pas inventé le système d'exploitation, Facebook n'a pas inventé le réseau social et Google n'a pas inventé le moteur de recherche. Ce qu'ils ont fait, c'est le rendre attrayant pour les utilisateurs (et non pas nul).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.