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

Компания, в которой я сейчас работаю, имеет ужасное количество процессов, требующих ручной работы, поэтому они очень ограничены в количестве проектов, которые они могут взять на себя, поскольку их процессы не масштабируются, они достигли точки, когда им приходится отказываться от проектов. . Эти процессы в значительной степени зависят от ручных настроек, ручного выполнения и написания документов Excel и Word и т. Д., Пример этого, один из этих процессов включает в себя заполнение более 800 ячеек в электронной таблице вручную, а другой экспорт всех этих ячеек вручную в другой внутренний инструмент и тд.

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

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

Инфраструктура настолько универсальна и гибка, насколько это возможно, и ее можно настроить с помощью Python для удовлетворения различных потребностей проектов. Логика такая же, как например проект в React или в Django. Все сложное абстрагируется в инфраструктуре и доступно через вызов функции в Python, все это спроектировано так, что пользователю нужно только запрограммировать специфику проекта и объединить блоки вместе с помощью Python.

Проблема в том, что, поскольку другие люди в отделе были заняты другими проектами, а ручные процессы занимают так много времени, никто, кроме меня, не работал с этой инфраструктурой или проектами, производными от нее, и никто другой в отделе не программист, ничего не знающий о Python, небольшое программирование, которое они сделали, это VBA.

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

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

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

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

РЕДАКТИРОВАТЬ:

Я предоставлю больше контекста на основе предоставленных ответов.

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

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

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

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

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

Я поговорил со всеми, кто участвовал, и поделился своим видением инфраструктуры перед тем, как начать, и прямо упомянул, что Python будет использоваться до тех пор, пока не упомянул многочисленные причины этого, в частности, растущую сложность проектов и тот факт, что текущий способ работы подразумевает, что многое требования клиентов не были учтены. Теперь я понимаю, что, возможно, они сказали «ОК», не слишком задумываясь.

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

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

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

ОТНОСИТЕЛЬНО НЕТЕХНОЛОГИЧЕСКИХ

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

Кто в вашем работодателе решил, что им нужен кто-то на вашу роль, и что они делают, чтобы поощрить принятие вашего решения?
Если я буду следовать подходу абстрагирования Python в Excel для удовлетворения потребностей моих пользователей, я могу в конечном итоге зарыться в яму, где мне придется реализовывать все конкретные функции для всех проектов, которые могут быстро стать неподдерживаемыми, а мое отсутствие будет блокировщик. Я не вижу в них своих пользователей, я руковожу переходом отдела в тот, который занимается автоматизацией, как я сам, поэтому я считаю, что Python и язык программирования необходимы, и я считаю, что это самый простой подход.
@Josh «Связь с инструментом не может быть выполнена с помощью VBA по нескольким причинам ... и это не будет масштабироваться или поддерживаться для всех инструментов, которые измеряют эту величину, потому что они используют разные протоколы и принадлежат разным производителям». Есть ли какой-то общий протокол/API/SCADA, общий для инструментов?
@DaveGremlin Нет, это разные инструменты от разных производителей и довольно дорогие, для взаимодействия с ними даже требуются специальные кабели или соглашения о неразглашении для доступа к некоторым функциям. Базовая технология может быть той же, например, USB или Ethernet, но команды взаимодействовать с устройствами могут очень сильно. Это одна вещь, которую достигает инфраструктура, абстрагируясь от всех этих деталей, например, измерение физической величины возвращает одно и то же значение, независимо от используемого инструмента, если он может измерить эту величину.
@JoeStrazzere Мой босс соглашается из-за результатов и результатов до сих пор и настаивает на том, чтобы больше людей делали то же самое, я думаю, что есть недоразумение, когда я говорю, что мои коллеги являются моими пользователями, это то, что требуют проекты, стандарты, установленные другими компаниями , следуя хорошей практике... Они уже должны были бы это делать, но это не так, я не вижу смысла строить что-то адаптированное к текущим потребностям, когда известно, что нынешняя нехватка знаний и способов работы не соответствовать требованиям проекта. Идти по этому пути может означать, что я в конечном итоге буду делать все сам
Вопрос очень длинный и немного расплывчатый. Я насчитал как минимум три разные проблемы: 1.) Ваши пользователи не адаптируют ваше решение. 2.) Вы не можете масштабировать свою инфраструктуру и поддерживать ее. 3.) Ваше руководство считает, что разработка идет медленно. Я думаю, что на все из них есть ответы, но пока непонятно, на что вам везет. Я предлагаю разделить ваш пост на другой вопрос и четко указать, каким вы хотите получить желаемый результат. Некоторые вопросы лучше подходят для программной инженерии или управления проектами SE.
Вы не можете сказать, довольны ли члены команды новым инструментом, потому что они не программисты? Тогда можете ли вы попросить своего начальника нанять настоящего программиста, чтобы он использовал этот инструмент и поддерживал обновление этого инструмента в долгосрочной перспективе?
Мне понравился ваш вопрос, и я проголосовал за него, возможно, вас можно было бы убедить рассмотреть возможность его возвращения, может быть, только с одним из содержащихся в нем подвопросов, а для всех остальных подвопросов вы создаете отдельные темы.
Вы хотите удалить его? Вы можете пометить свой вопрос для удаления.
«Я мог бы абстрагироваться от графического пользовательского интерфейса, чтобы пользователи не использовали Python, но учтите, что если я сделаю это для каждого процесса, это будет означать, что я буду реализовывать всю функциональность самостоятельно в каждом проекте, пока мои коллеги просто нажимают кнопку. " Тем не менее, с точки зрения компании, это вполне разумный способ решить проблему низкой вовлеченности. И люди, которые используют ручные процессы и отказываются прикасаться к коду, как правило, принимают и с удовольствием используют минимальный графический интерфейс. В Python запрос на нажатие кнопки занимает около 30 секунд. Связывание поля занимает еще минуту или около того.
Это серьезно звучит как проблема labview.

