Чи добре використовувати мову, яка не підтримується вашою компанією для деяких завдань?


27

Я працюю в компанії, яка підтримує кілька мов: COBOL, VB6, C # і Java.
Ці мови я використовую для своєї основної роботи, але часто кодую незначні програми (наприклад, скрипти) в Python, тому що я вважаю це найкращим інструментом для такого типу завдань.

Наприклад: Аналітик надає мені складний файл CSV для заповнення деяких таблиць БД, тому я би використовував Python для розбору і створення сценарію БД.

В чому проблема?
Основна проблема, яку я бачу, полягає в тому, що кілька частин цих швидких та брудних сценаріїв повільно набувають важливості та:

  1. Моя компанія не підтримує Python
  2. Вони не контролюються версіями (я створюю резервну копію іншим способом)
  3. Мої колеги не знають Python

Аналітики навіть почали посилатися на них в електронній пошті ("запустіть сценарій, який експортує ..."), тому вони потрібні частіше, ніж я спочатку думав.

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

Коротше кажучи, якби я був переможцем в лотереї, щоб потрапити в аварію , моїм співробітникам потрібно було б підтримувати проект без цих сценаріїв; наприклад, вони витратять більше часу на виправлення помилок CSV вручну.

Це загальний сценарій? Я щось роблю не так? Що я повинен зробити?


22
Якщо ваші колеги не можуть знайти сценарій лише тому, що він є іншою мовою, у вас є більші проблеми
CaffGeek

1
Я згоден з Чадом. Python настільки ж близький до псевдо-коду, який він отримує.
робота

2
@Chad eheh приємний, але проблема може бути іншою; Python sdk не є частиною установки за замовчуванням на розроблювальній машині. Щоб встановити його, я заплатив багато кави правильному sysadmin;).
systempuntoout

3
@systempuntoout, розробники повинні мати можливість встановлювати все, що завгодно, на свій комп’ютер, що це в межах законодавства. Отже, PowerShell попередньо встановлений на Windoze, і я спробував замінити його на Python, але це не те саме. Крайові корпуси ляпають мене в обличчя кожного разу, коли я намагаюся зробити щось просте. Python просто виконує справи, і якщо корпоративні трутні не отримують цього - теж погано!
робота

1
Покладіть їх у контроль джерел. Десь крихітний куточок десь, але покладіть їх.

Відповіді:


42

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

Принаймні, сценарії повинні бути поставлені під контроль джерела "на всякий випадок" - тоді, принаймні, якщо ви недоступні (з будь-якої причини) ваші колеги матимуть доступ до скриптів.

Тоді вам або потрібно переконати свого шефа, що Python - це шлях для вирішення цих питань, або прийняти, що вам доведеться переписати їх на підтримуваній мові. Якщо вартість документування сценаріїв та навчання ваших колег у Python нижча, ніж переписування, ви навіть можете виграти аргумент.


8
+1, згоден. Я бачу, як подібне може дуже легко статися, але це не обов'язково "погана річ" або "помилка" з боку ОП. Це, мабуть, почалося, коли ОП отримала завдання "разового" міні-проекту, і він вибрав хороший інструмент, пітон, щоб швидко очистити свій стіл проекту - але потім знову і знову виявив, що виконує завдання ...
Анджело

Я зараз цим живу. Я зламав доказ концепції в Python, щоб допомогти мені з'ясувати якийсь хитрий старий код C, і насправді цілий безлад працює замість старого коду С, але мені було запропоновано переписати назад на C після внесення нових змін у роботу . Мені все-таки вдалося зберегти Python, я написав невеликий веб-додаток, використовуючи Python + Flask і мій менеджер, і постійно використовую його для аналізу операцій, що працюють у коді C. Тож ще є надія, що Python тут буде офіційно прийнятий. :)
Джон Гейнс-молодший

6

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

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

Після цього вам просто потрібно буде побачити, як реагують на це інші люди.


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

5

