Znalazłem lepsze rozwiązanie problemu w pracy - czy powinienem powstrzymać się od opublikowania fragmentu kodu online?

18

Myślę, że większość z nas, programiści, używała przepełnienia stosu do rozwiązywania codziennych problemów: szukała wydajnego algorytmu do zrobienia czegoś.

Teraz wyobraź sobie sytuację: masz problem do rozwiązania. Trochę googlowałem, znalazłem pytanie StackOverflow, ale do tej pory nie jesteś zadowolony z odpowiedzi. Musisz więc przeprowadzić własne badanie: musisz to zrobić, ponieważ chcesz, aby było to w aplikacji firmy.

W końcu po kilku godzinach znalazłeś lepsze rozwiązanie. Jesteś szczęśliwy, dodałeś go do bazy kodu firmy, a następnie chcesz przesłać swoją odpowiedź fragmentem kodu (tylko kilka wierszy) na pytanie, które znalazłeś wcześniej, aby pomóc również innym.

Ale poczekaj: oprogramowanie firmy jest zamkniętym źródłem, a ty pracowałeś nad tym przez całą dobę.

Czy to oznacza, że ​​nie powinienem zamieszczać odpowiedzi na to pytanie w pracy ani w domu przez resztę życia, ponieważ rozwiązałem ją w pracy, a firma jest właścicielem tego kodu?

Calmarius
źródło
Myślę, że to zależy od polityki firmy. Poprosiłbym o pozwolenie, by być po bezpiecznej stronie.
MrSmith42
1
Zapytaj prawnika firmy czy mógłby zrobić malusieńka wyjątek w tej jednej małej sprawie, a jeśli mówi tak, on będzie dobrego serca ex -company prawnik. Jest szansa, że ​​powie ci tylko, co leży w najlepszym interesie jego pracy i firmy, która brzmi „nie”.
Neil
1
@ MrSmith42 Pewnie. Ale prawdę mówiąc, jestem już tego winny kilka razy i do tej pory nie zastanawiałem się nad potencjalnymi konsekwencjami. I prawdopodobnie nie jestem z tym sam. Właśnie dlatego zapytałem o to tutaj ... Czy też wszystkim zależy na tym, aby nie wyrażać pomysłów ani nie przesyłać kodu online podczas pracy? Nie mogę uwierzyć.
Calmarius
5
Jednym z problemów może być to, że jeśli Twoje rozwiązanie / algorytm zapewnia Twojej firmie przewagę konkurencyjną, udostępnienie jej może mieć wpływ na Twoją firmę.
ok.
3
Jeśli uważasz, że to byłoby komuś pomocne, a nie dajesz firmowego adresu IP, po prostu opublikuj ogólną wersję tego. Osobiście uważam, że jeśli rozwiązanie częściowo pochodzi od innych, które tu znalazłeś, firma nie ma roszczenia do techniki w pierwszej kolejności, ponieważ treść tutaj jest cc.
GrandmasterB,

Odpowiedzi:

15

Ujawnianie zastrzeżonych informacji o firmie jest czymś, czego nigdy nie powinieneś robić. Większość fragmentów kodu w przepełnieniu stosu jest jednak znacznie bardziej przyziemna. Rozważ ten przykład :

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

Ta metoda odwraca endianowość liczby 32-bitowej, zamieniając bajty. Różnica między tą implementacją a naiwną polega na tym, że ta działa dwa razy szybciej, ale można ją uruchomić tylko na małej maszynie Endian. Jest używany w zastrzeżonym programie, ale opisuje ogólną technikę i nie ujawnia niczego poufnego.

Robert Harvey
źródło
Ma to tendencję do podążania za ideą, że firma nie posiada algorytmów, prawda?
Daniel Gratzer
8
Nie mogę tego powiedzieć z całą pewnością, biorąc pod uwagę bizantyjski charakter systemu patentowego.
Robert Harvey
@Jozefg: Podobnie jak każdy wynalazek, algorytmy, które są złożone i nie są wystarczająco oczywiste i opracowane w firmie, są jedną z niewielu rzeczy w świecie oprogramowania, które „łatwo” mogą być własnością firm. Przedstawiony tutaj przykład jest na tyle prosty, że nie mieści się w tej kategorii. I choć zdarzają się przypadki, w których inwestuje się prawdziwe oryginalne myśli i lata badań, a firma powinna mieć pełne prawa własności, przez większość czasu system patentowy (przynajmniej w USA) jest po prostu nadużywany.
DXM
7

