Bạn có nên giữ một bản sao của tất cả các mã bạn viết? [đóng cửa]


197

Tôi biết công ty bạn làm việc sở hữu mã và rõ ràng bạn sẽ bị bắt nếu bạn cố bán nó. Nhưng có gì lạ khi các nhà phát triển giữ một bản sao cá nhân của mã họ đã viết (để tham khảo trong tương lai)?

Rõ ràng anh chàng này đã bị gửi đến nhà tù vì sao chép mã nguồn.


13
nó có thể là một vấn đề pháp lý nghiêm trọng nếu bạn bằng cách nào đó bán / tái sử dụng nó cho công ty đối thủ.
EL Yusubov

19
Lưu ý rằng trong bài viết được liên kết, đó là một trường hợp khá cụ thể khi anh ta bỏ đi bằng mã có lẽ được bao phủ bởi NDAs (xem xét khách hàng) và ngay cả khi nó không, tôi không chắc chắn mình sẽ nắm lấy cơ hội bỏ đi với mã được phát triển cho Ngân hàng Dự trữ Liên bang kỳ dị ! Bạn không phải có tất cả ở đó nếu bạn nghĩ rằng không có gì có thể đi sai với điều đó và rằng sẽ không có ít nhất là một vài người có ảnh hưởng ai mà không thích ý tưởng này ở tất cả nếu họ từng được nghe bạn đã thực hiện đoạn code với bạn .
haylem

10
Giả sử rằng đó là công việc cho thuê và do đó, chủ cũ của bạn do đó sở hữu bản quyền về mã bạn đã viết cho họ và không phát hành dưới dạng mã nguồn mở, tôi nói rằng việc giữ các bản sao mã bạn viết là không phù hợp như giữ bản sao mã đồng nghiệp của bạn đã viết.
Keith Thompson

37
@DavidPeterman - tại sao một nhà tuyển dụng không thuê bạn sở hữu từng chút những gì bạn làm cho họ? Bạn có nghĩ rằng một phần của ngôi nhà của bạn thuộc về người thợ mộc đã làm khung?
Phản ứng

10
@MathewFoscarini Tôi hiểu những gì bạn đang nói, nhưng tôi đang nói về các thuật toán. Điều đó sẽ giống như nói rằng người thợ mộc không sở hữu các bước anh ta thực hiện để xây dựng ngôi nhà
David Peterman

Câu trả lời:


303

Nhưng có gì lạ khi các nhà phát triển giữ một bản sao cá nhân của mã họ đã viết (để tham khảo trong tương lai)?

Tôi không biết mức độ phổ biến của nó, nhưng phổ biến hay không, đó vẫn là một ý tưởng tồi.

Các lập trình viên thường hoạt động trong suy nghĩ rằng giải quyết cùng một vấn đề hai lần là một sự lãng phí thời gian. Chúng tôi cố gắng thiết kế mã của chúng tôi để có thể tái sử dụng (đôi khi). Chúng tôi xây dựng thư viện các lớp và hàm để tái sử dụng tại một số điểm trong tương lai. Đôi khi chúng tôi thậm chí còn cung cấp mã của mình để không ai khác phải viết mã để giải quyết vấn đề tương tự mà chúng tôi vừa làm. Vì vậy, có thể dễ hiểu khi muốn mang theo mã "của bạn" khi bạn chuyển từ công việc này sang công việc khác. Nhưng bạn vẫn không nên làm điều đó, vì những lý do sau:

  1. Đó không phải là mã của bạn để lấy.

  2. Mã bạn đã viết cho chủ cũ của bạn là một phần của doanh nghiệp họ đã xây dựng. Mã của họ là một phần của lợi thế cạnh tranh của họ. Chắc chắn, các đối thủ cạnh tranh có thể tự viết mã để giải quyết vấn đề tương tự, nhưng họ không nên tận dụng lợi thế của việc xây dựng công việc mà chủ nhân của bạn đã trả tiền, sở hữu và không ủy quyền cho bạn đảm nhận.

  3. Nếu họ có bất kỳ ý nghĩa nào, nhà tuyển dụng mới của bạn không muốn bất kỳ phần nào của mã mà bạn đã lấy từ chủ cũ của mình. Bạn càng "giới thiệu" công việc bạn đã làm cho một số chủ nhân trước đây, bạn càng khiến nhà tuyển dụng mới gặp nguy hiểm về pháp lý.

  4. Nếu bạn từng vô tình để nó trượt ở Nhà tuyển dụng mới mà bạn vẫn có một bản sao của những thứ bạn đã làm cho Chủ cũ, thì ông chủ của bạn tại New có thể sẽ nhận ra rằng bạn sẽ lấy một bản sao mã của họ khi bạn để lại cho người khác việc làm. Điều đó có thể không ngồi tốt với anh ấy hoặc cô ấy.

  5. Ngay cả khi bạn không đưa ra những dòng thực tế hoặc chỉ là những ý tưởng mơ hồ từ những thứ cũ của bạn, chỉ cần sở hữu những thứ cũ của bạn có thể làm bạn nghi ngờ rằng bạn có thể đang sử dụng nó cho mục đích gì đó. Hãy tưởng tượng rằng Chủ nhân cũ kiện Chủ nhân mới, và là một trong số ít nhân viên chuyển từ Cũ sang Mới, bạn đột nhiên thấy mình đưa ra một sự lắng đọng. Không ai trong số bạn thực sự sao chép mã của Old vào sản phẩm của New, nhưng luật sư trước mặt bạn hỏi: "Ông SuperFoo, bạn có hoặc có bất cứ lúc nào kể từ khi rời Nhà tuyển dụng cũ sở hữu một bản sao của bất kỳ mã nào mà bạn hoặc có ai khác viết khi làm việc tại Old Employer không? "

  6. Bạn không cần mã mà bạn đã viết tháng trước, năm ngoái hoặc lâu hơn. Bạn đã giải quyết vấn đề một lần, và bây giờ bạn biết cách giải quyết vấn đề một lần nữa. Hoặc, bạn có thể biết cách không giải quyết vấn đề - việc triển khai mới của bạn sẽ tốt hơn vì bạn có kinh nghiệm.

  7. Có nhiều cách tốt hơn. Thật khó để quay lại và học bất cứ điều gì hữu ích bằng cách đọc mã cũ ra khỏi bối cảnh. Một cuốn nhật ký hoặc tạp chí mô tả những gì bạn học, những ý tưởng mà bạn có, v.v ... sẽ hữu ích hơn rất nhiều sau này.

  8. Ngay cả khi Nhà tuyển dụng cũ biết rằng bạn đã nhận được mã của họ và đồng ý với điều đó, bạn vẫn không muốn nó! Điều duy nhất có thể có là một cuộc gọi điện thoại lúc 3 giờ sáng: "Này, SuperFoo? Bạn thế nào? Nghe này, bạn đã có một bản sao của công cụ của chúng tôi, phải không? Hãy nhìn xem, chúng tôi có vấn đề với và chúng tôi đã thu hẹp nó thành một vài tập tin mà bạn đã viết rằng anh chàng mới của chúng tôi không hiểu. Tôi biết điều đó đã muộn, nhưng bạn có thể dẫn anh ấy qua SuperDuper.pl không? "

