web-dev-qa-db-fra.com

Devriez-vous conserver une copie de tout le code que vous écrivez?

Je sais que l'entreprise pour laquelle vous travaillez possède le code et, évidemment, vous serez arrêté si vous essayez de le vendre. Mais est-il rare que les développeurs conservent une copie personnelle du code qu'ils ont écrit (pour référence future)?

Apparemment ce type a été envoyé en prison pour avoir copié le code source.

197
superFoo

Mais est-il rare que les développeurs conservent une copie personnelle du code qu'ils ont écrit (pour référence future)?

Je ne sais pas à quel point c'est courant, mais commun ou pas, c'est toujours une mauvaise idée.

Les programmeurs opèrent souvent dans l'état d'esprit selon lequel résoudre deux fois le même problème est une perte de temps. Nous essayons de concevoir notre code pour qu'il soit réutilisable (parfois). Nous construisons des bibliothèques de classes et de fonctions à réutiliser à un moment donné dans le futur. Nous donnons même parfois notre code pour que personne else n'ait jamais à écrire du code pour résoudre le même problème que nous venons de faire. Il peut donc être compréhensible de vouloir emporter "votre" code avec vous lorsque vous passez d'un travail à un autre. Mais vous ne devriez toujours pas le faire, pour les raisons suivantes:

  1. Ce n'est pas votre code à prendre.

  2. Le code que vous avez écrit pour votre ancien employeur fait partie de l'entreprise qu'ils ont créée. Leur code fait partie de leur avantage concurrentiel. Bien sûr, les concurrents pouvaient écrire leur propre code pour résoudre le même problème, mais ils ne devraient pas avoir l'avantage de s'appuyer sur le travail que votre employeur a payé, possède et ne vous a pas autorisé à prendre.

  3. S'ils ont un sens, votre nouvel employeur ne veut aucune partie du code que vous avez pris à votre ancien employeur. Plus vous "référez" au travail que vous avez fait pour un employeur précédent, plus vous mettez votre nouvel employeur en danger juridique.

  4. Si vous avez accidentellement laissé échapper à New Employer que vous avez toujours une copie de ce que vous avez fait pour Old Employer, votre patron à New se rendra probablement compte que vous prendrez une copie de son code lorsque vous partirez pour un autre emploi. Cela pourrait ne pas lui convenir.

  5. Même si vous ne crachez pas de vraies lignes ou juste des idées vagues de vos vieilles choses, le simple fait d'avoir vos vieilles choses en votre possession pourrait faire soupçonner que vous peut-être l'utilisez pour quelque chose. Imaginez que l'ancien employeur poursuit le nouvel employeur et, en tant que membre d'une petite poignée d'employés qui sont passés de l'ancien au nouveau, vous vous retrouvez soudainement en train de déposer. Aucun de vous n'a réellement copié le code d'Old dans le produit de New, mais l'avocat devant vous demande: "M. SuperFoo, avez-vous maintenant ou avez-vous à tout moment depuis que vous quittez Old Employeur, vous aviez en votre possession une copie de tout code que vous ou quelqu'un d'autre a écrit pendant qu'il travaillait chez Old Employer? "

  6. Vous n'avez pas besoin le code que vous avez écrit le mois dernier, l'année dernière ou plus longtemps. Vous avez résolu le problème une fois, et maintenant vous savez comment pour résoudre à nouveau le problème. Ou, vous savez peut-être comment pas pour résoudre le problème - votre nouvelle implémentation sera meilleure car vous avez de l'expérience.

  7. Il y a de meilleures façons. Il est difficile de revenir en arrière et d'apprendre quoi que ce soit d'utile en lisant l'ancien code hors contexte. Un journal intime ou un journal qui décrit ce que vous apprenez, les idées que vous avez, etc. est beaucoup plus utile plus tard.

  8. Même si l'ancien employeur sait que vous avez son code et qu'il est d'accord avec cela, vous encore n'en voulez pas! La seule chose qui puisse en résulter est un appel téléphonique à 3 heures du matin: "Hé, SuperFoo? Comment vas-tu? Écoute, tu as une copie de nos trucs, non? Ecoute, nous avons un problème avec le système, et nous l'avons réduit à quelques fichiers que vous avez écrits que notre nouveau gars ne comprend tout simplement pas. Je sais qu'il est tard, mais pourriez-vous lui expliquer SuperDuper.pl? "

