Czy do niektórych zadań można używać języka, który nie jest obsługiwany przez Twoją firmę?

27

Pracuję dla firmy, która obsługuje kilka języków: COBOL, VB6, C # i Java.
Używam tych języków do mojej podstawowej pracy, ale często zdarza mi się kodować niektóre mniejsze programy (np. Skrypty) w Pythonie, ponieważ uważam, że jest to najlepsze narzędzie do tego typu zadań.

Na przykład: analityk daje mi złożony plik CSV do wypełnienia niektórych tabel DB, więc użyłbym Pythona do parsowania go i utworzenia skryptu DB.

Jaki jest problem?
Główny problem, jaki widzę, polega na tym, że kilka części tych szybkich i brudnych skryptów powoli zyskuje na znaczeniu i:

  1. Moja firma nie obsługuje Pythona
  2. Nie podlegają kontroli wersji (wykonuję kopię zapasową w inny sposób)
  3. Moi współpracownicy nie znają Pythona

Analitycy zaczęli nawet odwoływać się do nich w wiadomości e-mail („uruchom skrypt, który eksportuje ...”), więc są one potrzebne częściej, niż początkowo myślałem.

Powinienem dodać, że te skrypty to tylko narzędzia, które nie są częścią głównego projektu; po prostu pomagają wykonywać trywialne zadania w krótszym czasie. W moich małych zadaniach bardzo pomagają.

Krótko mówiąc, gdybym był zwycięzcą loterii, aby mieć wypadek , moi współpracownicy musieliby utrzymać projekt przy życiu bez tych skryptów; spędzą na przykład więcej czasu na ręcznym naprawianiu błędów CSV.

Czy to częsty scenariusz? czy robię coś źle? Co powinienem zrobić?

systempuntoout
źródło
22
Jeśli Twoi współpracownicy nie potrafią wymyślić scenariusza tylko dlatego, że jest on w innym języku, masz większe problemy
CaffGeek,
1
Zgadzam się z Czadem. Python jest tak blisko pseudo-kodu, jak to tylko możliwe.
Job
2
@Chad eheh fajny, ale problem może być inny; Python sdk nie jest częścią domyślnej instalacji maszyny programistycznej. Aby go zainstalować, zapłaciłem dużo kawy właściwemu administratorowi;).
systempuntoout
3
@systempuntoout, programiści powinni mieć możliwość zainstalowania na swoim komputerze wszystkiego, co tylko chcą, co jest w granicach prawnych. Tak więc PowerShell jest preinstalowany na Windoze i próbowałem zastąpić go Pythonem, ale to nie to samo. Brzegi uderzają mnie w twarz za każdym razem, gdy próbuję zrobić coś prostego. Python po prostu załatwia sprawę, a jeśli korporacyjne drony tego nie dostają - szkoda!
Job
1
Umieść je pod kontrolą źródła. Gdzieś tylko mały kącik, ale włóż je.

Odpowiedzi:

42

Musisz sformalizować sytuację, ponieważ tak naprawdę nie powinna do tego dojść. Te rzeczy się jednak zdarzają, więc musisz wyjaśnić swojemu szefowi, że stworzyłeś te skrypty na własny użytek, ale „uciekły” one do szerszego obiegu. Przyznaj się (jeśli to konieczne), że byłeś winny, że nie zwróciłeś na to uwagi wcześniej.

Przynajmniej skrypty powinny być poddane kontroli źródła „na wszelki wypadek” - wtedy przynajmniej jeśli nie jesteś dostępny (z jakiegokolwiek powodu), twoi współpracownicy będą mieli dostęp do skryptów.

Następnie albo musisz przekonać swojego szefa, że ​​Python jest na to odpowiedni, albo zaakceptować, że będziesz musiał ponownie je napisać w obsługiwanym języku. Jeśli koszt udokumentowania skryptów i edukacji współpracowników w Pythonie jest niższy niż koszt ponownego napisania, możesz nawet wygrać argument.

ChrisF
źródło
8
+1, zgadzam się. Widzę, jak takie rzeczy mogą bardzo łatwo się zdarzyć, ale niekoniecznie jest to „zła” lub „pomyłka” ze strony PO. Prawdopodobnie zaczęło się, gdy OP otrzymał zadanie z jednorazowym miniprojektem, a on wybrał dobre narzędzie, python, aby szybko wyczyścić swoje biurko z projektu - ale potem znów zaczął wykonywać to zadanie ...
Angelo,
Teraz to żyję. Zhakowałem w Pythonie dowód koncepcji, aby pomóc mi znaleźć jakiś gówniany stary kod C, i faktycznie cały ten bałagan działał jako zamiennik starego kodu C, ale został poproszony o przepisanie z powrotem do C po wprowadzeniu nowych zmian w życie . Udało mi się utrzymać trochę Pythona, napisałem małą aplikację internetową przy użyciu Python + Flask i mojego menedżera i używam jej stale do analizy działania działającego kodu C. Więc wciąż jest nadzieja, że ​​Python zostanie formalnie przyjęty tutaj. :)
John Gaines Jr.
6

Nie mogę dać ci pełnej odpowiedzi, co powinieneś zrobić. Mogę podać tylko jedną sugestię, której możesz użyć na początek:

Sprawdź skrypty w repozytorium, do którego dostęp mają wszyscy (wymagani) programiści. Ale pamiętaj, aby pamiętać, że najpierw napisałeś te skrypty dla własnego celu, tj. Aby wykonać powierzone ci zadanie. Następnie dodaj, że sprawdzasz tylko te skrypty, aby inni mogli z nich korzystać.

Następnie musisz tylko zobaczyć, jak reagują na to inni ludzie.

Giel
źródło
Skomentuj je w miarę możliwości. Pomaga szybko zobaczyć, co się dzieje, zamiast próbować dowiedzieć się, co do cholery robisz.
JD Frias,
5

W miejscu pracy napotkałem podobne problemy. Słyszałem „Co to jest PHP?” Kilka lat temu. Nie rozumieją ani nie chcą się uczyć niczego poza stosem MS. Jeśli python jest właściwym narzędziem do pracy, po prostu powiem o tym moim przełożonym i będę gotowy na wiele porównań i wyjaśnienie, dlaczego python był właściwym wyborem. Będzie to frustrujące, ale myślę, że większość zgadza się, że python jest dobrym wyborem do manipulacji tekstem.

Ryan
źródło
5

Pierwszą rzeczą, którą musisz zrobić, to porozmawiać z drużyną i szefem. W tej chwili masz ogromny czynnik ciężarówki (jeśli zostałeś potrącony przez ciężarówkę, nikt inny nie byłby w stanie utrzymać twoich skryptów). Wygląda na to, że skrypty do wykonywania tych zadań są ważne, ale ważne jest również, aby każdy, kto musi, mógł edytować i obsługiwać te skrypty. Musisz wyjaśnić, w jaki sposób używanie Pythona zwiększa wartość - jak oszczędza czas, wysiłek, zasoby, pieniądze i tak dalej.

Po drugie, weź to pod kontrolę wersji projektu. Teraz. Nic, co produkujesz dla projektu, nigdy nie powinno być poza kontrolą wersji tego projektu.

Przygotuj się na luz - ludzie zazwyczaj nie lubią zmian. Ubieganie się na własną rękę, używanie nieobsługiwanych i nieznanych (dla zespołu / organizacji) technologii było złym pomysłem, bez konsultacji z przynajmniej innymi programistami i określenia najlepszego (dla projektu, nie tylko ciebie) sposobu automatyzacji tych zadań dla wszystkich używać.

Myślę, że to prawdopodobnie dobry przypadek

Łatwiej prosić o wybaczenie niż uzyskać pozwolenie.

Wygląda na to, że wykonałeś zadanie, ale teraz będziesz musiał poradzić sobie z konsekwencjami.

