Автор фотографии: Максим Золотухин
Привет Хабр! Хочу рассказать вам о небольшом сообществе junior-разработчиков в Алматы и своём пути junior-разработчика в Казахстанском вебе.
Для начала расскажу немного сухих данных об Алматы. Алматы — по масштабам Казахстана очень крупный город, численностью 1,5-2 миллиона человек. Технических вузов не так много, тем более в которых нормально пытаются преподавать программирование. Очень много мелких веб-студий. Попадаются и крупные software конторы, ориентированные больше на банки и предприятия. В городе нет офиса Yandex, но есть его официальный представитель. Есть два coworking-центра и отстойный 4G интернет. Сейчас мне 20 лет (как и большинству моих знакомых/друзей программистов) и я junior веб-разработчик в студии.
Я бы строить дом пошел, пусть меня научат
За полтора года работы в студии, я научился большему, чем за 4 года в колледже, и 4 будущих года в университете. Не поймите превратно, но классическая схема образования в области IT в Алматы, настолько отстала от жизни, что “учиться” в средних специальных и высших учебных заведениях нет никакого смысла.
В течении учебы в колледже вот что происходит:
- Вы приобретаете навык рисования блок-схем. Вы наизусть знаете стандарты соотношения сторон, и можете без линейки нарисовать любую структуру. Не важно что вам дают настолько простые задачи, которые даже не требуют чертежей, соблюдайте стандарты.
- Вас учат двум видам сортировки. О том что они бесполезны, вам не говорят.
- Вы приобретаете навык построения простых SQL запросов. В течении недели вас учат делать “правильные” запросы, и постоянно заставляют писать лабораторные работы. При слове “индекс” преподаватель уже смотрит на вас с подозрением, вы случайно установили MySQL на учебный комп на глазах преподавателя? Поздравляем, следующие 5 лекций зачитываете вы.
- Вас учат работать в Delphi 7. О том что существует Embarcadero Delphi XE2 вы тактично умалчиваете, чтобы не пугать профессора. Они народ вспыльчивый, нарекут еретиком и всё, плакал ваш космодесант.
- Вас учат ООП. Но заставляют писать на C++. Без использования классов.
- Вас заставляют сдавать бесполезные курсовые, которые заключаются в бесконечном числе распечатанных листов бумаги и подаренных шоколадках. И да, в ненумерованных списках отступ должен быть полтора деления. Перепечатывайте.
- На парах по веб-разработке вас учат верстать. Таблицами. Ну и конечно вы Denwer научитесь устанавливать. На PHP вы сможете разобрать POST запрос.
На фоне всего этого безобразия, студенты колледжей начиная со 2-3го курса начинают искать работу. Те кому везет, попадают в команды, где их выращивают в полноценных бойцов. Мне повезло. Я попал в лучшую студию, которую вообще можно найти. Всё что у меня было на тот момент, это голодный до знаний взгляд и 20 рублей на сникерс.
Что дал боевой опыт работы в веб-студии, вместо потраченного времени в колледже:
- Я научился думать. Решать реальные задачи, подходить к решению с разных сторон, взвешивать плюсы и минусы.
- Верстка. CSS2, CSS3, правильные структуры и техники вёрстки. CSS-фреймворки, шаблонизаторы, совместимость с разными версиями браузеров.
- Разработка на PHP5 и Yii. Правильные шаблоны проектирования. На очереди к прочтению стоит “Банда четырех”, как только дойдут руки.
- Работа с системами контроля версий. Mercurial и Git.
- Более плотное знакомство с MySQL. Понимание базовых принципов оптимизации. Смена предпочтений на MariaDB. Опыт интеграции с MSSqlServer 2005, первые слёзы отчаяния.
- Знакомство с NodeJS и MongoDB.
- Опыт работы с jQuery и AngularJS, включая написание собственных костылей и плагинов.
- Опыт работы с сокетами.
- Работа с поисковой машиной ElasticSearch.
- В ряде задач приходилось вспоминать геометрию.
- Опыт развертывания проектов на бой. Мониторинг стабильности. Написание своих небольших костылей на Bash.
Что значит быть junior’ом
Быть джуниором, значит постоянно сомневаться в своих силах и способностях. Вот сидишь ты, молодой и зеленый, смотришь снизу вверх на парней с опытом больше 5-8 лет и удивляешься, как они так быстро находят решения, как они набирают этот чертов код со скоростью пулемета? Я джуниор и почти каждый день я сталкиваюсь с задачами, для которых я не могу сразу придумать готового решения. В тоже время, для других, это кажется не проблема. И часто я останавливаюсь, с мыслью, а всё ли я делаю правильно?
Быть джуниором — значит соревноваться. Когда кто-то из знакомых хвастается, что на проекте он использовал, скажем, Phalcon, невероятная буря эмоций возникает в голове. Интерес, зависть, разочарование в себе. “Блин, этот чувак уже потрогал Phalcon и Solr, а я сижу и всё плагин ковыряю”. Среди моих сверстников и знакомых, всё что я знаю или с чем я сталкивался — это норма. Мы все — постоянно что-то изучаем, пока у нас есть такая возможность. Мы собираемся в баре, или сталкиваемся на каких-то встречах, и постоянно обсуждаем что-то новое.
Быть джуниором — значит искать единомышленников. Любой разработчик из нашей сферы — это в первую очередь коллега и интересный собеседник, а потом уже боец из конкурирующей фирмы. Нам дай только повод поговорить о технологиях, разработке или проектах. Главная проблема в Алматы — это очень маленькое количество событий и небольшое сообщество. Есть конференции, есть какие-то семинары, но они все направлены больше на выжимание денег, пиар каких-то компаний и треп среди бизнес элиты или менеджеров. Событий касающихся именно технологий, где дают какие-то знания или делятся опытом — почти нет. Последним крупным событием, был BarCampCA в 2011 году. С тех пор конференций такого уровня и качества просто не наблюдалось. Есть небольшие тусовки, есть GTUG Almaty, но этого мало.
Быть джуниором — значит косячить. Вы видели когда-нибудь, что случается если джуниору дать доступ на сервер под рутом? А я видел. Мой знакомый в спешке случайно перезагрузил удаленный сервер. Ну а я случайно выгрузил неоттестированный скрипт. Последствия обычно тут же дают о себе знать.
Быть джуниором — значит работать овертайм. Просто потому что ты медленный, потому что что-то не понял, потому что что-то нужно прочесть. Иногда приходится приходить на выходных. И это нормально, потому что ты получаешь опыт и знания.
Быть джуниором — значит испытывать свои силы на соревнованиях и конкурсах. Пытаться сделать что-то важное. Врываться на Hackday с возможно бредовой идеей и ночевать в офисе на столе. Составлять список идей в аккуратную папочку “Будущие проекты”, и мечтать их сделать под лозунгом “Проект выходного дня”.
Быть джуниором — значит искать себе новых примеров для подражания. Стараться перенимать любой опыт и постоянно смотреть вверх. Задавать глупые вопросы на семинарах и ловить на себе насмешливые или снисходительные взгляды. Радоваться даже небольшому диалогу с SamDark’ом, смотреть онлайн трансляции с конференций в 3 часа ночи, сидеть в IRC на RadioT.
Итог
Как бы глупо это не звучало: “Я junior — и я горжусь этим”! У всех нас горящие глаза и мы любим то, что мы делаем. Возможно наши навыки еще слабы, сообщество не развито, а в головах ветер, но мы обязательно внесем свою лепту в развития нашей сферы и возможно всего Казнета.