Мой опыт: Внедрение ERP системы







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

Итак, начнем.

Задача:

Суть задачи сводилась к следующему: есть программный продукт, написанный на С#. Нужно написать что-то подобное на 1С. С последующим переводом компании на новые рельсы. Сразу скажу, что фирма занимается логистикой практически по всему миру. Исполнитель один.

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

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

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

Как показала дальнейшая работа в организации, эти мои слова были ошибкой. Дело в том, что нельзя называть никаких сроков, даже примерных, пока ты точно не поймешь, с чем столкнулся. Вышло так что через 2 месяца программа не была готова. И не через 4. И даже через 6. Проект оказался достаточно сложным. Специфика организации состояла в работе с файлами. Их подгрузке и хранении в 1С….в общем не буду описывать всех моментов, добавлю только, что:

1)Директор хотел чтоб было как в старой программе. (а 1с это не С#)

2)Выгрузка данных из старой программы в новую 1С.

3)Синхронизация обмена документами и банком с бухгалтерией.

Конечно, эту работу невозможно было реализовать ни за 2 месяца, ни за 6.

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

Из 1й ошибки вытекала и 2я. Мы не писали ТЗ. Все понимают, что обычно сам программист себе и пишет ТЗ. Сам его и выполняет. Решено было обойтись без этой лишней волокиты и сократить сроки работы. Вышло как всегда наоборот. Только большой опыт спас меня от того чтобы не рухнуть в рутине мелких задач которые были описаны даже не для меня а другим программистам, делавшим ещё С#. Часть задач забывалась, часть была не ясна до конца.

3я ошибка заключалась больше в специфике данной фирмы, но и я виновен также. Дело вышло так, что сам директор, лично, проверял у меня мою работу. Т.е. он давал задачу, часто письменно, а я её реализовывал. Потом показывал ему так сказать результат.

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

 Сначала все шло хорошо. Я показывал их директору свою работу, тот внимательно смотрел, корректировал или принимал работу. По факту получалось, директор только смотрел внешние формы, иногда проверяя кнопочки, не тестируя как положено программу.  Вылилось все в то, что, полномасштабное тестирование начиналось только ко времени дедлайна. Как правило, выяснилось, что те вещи, которые не смущали его раньше, стали критичны. А времени почти нет! В общем, начиналась жара. Нужно переделывать часть процессов. А эти процессы тянут другие вещи. Часть блоков перестали работать. А время дедлайна на носу… другими словами, мой совет, требовать тестировщика из штата сотрудников. Того, кто будет всегда под рукой.

Еще важное замечание. Никогда не сажайте людей на новую систему без обучения! Особенно если эти люди не знают 1С. Т.е. представьте, люди не только не знакомы с вашей системой, они и саму платформу-то не видели. Т.е. да, многие пользователи 1Са в этом смысле тупят, но эти то ребята так и вовсе! Да да, у нас вышло именно так. И это была 4я моя ошибка.

Получилось всё вот как:  Директор сказал «хм, твоя программа почти такая-же, как и та в которой они работали до этого. Им и переучиваться нечему особо.»  — Мне сложно было с ним спорить. Но по факту потом обучал я каждого индивидуально. Трудоёмкая работка.

После всего пережитого «создания ИБ» был ее запуск. Как обычно час X откладывался несколько раз. Но вскоре пришло осознание того что больше откладывать нельзя. И мы решили запускаться. Мне дали аж 3х человек на тестирование проекта. Сразу скажу, все они оказались жутко занятыми людьми и очень мало времени посвятили тестам. Тем не менее я не слезал с этой троицы и выжал из них что мог. Часть критичных багов было закрыто. Часть логики переработана.

Один за другим, тестировщики отчитывались директору о том, что их устраивает программа.

Вроде все шло не плохо. И вот день запуска настал. Сразу полезли всевозможные баги.

Начиная от печатных форм заканчивая какими-то логическими нестыковками в правах и донастройке функционала. Первая неделя прошла в попытках исправить и закрутить гайки.

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

Теперь немного про плюсы внедрения.

1)Первое это синхронизация между С# и 1С. Директор требовал от меня создания функционала, я же с этим не спешил. Спешил я с синхронизацией. Создавая новый справочник или документ, я пытался хотя-бы частично настроить его синхронизацию. Это я делал скрытно от директора, чувствуя подсознательно что эти вещи надо закрыть прежде всего. И вышло так, что неожиданно для меня, за 2-3 недели до НГ директор объявил, что программист по С# уходит.

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

 

2)Синхронизация с бухгалтерией. Как обычно бывает, после запуска программы практически сразу остро встал вопрос выгрузки данных в бухгалтерию. А там соотв-но конкретные строки закрытия периода и задачи отчетности. И вот к тебе прибегают люди с вопросами и косяками, но у тебя горят сроки по синхронизации. Ад просто. Благо я позаботился о синхронизации заранее. Конечно, не все пошло гладко, но отведенного времени вполне хватило на то чтоб подкрутить ошибки.

3)Печатные формы. Печатные формы всегда делают в самом конце. Когда описан полностью документ. Я же и вовсе не хотел браться за них. Не люблю я это, вот и всё. Муторно.

Тем не менее, я много времени потратил на формы. Делал их так, чтоб люди могли сесть и работать. Я понимал, что времени на правки практически не будет, т.к. фирма перейдет на 1С и менеджеры начнут печатать документы клиентам. Иначе, при критичных ошибках и явных багах работа просто встанет. Я старался сделать так, чтоб в 1й день работы фирмы на 1С, у меня было как можно меньше проблем по всем фронтам. 

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

 