Thomas Owens
źródło
4
„” „Ucieczka na własną rękę, użycie nieobsługiwanych i nieznanych (dla zespołu / organizacji) technologii było złym pomysłem, bez konsultacji z przynajmniej innymi programistami i określenia najlepszego (dla projektu, nie tylko ciebie) sposobu automatyzacji tych zadania dla wszystkich do użycia. ”„ ”- Nie zgadzam się. Joel Spolsky nie byłby w stanie utworzyć VBA dla Excela, gdyby wybrał tę drogę. To zdecydowanie nie jest wyjątkowy przykład.
Job
@ Job Nie mogę mówić o dokładnych okolicznościach rozwoju VBA dla Excela, ale brzmi to tak, jakby w grę wchodziły zaawansowane prace badawczo-rozwojowe lub prototypowanie. Istnieje różnica między zaawansowanymi systemami badawczo-rozwojowymi a systemami produkcyjnymi. Nigdy nie możesz pracować w ciemności, samotnie i odizolowany od swojego zespołu. Nie jestem przeciwny wprowadzaniu nowych technologii, ale ważne jest, aby każdy wiedział, jakie są te nowe technologie, jakie są ich zalety, wady i jak są wdrażane w projekcie. Robienie czegoś solo i po ciemku jest generalnie złym pomysłem i zagraża projektowi.
Thomas Owens
@Thomas Jestem zespołem
systempuntoout
@systempuntoout To może być teraz prawda. Ale czy będzie za 6 miesięcy? Czy rok? Tworzenie oprogramowania, nawet jeśli jesteś sam, nigdy nie powinno być traktowane jako samodzielne zadanie - musisz pomyśleć o przyszłym twórcy lub opiekunu swojej pracy.
Thomas Owens
@ Thomas masz rację; jak powiedziano w niektórych komentarzach powyżej, przeniosłem wiele skryptów w języku C # (język obsługiwany przez firmę)
systempuntoout
3

Moja zasada jest taka:

Wszystko, co potencjalnie wpływa na pracę innych osób, należy jak najszybciej omówić z rówieśnikami i przełożonymi.

Ale jeśli jest to dla ciebie i tylko dla ciebie, o ile nie spowoduje to szkody w infrastrukturze ani bezpieczeństwie twojej firmy , możesz to zrobić tak, jak chcesz, aby wykonać zadanie.

Wektor
źródło
1
Skąd wiesz, czy to dla ciebie, czy dla innych? W pracy możesz zostać ponownie przydzielony lub możesz zrezygnować. Wszystko, co produkujesz w pracy (w większości przypadków) nie jest twoje, ale należy do firmy lub klienta. Jeśli nie potrafią go zrozumieć lub utrzymać, stracony czas to czas, który poświęciłeś na jego opracowanie, a także czas, jaki zajmuje ktoś inny, aby go zrozumieć (i być może opracować nowe rozwiązanie). Wszystko, co powstaje w pracy, powinno być traktowane jako coś dla kogoś innego.
Thomas Owens
1
Jeśli w czasie, gdy byłeś w tym zadaniu, zwiększyło to twoją osobistą produktywność, firma zyskała już na wartości z tego skryptu i nie była to strata, niezależnie od tego, czy zostanie później ponownie wykorzystana przez kogoś innego.
Nate CK,
@Thomas Owens - często zdarzają się jednorazowe zadania - gdy są one wykonane, są wykonywane - lub własne hacki i testy, które wykonujesz w trakcie opracowywania, aby przejść przez coś lepkiego - ponownie, gdy zostaną wykonane , są gotowe - skutecznie jednorazowe.
Wektor
A jeśli ktoś inny musi później wykonać to samo lub podobne zadanie (co z moich doświadczeń jest bardzo prawdopodobne)? Muszą wynaleźć koło na nowo. Jedną z rzeczy jest praca nad prototypem w celu rozwiązania problemu lub nauki biblioteki lub frameworka. Kolejną rzeczą jest spędzanie czasu na opracowywaniu narzędzia do wykonania zadania, a następnie po prostu go odrzucaniu. Rodzaje narzędzi, do których odnosi się pytanie, dotyczą zadań, które potencjalnie muszą być wykonane wiele razy, a jeśli inne osoby wykonują te zadania, tracą czas, nie mając narzędzia, które mogłoby im pomóc (lub muszą opracować takie narzędzie) .
Thomas Owens
@Thomas Owens - przyznany - jest to zawarte w tym, co powiedziałem „potencjalnie wpływa na pracę innych”.
Wektor
2

