找到了一个更好的解决工作中问题的方法-我应该阻止在线发布代码片段吗?


18

我认为我们大多数程序员都是使用Stack Overflow解决每天的问题:寻找一种有效的算法来完成某件事。

现在想象一个情况:您有一个要解决的问题。谷歌搜索了一下,发现了一个StackOverflow问题,但到目前为止您对答案并不满意。因此,您必须进行自己的研究:您需要这样做,因为要在公司的应用程序中进行。

最终,几个小时后,您找到了更好的解决方案。您很高兴,已将其添加到公司的代码库中,然后要向以前发现的问题提交带有代码段(仅几行)的答案,以帮助他人。

但是请稍等:该公司的软件是封闭源代码,您可以日以继夜地工作。

那么这是否意味着我不应该在余生中在工作中或家中都张贴该问题的答案,因为我在工作中解决了该问题,并且公司拥有该段代码?


我认为这取决于您的公司政策。我希望获得安全方面的许可。
MrSmith42

1
询问公司律师是否可以在这种小情况下做出微小的例外,如果他同意,他将是一名好心的公司律师。奇怪的是,他只会告诉您什么才是工作和公司的最大利益,而这是“不”。
尼尔

1
@ MrSmith42当然。但是说实在的,我已经对此感到内gui,直到现在我都没有考虑潜在的后果。可能,我并不孤单。这就是为什么我在这里问它的原因?还是每个人都在工作时不在乎不发表想法或在线提交任何代码?我不能相信。
Calmarius

5
关注的问题之一可能是,如果您的解决方案/算法使您的公司具有竞争优势,那么共享它可能会对您的公司产生影响。
2013年

3
如果您认为这对某人有帮助,并且不放弃公司ip,则只需发布该内容的通用版本即可。我个人认为,如果解决方案部分源自您在此处找到的其他解决方案,则该公司首先不会要求使用该技术,因为此处的内容为cc。
2013年

Answers:


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;  
        }  
    }  
}

此方法通过交换周围的字节来反转32位数字的字节序。此实现与幼稚的实现之间的区别在于,该实现的运行速度是后者的两倍,但是您只能在小端字节序的计算机上运行它。它在专有程序中使用,但它描述了一种通用技术,并且不公开任何机密信息。


这倾向于遵循公司不拥有算法的想法,不是吗?
Daniel Gratzer 2013年

8
考虑到专利制度的拜占庭性质,我不能肯定地说。
罗伯特·哈维,

@Jozefg:就像任何发明一样,算法复杂且不够明显,并且在公司内部开发,是软件世界中可以“轻松”被公司拥有的少数事物之一。此处提供的示例非常简单,因此不会属于此类。尽管在某些情况下需要投入真正的原创思想和多年研究成果,并且一家公司应拥有完全所有权,但在大多数情况下(至少在美国)专利制度只是被滥用。
DXM

7

我经常使用公司代码*在公司时间发布工作中遇到的问题和解决方案*。我已经直接与我的经理谈过这个问题,他感到公司从我在这里度过的时间所获得的价值远远超过了对我在这里度过的时间的任何担忧。

*对于我认为可能专有的东西,我会谨慎处理。我们内部的代码是非常专有的,但是如果没有我们专有的硬件(我们不出售),对任何人来说都将毫无用处。

当他们遇到类似的问题时,我认为自己的问题和答案可以帮助自己以及其他人。


1

如果您没有此资源,那么您为公司花费的额外时间或损失的时间将是多少?

只要没有给出任何妥协或专有信息,我就会认为您找到的发帖解决方案是对您收到的答案的补偿。


1

答案在于您与雇主签署的书面法律协议(您的合同)以及判断这些协议所依据的司法管辖区。法律协议通常列出可能不是您所在州的司法管辖区(虽然可能是您所在的国家/地区,但不一定)。

Van Lindberg 撰写的一本很棒的书是《知识产权与开源》。从第。185:

定义“专有信息”时,对于[公司]超出范围没有法律影响。当作者或发明人不使用公司财产或时间来创作新作品时,有几个州限制了PIA的应用...即使州规定的限制使PIA的一部分无效,协议的其他方面通常仍然有效。

阅读您的合同。在采取行动之前,向雇主披露您的意图。然后向雇主披露您的行为。以书面形式公开这些东西,并在书面形式适用时得到他们的回应/许可。至少那是那本书所说的。

我不是律师,只是对此东西感兴趣。这不是法律建议,只是友好的建议。对于我自己,我不会随便公开任何与工作相关的信息。在与老板进行了长时间的讨论,全面披露,清晰的许可证标签以及关于我要发布的内容的书面协议之后,我公开了一些内容,但这很少见。


0

我已经在网上发布了代码片段,但是我总是编辑代码,以删除对公司的任何引用,任何客户数据,而且经常我也重命名字段/变量。我基本上最终重新编写了代码,因此无法将其追溯到雇主。这需要一些额外的努力,但我认为这是值得的。

除了法律方面的问题外,您还必须认为自己已受到雇主财产的信任。如果您自由地将其发布到网上,那么您似乎缺乏判断力并且无法信任。即使您获得许可,将来的雇主也可能从搜索引擎中找到您的摘要。

这就是为什么我倾向于保持谨慎的态度。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.