Жаль, что я не начал кодить раньше

Признаюсь, я совершил ошибку. Мне стоило начать кодить раньше, намного раньше. Может быть это признание поможет кому-то свернуть на правильную дорогу.

 

Я много лет руководил своей веб-студией не занимаясь кодингом самостоятельно. Мы сделали множество успешных проектов для клиентов, большинство из которых до сих пор хорошо работают. Даже создали свою мощную CMS с электронной коммерцией на базе популярного ранее фреймворка.  При этом, если честно, я всегда несерьёзно относился к сайтостроению. Больше возлагал надежды на свои стартапы, а клиентские сайты стремился изготавливать проще и быстрее. Поэтому постоянно ставил разработчикам задачи по упрощению процесса создания сайтов, чтобы их делали обычные люди без избыточных компетенций.  Да это получилось, сейчас трудозатраты на создание даже сложных интернет-магазинов невелики, но сделать CMS коммерческим продуктом так и не удалось. И есть главная причина такого результата.

Проблема в том, что я не вникал в реализацию. Вообще. Мне казалось, это чертовски сложно. Боялся, что не смогу достаточно погрузиться, чтобы делать реальные вещи. И как показала практика - напрасно. 

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

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

 

И вот жизнь заставила меня вникнуть в дивный мир разработки. Я заглянул “под капот” и мне стало страшно: как ЭТО все вообще может работать? Я не только про свои продукты, а про то, что творится в отрасли в целом. Меня поразило насколько все хрупко, насколько далеки стандарты от идеалов, как широк и разнообразен стек технологий, сколько всего разного необходимо знать, чтобы делать хоть что-нибудь. А какие невероятные усилия требуется приложить, чтобы делать “хороший” код. 

  Давайте по порядку