Masz dwie opcje:

  1. Niech to będzie standard
  2. Przetłumacz na standardowe narzędzie

W zależności od organizacji nr 1 może być trudny (w końcu ograniczenie listy standardowych technologii pozwala uniknąć kombinatorycznej eksplozji wymagań dotyczących szkolenia i umiejętności wsparcia).

Druga opcja pomogłaby Ci w ustaleniu umiejętności i być może będziesz w stanie znaleźć stronę trzecią (i prawdopodobnie otwarte oprogramowanie z komercyjnymi licencjami), która wykona ciężką pracę. Np. Wyszukiwanie „LINQ to CSV” powinno przynieść użyteczne trafienia.

BTW, narzędzia programistyczne VB6 (IDE, kompilator) nie są obsługiwane (nawet poprawki bezpieczeństwa), więc prawdopodobnie i tak wymaga aktualizacji. (Środowisko wykonawcze VB6 jest obsługiwane jako część obecnych wersji systemu Windows i dołączane do nich). Być może może to być wykorzystane jako pomocnik w podejściu nr 1: standardowy zestaw narzędzi musi iść w górę ruchomego celu z powodu zależności od dostawcy.

Richard
źródło
2

Jeśli dostaniesz zadanie i jest to jedyny sposób, aby wykonać je na czas, tak naprawdę nie masz wyboru. Myślę, że rozsądnie jest poinformować osoby odpowiedzialne o tym, co robisz. Nie powinieneś wychodzić poza wymaganą kontrolę źródła (chyba że to absolutnie nie działa w ogóle?) Testowanie i dokumentacja.

Czasami firma może pozwolić jednemu deweloperowi zacząć szukać nowego obszaru rozwoju. Niestety, kod może dostać się do produkcji szybciej niż ktokolwiek inny.

JeffO
źródło
Wierzcie lub nie, po opublikowaniu tego pytania i otrzymaniu wielu wnikliwych sugestii przeniosłem kilka skryptów w języku C #.
systempuntoout
1

Muszę przyznać, że praca z 20 różnymi językami śmierdzi, DUŻO.

Masz skrypt Bash, który wywołuje skrypt Python, który wywołuje skrypt Perl, który wywołuje plik binarny Java, który wywołuje C dll ...

Potem coś uderza wentylatora w całym rurociągu, a ty przechodzisz - WTH IS DAT KODEZ? Zwłaszcza w Perlu ... A debugowanie prostego, powiedzmy, problemu z kodowaniem zamienia się w koszmarny bałagan. Nie można skutecznie debugować 5 z 7 języków, a to staje się prawdziwym bólem.

Lub musisz dodać prostą zmianę, ale tworzysz 10 błędów, ponieważ Perl ma gotchas, Java ma gotchas itp.

I ten łańcuch językowy 7+ zaczyna się krok po kroku.

Stąpaj ostrożnie, tu będą smoki ...

Koder
źródło
Praca z odpowiednim narzędziem nie śmierdzi, jest to uniksowy sposób budowania rzeczy. System Windows polega na uruchomieniu programu Excel. Stara historia młotów i gwoździ ...
mouviciel
1

Jeśli są to narzędzia, których używasz dla siebie, możesz robić wszystko, co zwiększa produktywność.

W rzeczywistości powinieneś być zachęcany do tworzenia i używania takich narzędzi, które ostatecznie staną się przedłużeniem twoich ramion.

W końcu uznają znaczenie posiadania takich narzędzi, bez względu na to, w jakim języku są napisane , i zaczną wdrażać w swoim środowisku pracy.