Итак, внедрение завершено. На всё потребовался год работы. С базой работают около 20и человек. Ещё многое нужно сделать и дописать, но главное то, что система работает.

 

Так-же решил выложить картинки того что вышло.

И рассказать по метаданным, было добавлено:

— 5 новых документов.

-19 справочников.

— с десяток отчетов.

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

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

 

Всем спасибо за внимание.

 

 

20 Comments

  1. genayo

    Автор молодец 🙂 Хотя, конечно, то, что всё взлетело при такой работе со стороны заказчика — несколько удивительно…

    Reply
  2. dm_romanov.idm

    История интересная и поучительная, надеюсь автор не выгорел.

    ТЗ можно не писать, но просто необходимо вести реестр задач с инициаторами, кратким описанием и приоритетом.

    А за чем директору была нужна программа на 1С один в один, как уже написанная и используемая на C#?

    Причём здесь ERP?

    Reply
  3. dmitryburykin

    Автор!

    Упоминание ERP в заголовке некорректно.

    Это же проф.ресурс а не желтая пресса…

    Reply
  4. dmitryburykin

    (4) ну а со своими медицинскими проблемами наверное лучше на другой проф. форум…

    Reply
  5. Xershi

    (4) по комментам понял что внедряли не УП 2. А что-то другое, ну тут уже все что угодно выстрелить могло))

    Reply
  6. fishca

    Так взлетело?

    Что за конфигурация?

    Reply
  7. genayo

    (4) Да они просто тебе завидуют 🙂

    Reply
  8. zeegin

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

    Сроки давать надо. На конкретный спринт с конкретными задачами, так, чтобы выполнялся он не более 2х недель.

    > Мы не писали ТЗ

    К тому моменту когда будет реаоизовано ТЗ бизнесу будет требоваться уже нечно другое. Надо писать не ТЗ а бэклог задач, желательно с декомпозицией не более 2 часов на задачу.

    > требовать тестировщика из штата сотрудников

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

    > Никогда не сажайте людей на новую систему без обучения!

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

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

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

    > Имеет смысл постараться предусмотреть те моменты, которые могут быть критичными при запуске

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

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

    Reply
  9. Константин С.

    (4) вот именно ни слова про Enterprise Resource Planning, только как л****ся при разработке софта с подсчетов ошибок.

    Главное не повторять эти ошибки после.

    Reply
  10. dmitryburykin

    (4) Автор, если так поверхностно по переводу аббревиатуры рассуждать о ERP, то для Вас и Excel страничка — ERP.

    Директору, на самом деле — респект.

    За мужество, за веру!

    Reply
  11. CheBurator

    Автор — молодец! Асилил!

    Автору +100 в карму.

    Все описанное знакомо и не один раз.

    Reply
  12. Stim213

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

    Reply
  13. dinopopyys

    Очень рад что смог помочь. Удачи!)

    Reply
  14. vakham

    (11) Директор — идиот. Надо быть дебилом, чтобы всё замкнуть на себя. Он полы по вечерам не моет? А то вдруг утром грязно, клиенты «фи» скажут.

    Делегировать слабо? Или дебилов набрал?

    Reply
  15. vakham

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

    «Не дело комдиву в атаку ходить!» (с)»Батальоны просят огня. Не его это дело. Дело комдива — с картой сидеть и выезжать на место, проверяя свою работу и работу подчинённых. А если дебил, то тогда согласен… Если просрал наступление, то шашку на голо и вперёд в атаку на пулемёты.

    Reply
  16. ids79

    Описанная картина стара как мир!

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

    Так что Автору респект, а всем кто попал в аналогичную ситуацию — терпения и удачи.

    К сожалению на чужих ошибках мы учимся гораздо реже, чем на своих.

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

    Если бы Вы написали «ERP система» — вопросов бы ни у кого не возникло.

    Спасибо за статью и удачи с новыми проектами.

    Reply
  17. rovenko.n

    (9)

    На конкретный спринт с конкретными задачами, так, чтобы выполнялся он не более 2х недель.

    Задачка: возьмите вот это вот всё и перенесите точно так же в другую систему. Какой спринт? Спринты можно использовать тогда, когда знаешь специфику задачи и можешь её порезать. А тут автор не знал ничего. Но вы это явно не прочли.

    (9)

    тесты писать по поведению, автоматизированные. Тогда тестировщик не нужен.

    Написание тестов — тоже очень большой кусок работы. А программист у нас один. Или вы это не прочли?

    (9)

    тогда не будет требоваться сложного обучения.

    1С — это система учета. Пользователь создает документы и вносит в них реквизиты. В каждом документе от 1 до 100 реквизитов. Каким образом можно создать «понятный интерфейс», чтобы человек сразу всё понял?

    (9)

    удержать единственного владеющего информацией программиста.

    То есть вы предлагаете программисту еще и за персонал Заказчика отвечать?

    (9)

    Вводить в эксплуатацию программу надо блоками, а не сразу всю.

    Так автор же сказал, что это не его идея.

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

    Reply
  18. zeegin
    Reply
  19. СергейК

    Спасибо, интересно.

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

    Думаете, то что получилось, это средний максимум для одного человека в год?

    Reply
  20. dinopopyys

    Трудозатраты измерять сложно. Можно сделать 100 документов а можно сделать 5. И по трудозатратам оно будет равноценно.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *