Можно ли использовать язык, который не поддерживается вашей компанией для некоторых задач?


27

Я работаю в компании, которая поддерживает несколько языков: COBOL, VB6, C # и Java.
Я использую эти языки для своей основной работы, но я часто нахожу себя для программирования некоторых второстепенных программ (например, скриптов) на Python, потому что я считаю, что это лучший инструмент для задач такого типа.

Например: аналитик дает мне сложный CSV-файл для заполнения некоторых таблиц БД, поэтому я бы использовал Python для его анализа и создания сценария БД.

В чем проблема?
Основная проблема, которую я вижу, состоит в том, что несколько частей этих быстрых и грязных скриптов постепенно приобретают важность и:

  1. Моя компания не поддерживает Python
  2. Они не контролируются версией (я поддерживаю их другим способом)
  3. Мои коллеги не знают Python

Аналитики даже начали ссылаться на них по электронной почте («запустите скрипт, который экспортирует ...»), поэтому они нужны чаще, чем я изначально думал.

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

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

Это общий сценарий? Я делаю что-то неправильно? Что мне делать?


22
Если ваши коллеги не могут понять сценарий только потому, что он написан на другом языке, у вас большие проблемы
CaffGeek

1
Я согласен с Чадом. Python настолько близок к псевдокоду, насколько это возможно.
Работа

2
@ Может, он хороший, но проблема может быть в другом; Python SDK не является частью установки по умолчанию на машине разработчика. Чтобы установить его, я заплатил много кофе нужному сисадмину;).
systempuntoout

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

1
Поместите их в систему контроля версий. Просто маленький уголок где-то, но вставьте их.

Ответы:


42

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

По крайней мере, сценарии должны быть поставлены под контроль исходного кода «на всякий случай» - тогда, по крайней мере, если вы недоступны (по какой-либо причине), ваши коллеги будут иметь доступ к сценариям.

Затем вам нужно либо убедить своего босса, что Python - это то же самое, либо согласиться с тем, что вам придется переписывать их на поддерживаемом языке. Если стоимость документирования сценариев и обучения ваших коллег на Python ниже, чем стоимость переписывания, вы можете даже выиграть спор.


8
+1, согласен. Я могу видеть, как такого рода вещи могут очень легко произойти, но это не обязательно «плохо» или «ошибка» со стороны ОП. Вероятно, это началось, когда ОП был поручен «одноразовый» мини-проект, и он выбрал хороший инструмент, python, чтобы быстро очистить свой рабочий стол от проекта - но затем обнаружил, что выполняет задачу снова и снова ...
Анджело

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

6

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

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

После этого вам просто нужно посмотреть, как другие люди реагируют на это.


Прокомментируйте их как можно скорее. Помогает быстро увидеть, что происходит, а не пытаться понять, какого черта ты делаешь.
JD Frias

5

Я столкнулся с аналогичными проблемами, где я работаю. Я слышал "Что такое PHP?" несколько лет назад. Они не понимают или не хотят изучать что-либо за пределами стека MS. Если python является подходящим инструментом для работы, я просто расскажу об этом своим руководителям и буду готов к множеству сравнений и объяснений того, почему python был правильным выбором. Это будет неприятно, но я думаю, что большинство согласится с тем, что python - хороший выбор для манипулирования текстом.


5

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

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

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

Я думаю, что это, вероятно, хороший случай

Проще просить прощения, чем получать разрешение.

Звучит так, будто вы выполнили свою работу, но теперь вам придется столкнуться с последствиями.


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

@ Job Я не могу говорить о точных обстоятельствах разработки VBA для Excel, но это похоже на продвинутые разработки и прототипирование. Существует разница между продвинутыми научно-исследовательскими и производственными системами. Вы никогда не можете работать в темноте, в одиночестве и в изоляции от своей команды. Я не против внедрения новых технологий, но важно, чтобы все знали, что это за новые технологии, их преимущества, их недостатки и как они используются в проекте. Делать что-то в одиночестве и в темноте, как правило, плохая идея и подвергать риску проект.
Томас Оуэнс

@ Томас Я команда
systempuntoout

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

@ Томас, ты прав; как сказано в некоторых комментариях выше, я перенес много скриптов в C # (язык, поддерживаемый компанией)
systempuntoout

3

Мое правило:

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

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


1
Как вы знаете, если это для вас или для других? На работе вы можете получить новое назначение или выйти. Все, что вы производите на работе (в большинстве случаев), не ваше, а принадлежит компании или заказчику. Если они не могут понять или поддержать это, потерянное время - это время, которое вы потратили на его разработку, плюс время, которое требуется кому-то еще, чтобы понять это (и, возможно, разработать новое решение). Все, что производится на работе, следует воспринимать как нечто для кого-то другого.
Томас Оуэнс