Để nó đi. Bạn không cần nó.


7
Hơn nữa, nếu phương tiện truyền thông bạn giữ nội dung bị mất hoặc bị đánh cắp, thì đó là một vấn đề rất lớn. Nói thật, tôi thích tránh có bất kỳ loại kết nối hoặc nguồn VPN nào trên PC cá nhân nếu có thể. PC của bạn có thể là một phần của botnet mà bạn không hề biết, tại sao lại mạo hiểm?
Coder

8
Câu trả lời tuyệt vời! Tôi thực sự đã được cung cấp một bản sao của mã (hoặc tiếp tục truy cập) khi rời khỏi chủ nhân cũ của tôi. Tôi đã từ chối, chính xác là vì lý do gần với số 8. Rốt cuộc, có một lý do để từ chức từ họ. Nếu tôi vẫn muốn rẽ nhánh cho họ, tôi sẽ ở lại :)
harald

79
+1: Bạn không cần nó Phần khó là tìm ra những gì để viết, không thực sự viết nó. Nếu bạn viết nó lần thứ hai, nó có thể sẽ còn tốt hơn nữa.
kevin cline

6
Khi tôi giải quyết vấn đề với mã của mình, tôi có xu hướng viết ra giải pháp cho blog. Không phải mã nguồn từ công việc của tôi, mà là mã chung theo cùng một mẫu (đơn giản một dòng hoặc một vài dòng để hoàn thành mục tiêu - không phải là mã của mã). Tôi thấy đây là một phương pháp tuyệt vời để lưu trữ những gì tôi học được ở các công việc trước đây. +1 cho viên đạn số 7!
Gaʀʀʏ

11
Không nên có một ngưỡng nào đó cho số lượng mã đủ điều kiện? Nếu tôi sử dụng for (int i=0; i < N; ++i)mã của mình, chắc chắn sẽ không phạm pháp khi sử dụng nó ở nơi khác tại một công ty khác ...
vsz

159

Tôi luôn giữ một bản sao của mã tôi viết và lấy nó giữa các công việc. Các nhà tuyển dụng sau đó không bao giờ được xem / chạy mã, nhưng tôi sử dụng nó làm tài liệu tham khảo tại nhà: 'À đúng, tôi không làm điều gì tương tự như vậy trên Project X?'.

Điều này có hợp pháp không? Phụ thuộc vào quyền tài phán và hoàn cảnh, nhưng nó khá phổ biến. Về mặt đạo đức, tôi không có vấn đề gì với điều đó, với điều kiện bạn không chỉ đơn giản là cung cấp mã cho nhà tuyển dụng mới ... Đó là một lời nhắc nhở và chứng minh những gì bạn đã làm, thay vì tài nguyên miễn phí cho chủ lao động của bạn.

[Mặt trái của điều này là sự xấu hổ không thể tránh khỏi xuất hiện khi bạn nhìn vào mã cũ hơn: 'Tôi đã nghĩ gì ?? Tại sao trên trái đất đã làm tôi làm điều đó cách ?? ']


35
+1 Và nó thậm chí không liên quan cho dù nó hợp pháp. Nhiều người trong chúng ta vẫn làm điều đó. Nó không gây hại cho chủ nhân trước đây của bạn (bạn không bán mã cho đối thủ cạnh tranh) và dù sao nó cũng không thể được quy định. Theo một cách nào đó, nếu bạn "nhớ" cách bạn giải quyết vấn đề cho một chủ nhân trước đó, thì bạn đang "đánh cắp" bí mật này cho họ - theo cách không thể điều chỉnh cho đến khi họ phát minh ra sự kiểm soát tâm trí;)
Andres F.

89
@AresresF. Đó không phải là một sự hợp lý hóa. Mã là tài sản của chủ nhân cũ của bạn, ký ức của bạn thì không. Nếu bạn nhớ cách bạn giải quyết vấn đề bạn không cần mã, vậy thì vấn đề là gì?
Caleb

10
+1 để đưa ra lập luận đạo đức. Cá nhân tôi làm theo điều này, chủ yếu là vì phần lớn mã của tôi không phải là tên miền cụ thể. Tôi nhớ cách tôi đã giải quyết một cái gì đó, nhưng không nhất thiết là các sắc thái của nó.
Telastyn

