Власна облікова система з нуля: що потрібно знати замовнику до початку розробки
За свою кар’єру я неодноразово працювала з розробкою та впровадженням облікових систем — від автоматизації окремих бізнес-процесів до комплексних систем, які охоплюють фінанси, склад, закупівлі, продажі, виробництво та управлінський облік. І майже завжди результат такого проєкту залежить не стільки від того, наскільки добре програмісти пишуть код, скільки від того, наскільки правильно побудований сам процес розробки.
Коли компанія вирішує створити власну облікову систему з нуля, найбільша помилка — сприймати це просто як розробку програмного забезпечення: «ось наші процеси, ось список функцій — зробіть нам систему». На практиці між ідеєю та готовою системою є цілий ланцюжок етапів: обстеження, формалізація вимог, проєктування, пріоритизація, розробка, тестування, приймання та подальший супровід. І відповідальність за результат лежить не лише на підряднику.
Власна система чи готове рішення?
Перш ніж починати розробку, варто відповісти на базове питання: а чи дійсно компанії потрібна власна система?
У більшості бізнесів уже є готові рішення — ERP, CRM, складські системи, бухгалтерські програми, галузеві продукти. Якщо стандартний функціонал закриває
І тут важливо одразу розуміти: розробка з нуля — це не одноразова покупка програми. Це створення інформаційної системи, яку надалі потрібно буде підтримувати, розвивати, тестувати, захищати та адаптувати до змін бізнесу.
Хто за що відповідає
Одна з ключових умов успішного проєкту — чіткий розподіл відповідальності між замовником і виконавцем.
На стороні замовника.
Замовник найкраще знає власний бізнес. Тому саме на його стороні має бути людина, яка розуміє бізнес-процеси підприємства, може пояснити, як процес працює зараз, розуміє, як він має працювати після автоматизації, визначає пріоритети, погоджує зміни та приймає результати розробки.
Це може бути Product Owner, Project Manager, бізнес-аналітик або інша відповідальна особа — залежно від масштабу компанії. Але ця роль повинна бути реальною, а не формальною.
Якщо підрядник змушений самостійно з’ясовувати, як працює підприємство, у кого запитувати інформацію, хто приймає рішення і чи потрібен бізнесу той чи інший функціонал, проєкт дуже швидко починає буксувати.
На стороні виконавця.
З боку розробника також має бути зрозуміла структура відповідальності: керівник проєкту, бізнес-аналітик, розробники, QA, а за необхідності — архітектор, DevOps, UI/UX та інші спеціалісти.
Замовнику не обов’язково щодня спілкуватися з кожним розробником. Але має бути прямий і зрозумілий канал комунікації з командою або керівником проєкту.
Коли між замовником і командою стоїть кілька рівнів менеджменту, інформація починає спотворюватися, а прості питання перетворюються на довгі погодження.
Як обрати підрядника
Я б починала не з питання «скільки коштує година роботи?». Перше, на що варто звернути увагу, — як саме підрядник підходить до вашого проєкту ще до початку розробки.
Хороший виконавець не буде після короткого дзвінка обіцяти: «Так, ми все зробимо. Ось кошторис». Навпаки, він почне ставити запитання.
Як зараз побудовані процеси? Хто користувачі системи? Які обсяги даних? Які є інтеграції? Де виникають проблеми? Які документи формуються? Хто погоджує операції? Які дані повинні потрапляти до бухгалтерського та управлінського обліку? Які є вимоги до доступів та ролей?
Чим складніша система, тим більше таких питань має виникнути до оцінки проєкту.
На що варто звернути увагу:
1) Досвід саме в облікових системах. Розробити красивий вебзастосунок і розробити систему, яка повинна коректно вести залишки, проводки, взаєморозрахунки, собівартість, документи та історію операцій, — не одне й те саме.
2) Наявність аналітичної компетенції. Якщо вся комунікація зводиться до «напишіть нам список функцій», це тривожний сигнал. Виконавець має допомагати переводити бізнес-процеси у функціональні вимоги системи.
3) Прозорість процесу. Замовник повинен розуміти, що зараз розробляється, що буде зроблено наступним, які завдання перебувають у роботі та що вже прийнято.
4) Можливість поступово отримувати результат. Для великої облікової системи підхід «зустрінемося через рік, коли все буде готово» — один із найризикованіших.
5) Прямий контакт з РП на стороні виконавця — Коли між замовником і командою стоїть кілька рівнів менеджменту, інформація починає спотворюватися, а прості питання перетворюються на довгі погодження.
І нарешті — не варто обирати підрядника виключно за найнижчою погодинною ставкою. Різниця у вартості години може виявитися значно меншою, ніж вартість помилкових вимог, переробок та місяців простою.
Етап 1. Передпроєктне обстеження
Розробку облікової системи я б не починала одразу з написання коду. Перший етап — передпроєктне обстеження.
Його мета — зрозуміти, що саме автоматизуємо, для кого, навіщо і яким має бути результат.
На цьому етапі аналізуються:
— організаційна структура;
— ролі користувачів;
— основні бізнес-процеси;
— документообіг;
— довідники та нормативно-довідкова інформація;
— облікові регістри;
— звітність;
— інтеграції з іншими системами;
— джерела та споживачі даних;
— права доступу;
— обсяги операцій і даних;
— проблеми поточної системи або ручного обліку.
Важливо досліджувати не тільки те, як процес описаний у документації, а й те, як він реально відбувається в компанії. Дуже часто ці дві речі відрізняються.
Результатом обстеження має стати не «ми все зрозуміли», а зафіксована модель майбутньої системи: основні модулі, процеси, ролі, інтеграції, обмеження та пріоритети.
Етап 2. Не величезне ТЗ, а керована система вимог
Після обстеження виникає спокуса написати величезне технічне завдання на кілька сотень сторінок і тільки після цього почати розробку.
Для великих систем такий підхід не завжди ефективний. Бізнес змінюється. У процесі роботи з прототипами та першими версіями системи користувачі починають краще розуміти власні потреби. Частина початкових вимог змінюється ще до того, як розробники встигли їх реалізувати.
Тому я віддаю перевагу декомпозиції вимог.
Спочатку формується загальний backlog системи — перелік функціональних і технічних задач. А вже перед реалізацією конкретної задачі формується її міні-ТЗ або детальна постановка.
У ній повинно бути зрозуміло:
— що саме потрібно реалізувати;
— який бізнес-процес автоматизується;
— хто користувач;
— які дані є вхідними;
— яка бізнес-логіка повинна виконуватися;
— який очікується результат;
— які є винятки та обмеження;
— як перевірити, що задача виконана правильно.
Це дозволяє не намагатися передбачити весь проєкт до останньої кнопки ще до написання першого рядка коду.
Етап 3. Agile та розробка короткими ітераціями
Для великих облікових систем добре працює ітеративний підхід. Весь backlog розбивається на пріоритети та спринти.
Наприклад, у межах одного спринту команда може реалізувати конкретний блок функціональності: частину складського обліку, закупівлі, документообіг або певну інтеграцію.
Після завершення спринту результат демонструється замовнику.
І тут роль представника замовника критично важлива. Він не повинен просто отримати повідомлення «задача готова». Він має перевірити результат з точки зору бізнес-процесу: чи дійсно система вирішує поставлену проблему, чи правильно працюють сценарії, чи враховані винятки. Якщо щось не відповідає очікуванням, це виявляється через декілька тижнів, а не після завершення всього проєкту.
Замовник відповідає за бізнес-пріоритети, виконавець — за технічну реалізацію та оцінку складності.
Наприклад, замовник може сказати: «Нам потрібно автоматизувати процес переміщення товару між складами».
А команда вже має поставити додаткові питання: які склади, які типи переміщень, чи потрібне резервування, які документи створюються, хто їх погоджує, як змінюються залишки, чи потрібна інтеграція з іншою системою тощо.
Саме на стику бізнес-експертизи замовника та технічної експертизи виконавця і формується нормальна постановка задачі.
Архітектура: не можна думати тільки про сьогодні
Ще одна типова помилка — проєктувати систему виключно під поточні потреби.
Якщо сьогодні у компанії 20 користувачів, це не означає, що система через три роки не матиме 200. Якщо зараз є одна інтеграція, це не означає, що через рік їх не буде десять.
Тому ще на етапі архітектури потрібно думати про:
— масштабованість;
— продуктивність;
— безпеку;
— розмежування доступів;
— резервне копіювання;
— журналювання операцій;
— інтеграційні API;
— структуру даних;
— можливість подальшого розширення функціональності.
Необов’язково будувати складну enterprise-архітектуру з першого дня. Але архітектура не повинна створювати технічний борг уже на старті.
Приймання задач
Ще одна проблема великих проєктів — нечітке розуміння того, коли задача вважається виконаною.
Для кожної функціональності мають існувати критерії приймання.
Наприклад:
— які сценарії повинні працювати;
— які дані мають формуватися;
— які документи створюються;
— які перевірки виконуються;
— які ролі мають або не мають доступ;
— який результат повинен отримати користувач.
Це важливо не тільки для замовника. Для розробника чіткі acceptance criteria також означають, що він розуміє, що саме вважається готовим результатом.
Що в результаті отримує замовник
Правильно організована розробка — це не просто «програма, яка працює».
У результаті компанія повинна отримати керовану інформаційну систему, в якій зрозуміло:
— які бізнес-процеси автоматизовані;
— як побудована система;
— хто має доступ до даних;
— які інтеграції використовуються;
— як розвивати функціональність;
— як тестувати зміни;
— хто відповідає за підтримку.
І бажано, щоб знання про систему не залишалися виключно в голові одного розробника.
Найголовніше: облікова система — це спільний проєкт
На мою думку, найважливіші правила можна сформулювати дуже просто:
1) Замовник не може повністю передати відповідальність за результат підряднику.
2) Підрядник відповідає за технологію, архітектуру, якість коду, процес розробки та реалізацію погоджених вимог.
3) Замовник відповідає за те, щоб у проєкті була людина, яка знає бізнес, приймає рішення, визначає пріоритети та має достатньо повноважень.
Найкращі результати я бачила саме там, де з боку замовника був залучений сильний Product Owner або Project Manager, а команда розробки мала можливість напряму комунікувати з людьми, які знають процеси підприємства.
Тоді розробка перестає бути передачею нескінченного списку завдань «на сторону». Вона перетворюється на спільну роботу над продуктом.
І саме такий підхід, на мою думку, дозволяє створювати облікові системи, які не просто закривають технічне завдання, а реально працюють на бізнес і можуть розвиватися разом із ним.
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівнавряд чи хто стане платит за розробку з нкля
Берется опкнсорс
zippy.com.ua
пiдпилюется де тре — профiт
коли вимогу до функціоналу системи унікальні настільки, що впровадження та доробка типового функціоналу дорожча ніж розробити свій продукт — платять, та залишаються задоволені. Ми в satelion.com.ua робимо якраз такі системи, переважено для складу та ТЗД.
Зазвичай в індивідуальних вимогах немає необхідностічти. як правило це — ми так звикли в 1С або в екселі або на бумажках.
Тому коли запитують пiдпилчти пiд себе я пояснюю що у Zippy CRM є все необхідне та індивідуальна розробка не тільки обійдеться у гроші плюс втратять можливість автоматичного оновлення
Зазвичай переучуються й питання відпадає.
А ще індивідуальна розробка ставить замовника в залежність від розробника який може або рахувати або зажадати купу грошей за подальшу розробку (підсадити на «голку»)
особливо якщо не здогадається вимагати вихідний код.
Одна з причин чому досі сидять на одноці — а не платять невідомим розрадам. і тому Zippy CRM — opensource
Якось Ви дуже брудно «пропіхуєте» якусь нікому невідому срм систему. До чого це тут взагалі? У статті чітко написано в якому випадку ми вважаємо доцільним розробляти самопис. Якщо ви вважаєте хто в вашій системі є все що треба бізнесу — маєте право. Так же, як замовник бути з вами не згоден.
А що до залежності — є купа підрядників, які можуть підхватити систему, та супроводжувати далі, якщо щось не влаштовує, код відкритий, система на серверах замовника.
це вже на совісті підрядника, ми так не працюємо.
Власна облікова система з нуля, виконана підрядником, це повний ідіотизм. Впровадження такої системи, хоча і з мізерними шансами на успіх, може бути виправдане, виключно у тому випадку, якщо вона буде створена та підтримуватись власним відділом автоматизації підприємства.
Ще варіант -компанія підрядник — в тому ж самому холдингу що й компанії замовника. Юридично різні компанії , фактично можуть буди в одному офісі. Тому про маркетинг та продажі можна взагалі не думати.
Мені не здалося що пост саме про юридичні тонкощі. Це (один холдинг) має сенс, і великий — уніфікація обліку у межах холдингу.
Я не згодна з такою критичною точкою зору. Якщо система написана на платформі, яка підтримується великою кількістю компаній або спеціалістів, як наприклад BAF, або є детальна документація то зміна підтримуючого підрядника не є проблемою. Також, з точки зору оптимізації затрат на автоматизацію є винятки, коли типовий функціонал настільки не відповідає бізнес-процесам та вимогам замовника, що дешевше не купляти дорогі ліцензії на типовий продукт, потім доробляти його, а зробити власний, під унікальні потреби бізнесу.
«Якщо система написана на платформі...» то це вже не «облікова система з нуля», а адаптація. Якщо вже й вкладатися в таке, то краще обрати щось накшталт Odoo, ніж БАС/БАФ з якого стирчать вуха 1С-у. «Зміна підтримуючого підрядника не є проблемою...» — «ох уж еті сказкі, ох уж еті сказочнікі», мій досвід, вірніше друзів та партнерів, свідчить про прямопротилежне. «Якщо типовий функціонал на стільки не відповідає...» то це свідчить або про фундаментальні проблеми з головою замовника, або про невідворотну необхідність саме облікової системи з нуля, силами власного відділу автоматизації.
Платформа BAF — це фреймворк для розробки. Адаптувати можна вже якусь конфігурацію, я ж кажу про розробку конфігурації с нуля.
Стирчать вуха 1С — яка проблема?
Мій досвід свідчить про те, що я написала — до нас часто звертались компанії з самописом, так й нічого. Аналізувати помилку в якійсь кастомній конфігурації середньої складності частіше займає менш часу ніж у тому ж ERP.
Щодо проблем з головою замовника — Вам мабуть видніше, ми таких оцінок не проводимо. Знаємо тільки, що серед 4х компаній, які приймали участь в тендері на впровадження WMS цінник був десь 110-130тис$, ми розробили за 70, та зараз просто підтримуємо якщо щось там треба по мєлочі.
Жаль, що у ваших друзів був якійсь печальний досвід.