Или как я сразу же споткнулся и потерял равновесие по дороге в увлекательный мир программирования.
- С чего всё началось
- Первый опыт
- Всё-таки что-то пошло не так
- Приближение к вебу
- Возвращение блудного попугая
- Я сломал себе мозг
- Неожиданное приглашение
- Нужно двигаться дальше
Собственно, никакой поэтики - всё достаточно прозаично и обыденно.
С чего всё началось
В детстве я очень тяготел к компьютерам (особенно, к играм =) - sega, dendy тоже). С возрастом и игровым опытом у меня возник неподдельный интерес - а как это всё работает? Кто это всё придумывает? Ответ был найден - разработчики, программисты. Я уже знал, что после окончания школы пойду учиться на специальность, так или иначе связанной с компьютерами.
Но почему-то я не пошёл на специальность САПР (они-то как раз и занимались всякой разработкой), а пошёл на “защиту” (КОИБАС). С четвёртого курса я уже получал некоторый практический опыт в сфере защиты информации. Но не совсем тот, который я предполагал получать изначально.
Первый опыт
Работая в государственном учреждении здравоохранения системным администратором (т.е. человеком, который может всё - и сеть проложить, и отчёт выгрузить, а также ответить на вопрос бухгалтера: “Где мои счета?”), особого энтузиазма проявлять не хочется (инициатива не всегда хорошо сказывается на инициаторе :-)). Но кое-что, конечно, сделать можно - немного ускорить загрузку страниц в браузере, используя локальный прокси-сервер (при выходе в инет в 2Мбит/с на >100 пользователей), очистить (наконец-то!) всю сеть от вирусов, наладить работу сети, пресечь беспокойство мед.персонала по поводу не заправленных матричных принтеров в лаборатории.
Всё-таки что-то пошло не так
Но это всё не то, чем я бы хотел заниматься. Поэтому я перебрался в частную организацию, которая занимается изготовлением оптики и осуществлением частной медицинской деятельности (т.н. медцентр). Работа, конечно, не сильно разнилась с предыдущей, но появились некоторые плюшки. А именно: получить необходимое оборудование стало гораздо проще (достаточно было описать проблемы, которые могут возникнуть в будущем, если ничего не предпринимать сейчас), появилось время на дополнительное изучение технологий, которые используются в работе, более прямой диалог с генеральным начальством, возможность заниматься разработкой.
В этом смысле разработка подразумевала создание сайта (переделка имеющегося) для компании на базе какой-нибудь известной CMS. На тот момент я с вебом был знаком на уровне, что есть протокол HTTP, сервер, клиент, запросы, ответы (то есть базовые знания из университета). Языка разметки я коснулся вскользь. Но предложение от начальства было очень заманчивым и являлось тут же вызовом для меня (а смогу ли я сделать сайт, даже не представляя, что там и как). И я согласился. Я тратил время на изучение вёрстки. В большей части вёрстки статических страниц. За месяц я сверстал полностью все страницы будущего сайта в статике. Теперь оставалось перевести всё это на какой-нибудь движок. Выбор был сделан в пользу Joomla 3.0 (да, я потом узнал, что работа с этой cms та ещё боль).
В процессе изучения приоритеты компании сильно изменились, и меня перебросили на объединение всех офисов компании в единую сеть (так как это был мой профиль по трудоустройству сюда). Филиалов было 10, и некоторая часть из них была в другом городе. На это ушло достаточно времени, за которое я познакомился с таким прекрасным продуктом, как Mikrotik на базе RouterOS.
Далее про необходимость обновления сайта немного подзабыли. А я занимался различной работой с полиграфией (разработка макетов флаеров, календарей и прочей графической штуки). Естественно, мне всё это быстро надоело. И я решил сменить вид деятельности - поближе к вебу.
Приближение к вебу
Меня взяли в компанию, занимающейся продвижением сайтов, на позицию php-программист (на самом же деле программирования особого не было). Я занимался внесением правок на сайты клиентов. Получил богатый опыт по работе с различными cms как популярных, так и самописных.
Поначалу всё было интересно. Познакомился с бэкэндом, фронтэндом (естественно, в понимании, что есть такие части веб-приложения и за что они отвечают). Немного ковырял и там, и там. Но никакой разработки - только правки. Мне это стало надоедать - опять не то, что я хочу. Поэтому меня попытались вернуть обратно в предыдущую компанию, под предлогом заниматься только разработкой сайта (ну и немного админить).
Возвращение блудного попугая
И у них это получилось, да. Теперь я уже большее имел представление о движках сайтов. Был выбран Drupal в качестве базы. В процессе разработки мне потребовался JS для нехитрых штуковин (типа слайдеров, модальных окон и прочих красивостей). Пришлось залезть в изучение JS… И тут случилось то, что изменило моё мнение о программировании. На сайте learn.javascript.ru я увидел ссылку на первый вебинар Хекслета.
Понимание того, что я занимаюсь какой-то ерундой, а не программированием, пришло не сразу. Для этого потребовалось зайти в slack-чат этих ребят. Очень живое и дружелюбное общение сделало своё дело. Я начал учиться по их курсам. Сначала попробовал бесплатные курсы, которые были на youtub’е. Потом решился и взял подписку на месяц, а впоследствии - на год. Содержание уроков несло такое количество информации, которое порой я получал за несколько занятий в университете. И главное было то, что это базовые знания. Базовые знания в области программирования. Именно программирования, а не того, как создать формочку, или сделать dropdown-меню. Вообще говоря программирование - это не просто написание кода, как многие думают, а это решение некоторой задачи при помощи программ. А программа - это алгоритм + структура данных, а не окошко с кнопочками.
Я сломал себе мозг
Я очень плотно подсел на такой формат обучения. Начал закупаться книгами, которые точно бы никогда не купил (просто потому, что о них даже и не слышал, да и не думал бы, что они мне пригодятся в веб-программировании) - SICP, Алгоритмы, Операционная система UNIX, Читаем Тьюринга…
Прочистка мозгов началась. Не сказать, чтобы я вообще ничего не понимал в программировании. Но, “внедрённая” императивщина в университете давала о себе знать. По привычке использовал переприсваивание, циклы. Но постепенно я отходил от такого подхода и учился заново.
Прошло около полугода - я сделал сайт для компании и уволился. Уволился потому, что мне нужно развитие. А для этого нужно такое окружение, которое будет вариться с тобой в одном общем котле. Я сделал трехмесячный перерыв, уехав к родителям в деревню. Выпал этот период как раз на всё лето (я отлично отдохнул от своей деятельности). За это время я, правда, почти совсем не занимался ни на Хекслете, ни самостоятельно.
Неожиданное приглашение
Но надо было продолжать двигаться дальше - в тот самый мир программирования. Я думал, что вернусь, посижу ещё две недельки, повспоминаю, что изучал, и только тогда составлю резюме. Но чёрт меня дёрнул, и я за пару дней до отъезда выложил резюме в открытый доступ. На следующий же день начались звонки. Одним из них оказался звонок той самой компании, занимающейся продвижением сайтов, в которой я до этого работал :-). И у них есть вакансия именно как раз разработчика в одноименный отдел. Но вакансия была на не совсем определённого разработчика. В предложении было написано о php-разработчике, а в разговоре выяснилось, что и умеющий на руби нужен. Конечно, я сказал, что с руби вообще не знаком, но препятствий в изучении не видел.
Через пару дней я сидел и изучал фреймворк Yii2, на котором собирался реализовать тестовое задание. До этого я фреймворки не трогал (Drupal не в счёт). В общем, за отведённое мне время на выполнение ТЗ, я достаточно разобрался в Yii2, чтобы выполнить задание. А Хекслет (вернее, полученные благодаря нему, знания) очень сильно в этом помог - я без боязни, что чего-то не пойму, залезал в исходники фреймворка, написал алгоритм решения ТЗ, который проверяющим понравился за нестандартный подход. И я очень старался уделять внимание тому, что я правильно следую построению реализации ТЗ в рамках Yii2.
Всё завершилось успешным прохождением собеседования. Как только я настроил своё рабочее окружение, мне начали ставить задачи по реализации конкретных вещей. К этому я и стремился - решать задачи. В целом, у меня это стало получаться - я прошёл испытательный срок.
Нужно двигаться дальше
С каждым днём я понимаю, что на самом деле я очень мало знаю о разработке и программировании в целом. Ведь получить место работы программистом (разработчиком) - это вовсе не значит, что ты добился и дальше некуда двигаться. Наоборот, приходит понимание того, что необходимо стараться узнавать всё больше и больше для того, чтобы стать настоящим программистом.