46
Trong trường hợp công ty tố cáo hành vi trộm cắp IP, việc có một bản sao của mã sẽ đóng vai trò là yếu tố làm tăng nặng đối với bạn. Có bộ nhớ của nó thì không. Đó là sự khác biệt.
Oleksi

13
@Caleb Bất kể, nhiều nhà phát triển có những đoạn mã sau khi họ rời đi. Đây là một hành động hoàn toàn tách biệt với việc sử dụng mã này để cạnh tranh hoặc làm tổn thương chủ nhân cũ của bạn và thường được lấy làm tài liệu tham khảo, như trong "Làm thế quái nào tôi đã giải quyết vấn đề này / cấu hình phần mềm này trước đây? bạn muốn, nhưng nó vẫn là một thực tế phổ biến và không thực sự làm tổn thương bất cứ ai. Bạn có thể vùi đầu vào tập thể, hoặc tuyên bố nó sai, nhưng nó vẫn xảy ra. Đặc biệt là với gia công / thuê ngoài - nếu bạn nghĩ rằng nó không xảy ra, bạn sẽ ngạc nhiên đấy!
Andres F.

51

Đây là một ý tưởng rất xấu. Mã đó không thuộc về bạn (nói một cách hợp pháp) và việc sở hữu nó có thể khiến bạn gặp nhiều rắc rối. Điều này càng trở nên đúng hơn khi bạn chuyển sang một công việc mới và vẫn giữ mã nguồn đó xung quanh. Thậm chí tệ hơn nếu đó là một đối thủ cạnh tranh. Công ty của bạn sẽ không vui nếu bạn có quyền truy cập vào mã nguồn của họ khi bạn không làm việc cho họ nữa.

Đó là tất cả về việc quản lý rủi ro của bạn. Rõ ràng là bạn sẽ giữ lại những thứ từ một chủ nhân trước đây mà bạn có thể sử dụng ở một nơi khác. Đây là lý do tại sao họ đưa ra các điều khoản không cạnh tranh của bạn kéo dài X tháng / năm sau khi bạn rời khỏi chúng, tuy nhiên việc sở hữu mã này khiến bạn dễ bị ai đó cáo buộc bạn sao chép mã của công ty một cách trắng trợn (ngay cả khi bạn không, và chỉ sử dụng những ý tưởng tương tự). Là có mã giá trị quản lý rủi ro này?

Chắc chắn những thứ hữu ích bạn nhận được từ việc viết mã không phải là cú pháp chính xác; đó là kiến ​​thức bạn có được. Có lẽ không đáng để xử lý tất cả những thứ hợp pháp này.


9
Đó không phải là một ý tưởng tồi, trừ khi có các kiểm tra bảo mật nghiêm ngặt tại văn phòng của bạn (như không cho phép email và các ổ đĩa). Không ai sẽ tìm kiếm thông qua máy tính ở nhà của bạn và điều đó hiểu rằng các nhà phát triển lấy kiến ​​thức từ công việc trước đây của họ. Bạn không thể ngăn chặn điều đó và sẽ không hợp lý nếu làm như vậy, cho dù mã được "ghi nhớ" hay sao chép nguyên văn. Những gì bạn có thể làm khi sử dụng lao động là thực thi không có điều khoản cạnh tranh hoặc NDA hoặc bất kỳ cơ chế pháp lý nào có sẵn ở quốc gia của bạn.
Andres F.

14
@Malfist Không, bạn không. IANAL, nhưng nó được thiết lập khá tốt rằng, ít nhất ở Mỹ, các sản phẩm công việc mà ai đó trả tiền cho bạn để tạo ra là tài sản của họ, không phải của bạn. Xem công việc cho thuê trong Wikipedia.
Caleb

5
@Malfist Một lần nữa, không. Xem liên kết trong bình luận trước của tôi.
Caleb

4
@Malfist: "nếu bạn là nhà phát triển duy nhất và họ không khiến bạn từ bỏ bản quyền của mình, bạn có thể mang theo mã khi bạn rời khỏi (tôi luôn làm thế)". Không chắc chắn hợp đồng của bạn phản ánh phần lớn thực tế mặc dù. Hầu hết các hợp đồng cho thuê phần mềm sẽ nói rõ ràng rằng bạn cần cung cấp tất cả các nguồn và nhị phân, và chuyển quyền sở hữu và bản quyền cho họ. Đó là khá bình thường cho tự do. Bạn có thể thương lượng điều đó, nhưng đó là những điều khoản thực tế mà tôi mong đợi sẽ thấy trong các hợp đồng (cả hợp đồng nội bộ hoặc tự do).
haylem

5
Hãy giả sử xem xét một nhà phát triển nhớ bất kỳ dòng nào anh ta viết trong sự nghiệp của mình. Nó sẽ là bất hợp pháp nếu anh ta sử dụng bộ nhớ này trong khi làm việc trên các dự án trong tương lai? Tại sao bạn lại tạo ra sự khác biệt giữa việc nhớ mã của mình và lưu một bản sao của nó trong hd riêng tư của bạn? Nếu bạn được phép lấy ví dụ từ trải nghiệm của mình, bạn nên làm ngay cả khi nó được ghi vào sổ ghi chép của bạn thay vì được lưu trữ trong não của bạn. Và nếu bạn không được phép đọc lại mã cũ của mình, rằng bạn đã lưu trong PC, thì bạn không nên được phép "nhắc nhở", điều này rõ ràng là không có ý nghĩa.
Nadir Sampaoli

36

Nó không phải là hiếm.

Tôi có một bản sao của gần 1 mỗi đoạn mã tôi đã viết một cách chuyên nghiệp và chắc chắn tất cả các mã từ các dự án hiện tại của tôi, bất kể ai đã viết nó 2 . Cùng với mã tôi có một đống giấy tờ pháp lý khổng lồ xác định rõ ràng những gì tôi có thể và không thể làm với nó. Chỉ cần có mã không giống như cố gắng kiếm lợi từ mã.

Điều đó nói rằng, đó là một vấn đề pháp lý và các vấn đề pháp lý có xu hướng cực kỳ phức tạp và cục bộ. Nếu nghi ngờ, bạn thực sự cần nói chuyện với một luật sư. Tôi có thể giữ mã của mình xung quanh, nhưng tôi chắc chắn 99% tôi sẽ không gặp rắc rối khi làm như vậy.

1 Cái còn thiếu chủ yếu là những gì tôi không quan tâm để lưu trữ. Chỉ thiếu một mã của dự án nhỏ vì lý do pháp lý.
2 Bản chất của các dự án và vai trò của tôi đối với chúng, tôi là một trong những người cần có ít nhất một ý tưởng về những gì sẽ đi đến đâu, ngay cả khi tôi không tham gia xây dựng một mô-đun cụ thể.


4
@haylem Tôi không bao giờ ở trong khuôn viên của công ty;)
yannis

3
nhưng tôi chắc chắn bạn biết ý tôi là gì, và có lẽ nó không quan trọng lắm về mặt thể chất của bạn :)
haylem

3
Tôi đã nghe một nhà phát triển phát biểu tại một hội nghị về WordPress và anh ta nói một câu như "Nếu tôi làm việc theo hợp đồng cho tôi, tôi chắc chắn rằng bạn biết rằng bạn sở hữu mã tôi viết cho bạn, nhưng điều đó không có nghĩa là tôi chưa học được gì mới bằng cách viết mã của bạn. "
lập trình viên

3
@Caleb Có tài liệu phù hợp có thể không phổ biến (tôi không biết), tuy nhiên tôi không nghĩ việc giữ các bản sao của mã là. Tôi tình
cờ

2
@Krelp, các khóa mã hóa, như các khóa vào két có thể được ép buộc thông qua trát đòi hầu tòa.
Malfist

29

Tôi thấy người đàn ông Trung Quốc bị bắt của bạn và nuôi bạn với "mã không phải là tài sản, do đó không thể bị đánh cắp".

Tham chiếu: Mã 'không phải tài sản vật chất', các quy tắc của tòa án trong vụ án gián điệp của Goldman Sachs

Với những gì đã nói.

  • Tôi có giữ mã tôi viết không? Chắc chắn rồi.
  • Tôi có giữ các dự án đầy đủ không? Chắc chắn rồi.
  • Tôi có chắc chắn rằng ngón tay cái của tôi lái mã từ máy tính làm việc của tôi vào máy gia đình không? Bạn betcha!
  • Tôi có bao giờ sử dụng lại mã đó ở một công ty khác hoặc trong một dự án cá nhân. Không.
  • Tôi có thường nhìn vào mã cũ và đi WtF!? Tất cả thời gian.

14
+1 Hehe, một câu trả lời trung thực, tốt đẹp. Phần tốt nhất là nó thực sự bạn không bao giờ quay lại mã cũ. Bạn chỉ cảm thấy an toàn hơn nếu bạn mang nó bên mình, không bao giờ nhìn lại nó trong cuộc sống của bạn!
Andres F.

Đây không phải là một vấn đề lớn trong trường hợp Oracle v Google gần đây sao?
robertc

1
Hoàn toàn đồng ý với bạn. Tôi cũng đang làm như vậy. Đó là một tài liệu tham khảo rất tốt.
Andrea Girardi

2
mã không phải là tài sản, do đó không thể bị đánh cắp là một bản tóm tắt khủng khiếp về trường hợp của Goldman Sachs. Anh chàng người Nga được tha bổng, không phải vì anh ta không làm gì sai, mà vì hành vi trộm cắp của anh ta không đủ điều kiện theo luật mà công tố viên đang cố gắng sử dụng để chống lại anh ta. Điều đó không có nghĩa là anh ta đã không vi phạm hợp đồng với GS hoặc vi phạm luật IP. Xin vui lòng đọc bài viết cẩn thận hơn, và có thể lấy một số ý kiến ​​dưới đây.
Nate

Bài viết liên quan: Có phải Goldman Sachs đã vượt qua việc buộc tội lập trình viên cũ của mình? . Đây cũng là một ví dụ điển hình mà ngay cả khi bạn giành chiến thắng cuối cùng, bản thân cuộc chiến pháp lý có thể gây tổn thương rất nhiều.
CodeInChaos

10

Đây là một câu hỏi đơn giản cho bạn. Hãy đến gặp sếp của bạn và nói với họ: "Tôi có một bản sao của tất cả các mã tôi đã viết khi tôi làm việc ở đây. Chỉ có mã tôi đã viết chứ không phải các dân tộc khác. Đây là cho giáo dục của riêng tôi, và tôi sẽ không bao giờ đưa ra".

Hành động tiếp theo của họ sẽ ra lệnh (vâng, từ đó tồn tại ở Bắc Mỹ / Thế giới) nếu bạn sai hoặc đúng trong mắt họ.

Bất kể "đạo đức" của riêng bạn, bạn làm việc cho một chủ nhân. Nếu họ cho rằng những gì bạn đang làm là sai, thì đó là sai dựa trên đạo đức của họ. Khi họ trả tiền cho bạn và bạn được họ thuê, thì tại tòa án của bạn phải đồng ý với họ hoặc không đồng ý, điều đó có thể khiến bạn bị sa thải.

Bây giờ là một câu hỏi về tính toàn vẹn. Tôi đã để một nhân viên trước lấy một số mã của chúng tôi, nhưng tôi đã xem xét tất cả mã đó trước.