Laisser aller. Vous n'en avez pas besoin.

302
Caleb

Je garde toujours une copie du code j'écris et je le prends entre les jobs. Les employeurs suivants n'ont jamais vu/exécuté le code, mais je l'utilise comme référence à la maison: "Ah oui, n'ai-je pas fait quelque chose de similaire à celui du projet X?".

Est-ce légal? Dépend de la juridiction et des circonstances, mais c'est assez courant. Moralement, cela ne me pose aucun problème, à condition que vous ne donniez pas simplement du code à de nouveaux employeurs ... C'est un rappel et une démonstration de ce que vous avez fait, plutôt qu'une ressource gratuite pour votre employeur.

[Le revers de la médaille est la honte inévitable qui survient lorsque vous regardez un code plus ancien: "À quoi pensais-je ?? Pourquoi diable l'ai-je fait que façon ?? ']

159
cjmUK

C'est une très mauvaise idée. Ce code ne vous appartient pas (légalement) et en avoir la possession peut vous causer beaucoup de problèmes. Cela devient encore plus vrai lorsque vous passez à un nouveau travail et que vous conservez toujours ce code source. Encore pire si c'est un concurrent. Votre entreprise ne serait pas heureuse si vous aviez accès à son code source lorsque vous ne travaillez plus pour elle.

Il s'agit de gérer votre risque. On s'attend évidemment à ce que vous conserviez des objets d'un ancien employeur que vous pouvez utiliser ailleurs. C'est pourquoi ils font de votre signe des clauses de non-concurrence qui durent X mois/années après que vous les ayez quittées, mais la possession du code vous rend plus vulnérable à quelqu'un qui vous accuse de copier de manière flagrante le code de l'entreprise ( même si vous ne l'avez pas fait, et avez simplement utilisé les mêmes idées). Est-ce que le code vaut la peine de gérer ce risque?

Certes, ce que vous avez obtenu en écrivant le code n'est pas la syntaxe exacte; c'est la connaissance que vous avez acquise. Cela ne vaut probablement pas la peine de traiter de toutes ces choses légales.

50
Oleksi

Ce n'est pas rare.

J'ai une copie de presque1  chaque morceau de code que j'ai écrit professionnellement, et certainement tout le code de mes projets en cours, peu importe qui l'a écrit2. Avec le code J'ai une énorme pile de documents juridiques définissant clairement ce que je peux et ne peux pas faire avec lui. Le simple fait d'avoir le code n'est pas la même chose que d'essayer de profiter du code.

Cela dit, c'est une question juridique, et les questions juridiques ont tendance à être extrêmement compliquées et localisées. En cas de doute, vous devez vraiment parler à un avocat. Je peux garder mon code, mais je suis certain à 99% que je n'aurai pas de problèmes pour le faire.

1 Ce qui manque, c'est surtout ce que je n'ai pas voulu archiver. Un seul code de petit projet manque pour des raisons légales.
2 Nature des projets et mon rôle dans ceux-ci, je suis l'un des gars qui ont besoin d'avoir au moins une idée de ce qui va où, même si je n'étais pas impliqué dans la construction d'un module spécifique.

36
yannis

Je vois votre Chinois arrêté et vous élève avec un "code n'est pas un bien, donc ne peut pas être volé".

Réf.: Code 'pas de propriété physique', règles de justice dans l'affaire d'espionnage Goldman Sachs

Cela étant dit.

  • Dois-je conserver le code que j'écris? Absolument.
  • Dois-je conserver des projets complets? Absolument.
  • Dois-je m'assurer que je pilote mon code à partir de mon PC de travail sur une machine domestique? Vous betcha!
  • Dois-je jamais réutiliser ce code dans une autre entreprise ou dans un projet personnel. Nan.
  • Est-ce que je regarde souvent l'ancien code et passe en WtF!? Tout le temps.
29
TimSonOfSteve

Voici une question simple pour vous. Allez voir votre patron et dites-lui: "J'ai une copie de tout le code que j'ai écrit pendant que je travaillais ici. Seul le code que j'ai écrit, pas les autres. C'est pour ma propre éducation, et je ne le donnerai jamais ".

Leurs prochaines actions dicteront (oui, que la Parole existe en Amérique du Nord/Monde) si vous avez tort ou raison à leurs yeux.

Quelle que soit votre "éthique", vous travaillez pour un employeur. S'ils estiment que ce que vous faites est mal, alors c'est mal en fonction de leur éthique. Puisqu'ils vous paient et que vous êtes employé par eux, alors c'est à votre tribunal que vous soyez d'accord avec eux ou en désaccord, ce qui pourrait vous faire virer.

Maintenant, c'est une question d'intégrité. J'ai laissé un ancien employé prendre une partie de notre code, mais je l'ai vérifié en premier.

Ce n'est pas parce que vous croyez avoir raison que vous avez raison. Habituellement, les développeurs de logiciels signent des contrats lorsqu'ils sont employés. Si vous en avez signé un, vous devez vivre selon votre Parole.

10
Ryan Ternier

est-il rare que les développeurs gardent une copie personnelle du code qu'ils ont écrit

En répondant directement à la question, je dirai dans mon éprouve cela est rare. exception à ce que j'ai vu, ce sont des gens qui font beaucoup de travail indépendant et qui gardent le code à portée de main pour les futurs projets de maintenance et d'amélioration de leur client, et j'imagine que cela est clairement indiqué dans le contrat (même si je n'ai pas l'habitude de revoir les contrats de freelance de mes amis, alors qui sait). Les gens que je connais qui travaillent dans de grandes entreprises n'ont jamais admis à garder le code des anciens employeurs.

Je sais que je ne le ferais pas parce que je ne peux pas penser à une seule situation où cela serait utile (sans mentionner que je suis à peu près sûr que mon employeur actuel interdit de telles choses - je n'aurais qu'à consulter les documents pour être certain ). Le code que j'ai écrit/corrigé est généralement donc spécifique à une exigence commerciale particulière que je ne peux pas imaginer qu'il revienne à l'avenir de telle manière qu'il serait plus facile de le relire. utilisez l'ancien code que d'écrire un nouveau code.

À l'époque, il était courant pour les développeurs d'avoir leur bibliothèque personnelle de routines qu'ils utiliseraient pour résoudre les problèmes du travail en cours. La source resterait derrière lorsque le développeur partirait, mais toutes les améliorations l'accompagnaient également.

Cela a abouti à une situation gagnant-gagnant. C'était aussi juste un sous-ensemble de tout le code écrit.

Bien sûr, la plupart de ce qui se trouvait dans les bibliothèques personnelles le serait aujourd'hui.

8
Jon Strayer

Dans le cadre d'une relation employeur-employé dans la plupart des régions de l'Amérique du Nord, il est illégal de transférer ou de transmettre du matériel numérique (c.-à-d. Le code source) à partir de l'équipement de votre employeur sans l'autorisation légale préalable de l'employeur.

Une partie des lois juridiques relatives à la définition d'un employé sur le lieu de travail est la description selon laquelle l'employé ne fournit pas son propre équipement de travail, sauf indication contraire dans le contrat de l'employé, à l'exception des métiers qui exigent que l'employé achète leur propre équipement (c.-à-d. travailleur de la construction).

La plupart des lois sur l'emploi en Amérique du Nord définissent l'employeur comme le principal preneur de risques dans une relation d'employé à employeur. L'employé est rémunéré pour son temps pendant que l'employeur fournit les matériaux, l'équipement et contrôle les activités professionnelles de l'employé.

À quel moment au cours de cette relation, est-il acceptable de voler du matériel précieux à l'employeur, qui a payé et pris le risque de le faire créer?

Le problème clé était la question "code source que vous avez écrit?". Non monsieur, ce n'est pas vous qui l'avez écrit. Sous la direction de votre employeur, ce sont eux qui l'ont écrit. Vous n'êtes que la main engagée qui l'a tapé. Aucun tribunal en Amérique du Nord ne sera à vos côtés si votre employeur prend des mesures judiciaires pour sécuriser ses biens. Il suffit de copier le code source sur une clé USB pour vous mettre dans l'eau chaude.

Cela dit, si un employeur vous autorise à utiliser votre propre équipement (c'est-à-dire un ordinateur portable) ou à transmettre le matériel, alors c'est une autre affaire. L'employeur doit vous informer lors de la résiliation que tout matériel doit être retourné/détruit.

Je pensais juste que je posterais cette réponse, car il semble que certaines personnes pensaient que c'était une zone grise. Je ne pense vraiment pas que si vous êtes un développeur, vous devriez faire un tour sur le site Internet pour conserver des copies des documents de l'employeur. Je veux dire, vous saviez déjà clairement la réponse à cette question parce que vous avez créé un nouveau compte membre juste pour poser cette question. ;)

6
Reactgular

Je l'ai fait dans le passé il y a quelques emplois.

Mais je n'y suis jamais retourné une seule fois et je l'ai regardé. J'ai parfois réutilisé des idées et des choses que j'ai apprises, mais je n'ai pas trouvé une seule fois de raison de revenir en arrière et de regarder le code.

Donc je ne m'embêterais plus. C'est juridiquement douteux et je ne l'ai jamais trouvé utile en pratique.

5
JohnB

Sûr. J'aime garder une copie de tout le travail que je fais - qu'il s'agisse d'écrire du code ou autre. Appelez-le un album, si vous le souhaitez. Enfreindre les règles? Peut-être.

Les commentaires sur l'avantage concurrentiel ne sont pertinents que si votre prochain employeur est un concurrent direct. Si vous passez d'une compagnie de téléphone à une maison de logiciels ou d'un développeur de jeux à un développeur de bases de données, cela n'a pas d'importance. Si vous prévoyez réellement de réutiliser du code - eh bien, c'est une autre histoire.

Fait intéressant, vous entendez souvent parler de développeurs Web apportant une "boîte à outils" avec eux, avec un ensemble standard de bibliothèques JavaScript et CSS = feuilles de style. Mais je n'ai pas vu cela mentionné ici.

4
Steve Bennett

Je viens de supprimer tout l'ancien code que j'avais conservé de mon ancien employeur. Je n'ai gardé que des morceaux de code que je pensais être bons pour référence future. En fait, j'ai constaté que j'ai considérablement évolué depuis mon départ et je n'ai jamais fait référence à l'ancien code. J'ai trouvé/découvert/appris de bien meilleures façons de résoudre les mêmes problèmes.

C'était un joli petit voyage dans le passé :)

3
Antony Scott

Je pense qu'il doit y avoir une distinction entre un modèle de conception et du code réel (copie ligne par ligne)

Écrire quelque chose de pseudo-code - c'est un excellent moyen de charger paresseusement X dans Y est une chose. Écrire tout le code, c'est autre chose.

2
ist_lion

Pour un nombre différent de raisons, comme le travail à domicile, vous pourriez aussi bien en avoir une copie, et moi, je n'irais pas les supprimer après un travail, pourquoi faire cela? Cela ne va pas à l'encontre de mes croyances ou quelque chose.

Mais, en ce qui concerne son utilisation, il n'est pas aussi utile qu'un article de blog!

Conclusion: écrivez votre code, bloguez sur les problèmes que vous avez rencontrés et comment vous les avez résolus (surtout quand c'est générique et large), et ne vous occupez pas de garder un souvenir (éventuellement crypté) du dernier travail.

1
Camilo Martin

En finance, le CFA résout ce problème. Vous n'êtes pas autorisé à prendre des informations relatives aux clients ou à votre travail pour l'entreprise (dans ce cas, le code). Mais rien ne vous empêche de mémoriser ce que vous pouvez et de l'écrire plus tard.

Je ne sais pas à quel point c'est légitime, mais je pense que votre meilleur pari est de laisser votre code source mais d'écrire vos idées et comment vous l'avez fait dès votre retour à la maison. Voler, c'est voler et au tribunal, tout ce qu'ils essaient de savoir, c'est de savoir si vous avez copié le code ou non.

1
Lostsoul

Si vous enregistrez votre code dans le but de le réutiliser plus tard, j'ai deux problèmes avec cela:

  • Si le code est spécifique à un domaine, il est probablement également propriétaire. Quoi qu'il en soit, il n'y a pas deux entreprises ou problèmes identiques et essayer de résoudre un problème avec la solution pour un autre n'est pas un bon schéma.

  • Si le code que vous enregistrez résout un problème courant, vous devez remettre en question votre approche. Pourquoi dépensez-vous beaucoup d'efforts pour résoudre un problème commun alors qu'il s'agit probablement de solutions open source existantes (et meilleures)?

    Si vous pensez que vous avez la meilleure solution à un problème commun, vous devriez vraiment essayer de partager votre code publiquement sur un référentiel public et/ou un blog de code lorsque vous l'écrivez, pas le garder pour vous. Votre patron ne devrait pas s'opposer au partage d'une bibliothèque générique ni vous forcer à réinventer la roue (s'il le fait, trouver un nouvel emploi).

Si vous enregistrez votre code parce que vous voulez le montrer à un employeur potentiel ou pour améliorer vos compétences, je vous suggère plutôt de contribuer à un projet open source.

1
David Veksler

Avec la permission de votre employeur, publiez le code réutilisable en tant que projets open source à utiliser par d'autres personnes. Ensuite, votre employeur peut également bénéficier des contributions d'autres personnes à ce code.

De cette façon, vous pouvez conserver le code légalement, créer un portefeuille public de code que vous avez écrit et le code peut bénéficier à d'autres personnes.

1
Sarel Botha

Je ne garde pas le code pour une raison simple: l'entreprise m'a payé pour écrire le code pour eux. Je leur donne mon code et ils me donnent mon chèque de paie. Le gars qui a préparé mon déjeuner ne peut pas en garder une partie pour eux, pourquoi le code serait-il différent?

En outre, le point soulevé auparavant, je quitte mon emploi, tous ces maux de tête restent là, un nouvel emploi, un nouveau départ, mais avec un peu plus d'expérience et de compréhension des types de problèmes dans le domaine de cet ancien emploi.

0
Scott S

Je n'ai pas encore gardé de code que j'ai fait pour les employeurs. Des trucs indépendants que j'ai gardés (il peut être difficile de supporter un client si je perds mon code).

Cependant, j'envisage de conserver le code que j'ai créé pour cet employeur. La raison en est que je suis développeur Web et j'ai développé beaucoup de choses côté client qui sont plutôt jolies. Je ne les ai pas conçus, mais je les ai mis en œuvre et j'ai souvent eu l'idée. Je voudrais garder une copie de ces trucs pour construire un portfolio en ligne. Comme nous le savons tous, les sites ne durent pas éternellement, je ne peux donc pas vraiment compter sur mon travail pour rester en ligne. Avoir une copie de sauvegarde me permettrait d'avoir un portfolio en ligne.

Je sais que les concepteurs conservent souvent des copies de leur travail (même s'il s'agissait d'un travail à la location) à des fins de portfolio.

Je ne sais pas quelle est la légalité de cela (ce n'est pas explicitement mentionné dans mon contrat).

0
Xandor Schiefer

Eh bien, pour développer la logique commerciale de mon entreprise, je ne peux pas garder le code parce que c'est la propriété illégale et personnelle de l'entreprise. En tant que développeur, je sais comment développer cette logique, donc je peux garder cette logique à l'esprit. Fondamentalement, par défaut, il est stocké dans votre esprit, et si vous en avez besoin la prochaine fois, alors vous devez automatiquement implémenter la logique/meilleure logique que la précédente. C'est la nature humaine et l'intelligence. :)

Mais le problème crée lorsque vous développez une logique d'utilité, ils sont réutilisables et toujours importants, vous en aurez peut-être besoin fréquemment dans différents projets. Vous devriez donc vouloir le garder avec vous.

J'ai une solution alternative à cela. Créez simplement un sans source/documentation JAR pour ces utilitaires et ajoutez-le en tant que JAR tiers externe dans votre projet. Probablement en faisant cela, vous pouvez confirmer votre responsabilité ainsi que votre satisfaction que vous avez le code ;)

0
Soumyadip Das