Знайшов краще рішення проблеми на роботі - чи варто відмовитися від розміщення фрагмента коду в Інтернеті?


18

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

Тепер уявіть собі ситуацію: у вас є проблема, яку потрібно вирішити. Трохи поглянувши, знайшли питання StackOverflow, але ви поки що не задоволені відповідями. Таким чином, ви повинні зробити власне дослідження: вам потрібно зробити це, тому що ви хочете, щоб це було в додатку компанії.

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

Але зачекайте: програмне забезпечення компанії є закритим джерелом, і ви працювали над ним цілодобово.

Отже, це означає, що я не повинен залишати відповіді ні на роботі, ні вдома на це питання не все життя, тому що я вирішив це на роботі, і компанія володіє цим кодом?


Я думаю, це залежить від політики компанії. Я б попросив дозволу бути на безпечній стороні.
MrSmith42

1
Запитайте у адвоката компанії, чи зможе він зробити маленький крихітний виняток у цій маленькій справі, і якщо він скаже «так», він буде добропорядним екс- юристом компанії. Шанси на те, що він просто скаже тобі, що найбільше цікавить його роботу та компанію, а це "ні".
Ніл

1
@ MrSmith42 Звичайно. Але якщо говорити правду, я вже в цьому кілька разів винен, і я це робив, не замислюючись про можливі наслідки, до цих пір. І, мабуть, я не один з цим. Ось чому я запитав це тут ... Або все дбає про те, щоб не висловлювати ідеї чи подавати якийсь код в Інтернеті, працюючи? Я не можу повірити.
Кальмарій

5
Однією з проблем може бути те, що якщо ваше рішення / алгоритм надає вашій компанії конкурентну перевагу, то обмін може бути сприятливим для вашої компанії.
cYn

3
Якщо ви думаєте, що це допоможе комусь, і ви не віддасте компанії ip, просто опублікуйте загальну версію речі. Особисто я думаю, що якщо рішення було частково отримане від інших, яких ви знайшли тут, компанія не має претензій на техніку, в першу чергу, оскільки вміст тут - куб.
GrandmasterB

Відповіді:


15

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

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: Як і будь-який винахід, алгоритми, які є складними і недостатньо очевидними та розробленими всередині компанії, є однією з небагатьох речей у світі програмного забезпечення, які можуть «легко» належати компаніям. Приклад, представлений тут, досить простий, щоб він не потрапляв до цієї категорії. І хоча бувають випадки, коли вкладаються реальні оригінальні думки та роки досліджень, і компанія повинна мати повні права власності, більшу частину патентної системи (принаймні в США) просто зловживають.
DXM

7

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

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

Я розглядаю свої запитання та відповіді як допомогу собі, а також комусь іншому в дорозі, коли вони стикаються з подібними проблемами, як у мене.


1

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

Поки не надається ніякої компрометуючої чи захищеної інформації, я вважаю, що знайдені вами рішення для розміщення є компенсацією за отримані вами відповіді.


1

Відповідь полягає в письмових юридичних угодах, які ви підписали з роботодавцем (ваш договір), і в юрисдикції, згідно з якою ці угоди будуть оцінюватися. Для юридичної угоди прийнято перелічити юрисдикцію, яка може бути, а може бути, не державою, в якій ви працюєте (хоча це, мабуть, країна, в якій ви працюєте, але не обов'язково).

Чудова книга - Варіан Ліндберг про інтелектуальну власність та відкриті джерела . З с. 185:

Немає правових наслідків щодо перевиконання [компанією] під час визначення "власницької інформації". Кілька держав обмежують застосування PIA, коли автор чи винахідник не використовує власність компанії чи час для створення нового твору ... Навіть якщо встановлені державою обмеження недійсні для частини PIA, інші аспекти угоди, як правило, виживають.

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

Я не юрист, просто цікавлюся цими матеріалами. Це не юридичні поради, просто доброзичливі пропозиції. Для себе я випадково не публікую нічого, що стосується роботи. Деякі речі я оприлюднив після тривалих обговорень з моїм начальником, повного розкриття інформації, чіткого маркування ліцензій та письмової угоди про те, що я випускаю, але це рідко.


0

Я опублікував фрагменти коду в Інтернеті, але завжди редагую код, щоб видалити будь-які посилання на компанію, будь-які дані клієнтів і часто також перейменовувати поля / змінні. Я в основному закінчую перезапис коду, щоб його не було простежено до роботодавця. Це вимагає трохи додаткових зусиль, але я думаю, що воно того варте.

Крім правового аспекту, ви також повинні думати, що вам довіряли майно ваших роботодавців. Якщо ви вільно публікуєте його в Інтернеті, то, схоже, вам не вистачає розсуду, і йому не можна довіряти. Навіть якби у вас був дозвіл майбутній роботодавець, який знаходив ваш фрагмент у пошуковій системі, може цього не знати.

Ось чому я схиляюся до помилок на стороні обережності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.