Итак, немного о себе, производстве и программировании:
Моя профессия далека от IT технологий. Я работаю на производстве кажется всю жизнь довольно давно. Тематика - производство и ремонт металлообрабатывающих станков. Производим станки как новые, так и ремонтируем. Стараемся все делать локализировано (импортозамещение ж)- все железки точим, шлифуем, собираем и т.д
Сейчас работаю механиком, совмещая несколько должностей конструктор/снабженец/технолог. Да, есть проблема кадров. А как решать? Надо автоматизировать!
В производстве много сложных процессов, не поддающихся автоматизации, но часть из организационных вопросов можно решить с ее помощью. Вот с ними я и хотел бы побороться.
Итак, 2022 год. Везде говорят про ИТ. Стало интересно. Решил попробовать с# - любопытно, но показалась сложно: ООП и прочее, хотя какой-то калькулятор на WinForms сделать все же получилось. Вкладывать в свое образование мне стало как то жалко - а вдруг не пойдет? А вдруг я тупой или старый? (30лет), так что в основном смотрел видео на YouTube и читал книжки. Как-то в каком-то видео услышал высказывание - "Чтобы научиться программировать, надо попробовать написать проект, который связан с вашей текущей работой". Звучало не плохо - почему бы и нет?
Что мы имеем: нулевой бюджет, почти нулевые знания, ноутбук и огромное желание автоматизировать рутинный процесс снабжения производства.
В голове это выглядело примерно так:
некий сайт, где лежат чертежи и все, что мы закупаем
с сайта можно сделать заказ: набираем в корзину подшипники и прочие детали , которые делают нам подрядные организации. Им высылается заявка с чертежами (если надо), количеством товара и реквизитами, куда они должны выставлять счета.
Так как контрагентов довольно много и деталей много хотелось бы, чтобы сайт (тогда я думал, что это делает какой-то мифический сайт и/или магия) сам подбирал нужного контрагента под конкретную деталь.
Хотелось, чтобы я всегда видел у кого что и когда заказано.
Хотелось, чтобы можно было посмотреть историю заказов - где, когда, у кого и в каком количестве заказывался товар.
Хотелось иметь удобную навигацию по чертежам (те, кто связаны с производством меня поймут - есть сборочный чертеж, в нем ссылка на номер детали из спецификации и потом только номер самой детали).
В начале пути цель казалась не достижима, но упертость победила.
Итак, я начал изучать по видео из YouTube HTML CSS и JS.
За пару месяцев (что меня удивило) я худо-бедно стал разбираться со стилями css. Мои страницы, которые я пытался верстать, пестрили вездесущими DIV, но что-то получалось. Все же я был еще далек от начала проекта.
И начать я его решил сразу с проекта на REACT - везде про него много говорили. Ну что, освоим!
Занимаясь проектом только по вечерам после работы и в обед, параллельно изучая REACT, ExressJS, mongo через пол года у меня что-то начало вырисовываться.
Был создан сервер на Express, который общается с mongoDB через mongose. Сервер отдавал статику (чертежи), фактически просто картинки.
Также было приложение на REACT, где все чертежи можно было посмотреть, добавить в корзину и присвоить контрагента.
Контрагента так же можно было добавлять из приложения. Чтобы программа понимала и предлагала какому из контрагентов отправлять заявку, придумал систему выстрелил себе в ногу на основе регулярных выражений.
Запустил все в локальной сети и ... ОНО ЗАРАБОТАЛО!
И работает!
Воодушевленный таким успехом, я добавил несколько новых функций:
Отправка напоминания каждому контрагенту о сделанном заказе - все детали, которые я от них жду
Отслеживание длительность поставки запчастей для анализа и прогнозирования закупок
Создание для каждого контрагента google таблицы, где будут отражены его текущие, а так же завершенные заказы. Ссылка на таблицу приходит вместе с заявкой и ведется в реальном времени.
Установка приоритета на детали. Контрагенту приходит уведомление что, мол, эта железка очень нужна и помечается в таблице красным цветом с пометкой "СРОЧНО".
-
Добавление прайсов от контрагентов.
Получилось красиво. Контрагенты присылают свой прайс в таблице Excel, я добавляю его в программу. Она подбирает на основе регулярных выражений (опять выстрел в ногу) чертеж к деталям (если они есть в каталоге) и растасовывает их по группам и подгруппам.
Telegramm-бот, уведомляющий о новых заказах или об их поступлении. В чате состоит руководство, которое тоже видит что, когда и у кого было заказано.
Получение информации из прайса через Telegramm-бот: пишешь номер детали и он выдает цены из прайса по всем контрагентам, которые могут эту делать поставить, а также средний срок поставки(я же отслеживаю сроки).
Следующим шагом стало управление производством.
Бизнес процесс довольно прост - приходит станок в ремонт, на него приходит договор со сроками, ЗИП (запасными частями), цветом станка характеристиками и прочее. За этим станком закрепляется бригада рабочих которые этот станок собирают.
К этому времени это приложение работает через локальную сеть на всех компьютерах на производстве.
Для автоматизации нашего бизнес процесса были реализованы следующие возможности:
Добавление сотрудников
Размещение на виртуальном поле станков
Назначение сотрудников для процесса сборки
Автоматическое заполнение полей контракта при прикреплении договора. Программа вытаскивает нужные поля типа сроков сдачи, ЗИП, цвета, характеристик будущего оборудования и заполняет их.
-
Чат с еще одним ботом. Он размещает статусы изготовления станка и информацию о назначениях на сборку для любого сотрудника, сделавшего запрос.
Позже научил бота высылать чертежи по запросу(мало ли кому из сотрудников нужен)
Электронный табель посещения работы для сотрудников
Отслеживание дней рождения
Хранение истории выполненных контрактов. Можно посмотреть детально предмет контракта, контрагента, дату, а также кто из сотрудников собирал оборудование, чтобы если что
наказатьпоощрить.
Параллельно с этим создал интеграцию с "Деловыми линиями" - теперь из приложения можно отслеживать грузы, которые идут к нам.
И немного о стеке:
front - REACT / REACT-ROUTER / REDUX / REDUX-THUNK / REACT-KONVA
server - EXPRESS /mongoDB+mongose / momentJS / Winston / uniqid / pdf-parse
Подытожим:
Да, автоматизация много что может, много вопросов можно ей закрыть и даже нехватку кадров.
Сейчас активно изучаю IT технологии и готовлю еще одно решение для соседнего производства под ключ, с полноценной разверткой, масштабируемое красивое и быстрое (PWA.desktop) ... правда с таким же бюджетом.
Если вдруг статейка оказалась для Вас интересна, расскажу как программа устроена под капотом, но это уже совсем другая история...
Всех благ! Успехов в автоматизации!
Комментарии (61)
qeeveex
20.06.2024 05:56+15Интересно, сколько бы содрал аутсорс за такой проект?
На прошлой работе начальство посчитало, и решило что дешевле нанять одного мидла и дать ему полный картбланш.
zahnah
20.06.2024 05:56+20Мидл с карт бланшем - это пусть в ад. Он год делает-делает, потому упирается в свой же говнокод и огорчается настолько, что увольняется, а проект надо как-то дальше тянуть. Это я вам говорю как человек, который несколько раз был "мидл с картбланшем". Правда было и так, что так норм получалось, но это русская рулетка реально.
Если проект достаточно сложный, то одного человека наедине с ним ставить - это тлен. Он банально умереть может, не говоря уже о том, чтобы уволиться, а знаний о проекте нигде больше и не останется толком.
qeeveex
20.06.2024 05:56+6Пока говнокод работает и решает задачи бизнеса, можно заняться рефакторингом и вырасти до сеньора.
Бизнес решая брать мидла на эту задачу изначально закладывает риски и время. Они так же выбирают сотрудника с ориентиром на его рост с учётом специфики производства.
Разумеется важные и кретичные проекты будут делать опытные и дорогие специалисты.
dmi3soloviev
20.06.2024 05:56+4Тут очень многое зависит от адекватности владельцев бизнеса: взаимное доверие и понятная финансовая мотивация
Но, в случае положительного исхода, гораздо сложнее дается следующий обязательный шаг: обеспечить преемственность знаний, без нарушения договоренностей
alek0585
20.06.2024 05:56+1Абсолютно согласен. У мидла нет достаточно навыков для проектирования, поэтому и называется мидлом. Плюс всегда нужен кто-то кто будет код-ревью делать, да и в отпуск тоже хочется.
Получается что нужны:middle, который будет кодить, возможно и писать тесты
senior, писать штуки заметно сложнее чем boilerplate
principal, разрабатывать архитектуру и прочее похожего уровня
Вуаяля, ценник уже middle х 4
qeeveex
20.06.2024 05:56Кто ему мешает набраться этих навыков во время работы?
Большинство разработчиков понимают в какую сторону двигаться и что нужно изучать для того чтоб стать опытным разработчиком.
Или вы считаете в нынешнее время без курсов и коллег которые вытянут тебя за уши ни как? А как же десять лет справлялись?
В 2008-м году так и работали. И этот софт все ещё приносит бабки.
Tim7456
20.06.2024 05:56+3Что мешает сварщику набраться навыков во время работы? Берем сварщика мидла, ставим его на сварку газопроводов под давлением и ждем когда он сам наберется навыков и станет синьором.
Так же как и для обучения сварщика нужен другой сварщик который научит и покажет, программисту тоже нужен учитель. Если учится всему самостоятельно, придется самому пройти весь путь, который индустрия прошла за последние 40 лет. И заново собрать лбом все грабли, по которым индустрия уже потопталась. И все это за деньги заказчика.
Предел для мидла самоучки - это формошлепство и средних размеров сайты. Причем передать этот проект в другие руки уже не выйдет, ибо код самоучки будет очень "самобытным". Но вполне может быть полезным и приносить бабки.qeeveex
20.06.2024 05:56Так я про это так же и написал
Разумеется важные и кретичные проекты будут делать опытные и дорогие специалисты.
На простых проектах пусть набирается опыта.
Проблема в том что этот подход применяется для всего. Даже для совсем простых проектов нужны специалисты с за 500к/сек и знанием всех алгоритмов вселенной.
И люди пишут что при устройстве на работу с такими требованиями не могут читать код, так как он ужасен. Т.е. проблема не решается.
vvzvlad
20.06.2024 05:56Кто ему мешает набраться этих навыков во время работы?
Ничего не мешает. Но на это уходит три-четыре запоротых проекта.
LeVoN_CCCP
20.06.2024 05:56+3Судя по тому что читаю и вижу, я больше поставил на то, что для описанных 20 простых функций, "настоящий программист" нашёл был 53.5 библиотеки которые вроде как решают эти функции с кучей их зависимостей, пытаясь подружить весь этот хлам перебрал бы кучу дистрибутивов, в итоге у него получился франкенштейн, который из 20-ти функций делает только 15 (остальные не прикручиваются к дистрибутиву, а другие дистрибутивы дают меньше функций) и 3-4 из них не до конца или не так. По размеру это занимало как 3.5 винды, а узнав что для такого монстра надо будет проходить какой-нить ФСТЭК, загрустил бы и пошёл в другой проект с новым опытом.
Автор сделал отлично, видит функцию - сделал функцию (уверен, что простыми 4 строками кода а не пятком библиотек), для отображения немного красивостей сам навесил и оно стало работать. Возможно "настоящий программист" из предыдщего параграфа схватится за голову увидев код, но неоспоримое преимущество, что тут всё просто работает и не надо искать багу в какой-то библиотеке по десяткам зависимостей и канючить в реквест пулах исправление от овнера (или ещё лучше форкать и самому поддерживать).
PS "настоящий программист" - кавычки не потому что кавычки, а потому что как сложившееся определение.
Tim7456
20.06.2024 05:56+2Вот это и будет путь мидла :-) Про библиотеки уже знает и все сам написать не пытается. А ценность продукта ака заработанные бабки - затраты на создание + сопровождение + затраты на расширение функционала он еще не в курсе.
LeVoN_CCCP
20.06.2024 05:56+1Благо я написал, про простые 4 строки кода. Ради них собирать франкенштейна который ещё и работает так себе. Ну чтож тоже путь.
Про время-деньги-сопровождение тоже вспоминается много историй из которых наиболее яркая, когда взяли библиотеку которая делала что надо и вчетвером пытались её прикрутить к базе. Там как раз в то время был переход фреймворка с 3.5 (2) на 4, что на одну версию БД она вставала немного вкривь вкось со всякими разрешениями недоверенных, а на вторую никак. В итоге 3.5 (потому что один из был подходами) человека убили 4-6 часов на это. А вот один из них выяснив что им на самом деле надо от этой библиотеки, что они не хотят писать сами (ибо миддлы же и код писать удел джунов, а они только паззл из библиотек собирать) за минут 20 переделал эту несчастную функцию в 15 строк кода и оно до сих пор работает.
karabas_b
20.06.2024 05:56Если мидл толковый (сообразителен, мотивирован и способен к самообучению) и руководство толковое (не требует невозможного в невозможные сроки, не меняет техзадание постоянно, мыслит практично, ценит важные фичи и не придирается к ерунде), то все получится без проблем. Если хоть один из них болван, то да, не взлетит.
qeeveex
20.06.2024 05:56не меняет техзадание постоянно
Тут кстати ТЗ как правило нет. Разработчик сам выясняет что хочет бизнес, учится оформлять задачи на самого себя, пишет что-то типа ТЗ, учится писать доку, иначе потом забудет, и т.п.
Бизнес чаще всего выдвигает требования со стороны визуального функционала. Типа - хочу кнопку сделать хорошо, вот тутс слева, и чтоб красная для бабы Гали из бухгалтерии.
releyshic
20.06.2024 05:56это что млять за мидл, который:
1) говнокод пишет
2) не может примитивные задачи решать. Тут, что надо Хайдлоад какойто сделать или тут какето сложные взаимосвязи?
qeeveex
20.06.2024 05:56+3Современная разработка...
А ведь когда-то в школе челые городские порталы поднимали, и это не было чем-то таким... Вот заставить работать все под Apache2 с его конфигом, вот это да! Ни кажды мог осводить
.htaccess
.Я свой первый плагин для форума на PHP написал для своего клана. Сейчас бы разработка этого плагина стоила 200к и время четырёх человек, один из которых архитектор, второй сеньёр, второй дизайнер, а верстальщик на аутсорсе. Но код все равно пишет оставшийся мидл, по придуманной архитектором архитектуре, и код его ревьюшит сеньёр.
LeVoN_CCCP
20.06.2024 05:56> один из которых архитектор, второй сеньёр, второй дизайнер, а верстальщик на аутсорсе
вот потому так хреново код счас и работает*
*это я про порядковый номер
Tim7456
20.06.2024 05:56Код то он нормальный пишет. А вот архитектуру и ее развитие во времени еще делать не умеет. А для этого надо и бизнес ака предметную область познать и процесс разработки, и мозоль на лбу от уже встреченных граблей набить.
qeeveex
20.06.2024 05:56А в чем проблема?! Ну сделает он как может с использованием какого-то фреймворка, где уже определена архитектура.
Столкнётся с проблемами io или бд, почитает про очереди - запилит их на файлах. Столкнётся с другими проблемами и затащит уже кролика.
Будет решать проблемы по мере поступления. И вырастит в спеца который нужен бизнесу.
sanchovy
20.06.2024 05:56Прежде чем дело дойдёт до аутсорса, у руководства должна возникнуть потребность в автоматизации и задача, которую аутсорс должен решить. А такая задача вряд ли бы у руководства когда-либо возникла, потому что они в этом не компетентны
pashkovka
20.06.2024 05:56+4Крутой проект! А как обстоят дела с документацией - вели её хотя-бы для себя? И для будущих участников в этой автоматизации.
Paveldpv Автор
20.06.2024 05:56да это наверное самое страшное для меня - когда начинал даже не задумывался о документации как для себя так и для коллег которые будут это использовать(очень об этом жалею) - сейчас изучаю патерны документации C4 и подобное - но в этот проект уже наверное не стану добавлять
Dominux
20.06.2024 05:56+6Учитывая полное отсутствие опыта, проект выглядит просто поразительно! Вы - большой молодец!
Однако не стоит путать это с профессиональной разработкой. Даже "профессионалы" в одиночку могут делать проект, но обычно у них выходит едва ли лучше, чем у вас. Начиная от выбора используемых решений, заканчивая планированием архитектуры с прогнозированием нагрузки и возможных будущих фич
karabas_b
20.06.2024 05:56+2профессионал (при одинаковых софт скиллах) отличается в первую очередь тем, что у него тот же результат получится гораздо быстрее.
Gryphon88
20.06.2024 05:56Профессионалы бы взяли готовый PLM... Проект в качестве учебного хорош, но вот поддерживать это все сможет скорее всего только автор.
Paveldpv Автор
20.06.2024 05:56да вы правы - поддерживать его даже мне внедрять что то новое уже стало безумно тяжко - из за неопытности наделал там кучу того что сейчас стоило бы все переписать, но пока руки боятся ))
defecator
20.06.2024 05:56Чем ту можно восхищаться ? Товарищ взял готовые фреймворки, поднастроил для своих задач. Вряд ли ТС знает про нормализацию отношений и вообще про проектирование БД. Есть такое ощущение, что ТС просто решил уйти несколько от Экселя, и сделал самое доступное для него, чего нашёл
8x8z
20.06.2024 05:56+9На мой взгляд, именно так и надо делать. На первом этапе создать прототип. Что ТС и сделал. Работает, выполняет заложенные функции? Все хорошо! На этом этапе проектирование, нормализация - от лукавого.
Есть прототип, относительно легко получаем ТЗ, описание бизнес процессов и технологические требования. А здесь и всплывут Ваши нормализации, проектирование БД и т.д.
Dart55
20.06.2024 05:56+1Сейчас работаю механиком, совмещая несколько должностей конструктор/снабженец/технолог.
В этой организации ООО «РСПК»? Коммерческий директор ваш родственник? Это ваш семейный бизнес? Ни чего не имею против, так бы и написали, а то из статьи не понятно зачем механику на заводе заниматься автоматизацией бизнес процессов.
qeeveex
20.06.2024 05:56+3Сейчас кстати купить нормальный бу отремантированный станок, очеееень большая проблема. Сродни автоподбору со свими приколами. У меня знакомый покупал станок за 300к. Вроде все нормально, и только после установки выяснилось что нужно ещё 100к вбухать.
Впал в дипрессию... Так как это его хлеб, а деньги из последних накоплений.
Так вот. Будь у нас такой РСПК, то скорее всего станок купил бы именно там.
Paveldpv Автор
20.06.2024 05:56спасибо приятно слышать )) пусть обращается если что поможем по станкам ))
AlexanderS
20.06.2024 05:56+12Приоткрою секрет. Программистами "по жизни" так и становятся: надо что-то запрограммировать - взял и запрограммировал. Никто тебе ничего не объясняет, не принуждает, сроков не ставят, возможно даже поначалу и не платят... Но если от этого не воротит и ощущается удовлетворение - это оно, ваше.
denizkino_mesto
20.06.2024 05:56+1Автор проекта изначально взялся за изучение с наличием хороших знаний прикладного программного обеспечения, средств автоматики и плат управления. Стиль больших кнопок и плашек изначально был использован для создания графического управления возможностями станков, которые они производят!
Paveldpv Автор
20.06.2024 05:56ну не совсем так - стиль больших кнопок мне ближе ) мне кажутся они более понятными - а станки с чпу делаем но гости они у нас не сказать что частые - к сожалению ))
AlexMih
20.06.2024 05:56+2Помню, как тридцать лет назад, я, молодой программист, впал в профессиональную програмистскую депрессию: "Все задачи решены, все программы написаны, что с нами будет, никакой перспективы, ухожу в монастырь".
И помню как сейчас, старший мудрый товарищ точно и метко сказал: "Не волнуйся. Пока существуют глупые и жадные заказчики - программисты без работы не останутся".
И до сих пор каждый день я вижу, как он был прав.
Tim7456
20.06.2024 05:56+3Вы, видимо, с детства были большим оптимистом. :) Я больше следовал подходу: "пока мне поручают работу которую я не хочу делать сам, придется писать программы". Ну и пока гора работы, которую я не хочу делать, становится все больше. Видать так и умру программистом.
iliya2004
20.06.2024 05:56Запустил все в локальной сети и ... ОНО ЗАРАБОТАЛО! (Скриншот рабочего сайта)
Вы тоже при создании своей первой комплексной программы много времени пишите код и только в середине пути разработки пробуете её запустить? И ваш первый проект при первом запуске целиком работает? Прохладная история.
Paveldpv Автор
20.06.2024 05:56под запуском я имел ввиду - запуск как бы это в боевом режиме - те ей можно было воспользоваться)
DS_Dave
20.06.2024 05:56+2Стало интересно, а почему регулярные выражения = выстрел в ногу?
Paveldpv Автор
20.06.2024 05:56в какой то мемент я в регулярки прямо влюбился - и пользовался ими вообще где нужно и где не нужно (например для поиска чего либо ) но как я понимаю работают они далеко не оптимально - например валидация длинного емайла с помощью регулярок вообще оказывается может остановить программу ( ну так было у меня ) или в регулярку прилетал символ "/" - тоже все падало + их через месяц почти не возможно доработать - проще заново новое написать , хотя штука мощная )
kot_behemot
20.06.2024 05:56+1Доброго времени суток! Не увидел откуда данные поступают по состоянию сборки. Или вся технологическая информация - ручной ввод. Интересно было узнать как происходит процесс получения данных с поля
Paveldpv Автор
20.06.2024 05:56да все ручном режим ... я непосредственно на сборке( у станка\узла) вместе с сборщиком осматриваю узел и с планшета ( по цеху wi fi) заказываю детали которые необходимо - либо мне просто подают заявку на те детали которые надо заказать - к сожалению пока более удобного способа я не придумал ..или его и вовсе нет )
Manguss
Крутой пет проект, согласен со мнением что такой проект должен решать реальные, а не выдуманные потребности. Тут удалось судя по всему и освоить навыки и технологии и решить реальные организационные задачи, что явно добавляет чувство самоудовлетворения.
Paveldpv Автор
ох спасибо)) да самоудовлетворение и правда в какой то момент пришло )) но рано останавливаться - продолжу развиваться) спасибо!