พบวิธีแก้ไขปัญหาในที่ทำงานได้ดีขึ้น - ฉันควรขัดขวางไม่ให้โพสต์โค้ดตัวอย่างออนไลน์หรือไม่


18

ฉันคิดว่าพวกเราส่วนใหญ่โปรแกรมเมอร์ใช้ Stack Overflow เพื่อแก้ไขปัญหาทุกวัน: มองหาอัลกอริทึมที่มีประสิทธิภาพในการทำอะไรบางอย่าง

ตอนนี้จินตนาการถึงสถานการณ์: คุณมีปัญหาในการแก้ปัญหา Googled เล็กน้อยพบคำถาม StackOverflow แต่คุณยังไม่พอใจกับคำตอบจริงๆ ดังนั้นคุณต้องทำวิจัยของคุณเอง: คุณต้องทำเพราะคุณต้องการในแอพของ บริษัท

ในที่สุดหลังจากผ่านไปหลายชั่วโมงคุณก็พบทางออกที่ดีกว่า คุณมีความสุขที่คุณเพิ่มลงในฐานรหัสของ บริษัท จากนั้นคุณต้องการส่งคำตอบด้วยข้อมูลโค้ด (เพียงหลายบรรทัด) ไปยังคำถามที่คุณพบก่อนหน้านี้เพื่อช่วยเหลือผู้อื่นด้วย

แต่เดี๋ยวก่อน: ซอฟต์แวร์ของ บริษัท เป็นแหล่งข้อมูลปิดและคุณทำงานกับมันตลอดเวลา

นี่หมายความว่าฉันไม่ควรโพสต์คำตอบไม่ว่าที่ทำงานหรือที่บ้านกับคำถามนั้นในช่วงที่เหลือของชีวิตของฉันเพราะฉันแก้ไขมันในที่ทำงานและ บริษัท เป็นเจ้าของรหัสชิ้นนั้น


ฉันคิดว่ามันขึ้นอยู่กับนโยบายของ บริษัท คุณ ฉันจะขออนุญาตเพื่อความปลอดภัย
MrSmith42

1
ถามทนายของ บริษัท ว่าเขาสามารถทำข้อยกเว้นเล็ก ๆ น้อย ๆ ในคดีเล็ก ๆ น้อย ๆ นี้ได้ไหมและถ้าเขาตอบว่าใช่เขาจะเป็นทนายความอดีตเพื่อนที่ดีของ บริษัท โอกาสที่เขาจะบอกคุณว่าอะไรคือผลประโยชน์ที่ดีที่สุดสำหรับงานของเขาและ บริษัท ซึ่งก็คือ "ไม่"
Neil

1
@ MrSmith42 แน่นอน แต่เพื่อบอกความจริงว่าฉันมีความผิดอยู่หลายครั้งแล้วและฉันก็ทำมันโดยไม่ได้คิดถึงผลที่จะตามมาจนถึงตอนนี้ และบางทีฉันไม่ได้อยู่คนเดียวกับสิ่งนี้ นั่นเป็นเหตุผลที่ฉันถามที่นี่ ... หรือทุกคนไม่สนใจที่จะแสดงความคิดเห็นหรือส่งรหัสใด ๆ ออนไลน์ขณะทำงาน? ฉันไม่เชื่อ.
Calmarius

5
ข้อกังวลอย่างหนึ่งคือหากโซลูชัน / อัลกอริทึมของคุณทำให้ บริษัท ของคุณมีความได้เปรียบในการแข่งขันการแบ่งปันนั้นอาจส่งผลกระทบต่อ บริษัท ของคุณ
Cyn

3
หากคุณคิดว่าจะเป็นการช่วยเหลือใครบางคนและไม่ได้มอบไอพีของ บริษัท ให้เพียงแค่โพสต์เวอร์ชั่นทั่วไปของสิ่งนั้น โดยส่วนตัวฉันคิดว่าถ้าวิธีแก้ปัญหานั้นมาจากบางส่วนที่คุณพบที่นี่ บริษัท ไม่ได้อ้างสิทธิ์ในเทคนิคตั้งแต่แรกเพราะเนื้อหาที่นี่คือซีซี
GrandmasterB

คำตอบ:


15