Jose Faeti
źródło
W pracy nie sądzę, że powinieneś traktować coś jak „dla siebie”. Są narzędziami wspierającymi projekt, a nad tym projektem pracuje zespół. Możesz odejść, zostać zwolnionym, zostać ponownie przydzielonym do pracy lub jutro padnąć martwy, a teraz Twoje obowiązki spadają na kogoś innego. Jeśli nie mogą używać i utrzymywać twoich narzędzi, wysiłek włożony w ich wykonanie został zmarnowany (kosztował pieniądze firmy).
Thomas Owens
3
@ Thomas: Traktuję skrypty, które robię dla siebie i mojego osobistego użytku, jako moje. Są przedłużeniem moich ramion i mojego umysłu. To tak, jakby powiedzieć: „Nie możesz tak myśleć, możesz tak myśleć”. Myślę, że nie ma znaczenia to, co myślisz, o ile jesteś w stanie zrobić to, o co cię poproszono.
Jose Faeti,
Dla mnie jest to wyjątkowo nieprofesjonalne i nieetyczne. Jednym z etycznych obowiązków inżyniera oprogramowania jest działanie w najlepszym interesie klienta i pracodawcy, o ile nie stanowi to zagrożenia dla społeczeństwa. Inną etyczną odpowiedzialnością jest uczciwość i wspieranie współpracowników. Trzymanie narzędzi dla siebie, gdy dotyczą one projektu, narusza obie te zasady.
Thomas Owens
3
@ Thomas: Nie mówiłem o pisaniu konkretnego języka programowania dla projektu. Mówię o czymś takim jak „zmiana nazwy 10000 plików za pomocą jednego polecenia”, coś, co głupi programiści robią ręcznie jeden po drugim, podczas gdy ja mogę to zrobić za pomocą skryptu stworzonego przez siebie. Nie wchodzę w interakcje z niczym konkretnie zaangażowanym w projekt. NIE są to narzędzia specyficzne dla projektu.
Jose Faeti,
3
@Thomas: Nie chodzi o to, czy takie narzędzie istnieje, ale o to, jak zautomatyzować swoją pracę, tworząc takie narzędzia. Zawsze potrzebujesz nowego skryptu, który pomoże ci w codziennych zadaniach. Zmuszanie programisty do używania istniejących narzędzi lub narzędzi innych jest jak przycinanie skrzydeł ptakowi. Nie wyobrażam sobie pracy w takim miejscu. W każdym razie rozumiem twoje punkty. Moja odpowiedź została podniesiona, ponieważ PO był już w takiej sytuacji, myślę, że najlepiej byłoby podzielić się myślą o stworzeniu / użyciu konkretnego narzędzia z całym zespołem, gdy tylko będzie to potrzebne, a następnie zdecydować.
Jose Faeti,
1

Kiedy każe ci się pisać kod robiąc coś, język jest zwykle określony lub dorozumiany (reguła w korporacjach).

Ale kiedy musisz wykonać jedno zadanie, takie jak import danych do DB, możesz wybrać narzędzie, które Twoim zdaniem pasuje najlepiej, ponieważ musisz zrobić coś poprawnie i szybko, a wynik jest ważny, nie narzędzia.

Więc użyłbym tej zasady:

1) Jeśli zostaniesz poproszony o wykonanie jakiegoś zadania, takiego jak import danych, skorzystałbym z narzędzi / języka / itp. byłoby to dla mnie najwygodniejsze i najszybsze dla tego zadania.

2) Jeśli zostaniesz poproszony o napisanie narzędzia wykonującego jakieś zadanie, na przykład zaimportować niektóre dane, omówiłbym z menedżerem, jakiego języka / narzędzia użyć (z wyjątkiem sytuacji, gdy używam języka, który jest domyślny, na przykład gdy firma używa [prawie ] tylko Java).

3) Jeśli zadanie wydawało się jednorazowe, ale stało się powtarzalne, należy porozmawiać z menedżerem, aby zmienić go z 1) na 2) i ponownie napisać z preferowanego języka obsługiwanego przez firmę.

Żeglarz naddunajski
źródło
0

Przypuszczam, że nie jesteś w stanie podjąć decyzji (w przeciwnym razie nie zadałbyś pytania). Co twój szef sądzi na ten temat? Powinieneś z nim porozmawiać i spróbować go przekonać, że Python jest właściwą drogą ...

Oczywiście chodzi o to, co się stanie, kiedy odejdziesz. Brak możliwości utrzymania kodu to prawdopodobnie wystarczający powód, aby przestać używać Pythona. Możesz też zacząć uczyć swoich kolegów tego języka ...

Xavier Nodet
źródło