У мене виникли подібні проблеми, де я працюю. Я чув "Що таке PHP?" кілька років тому. Вони нічого не розуміють і не піклуються навчитися нічого поза стеком MS. Якщо python - це правильний інструмент для роботи, я просто розповім про це своїм керівникам і буду готовий до порівняння та пояснення того, чому python був правильним вибором. Це буде розчаровувати, але я думаю, що більшість погодиться з python - це гарний вибір для маніпуляції текстом.


5

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

По-друге, переведіть його в контроль версій проекту. Тепер. Ніщо, що ви виробляєте для проекту, ніколи не повинно бути поза контролем версій цього проекту.

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

Я думаю, що це, мабуть, хороший випадок

Простіше просити пробачення, ніж отримати дозвіл.

Це здається, що ви виконали роботу, але вам доведеться зараз боротися з наслідками.


4
"" "Запуск самостійно, використовуючи непідтримувані та невідомі (для команди / організації) технології, була поганою ідеєю, не консультуючись принаймні з іншими розробниками та визначаючи найкращий (для проекту, а не лише ви) спосіб автоматизації цих завдання, якими користуються всі. "" "- Я не згоден. Джоел Спольський не зміг би створити VBA для Excel, якби пішов цим маршрутом. Це далеко не унікальний приклад.
Робота

@Job Я не можу говорити про точні обставини розробки VBA для Excel, але це звучить як вдосконалені розробки та розробки прототипів. Існує різниця між передовими НДДКР та виробничими системами. Ви ніколи не можете працювати в темряві, самотніми та ізольованими від своєї команди. Я не проти впровадження нових технологій, але важливо, щоб усі знали, що це за нові технології, їх переваги, недоліки та як вони впроваджуються в проект. Робити щось соло і в темний час доби, як правило, погана ідея і ставить під загрозу проект.
Томас Оуенс

@Thomas Я команда
systempuntoout

@systempuntoout Це може бути правдою зараз. Але це буде через 6 місяців? Або рік? Розробка програмного забезпечення, навіть якщо ви зараз самотні, ніколи не слід вважати самостійним завданням - вам потрібно подумати про майбутнього розробника чи підтримку вашої роботи.
Томас Оуенс

@Thomas ти маєш рацію; як сказано в коментарях вище, я переніс багато сценаріїв на C # (компанія, що підтримується мовою)
systempuntoout

3

Моє правило:

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

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


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

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

@Thomas Owens - часто виникають разові завдання - як тільки вони будуть виконані, вони закінчені - або ваші власні хаки та тести, які ви робите в процесі розробки, щоб пройти щось клейке - знову ж таки, як тільки вони закінчаться , вони зроблені - ефективно одноразові.
Вектор

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

@ Томас Оуенс - дано - це включено в те, що я сказав, «потенційно впливає на роботу інших людей».
Вектор

2

У вас є два варіанти:

  1. Зробіть це стандартом
  2. Перекладіть на стандартний інструмент

Залежно від організації №1 може бути складним завданням (адже обмеження переліку стандартних технологій дозволяє уникнути комбінаторного вибуху вимог щодо навчання та підтримки навичок).

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

BTW, інструменти для розробників VB6 (IDE, компілятор) не підтримується (навіть не виправлення безпеки), тому, швидше за все, стандарт потребує оновлення. (Виконання VB6 підтримується як частина (та включена до встановлення) поточних версій Windows). Це може бути використане як помічник для наближення до №1: стандартний набір інструментів потребує збільшення цілі, що рухається, через залежність постачальника.


2

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

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


Вірити чи ні, після публікації цього запитання та отримання багато проникливих пропозицій я переніс декілька сценаріїв на C #.
systempuntoout

1

Ну, я маю визнати, що робота з 20 різними мовами смердить, МНОГО.

У вас є сценарій Bash, який викликає скрипт Python, який викликає скрипт Perl, який викликає Java бінарний, який викликає C dll ...

Потім щось потрапляє у вентилятор у всьому трубопроводі, і ви проходите через це - ЧОМУ ДАТЬ КОДЕЗ? Особливо в Perl ... І налагодження простої, скажімо, проблеми кодування, перетворюється на кошмарний безлад. Ви не можете ефективно налагоджувати 5 з 7 мов, і це перетворюється на справжній біль.