Chỉ vì bạn tin rằng bạn đúng, không làm cho bạn đúng. Thông thường các nhà phát triển phần mềm ký hợp đồng khi họ được tuyển dụng. Nếu bạn đã ký một, bạn cần phải sống theo lời của bạn.


"Trong khi tôi làm việc ở đây" ngụ ý người được hỏi không còn là sếp của bạn nữa. Nếu đó là sếp cũ của bạn, tại sao bạn lại quan tâm hỏi anh ta?
Alexander

Tại sao? Hợp đồng? Chính trực?
Ryan Ternier

Bạn có thể giữ mã bạn đã viết trong khi không sử dụng nó cho bất cứ điều gì và vẫn duy trì hợp đồng của bạn và giữ tính toàn vẹn của bạn.
Alexander

2
Nếu bạn ký hợp đồng ghi rõ tất cả mã là tài sản của chủ lao động, bạn mang nó về nhà là vi phạm hợp đồng đó nếu họ không biết rằng bạn có nó hoặc cho phép bạn có được nó. Đó là hành vi trộm cắp hiệu quả. Có, đó là "mã", số 0 và 1, nhưng trong hầu hết các trường hợp, đó là màu đen và trắng.
Ryan Ternier

Đó là cuộc thảo luận "cướp biển là trộm cắp" cổ điển.
Alexander

8

có phải là không phổ biến cho các nhà phát triển để giữ một bản sao cá nhân của mã họ đã viết

Trả lời câu hỏi trực tiếp, tôi sẽ nói theo kinh nghiệm của tôi, điều này không phổ biến. Các ngoại lệ này mà tôi đã thấy là những người làm rất nhiều nghề tự do và họ giữ mã trên tay cho các dự án bảo trì và nâng cao trong tương lai khách hàng của họ, và tôi sẽ tưởng tượng rằng điều này được nêu rõ trong hợp đồng (mặc dù tôi không phải là trong thói quen xem xét các hợp đồng tự do của bạn bè tôi, vậy ai biết được). Những người tôi biết, những người làm việc trong các công ty lớn hơn chưa bao giờ thừa nhận giữ mã từ các nhà tuyển dụng cũ.

Tôi biết tôi sẽ không vì tôi không thể nghĩ đến một tình huống duy nhất sẽ hữu ích (không kể rằng tôi khá chắc chắn rằng chủ nhân hiện tại của tôi cấm những điều đó - tôi chỉ cần tìm tài liệu để chắc chắn ). Mã tôi đã viết / đã sửa thường rất cụ thể đối với một yêu cầu kinh doanh cụ thể mà tôi không thể tưởng tượng được nó sẽ xuất hiện trở lại trong tương lai theo cách dễ sử dụng lại mã cũ hơn là viết mới mã.


3
Là một freelancer, tôi sẽ giữ tất cả các mã xung quanh. Việc sử dụng lại là điều cực kỳ khó xảy ra, nhưng cuối cùng cũng được, tôi sẽ giữ nó (ví dụ nếu nhà tuyển dụng thuê người khác làm hỏng mã và thuê tôi một lần nữa để sửa nó).
Camilo Martin

1
Trong tự do của tôi, tôi thấy có rất nhiều mã thường được sử dụng lại. Đã bao nhiêu lần tôi kết thúc việc viết cùng một mã đăng nhập người dùng trước khi tôi sử dụng lại nó. Trong khi tôi giữ mã xung quanh để bảo trì, các khu vực phổ biến của mã thường được sao chép. Nếu tôi đã tìm thấy một số mã về cơ bản giống nhau giữa hai dự án, tôi sẽ tạo một bản sao của nó ở dạng tổng quát và tôi sẽ sao chép nó vào các dự án khác khi cần.
Chris

8

Trước đây, thông thường các nhà phát triển có thư viện thói quen cá nhân mà họ sẽ sử dụng để giải quyết các vấn đề trong công việc hiện tại. Nguồn sẽ ở lại phía sau khi nhà phát triển rời đi, nhưng bất kỳ cải tiến nào cũng đi với anh ta.

Điều này dẫn đến một tình huống đôi bên cùng có lợi Nó cũng chỉ là một tập hợp con của tất cả các mã được viết.

Tất nhiên hầu hết những gì trong thư viện cá nhân sẽ có trong các thư viện tiêu chuẩn ngày nay.


Trong một số môi trường, có một sự phân định rõ ràng giữa mã Thư viện hoặc Thành phần hoặc Các lớp được thiết kế rõ ràng để sử dụng lại (trình phân tích cú pháp, v.v.) và các miền có vấn đề cụ thể. Mã dành riêng cho miền có vấn đề (ứng dụng thương mại hoặc thực thể thương mại chính của XWare) có thể không hữu ích bên ngoài nơi đó, nhưng thành phần / thư viện cấp thấp hoặc có thể tái sử dụng thực sự có thể rất hữu ích.
Warren P

6

Theo quan hệ chủ lao động với nhân viên ở hầu hết các vùng của Bắc Mỹ, việc chuyển hoặc truyền tài liệu kỹ thuật số (tức là mã nguồn) từ thiết bị của chủ nhân của bạn mà không có sự cho phép trước của chủ lao động là bất hợp pháp.

Một phần của luật pháp liên quan đến định nghĩa của nhân viên tại nơi làm việc, là mô tả rằng nhân viên không cung cấp thiết bị làm việc của riêng họ trừ khi có quy định khác trong hợp đồng nhân viên, ngoại trừ các giao dịch yêu cầu nhân viên mua hàng thiết bị riêng của họ (tức là công nhân xây dựng).

Hầu hết các luật về việc làm ở Bắc Mỹ định nghĩa người sử dụng lao động là người chấp nhận rủi ro chính trong mối quan hệ giữa người lao động với người sử dụng lao động. Nhân viên được trả tiền cho thời gian của mình trong khi người sử dụng lao động cung cấp vật liệu, thiết bị và kiểm soát các hoạt động liên quan đến công việc của nhân viên.

Tại thời điểm nào trong mối quan hệ này, việc đánh cắp tài liệu có giá trị từ chủ lao động, người đã trả tiền và chấp nhận rủi ro khi nói rằng tài liệu được tạo ra có ổn không?

Vấn đề chính với vấn đề này là câu hỏi "mã nguồn mà bạn đã viết?". Không thưa ngài, không phải là người đã viết nó. Dưới sự hướng dẫn của chủ nhân của bạn, chính họ là người đã viết nó. Bạn chỉ là người làm thuê đã gõ nó ra. Không có tòa án ở Bắc Mỹ sẽ đứng về phía bạn nếu chủ nhân của bạn thực hiện các hành động pháp lý để bảo đảm tài sản của họ. Chỉ cần sao chép mã nguồn vào ổ USB có thể đưa bạn vào nước nóng.

Như đã nói, nếu chủ lao động cho phép bạn sử dụng thiết bị của riêng bạn (ví dụ: máy tính xách tay) hoặc truyền tài liệu, thì đó là một vấn đề khác. Chủ lao động phải thông báo cho bạn khi chấm dứt rằng bất kỳ tài liệu nào sẽ được trả lại / tiêu hủy.

Chỉ cần nghĩ rằng tôi sẽ đăng câu trả lời này, vì có vẻ như một số người nghĩ rằng đây là một khu vực màu xám. Tôi thực sự không nghĩ rằng nếu bạn là một nhà phát triển, bạn nên truy cập Internet để đăng các tài liệu của nhà tuyển dụng. Ý tôi là, bạn rõ ràng đã biết câu trả lời cho câu hỏi này vì bạn đã tạo một tài khoản thành viên mới chỉ để đặt câu hỏi này. ;)


Chủ lao động phải thông báo cho bạn khi chấm dứt rằng bất kỳ tài liệu nào sẽ được trả lại / tiêu hủy. Điều này có thực sự đúng không? Là người sử dụng lao động theo nghĩa vụ pháp lý và / hoặc hợp đồng để làm điều này?
Radu Murzea

Người sử dụng lao động không có nghĩa vụ pháp lý để làm điều này, nhưng anh ta có thể yêu cầu bất cứ lúc nào rằng bất kỳ tài liệu nào thuộc về họ được trả lại từ nhân viên, trừ khi có thỏa thuận giữa chủ lao động và nhân viên cho phép nhân viên giữ tài liệu nói trên.
Phản ứng

5

Tôi đã làm điều này trong một vài công việc trước đây.

Tuy nhiên tôi chưa bao giờ quay lại và nhìn nó. Thỉnh thoảng tôi đã sử dụng lại những ý tưởng và những điều tôi học được nhưng tôi chưa một lần tìm thấy lý do để quay lại và xem mã.

Vì vậy, tôi sẽ không làm phiền nữa. Đó là sự nghi ngờ về mặt pháp lý và tôi chưa bao giờ thực sự thấy nó hữu ích trong thực tế.


4

Chắc chắn rồi. Tôi muốn giữ một bản sao của tất cả các công việc tôi làm - cho dù đó là viết mã hay không. Gọi nó là một sổ lưu niệm, nếu bạn thích. Phá vỡ các quy tắc? Có lẽ.

Các ý kiến ​​về lợi thế cạnh tranh là không liên quan trừ khi nhà tuyển dụng tiếp theo của bạn là đối thủ cạnh tranh trực tiếp. Nếu bạn chuyển từ một công ty điện thoại sang một nhà phần mềm hoặc từ một nhà phát triển trò chơi sang một nhà phát triển cơ sở dữ liệu, điều đó không thành vấn đề. Nếu bạn thực sự có kế hoạch sử dụng lại mã - tốt, đó là một câu chuyện khác.

Thật thú vị, bạn thường nghe về các nhà phát triển web mang theo "hộp công cụ" với họ, với một bộ thư viện JavaScript và biểu định kiểu CSS tiêu chuẩn . Nhưng tôi chưa thấy điều đó được đề cập ở đây.


3

Tôi vừa mới xóa tất cả các mã cũ tôi giữ từ chủ nhân trước đây của tôi. Tôi chỉ giữ những đoạn mã mà tôi nghĩ là tốt để tham khảo trong tương lai. Tôi thực sự thấy rằng tôi đã di chuyển đáng kể từ khi tôi rời đi và tôi chưa bao giờ đề cập đến mã cũ. Tôi đã tìm thấy / phát hiện / học được nhiều cách tốt hơn để giải quyết các vấn đề tương tự.

Đó là một chuyến đi nhỏ xuống làn đường bộ nhớ mặc dù :)


2

Tôi nghĩ rằng cần phải có sự phân biệt giữa mẫu thiết kế và mã thực tế (sao chép từng dòng một)

Viết ra một số psuedocode giống như - đây là một cách tuyệt vời để lười tải X trong Y là một chuyện. Viết ra tất cả các mã là một cái gì đó khác.


1

Với sự cho phép của chủ nhân của bạn, hãy xuất bản mã có thể sử dụng lại gọn gàng dưới dạng các dự án nguồn mở để người khác sử dụng. Sau đó, chủ nhân của bạn cũng có thể được hưởng lợi từ sự đóng góp của những người khác vào mã này.

Bằng cách này, bạn có thể giữ mã hợp pháp, xây dựng danh mục mã công khai mà bạn đã viết và mã có thể mang lại lợi ích cho người khác.


