Недавно я сменил работу. Покинул крупный государственный вуз, в котором работал инженером-программистом и перешел на работу в небольшую "программерскую" контору. Опущу все подробности, сподвигшие меня покинуть насиженное место, но настал определенный день, когда чаша терпения переполнилась, я зашел на один из сайтов с вакансиями и оставил свой отклик на некотрые из них (штук 5 наверно). Букавльно через 15 минут мне перезвонили и пригласили на собеседование.

О чем спрашивали на собеседовании?

Естественно, в первую очередь разговор зашел о выполненных мной проектах, я честно рассказал о том, что за свою жизнь создал несколько десятков сайтов с использованием CMS, голого HTML, PHP, немного поработал с фреймворком Laravel. Последнее несомненно их обрадовало, так как именно Laravel являлся их основным инструментом для создания веб-приложений.  Было несколько вопросов по базам данных - к примеру, что такое отношение "многие ко многим", как строить сложные запросы при помощи JOIN. По технической части еще были вопросы по сессиям и кукам, а также по типично "ларавелевским" фишкам - что такое миграция и сид, для чего нужно middlware и много чего еще, чейчас уже все не вспомню. Признаюсь честно - я ответил примерно на 2/3 вопросов, так как мой опыт работы с Ларавелем исчерпывался одним небольшим интранет-проектом.

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

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

На этом мы расстались и спустя полчаса мне позвонили и сказали, что моя кандидатура одобрена.

 

Трудовые будни

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

Помимо, собственно, самого программирования, нужно было вести учет времени, потраченного на решение той или иной задачи в сервисе toggl.com, отслеживать задачи по проекту в трекере задач (youtrack), а также регулярно общаться с менеджером проекта из Москвы, держать его в курсе дела по текущему состоянию проекта. 

Еще моей обязанностью было взаимодействие с верстальщиком, который рисовал фронтэнд - он присылает html-макеты, их нужно перевести в формат blade-шаблонизатора и "натянуть" на сайт. Взаимодействие происходит через репозиторий. Я только сейчас оценил все достоинства этого приема разработки, каждый занимается своим - он фронтэндом, я бэкэндом, практически не пересекаясь друг с другом, регулярно сохраняя на удаленный сервер результаты своей работы (коммиты). Вот она, командная работа.

Иными словами, в первые же дни на меня свалился такой шквал информации, что я приползал домой под вечер как выжатый лимон и ни на что не был способен, как просто доползти до дивана и забыться сном :)

Дальше было еще интереснее - даже несмотря на то, что я формально являлся бэкэнд-разработчиком, на меня упали задачи по работе именно с фронтэндом - подсоединение Яндекс-карты с подгрузкой объектов. Вроде бы ничего сложного на первый взгляд, но объектов оказалось почти 12000! и файл json с ними весил около 50 мегабайт. Естественно, при этом сайт просто затыкался при попытке отобразить карту. Нужно было организовать динамическую подгрузку этих объектов исходя из того, какой кусок карты отображался на экране. Фронт-энд разработчик территориально располагался на территории Украины, на которой Яндекс заблокировали, поэтому мне ничто не оставалось делать, как вникать самостоятельно в API Яндекс карт. Учитывая то, что до сдачи проекта остававались при этом считанные часы, а мозг кипел от предыдущих задач, новая информация не воспринималась вообще. Вовремя вмешался тимлид - взял эту задачу на себя, все обошлось, хотя нервы ситуация немного потрепала.

Дальше - в том же ритме. Добавилась новая задача - не менее крупный клиент заказал браузерную игру (квест). Работа в основном по фронту, но со стороны бэкэнда надо было организовать взаимодействие фронтэнда с уже существующим API, работа которого основана на обмене данными по SOAP протоколу. И понеслось заново - чтение документации, созвоны по скайпу с другими участниками проекта, которые территориально расположены в Нижнем Новгороде, Москве и Киеве. В общем скучать не приходилось.

 