Або вам доведеться додати просту зміну, але ви створюєте 10 помилок, оскільки Perl має gotchas, Java має gotchas тощо.

І цей мовний ланцюжок 7+ починається по черзі.

Обережно ступайте, ось дракони ...


Робота з правильним інструментом не смердить, це спосіб Unix будувати речі. Спосіб Windows - це запуск Excel. Стара історія про молотки та цвяхи ...
mouviciel

1

Якщо це інструменти, які ви використовуєте для себе, ви можете робити все, що робить вас більш продуктивними.

Власне, вам слід заохочувати робити та користуватися такими інструментами, які з часом стануть розширенням вашої зброї.

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


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

3
@Thomas: Я розглядаю сценарії, які я створюю для себе та для особистого використання, як свої. Вони є продовженням моїх рук і мого розуму. Це як сказати: «Ти не можеш так думати, ти можеш думати тільки так». Я думаю, що не важливо, що ти думаєш, доки ти здатний робити те, про що тебе просять.
Хосе Фаети

Це, на мене, вкрай непрофесійно і неетично. Однією з етичних обов'язків інженера-програмного забезпечення є діяти в інтересах клієнта та роботодавця, доки це не загрожує суспільству. Ще одна етична відповідальність - бути справедливим та підтримувати колег. Тримаючи свої інструменти при собі, коли вони є для проекту, порушує обидва ці принципи.
Томас Оуенс

3
@Thomas: Я не говорив про написання конкретної мови програмування для проекту. Я говорю про щось на кшталт "перейменування 10000 файлів однією командою", про те, що тупі програмісти роблять вручну один за одним, тоді як я в змозі зробити це за допомогою власноруч виготовленого сценарію. Я не взаємодію ні з чим конкретно, що бере участь у проекті. Вони НЕ є специфічними для проекту інструментами.
Хосе Фаети

3
@Thomas: Справа не в тому, чи існує така утиліта, а в тому, як автоматизувати свою роботу, роблячи такі утиліти. Вам завжди знадобиться новий сценарій, який допоможе вам у повсякденних завданнях. Змусити програміста використовувати існуючі інструменти чи інструменти, виготовлені іншими - це як різати крила птаху. Я не уявляю, як працювати в такому місці. У будь-якому разі я розумію ваші моменти. Мою відповідь висунуто через те, що в цій ситуації вже був ОП, я вважаю, що найкраще було б поділитися думкою про створення / використання певного інструменту з усією командою, як тільки це буде потрібно, а потім вирішити.
Хосе Фаети

1

Коли вам кажуть писати код, виконуючи що-небудь, мова, як правило, вказується або мається на увазі (правило в корпораціях).

Але коли вам доведеться виконати одне ціле завдання, наприклад, імпортувати дані в БД, ви можете вибрати інструмент, який, на вашу думку, підходить найкраще, тому що ви повинні зробити щось правильне і швидке, а результат важливий, не інструменти.

Отже, я б застосував це правило:

1) Якщо вам скажуть виконати якусь задачу, таку як імпорт даних, я б використовував інструменти / мову / тощо. це було б для мене найбільш зручно і було б найшвидшим для виконання завдання.

2) Якщо вам скажуть написати інструмент, виконуючи якусь задачу, наприклад імпортувати деякі дані, я б обговорив, якою мовою / інструментом користуватися з менеджером (за винятком випадків, коли я використовую мову, що має на увазі стандарт, наприклад, коли компанія використовує [майже ] лише Java).

3) Якщо завдання здавалося одноразовим, але воно стало повторюваним, вам слід поговорити з менеджером, щоб змінити його з 1) на 2) і переписати з потрібної мови, що підтримується компанією.


0

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

Звичайно, питання полягає в тому, що буде, коли ви підете. Неможливість підтримувати код - це, мабуть, достатньо хороша причина, щоб перестати використовувати Python. Або ви можете почати навчати своїх колег до цієї мови ...

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