การเปิดเผยข้อมูล บริษัท ที่เป็นกรรมสิทธิ์เป็นสิ่งที่คุณไม่ควรทำ อย่างไรก็ตามโค้ดส่วนใหญ่ใน Stack Overflow นั้นมีความเป็นโลกีย์มากกว่านั้น ลองพิจารณาตัวอย่างนี้ :

public static unsafe void SwapX4(Byte[] Source)  
{  
    fixed (Byte* pSource = &Source[0])  
    {  
        Byte* bp = pSource;  
        Byte* bp_stop = bp + Source.Length;  

        while (bp < bp_stop)  
        {
            *(UInt32*)bp = (UInt32)(
                (*bp       << 24) |
                (*(bp + 1) << 16) |
                (*(bp + 2) <<  8) |
                (*(bp + 3)      ));
            bp += 4;  
        }  
    }  
}

วิธีนี้ย้อนกลับค่า endianness ของตัวเลข 32 บิตโดยการสลับไบต์รอบ ๆ ความแตกต่างระหว่างการนำไปใช้งานนี้กับอันไร้เดียงสาก็คือการดำเนินการนี้สองครั้งเร็ว แต่คุณสามารถเรียกใช้ได้บนเครื่อง endian เพียงเล็กน้อยเท่านั้น มันถูกใช้ในโปรแกรมที่เป็นกรรมสิทธิ์ แต่มันอธิบายเทคนิคทั่วไปและไม่เปิดเผยสิ่งที่เป็นความลับ


สิ่งนี้มีแนวโน้มที่จะทำตามแนวคิดที่ว่า บริษัท ไม่มีอัลกอริทึมของตัวเองใช่ไหม?
Daniel Gratzer

8
ฉันไม่สามารถพูดได้ด้วยความมั่นใจเนื่องจากธรรมชาติของระบบสิทธิบัตร
Robert Harvey

@Jozefg: เช่นเดียวกับสิ่งประดิษฐ์อัลกอริทึมที่ซับซ้อนและไม่ชัดเจนเพียงพอและพัฒนาภายใน บริษัท เป็นหนึ่งในไม่กี่สิ่งในโลกซอฟต์แวร์ที่ บริษัท สามารถ "ง่าย" ได้ ตัวอย่างที่นำเสนอที่นี่เรียบง่ายพอที่จะไม่ตกอยู่ในหมวดหมู่นั้น และแม้ว่าจะมีกรณีที่ความคิดดั้งเดิมที่แท้จริงและการวิจัยเป็นเวลาหลายปีและ บริษัท ควรมีสิทธิ์การเป็นเจ้าของเต็มรูปแบบส่วนใหญ่ระบบสิทธิบัตร (ในสหรัฐอเมริกาอย่างน้อยที่สุด) จะถูกใช้อย่างไม่เหมาะสม
DXM

7

ฉันโพสต์ปัญหาและแนวทางแก้ไขที่พบบ่อยในที่ทำงานตามเวลา บริษัท ด้วยรหัส บริษัท * ฉันได้พูดคุยกับผู้จัดการของฉันโดยตรงเกี่ยวกับเรื่องนี้และเขารู้สึกว่าคุณค่าที่ บริษัท ได้รับจากการใช้เวลาของฉันที่นี่นั้นมีค่ามากกว่าความกังวลใด ๆ เกี่ยวกับเวลาที่ฉันใช้ที่นี่โดยทั่วไป

* ฉันระมัดระวังที่จะทำให้งงงวยสิ่งที่ฉันคิดว่าอาจเป็นกรรมสิทธิ์ รหัสในบ้านของเรานั้นมีกรรมสิทธิ์เป็นอย่างมาก แต่ส่วนใหญ่จะไร้ประโยชน์สำหรับใครก็ตามที่ไม่มีฮาร์ดแวร์ที่เป็นกรรมสิทธิ์ของเรา (ซึ่งเราไม่ได้ขาย)

ฉันดูคำถามและคำตอบของฉันว่าช่วยเหลือตัวเองเช่นเดียวกับคนอื่นตามถนนเมื่อพวกเขาพบปัญหาคล้ายกันกับที่ฉันมี


1

บริษัท ของคุณมีค่าใช้จ่ายเท่าไรหรือเสียเวลามากแค่ไหนหากคุณไม่มีทรัพยากรนี้

ตราบใดที่ไม่มีการให้ข้อมูลที่เป็นอันตรายหรือเป็นกรรมสิทธิ์ฉันรู้สึกว่าโซลูชันการโพสต์ที่คุณพบคือการชดเชยสำหรับคำตอบที่คุณได้รับ


1

คำตอบนั้นอยู่ในข้อตกลงทางกฎหมายที่คุณได้ลงนามไว้กับนายจ้างของคุณ (สัญญาของคุณ) และกับเขตอำนาจศาลที่จะตัดสินข้อตกลงเหล่านั้น เป็นเรื่องปกติสำหรับข้อตกลงทางกฎหมายในการระบุเขตอำนาจศาลซึ่งอาจหรืออาจไม่ใช่สถานะที่คุณทำงาน (อาจเป็นประเทศที่คุณทำงาน แต่อาจไม่จำเป็น)

หนังสือที่ยอดเยี่ยมคือทรัพย์สินทางปัญญาและโอเพนซอร์ซโดย Van Lindberg จากหน้า 185:

ไม่มีผลกระทบทางกฎหมายสำหรับ [บริษัท ] การเปิดเผยเกินจริงเมื่อกำหนด "ข้อมูลที่เป็นกรรมสิทธิ์" หลายรัฐ จำกัด แอปพลิเคชันของ PIA เมื่อผู้แต่งหรือนักประดิษฐ์ไม่ได้ใช้ทรัพย์สินหรือเวลาของ บริษัท เพื่อสร้างงานใหม่ ... แม้ว่าขีด จำกัด ที่รัฐกำหนดจะทำให้ส่วนหนึ่งของ PIA ใช้ไม่ได้

อ่านสัญญาของคุณ เปิดเผยความตั้งใจของคุณต่อนายจ้างก่อนที่จะลงมือปฏิบัติ จากนั้นเปิดเผยการกระทำของคุณต่อนายจ้างของคุณ เปิดเผยสิ่งเหล่านี้เป็นลายลักษณ์อักษรและได้รับการตอบสนอง / อนุญาตเมื่อมีการใช้งานเป็นลายลักษณ์อักษร อย่างน้อยนั่นคือสิ่งที่หนังสือเล่มนั้นพูด

ฉันไม่ได้เป็นนักกฎหมายเพียงแค่สนใจในสิ่งนี้ นี่ไม่ใช่คำแนะนำทางกฎหมายเพียงคำแนะนำที่เป็นมิตร สำหรับตัวฉันเองฉันไม่ได้ตั้งใจทำอะไรที่เกี่ยวข้องกับงานสาธารณะ ฉันได้เปิดเผยบางสิ่งหลังจากพูดคุยกับเจ้านายของฉันเป็นระยะเวลานานการเปิดเผยอย่างครบถ้วนการทำป้ายกำกับที่ชัดเจนและข้อตกลงเป็นลายลักษณ์อักษรเกี่ยวกับสิ่งที่ฉันกำลังปล่อยออกมา


0

ฉันโพสต์ข้อมูลโค้ดออนไลน์ แต่ฉันมักจะแก้ไขรหัสเพื่อลบการอ้างอิงใด ๆ ไปยัง บริษัท ข้อมูลลูกค้าใด ๆ และฉันมักจะเปลี่ยนชื่อฟิลด์ / ตัวแปรด้วย ฉันมักจะเขียนโค๊ตซ้ำดังนั้นมันจึงไม่สามารถย้อนกลับไปหานายจ้างได้ ใช้ความพยายามพิเศษเล็กน้อย แต่ฉันคิดว่ามันคุ้มค่า

นอกเหนือจากด้านกฎหมายคุณต้องคิดว่าคุณได้รับความไว้วางใจจากนายจ้างของคุณ หากคุณโพสต์บิตของมันออนไลน์อย่างอิสระดูเหมือนว่าคุณจะไม่ใช้ดุลยพินิจและไม่น่าเชื่อถือ แม้ว่าคุณจะได้รับอนุญาตให้นายจ้างในอนาคตหาข้อมูลโค้ดของคุณจากเครื่องมือค้นหาอาจไม่ทราบ

นี่คือเหตุผลที่ฉันมักจะผิดพลาดในด้านของความระมัดระวัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.