Добрый вечер уважаемые читатели Хабра, Хабровчане, а также все спеллчекеры с личным мнением - мое специализированное почтение.
Перед вами пример Первого Инженерного Действия, а именно пример принятия решения в обстоятельствах неопределенности, с ходом обдумывания дальнейших шагов развития в ситуации с обозначенным топиком - пора валить, куда как, кого, опенсорс, самопис, заказ и тд и тп.
Большинство известных мне случаев при принятии решений характеризуются одним общим показателем - отсутствием письменного размышления при принятии решений.
Те кто приходят к этой практике получают много полезного в своей жизни.
Так как Хабр это текстовый портал, привожу текстовый пример, демонстративный, он имеет основания, шаги, таблички, действия и заключения.
Написан в форме условного диалога, как могло бы происходить коллективное размышление в этой ситуации у заинтересованной стороны и возможного выполнителя этого замысла.
В наличии корректное оформление для уважения читателя, Ноушн пишется с прописной и с курсивом.
Желаю приятного прочтения.
Письменный замысел, промысел
В нашей компании сотрудники для выполнения рабочих задачи пользуются зарубежной системой Notion.
Продукт хороший, ребятам нравится, все удобно и понятно.
Проявилась проблема - компания официально уходит из РФ в связи с санкциями. Учитывая что ранее это было стабильно, и никто не ожидал таких событий, все привыкли пользоваться SAAS сервисами для своей работы.
Проявившаяся перспектива лишения доступа к корпоративным данным, как и к управлению ими же, возник вопрос о решении возникшей проблемы.
Посовещавшись с людьми, видящими возможные варианты развития событий, мы руководством коллегиально увидели возможные риски нахождения данных не под контролем нашей компании, а расположенных на серверах любого “вендора”.
Помимо международных рисков компании в РФ также могут закрываться, пропадать, технически они могут терять, а также сливать данные.
Определение потребностей
Задача информационного обмена коллективного знания и фактами о протекающей деятельности компании было принято решение изучить возможность и целесообразность переезда на собственные решения.
В связи с этим прорабатывались два ключевых вопроса:
Выбор технологического решения opensource.
Разработка собственными силами (нашими или привлеченными специалистами) решения, закрывающего наши ключевые потребности.
Для решения этой задачи мы сформулировали потребности, по принципу “а что ... если нет”, а именно:
Идем по списку функций системы Notion.
Составляем список тех функций, которыми пользуются в нашей компании - те, по которым зафиксированы регулярные информационные обмены.
Сортируем список по убыванию активности.
Добавляем колонку справа от каждой функции и пишем в нее - что случиться в нашей компании с деятельностью если этой функции не будет. (ничего, или такой-то процесс встанет и по цепочке убьет бизнес).
Как мы пользуемся системой сейчас
К нашему удивлению практически из всех заявленных функций системы мы используем только табличные данные, чтобы из них составлять сводные отчетные страницы.
Текстовые блоки мы используем как замену внутренних и внешних электронных документов.
Суммарно мы используем систему как единое место достоверности актуальной информации.
Простота разбиения страниц на блоки позволяет каждому сотруднику держать под контролем свой участок информационного обмена, отвечать за его актуальность, а коллективу использовать в работе его блоки, зная что они всегда будут актуальны.
Такую связанность системы знаний организовать в электронных документах гугл также возможно, но это западная компания раз, два все-таки не так практично постоянно перемещаться по файлам (происходит регулярный разрыв контекста и потеря внимания), нежели по одному веб приложению.
Нужны ли нам канбан доски
Отдельным вопросом мы рассмотрели возможности туду трекеров, а также канбан досок, и пришли к следующему заключениям.
Просмотр досок полезен для быстрой ориентировки формата “как у нас дела” в непосредственной работе, то есть человек который сам двигает карточки, а также его коллега, который в этих карточках задействован уже ознакомлены с ними, и беглый взгляд действительно облегчает восприятие.
Но учитывая разделение ответственности между командами, не имеет никакого значения для внешнего участника (относительно каждой команды) расположение этих карточек.
Непосвященный в ежедневную деятельность человек может только лишь получить ответ в форме удовлетворения любопытства, что “там” что-то делается. А что конкретно - для этого нужно погружаться, что не входит в его рабочие интересы и временные возможности.
Учитывая что каждый руководитель группы ответственен за результаты своей группы, а управленческую информацию о состоянии и перечне получаемых результатов он предоставляет в виде короткой пофамильно-компонентной таблице - принято решение что доски могут быть использованы любые на усмотрение и предпочтение команд, и за внешний контур команды они протекать не будут.
Предоставляем командам работать так, как им удобно, а не ограничиваем творческий процесс и удобства, благо досок уже предостаточно и есть очень достойные.
Вопросы развития возможностей
Также была рассмотрена ситуация о возможном развитии системы, каких-либо нужных нам интеграций которые мы сейчас уже можем знать, а также понимание что мы не знаем, какие у нас могут быть интеграции со временем.
Ситуация с ChatGPT показывает, что решение, возможно решающее чьи-то задачи появится во внешней системе только тогда, когда это будет мейнстримом.
К сожалению для системы Ноушн интеграция с нашей учетной системой 1С, а также наших более мелких, но не менее нужных потребностей, мейнстримом не стала. Решать это предлагается внешними специалистами, или же интеграции с такими же внешними сервисами, риск наличия которых во внутреннем контуре мы уже обсудили.
Также есть интересная особенность, мы не добавили, что иногда мы работаем с закрытым корпоративными клиентами, и нам необходимо подтверждение о целостности нашего информационного контура.
Планы на перспективу работы с Госзаказчиками сейчас не рассматриваются, но в будущем чего только не будет.
Определяемся с требованиями
В связи с этим утверждаем, что нам нужны следующие функции:
Возможность блочного редактирования текстовой информации, с базовыми WYSIWYG функциями:
Работа с текстом, курсив, жирный, списки, вставка изображений, цитаты, примеры кода, ссылки (может что-то добавим потом, пока достаточно).
Работа с таблицами:
Быстрое создание по шаблону и изменение содержания ячеек и колонок прямо по клику как в Ноушне и в экселе.
Возможность настраивать атрибуты свойств как - валюта (пока рубли), текст, выбор из списка вариантов один из или много из.
Возможность закрепления информации из других документов в отдельный нужный для работы.
Подкреплять тексты, без возможности редактирования.
Подкреплять таблицы, с возможностью фильтрации данных для отображения:
Выбор отображаемых свойств
Сортировки по датам создания и обновления записей
Фильтрации по значениям - подстрока, сравнения больше меньше или равно, по наличию конкретных опций.
Иерархичность документов.
Возможность разделения рабочих пространств.
Наличие учетных записей.
Совместная работа и редактирование.
Требования устойчивого развития:
Понятное пространство развития решения с минимизированными зависимостями от внешних обстоятельств.
Гарантированное шифрование хранимой информации, когда в случае кражи самой базы данных, утекла только зашифрованная информация.
Идем двумя путями
В связи с вышеизложенными утверждениями, мы приняли решение о двух направлениях действий:
Получить отчет о возможности использования решения opensource, соответствующего указанным требованиям.
Требуемая квалификация специалистов для установки и поддержки эксплуатации.
Возможность доработок и развития (для этого нужно знание и опыт работы с данным решением, если этого знания нет, требуется программа получения этого знания и подтверждения о “взятии” под контроль со сроками)
Узнать возможные пути решения с подтверждением в случае самостоятельной разработки с теми же требованиями к специалистам и возможностей доработок и развития в условиях неизвестности потребностей в будущем.
Принципы выбора путей
По первому пункту мы выделили специалиста для изучения этого вопроса, параллельно запустив задачу Сане, потому что он постоянно имеет мозг и его никак не отпускает на тему самостоятельных разработок из подручных материалов.
По первому вопросу для получения ответов мы поставили задачу на исследование рынка, продолжаем мониторить ситуацию, навскидку необходимо получить сводный отчет по проверенному способу https://deppkind.livejournal.com/4523.html:
Название проекта
Процент матчинга требуемых функций и их наличия в продукте
Сроки получения пробы для работы
Стоимость и условия официального использования, вопросы лицензий.
Возможности развития
Так как простое чтение и ознакомление с материалами занимает время погружения, а также требует анализа, это не может занимать меньше одного рабочего дня, но мы спешим, и поставим на два вопроса получения пробы по одному дню.
Результаты исследования рынка
Так как мы доверяем лучшим, то мы воспользовались вдумчивым рисерчем Кирилла Мокевнина, основателя школы программирования Хекслет. По нашим наблюдениям Notion там используется и в хвост и в гриву, а также проблема санкций коснулась и этих ребят.
Из результатов его исследования мы сделаем для себя вывод, что так или иначе кандидаты есть, но по указанному выше принципу матчинга нет ни у одного решения, даже которое выбрал для себя Кирилл.
Но мы знаем, что Кирилл как и мы, является предпринимателем и уже бизнесменом, а у предпринимателя и бизнесмена выбор простой, не лучшее решение, а наименее худшее из всех неудовлетворительных на сто процентов путей развития.
Пока мы будем кликать клацать, уже примерно понимая ответ (скорее всего что-то из списка, будем фичекатить наши непомерные запросы), мы подождем что скажет нам Саня с его вымыслами и фантазиями.
Тут пришел ответ о Сани, и он снова начил Гайдить когда его не просили:
Во 1) я уже прикинул к носу и готов сесть запилить вам демку, все на рубях, фрондендеры снова завоют на болотах
вовторых выкидывайте на помойку свои списки, что с шифрованием и развитием -- вы сразу повисаете на когото, переставляете только кровати в вашем предприятии и ничего нововов
3) проба где? я чтоли буду этим пользоваться? я то могу накатать, но вы это выкините как обычно оклеймив это потоком сознания.
Вот получили вы нечто, дальше что, как тыкать чем и куда, как поймете что это оно? Мож позовете кого? Зовите сразу тогда его ко мне а не вату перекатывайте.
Не загоняйте себя в прокрустово ложе фрактального типа, процитирую себя еще раз:
Если ты не знаешь что ты хочешь (сделать с этим), то любая система тебя удовлетворит.
Если ты не знаешь что ты хочешь (сделать с этим), то никакая система тебя не удовлетворит.
Всегда хочется ему как-то указать на его место, но по делу человек говорит - как мы поймем то в итоге?
Давайте формулировать пробу, то, как мы поймем что это решение нам подходит, кажись мы поняли:
Проба:
Допустим я зарегистрируюсь
Создам новый воркспейс
Сделаю три страницы, поперетаскиваю их в меню одну в другую, ок
Переименую и увижу что все обновляется везде как в ноушне
Добавлю текст и сделаю все перечисленные выше редактирования типа курсив, список и тд
Загружу прямо в текст файл с десктопа - фотку Сани из Геленджика, ту, что без фингала, в садах которая.
Сделаем эту страницу главной воркспейса
Добавим на двух других страницах по таблице
Клиенты с колонками фио, телефон, о да, надо тут комментарии по карточке клиента и поле последний комментарий!!!
Заказы - статус, сумма, номер из 1с, достаточно
На главой странице добавим секции
Новые клиенты, отфильтруем по количеству - 5, и отобразим дату создания записи, отсортируем по убыванию даты создания.
Последние заказы, можно фильтрануть по сумме, чтобы интересно было крупняк смотреть, мелкие не надо.
Ну трекер задач и вики не будем пока делать, и так понятно уже если первые пункты ок, тогда будем двигать дальше.
Отправив эту пробу Сане, мы получили во ответ номер заказа, и комментарий:
- завтра вечером выйду на связь, я в другмо городе.
На следующий день получаем ответ:
я сделал, в таблице полученного на запрошенное.
Вот ссылка на видос без таймкодов, там 6 с половиной часов, ютуб еле прожевал, вк еще грузит, рутуб и дзен послали лесом.
Комментарий по блоку “Каменты” - они будут, но потом, как решите что ок, это все уже пошли фантазию на тему как вам будет удобно работать, типа вы уже получили продукт. Получите сначала, бойцы.
Справка по требованиям к развитию
Шифрование - вижу вы писали, но не запросили напрямую, но шифрование данных есть из коробки, включается одной строчкой, даже не думайте об этом.
Хранилище - какое хотите, хоть любая ФС, хоть S3 и если надо свой адаптер напишите (оно вам надо?). Например есть примеры интеграций с nextcloud файлов загруженных из ваших CRM-ок.
Пока вы не гоняете миллионы пользователей вам не понадобится ни понимание что там с облаками, просто берете крепкую железку за копейки и живете счастливо.
Rails это открытый one-man-framework, для поддержки вашего решения по вашим потребностям вам будет достаточно одного вчерашнего студента Бауманки, или любого прошедшего курсы у того же Кирилла на хекслете.
На демо видно что просто автоматом генерируются ресурсные API, сделать нужные расширения для скормки в сервисы которые работают по апи - 10 минут.
Написать приемник веб хука для получения такого же добра из других систем - 10 минут.
Покрыть тестами - ну 20 минут если не понятно что продемонстрировано в рамках процедуры scaffold.
Шикарнейшая документация, что на гайды что на апи.
Вам ехать или шашечки
В общем, если вам ехать а не шашечки, вот вам решение, напишите что готовы брать я выставлю счет, оплачиваете и получаете:
Чистый от мусора код с комментариями, где это уместно
Причесанный по модулям, что надо куда-то вынести - будет вынесено.
Покрыть тестами согласно заявленному - чтобы вы получили инструмент проверки целостности передаваемого и приобретаемого, не только с моих слов и видеороликов.
Подготовленный для и задеплоеный к вам на ваш vps.
Миллиард лет не писал туда, вот там ребятам понравится, наконец-то у меня есть что-то не переводилкино-капитаноочевидное а прямо поделка, как там и любили в лучшие годы, может даже хабраэффект получу, уух кайф как интересно.
Саша интересный человек, пожелаем ему удачи в его фантазиях.
Выводы и выбор
Ну а у нас простой выбор мы имеем пруф системы отвечающей нашим первоначальным требованиям.
Проба готова для следующего шага. Вопрос по выбору SAAS отложим на потом, когда по текущей разработке мы потерпим фиаско.
Мы решаем что неделю на это инвестировать мы еще можем, нам все понятно.
Мы понимаем что разработчиков на любой запах и цвет мы всегда найдем, нам все нравится, стилизация дело наживное, видно что базовые запросы рабочие, все шустро, в общем мы берем, и попробуем переводить новые дела в эту систему.
А по старым, выгрузим, надо спросить будет у Сани че там по импорту, ну это уже потом, может и не понадобится, это мы громко заявляем что у нас системы такие, а так-то на вскидку наш стажер за два дня руками три раза все перекопипастит, сколько у нас там страниц всего - 50?
Да, пусть топчет клаву, дадим ему бонус за инициативность, пора заканчиваем с этим, я уже устал генерировать эту историю.