Ответы (5)

Итак, вы говорите, что сотрудники вашей компании не являются техническими специалистами и собрали вместе несколько электронных таблиц и VBA, чтобы они могли выполнять свою работу, и что вы заменили это системой, которая требует от них изучения Python?

Созданная вами система может быть более расширяемой, ремонтопригодной, масштабируемой и т. д. и т. д., но если персоналу необходимо писать код на Python для настройки проектов и обслуживания инфраструктуры, то вы в проигрышном положении, так не пойдет. произойдет. На самом деле, этого не должно происходить, предположительно, у персонала есть другие области знаний в области бизнеса, которые являются центральными для их работы; поддержка клиентов, управление учетными записями, бизнес-анализ? Кодирование — пустая трата времени и опыта.

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

Я полагаю, что вы находитесь под большим давлением из-за этого. Похоже, что в одиночку вы уже добились большего, чем целая компания внешних консультантов. Сейчас самое время использовать этот успех, чтобы получить помощь. Можете ли вы убедить компанию нанять кого-нибудь, чтобы помочь вам? Если не для того, чтобы помочь вам написать пользовательский интерфейс, то хотя бы для того, чтобы снять нагрузку с пользователей, освободив ваше время для начала работы с пользовательским интерфейсом. На данный момент вам не нужно нанимать старшего разработчика, лучшим вариантом может быть энергичный новичок, которого вы можете обучить.

И последнее: я был в состоянии заменить чудовищные электронные таблицы Excel, содержащие кошмарные макросы VBA, правильно закодированными системами, и подход, который сработал, заключался в том, чтобы сохранить Excel в качестве пользовательского интерфейса в первой итерации, чтобы избежать проблемы «изобретено не здесь». Со временем они увидели, что мы избавляем их от боли и облегчаем их жизнь, и стали доверять нам, когда дело дошло до окончательного отказа от Excel.

Спасибо за ваш вклад, у меня достаточно автоматизации Excel в инфраструктуре с использованием COM, в основном сосредоточенной на создании отчетов, но я могу извлекать данные из таблиц Excel и т. Д., Так что это может быть хорошей отправной точкой для предоставления пользовательских интерфейсов. ко всему. Технически им нужно перейти от ручной работы к автоматизированной, потому что этого требуют проекты, и я боюсь, что, предоставляя пользовательские интерфейсы, я буду делать все это сам, дело не в том, что они работают в других областях, это отдел, который технически уже должен делать то, что делаю я.
@Josh Похоже, твоя работа на самом деле состоит в том, чтобы преобразовать нетехнический отдел в технический. «Как ты справляешься с тем, что ты единственный технический парень в нетехнической команде?» Это потребует найма и увольнения, полного изменения корпоративной культуры и активной поддержки со стороны высшего руководства.
Да, это все, на что я хотел обратить внимание. Я должен быть техническим руководителем по переходу, но должность такая же, как и у всех в отделе, если не считать старшего. Под нетехническим я не подразумевал, что я работаю с людьми из других областей, я имел в виду, что я не считаю ручную работу, которая выполняется в отделе, технической, поскольку любой может нажимать кнопки и заполнять электронные таблицы. По стандартам других компаний мы сильно отстаем по процессам и срокам.
@Josh Возможно, стоит отредактировать ваш вопрос, чтобы он выделялся немного больше, мы все обращаем внимание на технические особенности / кодирование и пишем ответы с неправильным фокусом.
Похоже на еще один пример закона Реми о сборе требований

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

Инфраструктура настолько универсальна и гибка, насколько это возможно...

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

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

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

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

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

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

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

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

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

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

Опытные пользователи могут в конечном итоге понять, что они могут писать свои собственные конечные точки odata, или могут даже решить полностью отказаться от Excel, чтобы напрямую ударить по инфраструктуре.

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

Проблема, которую я вижу в этом, заключается в том, что для удовлетворения требований проекта им нужно каким-то образом реализовать логику, и поэтому я считаю, что для этого им нужен язык программирования. С Excel и VBA было много вещей, которые оставались без внимания, и было много жалоб от клиентов. Я мог бы реализовать некоторые стандартизированные процессы для использования из Excel, но не все для каждого проекта можно использовать из Excel из-за специфики проекта, мне нужно было бы сделать все это самому в Python и связать это с Excel, если они не используют Python. Это может быть большой объем работы.

Вы ударились о стену. К сожалению, чтобы сделать больше, вам, возможно, придется измениться — либо в компании, либо в том, что вы делаете.

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

Одним из решений было бы изменить подход. «Клиенты» вашей работы — ваши коллеги. По моему опыту, лучше выяснить, какой тип решения могут использовать мои клиенты, прежде чем я начну что-то создавать. В этом случае похоже, что клиенты могут использовать решения, основанные на Excel и VBA, но не на чем-либо другом. Да, VBA не так чист, как Python, но все же может выполнять свою работу.

Есть ли способ взять то, что вы уже написали, и переписать на VBA? Я обнаружил, что предоставление людям короткого макроса VBA, помогающего им, сильно влияет на их принятие того, что я делаю. Повторить.

Полная перезапись может не потребоваться, есть способы импортировать данные в excel из внешних сервисов.

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

Ваша цель — научить ваших коллег изучать Python — хороша, но не в краткосрочной перспективе; вполне понятно, что они будут спрашивать, «что в этом для меня», и ответ «может быть, несколько снизит нагрузку через 6 месяцев» не покажется удовлетворительным.

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

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