1
Если за время вашей работы это увеличило вашу личную производительность, то компания уже получила выгоду от этого сценария, и это не было пустой тратой, независимо от того, будет ли он позже использован кем-то другим.
Nate CK

@ Томас Оуэнс - часто бывают разовые задачи - как только они выполнены, они выполнены - или ваши собственные хаки и тесты, которые вы делаете в процессе разработки, чтобы пройти через что-то нехорошее - снова, как только они будут выполнены Готово - одноразово.
Вектор

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

@ Томас Оуэнс - предоставлено - это входит в то, что я сказал «потенциально влияет на работу других».
вектор

2

У вас есть два варианта:

  1. Сделай это стандартом
  2. Перевести на стандартный инструмент

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

Второй вариант поможет вам установить навыки, и вы сможете найти стороннего разработчика (и, вероятно, с открытым исходным кодом с коммерчески дружественными лицензиями) для выполнения некоторой тяжелой работы. Например, поиск "LINQ to CSV" должен получить полезные хиты.

Кстати, инструменты разработчика VB6 (IDE, компилятор) не поддерживаются (даже исправления безопасности), так что, скорее всего, стандарт все равно нужно обновить. (Среда выполнения VB6 поддерживается как часть (и включена в установку) текущих версий Windows). Возможно, это можно использовать в качестве помощника для подхода # 1: стандартный набор инструментов должен поднять движущуюся цель из-за зависимостей от поставщика.


2

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

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


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

1

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

У вас есть скрипт Bash, который вызывает скрипт Python, который вызывает скрипт Perl, который вызывает двоичный файл Java, который вызывает C dll ...

Затем что-то попадает в вентилятор во всем конвейере, и вы проходите через - ЧТО ТАКОЕ КОДЕЗ? Особенно в Perl ... И отладка простой, скажем, проблемы кодирования превращается в кошмарный беспорядок. Вы не можете эффективно отлаживать 5 из 7 языков, и это превращается в настоящую боль.

Или вы должны добавить простое изменение, но вы создаете 10 ошибок, потому что в Perl есть ошибки, в Java есть ошибки и т. Д.

И эта цепочка языков 7+ начинается по одному шагу за раз.

Действуй осторожно, будь драконами ...


Работа с правильным инструментом не воняет, это способ построения вещей в Unix. Windows способ запустить Excel. Старая история о молотках и гвоздях ...
Моувициэль

1

Если вы используете эти инструменты для себя, вы можете делать все, что делает вас более продуктивным.

На самом деле, вам следует поощрять создавать и использовать такие инструменты, которые в конечном итоге станут продолжением вашего оружия.

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


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

3
@ Томас: Я отношусь к сценариям, которые я делаю для себя и для личного пользования, как к своим Они являются продолжением моих рук и моего разума. Это все равно что сказать: «Ты не можешь думать так, ты можешь думать только так». Я думаю, что не важно, что вы думаете, пока вы можете делать то, что вас просят сделать.
Хосе Фаэти

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

3
@ Томас: Я не говорил о написании определенного языка программирования для проекта. Я говорю о чем-то вроде «переименования 10000 файлов с помощью одной команды», о том, что глупые программисты делают вручную один за другим, в то время как я могу сделать это с помощью собственного скрипта. Я не взаимодействую ни с чем конкретно вовлеченным в проект. Они НЕ являются инструментами, специфичными для проекта.
Хосе Фаэти

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

1

Когда вам говорят писать код на языке sth., Язык обычно указывается или подразумевается (правило в корпорациях).

Но когда вам нужно выполнить какое-то одноразовое задание, например, импортировать данные в БД, вы можете выбрать инструмент, который, по вашему мнению, подходит лучше всего, потому что вы должны сделать что-то правильное и быстрое, а результат важен, не инструменты.

Итак, я бы использовал это правило:

1) Если вам сказали выполнить какую-либо задачу, например, импортировать данные, я бы использовал инструменты / язык / и т. Д. это было бы наиболее удобным для меня и было бы самым быстрым для задачи.

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

3) Если задача казалась одноразовой, но стала повторяемой, вам следует поговорить с менеджером, чтобы изменить ее с 1) на 2) и переписать с предпочитаемого вами языка, поддерживаемого компанией.


0

Я полагаю, что вы не в состоянии принять решение (иначе вы бы не задавали вопрос). Что твой босс думает об этой проблеме? Вы должны поговорить с ним и попытаться убедить его, что Python - это путь ...

Конечно, вопрос в том, что будет, когда ты уйдешь. Неспособность поддерживать код, вероятно, является достаточной причиной, чтобы перестать использовать Python. Или вы можете начать обучение своих коллег этому языку ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.