Классная история от коллеги с описанием его опыта погружения в разработку собственной CRM системы История одной цифровизации мозга🙂🙂🙂 Приветствую всех поклонников "цифры"!!! Родилась идея статьи, которую сразу захотелось воплотить в жизнь. Расскажу о том, как происходила моя трансформация на пути к глубокому пониманию написания кода, программированию и бизнес-аналитике. С чего я вдруг захотел сам писать код? Вопрос этот уходит корнями глубоко в детство. Мои дедушка и бабушка оставили заметный след в раннем развитии цифровизации Новосибирска. Бабушка занималась написанием ретранслятора с «Фартрана» для примитивных мат операций, а дедушка занимался тем, что возглавлял отдел по починке самой первой ЭВМ в Новосибирске. В общем – вырос я на историях о доблестной починке «тупой железяки», которая конечно ничего не хотела считать сама. Все детство рисовал на неиспользованных перфокартах, взращивая и закрепляя в своих глазах позитивный образ человека, занимающегося приручением железяк и отлаживающего уже написанного кода. В школе я конечно увлекался программированием. Ездил на различные олимпиады по C++ местного значения, однако в последних классах все поменялось, т.к. приоритет был отдан экономическому образованию в ущерб IT. И как показала практика – человеку, не выбравшему путь разработчика изначально – очень сложно войти в сферу разработки. И дело не в том, что нет хороших школ или онлайн-курсов по программированию. Взрослому человеку просто незачем прокачивать в себе данные компетенции без веских на то причин. Испытывая интерес к теме IT разработки – я предпринимал несколько попыток заняться написанием кода – как хобби. Платы Arduino, постройка собственного гоночного дрона. Все это конечно заставляло вникнуть в процесс написания кода, но было не более чем детскими игрушками. А мы – серьезные дядьки, бизнесмены. И куда нам теперь вставлять «прогерство» с нашими амбициями?! В общем - эти мысли не давали мне покоя, но ответа на горизонте не маячило. Развивая компетенции управленца, я решил обучиться на программе «МБА» по курсу Стратегический менеджмент. Видимо магия «Академа» и НГУ в частности делает свое дело. Понятия менеджмента и IT разработка очень далеки в головах большинства людей из бизнеса , но уже на первой сессии в голове что-то начало происходить. Мы познакомились с ребятами из Neuro Lab Algorithms и проектом – «NLA – framework». Их команда создала открытую платформу для написания информационных систем для принятия управленческих решений. Пазл сложился сам собой. CRM система – это актуальная, важная и полезная для меня вещь. Она даст положительный финансовый результат при внедрении, потребует навыков разработки, разовьет интеллектуальные способности, углубит понимание своего бизнеса. И уж подавно CRM система круче дрона или умного дома на arduino! Все хотелки сошлись в кучу. Решено. Делаем. Со старта определили 3 базовых компетенции. Работа с базами данных (PostgreSQL), написание логики системы (Golang) и визуальная часть (Node.JS). Но начать, как известно, нужно с подготовки самого ПК в части установки необходимого софта. С этого и начали. Для единообразия решено было работать в среде разработки intelliji idea (это по сути модернизированный текстовый редактор, который может выводить подсказки для написания кода и содержит в себе еще целую кучу инструментов, облегчающих такие рутинные действия, как перезапуск программы после редактирования кода, подключение баз данных, выделение цветом констант, и т.д.). Прога немного платная, но ребята из благих намерений поделились старенькой версией программы. Причинили добро конечно, но я им благодарен. Следующим шагом была установка языка Go (Golang) и настройка его в качестве SDK среды разработки. Две кнопочки, далее, далее и……. НИ ЧЕ ГО. Красные сообщения об ошибке SDK не выбирается и все. Интернет – безлимитен. И я начинаю поиск решений. Но самое печальное в том, что я как будто первый на планете человек, у кого возникли ошибки в этом действии. У всех «ютуберов» все от мышки отлетает, а ни в одном FAQ таких проблем не описано. Залип я где-то дня на 3. И помогла мне только счастливая случайность. От безысходности попробовал поставить очень старую версию Go. И чудо!! Среда восприняла ее как SDK!! Тут въехал и я. Действительно. Intelliji достаточно старая, а вот версии Go выходят с завидной регулярностью. Сейчас топчик – это 19-я версия, а работать у меня захотела только 16-я. Кароч – починили. Идем дальше. Теперь я решил наиграться со своей «новой» Go, решая простые учебные кейсы. А самый продвинутый учебный кейс – это что?? Правильно! «Hello World». И как вы думаете, заработал ли он у меня?? Конечно нет!! Дело в том, что пока я занимался установкой и переустановкой версий языка – в доску перепутались все GOPATH и GOROOT и в среде Windows и в среде Intelliji. Теперь я с улыбкой пишу про эти понятия, но тогда в этих буквах я вообще не видел никакой разницы. И бесило все страшно. Зато теперь я могу даже подсказать в этом вопросе! Решилось все через 2 дня гугления с полным снесением и переустаноыкой всего, что связано с Go и вручную прописаными путями для windows и intelliji. Теперь потными ручонками я мог заставлять железяку писать в консоли угодный мне текст! И это был прорыв! Можно было изучать все азы типа функций, циклов, методов и условий. Руки автоматом вместо «mail» стали писать «main». И это был хороший знак. Хочешь громких побед – готовься к запаху жаренного. Следующим «стейджем» стало использование сторонних библиотек. Здесь стоит пояснить, что широта возможностей языка программирования выражается именно в многообразии написанных к нему библиотек под различные задачи. Основное мерило популярности языка – это количество библиотек к нему. Огромная тусовка программистов пишет специализированные библиотеки для решения своих задач, и почти всегда делится этим функционалом с другими разработчиками. Здесь уже и возможности работы со сторонними файлами и возможности написания серверов и всякие плюшки с обменом по API. Хотите свой авторский софт объединять с внешним миром – без сторонних библиотек – вообще никуда. Вот и я открыл первый попавшийся кейс, посвященный написанию простейшего web сервера, написал заветную строчку « import "github.com/gin-gonic/gin"» …иии…. Все просто стало красным. Все. Конец. Всем спасибо. Штука, с которой я столкнулся на этот раз, уже была достаточно изучена IT сообществом. И самостоятельно сдесь разобраться не получилось. Здесь – спасибо ребятам из Neiro lab, которые поведали мне о сути проблемы. А заключается она в том, что есть 2 пути по надстройке среды разработки Go на своем компьютере. Либо работа через Go module, либо работа через GOPATH. По сути – это 2 разных места, куда Go складывает то, что вы сверху на него накручиваете, имеющие разные структуры, разные пути обращения к данным и постоянно конфликтующим между собой. Решение было весьма однозначным. Через консоль одной командой go env -w GO111MODULE=off мы просто отрубили всю ветку, связанную с модулями Go. И теперь все стало просто и однозначно. Нет модуля – нет проблем. И все фичи теперь ставятся автоматом в GOPATH. Наверняка у меня ломалось что-то еще, что удавалось починить быстро. Вспомнить из этого этапа больше ничего не могу. Но вот так незаметно недели за 2 мы пришли к установке самого «фрейма». Первое что смутило – это количество пунктов установки. Аж 25 шт. Обычто пункта три. Setup.exe, далее, Финиш. А тут - 25. Начнем. 1. Создается локально папка проекта в директории github.com/user_name/proejct_name Здесь я запарился искать эту папку. Проблема с GOPATH на тот момент еще не была решена. И папку с названием gihub.com я находил аж в 3-х местах на диске. Следуюшие 3 пункта прошли гладко. 5. В строке папки проекта - git clone https://github.com/pepelazz/projectBlueprint.git . Довольный я написал это в консоли, и ничего. Ничего. До этого момента я просто жил без такой вещи, как Git. Никаких обязательств перед коллегами разработчиками, просто в одну каску фигачим код, и все. Конечно Git даже не был установлен на ПК и когда консоль начала писать, что git – это неизвестная команда – я сильно удивился. А потом удивился еще сильнее огромному пласту инормации о совместной разработке, мастер-шинах и прочей специфичной инфе, вообще не нужной 98% обычных людей. Далее произошел забавный курьез. Наигравшись с клонированием проектов и созданием репозиториев на github я изрядно намусорил. Захотел все это почистить и, нажал на кнопку удаления репозитория. У меня все повисло. Надолго. Я за переживал. Ошибочно решил, что мог что-то выкосить в исходном проекте, начитавшись инфы о ветках разработки и мастер-шинах. Надо мной поржали. Убедили в том, что пока моя квалификация не достаточна для того, чтобы навредить проекту NLA framework =) После описанного выше стресса я пошел по инструкции быстрее. Все фишки с переназачением git прошли гладко. И незаметно я дошел до установки веб-клиента. Длее следим за логикой: Для веб-клиента нам нужен Node.JS, для Node.JS нам нужна свежая винда. А свежая ли винда у нас сейчас?? Считаем ли мы Windows 7 свежей операционной системой?? Сейчас для вас ответ очевиден. Но когда я ввязывался в эту авантюру – я даже не догадывался, куда меня заведет эта кривая дорожка. Итог таков.Из нескольких офисных компьютеров собран 1 «помощнее», на него установлен Windows 10, и вся петруха вплоть до 25 пункта пройдена заново. Теперь «чакра» открыта и со слезами на глазах я наблюдаю забавную картинку установленной на мой ПК крафтовой SRM системы. Постараюсь подвести некую черту после 3-х месяцев работы над этим проектом. Тому, что хотел – свою CRM систему я еще не научил. Но есть четкое ощущение, что пройдена точка невозврата. На командную строку со страхом я больше никогда смотреть не буду. Базовые структуры Go из подсознания уже никуда не денутся. Даже спустя 3 месяца при отсутствии измеримого финансового результата я и не думаю бросать проект, т.к. чувствую приближение к огромной практической пользе. Чувствую свой интеллектуальный рост, чувствую приятную усталость от сделанных полезных дел. Надеюсь, что в ближайшем будущем мой развернутый проект выйдет из статуса элитарной головоломки и станет полезным цифровым инструментом.