1

Vì một số lý do khác nhau, như làm việc tại nhà, bạn cũng có thể đã có một bản sao và tôi sẽ không xóa những thứ này sau khi làm việc, tại sao lại làm như vậy? Nó không đi ngược lại niềm tin của tôi hoặc một cái gì đó.

Nhưng, liên quan đến việc sử dụng nó, nó không hữu ích như một bài viết trên blog!

Điểm mấu chốt: viết mã của bạn, viết blog về các vấn đề bạn gặp phải và cách bạn giải quyết chúng (đặc biệt là khi đó là công cụ chung và rộng) và đừng bận tâm đến việc lưu giữ (có thể được mã hóa) từ công việc cuối cùng.


1

Trong tài chính, CFA giải quyết vấn đề này. Bạn không được phép lấy thông tin liên quan đến khách hàng hoặc công việc của bạn cho công ty (trong trường hợp này là mã). Nhưng không có gì ngăn cản bạn ghi nhớ những gì bạn có thể và sau đó viết nó xuống.

Không chắc nó hợp pháp đến mức nào, nhưng tôi nghĩ rằng cách tốt nhất của bạn là để lại mã nguồn của bạn nhưng viết ra ý tưởng của bạn và cách bạn đã làm nó ngay khi bạn về nhà. Ăn cắp là ăn cắp và tại tòa tất cả những gì họ đang cố gắng tìm hiểu để quyết định là bạn có sao chép mã hay không.


Hãy ghi nhớ một số nhà tuyển dụng sẽ cố gắng hết sức để ngăn bạn "viết ra ý tưởng của bạn" khi bạn về nhà. Kịch bản thua cuộc đối với họ không phải là sao chép mã, mà là cạnh tranh với họ - và vì thế, các ý tưởng tốt hơn nhiều. Không chắc chắn nếu nó có hiệu lực, nhưng một số người cố gắng bắt nạt bạn nghĩ rằng họ sở hữu bất kỳ ý tưởng nào bạn có thể có trong giờ làm việc.
Andres F.

1
@AresresF. Tôi đã từng làm việc tại một quỹ phòng hộ đã cố gắng ngăn chặn điều này. Họ thành thật không thể ngăn chặn điều đó nên họ đã khiến mọi người ký hợp đồng không cạnh tranh và trả tiền cho họ không làm việc trong 1-2 năm sau khi họ từ chức. Mặc dù cực kỳ tốn kém (bạn đang trả 2 năm tiền lương cho một người không làm việc cho bạn), nhưng nó khiến kiến ​​thức của bạn trở nên cũ kỹ khi bạn rời đi và vô dụng như một mối đe dọa cạnh tranh.
Lostsoul

+1 chỉ cho ý tưởng và không phải mã. Có liên quan đến một công ty đã kiện một lập trình viên cũ vì ăn cắp mã và bán một sản phẩm tương tự. Thẩm phán phán quyết rằng vì các lỗi giống hệt nhau nên anh ta đã đánh cắp mã.
jqa

Tôi đã thấy nhiều chủ lao động yêu cầu một nhân viên mới đồng ý bằng văn bản rằng họ sẽ không tham gia vào các hoạt động kinh doanh khác trong khi được sử dụng bởi chủ lao động, và bất kỳ dự án nào khác mà nhân viên làm bên cạnh cũng là tài sản của chủ lao động. Tôi nghĩ rằng chủ đề này trong đó là một vấn đề hoàn toàn khác, nhưng những thỏa thuận này có trong hầu hết các hợp đồng lao động.
Phản ứng

@MathewFoscarini Tôi đồng ý. Tại công ty của tôi, chúng tôi yêu cầu nhân viên phải có văn bản chấp thuận trước khi tham gia vào bất cứ điều gì họ nhận được lợi ích từ (bao gồm các dự án phụ, công tác từ thiện, v.v.). Nếu bạn sửa xe hàng xóm và anh ta mua cho bạn một cốc bia, nó sẽ có chất lượng mặc dù nhân viên nhận ra rằng chúng tôi rất có thể sẽ không theo đuổi nó.
Lostsoul

1

Nếu bạn đang lưu mã của mình với mục tiêu sử dụng lại mã sau, tôi có hai vấn đề với điều đó:

  • Nếu mã là tên miền cụ thể, nó có thể là độc quyền. Dù sao, không có hai doanh nghiệp hoặc vấn đề hoàn toàn giống nhau và cố gắng khắc phục một vấn đề với giải pháp cho một vấn đề khác không phải là một mô hình tốt.

  • Nếu mã bạn đang lưu giải quyết một vấn đề phổ biến, bạn nên đặt câu hỏi cho phương pháp của mình. Tại sao bạn lại dành nhiều nỗ lực để giải quyết một vấn đề phổ biến khi chúng có khả năng là các giải pháp nguồn mở hiện có (và tốt hơn)?

    Nếu bạn tin rằng bạn có giải pháp tốt nhất cho một vấn đề phổ biến, bạn thực sự nên cố gắng chia sẻ mã công khai trên kho lưu trữ công cộng và / hoặc blog mã khi bạn viết nó, không giữ nó cho riêng bạn. Sếp của bạn không nên phản đối việc chia sẻ một thư viện chung chung hoặc buộc bạn phải phát minh lại bánh xe (nếu có, hãy tìm một công việc mới).

Nếu bạn đang lưu mã của mình vì bạn muốn hiển thị nó cho một nhà tuyển dụng tiềm năng hoặc để cải thiện kỹ năng của bạn, tôi khuyên bạn nên đóng góp cho một dự án nguồn mở thay thế.


1
Mục thứ hai giả định rằng sẽ có một giải pháp nguồn mở, khác xa. Nhưng quan trọng nhất, một số mã tôi đã giữ lại là mã thể hiện cách tôi đã sử dụng các thành phần / dịch vụ của bên thứ 3. Ví dụ: nếu tôi phát triển một giải pháp thanh toán hợp lý tích hợp với Paypal, tôi sẽ lấy mã để tham khảo sau - vì vậy tôi không cần phải phát minh lại bánh xe vào lần tới.
cjmUK

0

Tôi chưa giữ bất kỳ mã nào tôi đã làm cho nhà tuyển dụng. Công cụ tự do mà tôi đã giữ (có thể khó hỗ trợ khách hàng nếu tôi mất mã).

Tuy nhiên, tôi đang xem xét việc giữ mã mà tôi đã tạo cho nhà tuyển dụng này. Lý do là tôi là một nhà phát triển web và tôi đã phát triển rất nhiều thứ ở phía khách hàng trông khá đẹp. Tôi đã không thiết kế chúng, nhưng tôi đã thực hiện chúng và thường nảy ra ý tưởng. Tôi muốn giữ một bản sao của công cụ này để xây dựng một danh mục đầu tư trực tuyến. Như chúng ta đều biết, các trang web không tồn tại mãi mãi, vì vậy tôi không thể thực sự tin tưởng vào công việc của mình khi trực tuyến. Có một bản sao lưu sẽ cho phép tôi có một danh mục đầu tư trực tuyến.

Tôi biết rằng các nhà thiết kế thường giữ các bản sao công việc của họ (ngay cả khi đó là công việc cho thuê) cho mục đích danh mục đầu tư.

Tôi không chắc tính hợp pháp của việc này là gì (nó không được đề cập rõ ràng trong hợp đồng của tôi).


4
but what are your thoughts on this?Xin đừng công khai mời một cuộc trò chuyện về câu trả lời của bạn bằng cách giới thiệu một câu hỏi khác. Bạn cho chúng tôi biết nếu chúng tôi nên giữ một bản sao của tất cả các mã chúng tôi viết. Bạn có thể cải thiện câu trả lời bằng cách chỉnh sửa nó.
maple_shaft

1
Tôi nghĩ rằng có một sự khác biệt trong việc giữ các tệp nguồn gốc (trong trường hợp của bạn là các tệp đồ họa như .ai hoặc ..) So với ảnh chụp màn hình của sản phẩm cuối cùng cho danh mục đầu tư của bạn. Bạn vẫn nên xin phép chủ nhân của mình, nhưng họ nên đồng ý với điều này hơn.
Sarel Botha

Bởi vì công việc thường mang tính tương tác, nên một ảnh chụp màn hình sẽ không cắt nó cho một danh mục đầu tư. Điều đó sẽ chỉ hiển thị các thiết kế (mà hầu hết không phải là của tôi). Tôi có thể ghi lại hình ảnh của tôi bằng cách sử dụng tác phẩm được đề cập, nhưng điều đó vẫn không truyền tải được những thứ như độ trễ, hiệu suất, khả năng tương thích giữa các trình duyệt.
Xandor Schiefer

0

Chà, để phát triển logic kinh doanh cho công ty của tôi, tôi không thể giữ mã vì đó là tài sản cá nhân và bất hợp pháp của công ty. Là nhà phát triển, tôi biết cách phát triển logic đó, vì vậy tôi có thể giữ logic đó trong tâm trí. Về cơ bản theo mặc định, nó được lưu trữ trong tâm trí của bạn và nếu bạn cần nó vào lần tới, thì tự động bạn nên thực hiện logic / logic tốt hơn so với trước đó. Đó là bản chất và trí thông minh của con người. :)

Nhưng vấn đề tạo ra khi bạn phát triển một số logic tiện ích, chúng có thể tái sử dụng và luôn luôn quan trọng, bạn có thể cần nó thường xuyên trong các dự án khác nhau. Vì vậy, bạn nên muốn giữ nó với bạn.

Tôi có một giải pháp thay thế cho điều đó. Chỉ cần tạo JAR không có nguồn / tài liệu cho người sử dụng và thêm nó dưới dạng JAR của bên thứ ba bên ngoài trong dự án của bạn. Có lẽ bằng cách này, bạn có thể xác nhận trách nhiệm cũng như sự hài lòng của bản thân rằng bạn có mã ;)


1
Cách tiếp cận khác cho điều này là khi tôi gặp một đoạn mã hữu ích / có thể tái sử dụng mà tôi muốn "mang theo bên mình" ... Tôi chỉ đơn giản là về nhà và viết một bài đăng trên blog về API hoặc kỹ thuật cụ thể mà mình quan tâm tôi. Tất nhiên bài đăng trên blog này không đề cập đến chủ nhân của tôi, cũng không sử dụng, từng dòng, mã được viết trên xu của chủ nhân của tôi.
Joel Martinez

Nếu có quy tắc, thì chúng phải là một quy tắc chống. Mà bạn có thể sử dụng có lợi cho bạn. Họ là những kỹ thuật khác nhau để đạt được điều này. Điều quan trọng nhất là - giữ cho công việc rõ ràng.
Soumyadip Das

0

Tôi không giữ mã vì một lý do đơn giản: Công ty trả tiền cho tôi để viết mã cho họ. Tôi đưa cho họ mã số của họ, và họ đưa cho tôi tiền lương của tôi. Anh chàng làm bữa trưa cho tôi, không thể giữ một phần cho riêng mình, tại sao mã lại khác?

Ngoài ra, vấn đề được đưa ra trước đây, tôi đã nghỉ việc, tất cả những vấn đề đau đầu vẫn ở đó, công việc mới, khởi đầu mới, nhưng với một chút kinh nghiệm và hiểu biết về các loại vấn đề trong lĩnh vực công việc cũ đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.