Często zamieszczam problemy i rozwiązania, na które natrafiam w pracy, na czas firmowy, korzystając z kodu firmy *. Rozmawiałem bezpośrednio z moim kierownikiem i on uważa, że ​​wartość, jaką firma czerpie z mojego pobytu tutaj, znacznie przewyższa wszelkie obawy dotyczące mojego czasu spędzonego tutaj ogólnie.

* Ostrożnie staram się zaciemniać wszystko, co moim zdaniem może być zastrzeżone. Nasz wewnętrzny kod jest bardzo zastrzeżony, ale w dużej mierze byłby bezużyteczny dla każdego bez naszego zastrzeżonego sprzętu (którego nie sprzedajemy).

Patrzę na moje pytania i odpowiedzi jako pomagające sobie, a także komuś innemu, kiedy napotykają podobne problemy jak ja.

delliottg
źródło
1

Ile kosztowałaby Twoja firma za dodatkowy czas lub stracony czas, gdybyś nie miał tego zasobu?

Dopóki nie zostaną podane żadne kompromitujące lub zastrzeżone informacje, uważam, że znalezione przez ciebie rozwiązania do zamieszczania ogłoszeń stanowią rekompensatę za otrzymane odpowiedzi.

TheSteven
źródło
1

Odpowiedź leży w pisemnych umowach prawnych podpisanych z pracodawcą (umowa) oraz w jurysdykcji, w której będą one oceniane. Umowa prawna często wymienia jurysdykcję, która może, ale nie musi być stanem, w którym pracujesz (choć prawdopodobnie kraj, w którym pracujesz, ale niekoniecznie).

Świetną książką jest własność intelektualna i Open Source autorstwa Van Lindberga. Od p. 185:

Nie ma żadnych skutków prawnych dla nadmiernego sięgania przez [firmę] przy definiowaniu „informacji zastrzeżonych”. Kilka stanów ogranicza stosowanie PIA, gdy autor lub wynalazca nie wykorzystuje własności firmy ani czasu, aby stworzyć nowe dzieło ... Nawet jeśli narzucone przez państwo limity unieważniają część PIA, inne aspekty umowy zasadniczo pozostają w mocy.

Przeczytaj umowę. Przed podjęciem działań ujawnij swoje zamiary swojemu pracodawcy. Następnie ujawnij swoje działania swojemu pracodawcy. Ujawnij te rzeczy na piśmie i uzyskaj ich odpowiedź / pozwolenie, jeśli ma to zastosowanie na piśmie. Przynajmniej tak mówi ta książka.

Nie jestem prawnikiem, po prostu interesuję się tymi sprawami. To nie jest porada prawna, tylko przyjazne sugestie. Dla siebie od niechcenia nie publikuję niczego związanego z pracą. Upubliczniłem niektóre rzeczy po długich dyskusjach z moim szefem, pełnym ujawnieniu, wyraźnym oznaczeniu licencji i pisemnym porozumieniu na temat tego, co publikuję, ale jest to rzadkie.

GlenPeterson
źródło
0

Opublikowałem fragmenty kodu online, ale zawsze edytuję kod, aby usunąć wszelkie odniesienia do firmy, dane klientów i często zmieniam nazwy pól / zmiennych. Zasadniczo kończę przepisywanie kodu, aby nie można go było przypisać pracodawcy. To wymaga dodatkowego wysiłku, ale myślę, że warto.

Poza aspektem prawnym musisz także myśleć, że zaufałeś nieruchomości pracodawcy. Jeśli swobodnie publikujesz jego fragmenty online, wygląda na to, że brakuje Ci dyskrecji i nie można ufać. Nawet jeśli masz pozwolenie, przyszły pracodawca znajdujący Twój fragment z wyszukiwarki może tego nie wiedzieć.

Właśnie dlatego miałbym skłonność do bycia ostrożnym.

Ben Thurley
źródło