Что я выяснил?

  1. Самая главная ошибка - идти работать программистом только ради денег. Да, в этой нише зарплаты гораздо выше средних. Даже будучи junior-ом, можно обеспечить себе вполне безбедное существование, не говоря уже об уровнях middle, senior. Я погнался за деньгами, но быстро понял, что не испытываю страсти к этой работе. Что-то вроде брака по рассчету. Я мог развиваться дальше в этом направлении, но все это в определенный момент оно стало мне поперек горла. При этом конкурировать на рынке с теми, кто "живет программированием" просто не реально.
  2. Знать какой-то один язык (php, python, c#) даже в совершенстве мало. Нужно уметь организовывать взаимодействие приложения с другими сервисами, разбираться в технической документации, которая зачастую написана настолько ... своеобразно, что руки опускаются в этом разбираться, а надо!
  3. Веб-программист - это совсем не творческая профессия. Приходится действовать, жестко зажатым в рамки ТЗ, от которого нельзя ни на йоту отступить. Никаких вольностей. Обычно я решал сам, как мне и что делать, здесь в этом плане испытывал дискомфорт.
  4. Все проекты, даже несмотря на внешние различия внутри устроены примерно одинаково и 80% времени при разработке уходит на типовые рутинные задачи.
  5. У каждого менеджера проекта свое видение того, как должен происходить рабочий процесс. Бывают такие, у кого рабочий подъем начинается ближе к 12 часам ночи и они начинают долбиться в твой Телеграм с вопросами "Уже спишь?" и не дай бог ответишь "нет пока", тебя вполне могут озадачить какой-то "сверхсрочной" задачей, которую надо сделать до завтрашнего утра.
  6. Чтобы работать профессиональным программистом, и делать это успешно, недостаточно какого-то первоначального опыта - нужно пламенное желание постоянно разбираться в чем-то новом - технологии программирования, фреймворки, протоколы, сервисы. Учитывая то, что это постоянно развивается и обновляется, нужно быть настоящим энтузиастом, чтобы не соскочить с волны. 
  7. Мозг умеет хорошо сжигать калории не хуже мышц. За один месяц я похудел почти на 5 килограмм, при том, что вел преимущественно сидячий образ жизни и питался как обычно.
  8. Месяц работы в коммерческой организации в роли веб-разработчика дал мне гораздо больше опыта, чем до этого я получил за год работы в государственной организации.
  9. Если вы думаете, что в коммерческой конторе можно "халявить" как в государственной, вы сильно заблуждаетесь! Просто некогда. За месяц я Вконтакт на работе заходил всего пару раз и то в обеденный перерыв. Остальное время было занято работой.
  10. Если вам достанется относительно спокойная работа по разработке и поддержке какого-то одного проекта, рано или поздно он вам настолько надоест, что вы его тихо возненавидите. Еще возможно через несколько месяцев придет осознание того, что изначально надо было делать по другому, но уже менять что-то поздно. В результате проект начинает обрастать костылями :)

Главная рекомендация тем, кто решил "пойти в веб-программисты на php" - изучайте php-фреймворки. На голом php никто уже давно не пишет. Одними из наиболее популярных и востребованных php-фреймворков, как мне показалось, являются Laravel и Yii2. А вообще их великое множество. 

Только после того, как я вплотную поработал с Laravel, я стал понимать, насколько ущербна по сравнению с ним Joomla :)

Что дальше? 

Проработав месяц, я понял, что этой конторы и ее задач стало в моей жизни слишком много. Настолько много, что программный код и тексты ТЗ стали сниться мне по ночам :) Я покинул эту компанию, но это не значит, что я покинул нишу. 

Я возвращаюсь на поле фриланса, но с изрядно потяжелевшим багажом знаний. Поэтому, если вам нужен сайт - простой или изощренный, обращайтесь! Также если интересует продвижение, поддержка и реклама в Директе - тоже обращайтесь :)

Артем Кашканов, вебмастер

  • Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
  • Телеграм +79202525268 (Artem Kashkanov)
  • Я в контакте - https://vk.com/a.kashkanov

 

 

{crossposting}