Прошлым летом возник наплыв клиентов и необходимо было сделать относительно много интернет-магазинов и сайтов. А так как у нас система продвинутая, то настроить бизнес-логику и осуществить наполнение сайтов было несложно и быстро, основной затык возникал в том, чтобы красиво сверстать (возможности унитемы с настройками без кодинга не хватало). Поэтому пришлось привлечь верстальщиков-фрилансеров. Я не понимал почему они так долго возятся, ведь основа уже была и начал выяснять проблему. Попробовал с ходу понять что же там творится в коде страниц наших сайтов, но не смог, уж очень сложная структура вложенности div`ов, масса классов, в которых черт ногу сломит. Мне было непонятно как кто-то вообще смог в этом разобраться. 

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

   Ну, думаю, ну не могу же я быть настолько тупым, чтобы не понять верстку, поэтому решил поизучать верстку в отрыве от нашей системы. Установил несколько IDE для пробы, посмотрел несколько уроков на ютубе от Фрилансера по жизни и других, для решения конкретных задач гуглил, и, если совсем тупил, спрашивал у своего разработчика.  В начале было крайне неуютно, но как-то само получилось, что я быстренько изучил основы html и css. Особенно мне понравилось как упрощает жизнь scss, также понравились все эти флексы и гриды, которые позволяют добиваться большей адаптивности страниц. При этом яваскрипт мне как-то не зашел, но я не стал пока тратить на него время.  

После того, как я немного погрузился в проблему и сформировал некую картину правильных приемов верстки и того, как  логически разбить стили на файлы, чтобы быстро кастомизировать стили. Теперь, имея знания, я уже более конкретно указал разработчику на проблемы избыточности вложенности, недостаточности семантических элементов и неудобстве работы с ранее имеющимся одним файлом для корректировки стилей. В итоге, Сергей (Привет!) довольно быстро создал новую профитему, где можно было гибко создавать шаблоны и работать со стилями в отдельных файлах, отвечающих каждый за свою логическую часть: переменные, общий шаблон, списки, блоки, отдельно типы материалов и т.д. При этом html разметки на страницах стало в разы(!) меньше, соответственно улетела и вложенность, удалили часть мусорных классов, и в стилях стало гораздо легче разобраться.  (Предупреждение: не нужно смотреть код наших проектов, там ещё много, чего нужно улучшать. Суть в относительности изменений).

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

Следующий кризис похоже приведет к следующему этапу профессионального и личностного роста.

  Следующий вызов

За годы работы мы постепенно сделали множество функций в своей CMS. Это было довольно органичное развитие, т.к. в начале электронная торговля не особо была востребована, потом требования росли постепенно, сначала достаточно было каталога, потом заказы, и уже позже предприниматели доросли до эквайринга. По мере развития отрасли и потребителей минимальный набор требований возрос. И в настоящее время сразу сделать все хотелки даже под малый бизнеса очень сложно. 

Проблема в том, что фреймворк, на котором мы базировались перешел на другую версию, а портировать все изменения экономически нецелесообразно, тем более, что его развитие пошло в тупиковом, по моему мнению, направлении. И раньше он был избыточно жирным и сложным, а теперь все только усложнилось. Нам нужна новая платформа с богатым функционалом. Очень важна возможность настройки проекта без кодинга. Но какие-то модули все-равно придется разрабатывать, поэтому программисту должно быть приятно работать с кодом, а начинающему легко разбираться в нем. Как вы понимаете, поиски идеального фреймворка или CMS пока продолжаются и могут закончится неудачей. Поэтому возникла мысль прокачать свои навыки программиста чтобы производить требуемые доработки.

 

Вопрос в том как мне за короткое время освоить программирование. Я не ставлю себе задачу быть хорошим кодером, просто хочу уметь разбираться в чужом коде, может быть решать несложные задачки, но, самое главное, проектировать грамотную архитектуру. С одной стороны я понимаю, что много времени потеряно, но с другой, его ещё достаточно, если правильно им распоряжаться. Я точно не стал хуже соображать, чем когда был студентом. Мне как и раньше бывает скучно сосредоточится на мелочах, но усидчивасть повысилась. Появился опыт, который подсказывает что можно отбросить из рассмотрения, а на чем стоит сконцентрироваться. 

Из языков разработки мне импонирует Rust, но он немного сложен для первого серьезного изучения языка программирования, тем более у меня нет практических задач по его использованию. Соответственно, нет пока мотивации к изучению, но знаю, что какие-то вещи мне захочется на нем сделать. Считаю, что Python мне больше подходит, он более универсален и мне нравится отсутствие лишних элементов в синтаксисе. Экосистема веб-фреймворков на Питоне не так богата как Пхпшная, но это даже к лучшему.

Для начала обучения языку и работе с распространенными фреймворками в Интернете очень много свободной и бесплатной информации: базовых курсов, сайтов энтузиастов, ютуб каналов (один Тимофей Хирьянов чего стоит) и официальная документация по Питону (даже если вы плохо знаете английский, то гугл переводчик встроенный в хром неплохо справляется). Но если делать что-то более сложное, то уже нужно понимать что такое хорошо, а что такое плохо, а это уже сложнее. В идеале нужен опытный ментор, который бы подсказывал как лучше подходить к проблеме с точки зрения архитектуры, куда не нужно пихать классы, как найти более эффективный подход к реализации задачи. Очень надеюсь, что кто-то отзовется и поможет мне, пусть и не быстро, стать  неплохим разработчиком. Надеюсь, польза будет взаимной.

Не знаю, хватит ли мне интеллекта и сил реально сделать что-нибудь прикладное и полезное, просто попробую описать и спроектировать какие-то основные бизнес-правила той CMS, которую я хотел бы использовать, как я её вижу. Почему и для чего я делаю то, что делаю - не знаю, просто не могу этого не делать. Возможно нравится сам процесс придумывания, проектирования и воплощения что-то нового и полезного. 

Желаю всем полезной осознанной деятельности с положительным результатом для всей планеты.

Категория блога
07.10.21

Ваш комментарий