Нашли лучшее решение проблемы на работе - стоит ли мне публиковать фрагмент кода в Интернете?

18

Я думаю, что большинство из нас, программистов, использовали Stack Overflow для решения повседневных задач: искали эффективный алгоритм, чтобы что-то делать.

А теперь представьте ситуацию: вам нужно решить проблему. Погуглил немного, нашел вопрос StackOverflow, но пока вы не очень удовлетворены ответами. Таким образом, вы должны сделать свое собственное исследование: вы должны сделать это, потому что вы хотите это в приложении компании.

В конце концов, через несколько часов вы нашли лучшее решение. Вы счастливы, вы добавили его в кодовую базу компании, а затем хотите отправить свой ответ с фрагментом кода (всего несколько строк) на вопрос, который вы нашли раньше, чтобы помочь другим тоже.

Но подождите: программное обеспечение компании имеет закрытый исходный код, и вы работали над ним круглосуточно.

Значит ли это, что я не должен публиковать ответ ни на работе, ни дома на этот вопрос до конца своей жизни, потому что я решил его на работе, а компании принадлежит этот кусок кода?

Calmarius
источник
Я думаю, что это зависит от политики вашей компании. Я бы попросил разрешения быть на всякий случай.
MrSmith42
1
Спросите юриста компании, может ли он сделать крошечное исключение в этом маленьком случае, и если он скажет «да», он будет добросердечным бывшим юристом компании. Скорее всего, он просто скажет вам, что отвечает интересам его работы и компании, а это «нет».
Нил
1
@ MrSmith42 Конечно. Но, честно говоря, я уже несколько раз виновен в этом, и я делал это, не думая о возможных последствиях, до сих пор. И, наверное, я не одинок в этом. Вот почему я спросил это здесь ... Или все заботятся о том, чтобы не высказывать идеи и не отправлять какой-либо код в режиме онлайн, пока работают? Я не верю.
Кальмарий
5
Одной из проблем может быть то, что если ваше решение / алгоритм дает вашей компании конкурентное преимущество, то совместное использование может оказать влияние на вашу компанию.
13
3
Если вы думаете, что это кому-то поможет, а не раздает ip компании, просто опубликуйте общую версию. Лично я думаю, что если решение было частично получено от других, которые вы нашли здесь, компания не имеет претензий к технике в первую очередь, поскольку содержание здесь - cc.
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;  
        }  
    }  
}

Этот метод инвертирует порядковый номер 32-битного числа путем замены байтов. Разница между этой реализацией и наивной заключается в том, что она работает вдвое быстрее, но вы можете запустить ее только на маленькой порядковой машине. Он используется в проприетарной программе, но описывает общую технику и не раскрывает ничего конфиденциального.

Роберт Харви
источник
Это имеет тенденцию следовать идее, что у компании нет собственных алгоритмов, не так ли?
Даниэль Гратцер
8
Я не могу сказать это с какой-либо определенностью, учитывая византийский характер патентной системы.
Роберт Харви
@Jozefg: Как и любое изобретение, алгоритмы, которые являются сложными и недостаточно очевидными и разрабатываются внутри компании, являются одной из немногих вещей в мире программного обеспечения, которые могут «легко» принадлежать компаниям. Пример, представленный здесь, достаточно прост, чтобы не попасть в эту категорию. И хотя бывают случаи, когда инвестируются реальные оригинальные идеи и годы исследований, и компания должна иметь полные права собственности, большую часть времени патентная система (по крайней мере в США) просто злоупотребляется.
ДХМ
7

Я часто публикую сообщения о проблемах и решениях, с которыми я сталкиваюсь на работе, в рабочее время с балансовой единицей *. Я говорил об этом непосредственно с моим менеджером, и он считает, что ценность, которую компания получает от моего пребывания здесь, намного превышает любую обеспокоенность по поводу моего времени, проведенного здесь в целом.

* Я осторожен, чтобы запутать все, что я думаю, может быть частным. Наш внутренний код является очень проприетарным, но в значительной степени бесполезным для всех без нашего проприетарного оборудования (которое мы не продаем).

Я смотрю на свои вопросы и ответы как на помощь себе, а также кому-то другому в будущем, когда они сталкиваются с такими же проблемами, как и я.

delliottg
источник
1

Сколько будет стоить вашей компании ваше дополнительное время или потерянное время, если у вас не было этого ресурса?

Пока не дается никакой компрометирующей или частной информации, я чувствую, что решение о публикации сообщений, которое вы нашли, является компенсацией за ответы, которые вы получили.

TheSteven
источник
1

Ответ заключается в письменных юридических соглашениях, которые вы подписали с вашим работодателем (вашим контрактом) и с юрисдикцией, в соответствии с которой эти соглашения будут оцениваться. Обычно в юридическом соглашении указывается юрисдикция, в которой может находиться или не находиться штат, в котором вы работаете (хотя, вероятно, страна, в которой вы работаете, но не обязательно).

Отличная книга - « Интеллектуальная собственность и открытый исходный код » Ван Линдберга. Из с. 185:

Не существует никаких юридических последствий для чрезмерного охвата [компании] при определении «конфиденциальной информации». Несколько штатов ограничивают применение PIA, когда автор или изобретатель не использует собственность или время компании для создания новой работы ... Даже если установленные государством ограничения аннулируют часть PIA, другие аспекты соглашения обычно сохраняются.

Прочитайте ваш контракт. Перед тем, как действовать, расскажите о своих намерениях своему работодателю. Затем сообщите о ваших действиях вашему работодателю. Раскройте эти вещи в письменной форме и получите их ответ / разрешение, когда это применимо в письменной форме. По крайней мере, так говорится в этой книге.

Я не юрист, просто интересуюсь этим материалом. Это не юридическая консультация, просто дружеские предложения. Что касается меня, я не случайно делаю что-либо, связанное с работой. Я обнародовал некоторые вещи после долгих обсуждений с моим боссом, полного раскрытия, четкой маркировки лицензий и письменного соглашения о том, что я выпускаю, но это редко.

GlenPeterson
источник
0

Я разместил фрагменты кода в Интернете, но я всегда редактирую код, чтобы удалить любые ссылки на компанию, любые данные о клиентах, а также часто переименовываю поля и переменные. В основном я переписываю код, чтобы его нельзя было отследить до работодателя. Это требует дополнительных усилий, но я думаю, что оно того стоит.

Помимо юридического аспекта, вы также должны думать, что вам доверяют собственность вашего работодателя. Если вы свободно публикуете их в Интернете, то это выглядит так, как будто вам не хватает свободы действий, и вам нельзя доверять. Даже если у вас есть разрешение, будущий работодатель, найдя ваш фрагмент в поисковой системе, может об этом не знать.

Вот почему я склонен ошибаться на стороне осторожности.

Бен Терли
источник