[Размышлизмы] Где я вчера/сегодня/завтра?

Олег Токарев

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

Попробую в этом посте коротенько раскрыть ответы на эти вопросы, итак

Спойлер для нетерпеливых

  • Кто я: Помогу перенести вам разработку LAMP продукта в Новосибирск в качестве играющего тренера — разработка, набор персонала, обучение, управление командой разработки
  • Чего не хватает: А не хватает знакомства с каким-либо функциональным ЯП и c JVM стэком. И первое, и второе, я верю, каким-то образом обогатило бы мой опыт новыми подходами для решения нетривиальных технических задач. И каким-то чудесным образом всё, чего мне не хватает, объединилось в Scala
  • Кем хочу стать: Экспертом в построении software-комплексов неограниченной сложности

Кто я?

lampКак до этого писал, я — Инженер. Тот, который на всех стадиях развития Продукта всецело отвечающий за его разработку и развитие. Продуктом по большому счёту может быть всё что угодно — от какого-то сравнительно небольшёго модуля в чём-то бóльшем, до, например, доменного регистрара из Тор5 по странам бенелюкса.

В общем случае — необходимыми навыками являются навыки технические, позволяющие писать стабильный код, и стабильно выкатывать новые свойства (features) Продукта.

В моём случае к таковым навыкам можно отнести (с субъективной оценкой от 1 до 5):

  • Проектирование систем со сложной бизнес-логикой (5)
  • Исследования. Получение новых практических навыков, передача их стажёрам (5)
  • Унификация. Адаптация производимого ПО к возможности поддерживать и развивать его кадрами с начальным уровнем квалификации (5)
  • Управление. Координация усилий команды разработки (5)
  • LAMP — Linux, Apache (NGINX), MySQL, PHP  (4)
  • Администрирование Linux (4)
  • Ansible (4)
  • RabbitMQ, Elasticsearch (3-4)
  • Docker (3-4)
  • Atlassian Bitbucket/Jira/Confluence (3)
  • GIT (3)
  • AngularJS, JavaScript, HTML, CSS (1-2)
  • Прочие: Redis, Memcached, Perl, C.

Если вам необходимо сэкономить и перевести разработку из Европы в Сибирь — обращайтесь

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

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

  • Лучший код — ненаписанный код
  • Лучший интерфейс — не предоставлять никакого интерфейса
  • Написанный-таки код — самоочевидным без документации и переводчика.

Они могут быть спорными, но это лишь по причине того, что кто-то пишет слишком много запутанного кода, имеющего слишком много внешних зависимостей. 🙂

Управление — в первую очередь управление энтузиазмом людей, во вторую — процессами, в третью — самими людьми

Мой HR-убеждения:

  • Нанимать нужно тех, кто понравился лично тебе; и тех, кому понравился лично ты
  • Управление — в первую очередь управление энтузиазмом людей, во вторую — процессами, в третью — самими людьми

Чего мне не хватает

Со временем росло понимание, что для принятия адекватных технических решений необходимо-таки погрузится в Мир Кровавого Интрерпрайза и познакомиться поближе с такими штуками, как Cassandra, Kafka, Hadoop, Spark, Storm, Akka, Mesos, Zookeeper.

jvm solutionsНаверное кто-то скажет, что функции указанного ОП вполне могут быть закрыты другими средствами. Да, могут. Но дело тут не только и не столько в том, как может быть выполнена та или иная задача, но и в том, что именно заставляет различных вендоров выпускать софт на одном и том же стэке технологий. Почему, когда я гуглю про Mesos, мне непременно попадается Spark, а когда про Spark, то Kafka и Cassandra? И так по кругу с незначительными вариациями. На чём держится эта экосистема? Почему так происходит? Почему оттуда ещё никто не возвращался?

Вероятно, кто-то кто профессионально пишет на Java и знаком не по наслышке с технологиями имеющими в основе JVM и легко сможет на пальцах пояснить, что же заставляет его и многих других быть верными своему стэку? Но рассказы рассказами, а я, человек-практик, решил потрогать это самое сам. Оно, когда пережито лично, как-то лучше постигается. На уровне физиологии.

Готов работать Junior Scala Developer практически за еду

Для погружения в чарующий мир JVM был выбран язык Scala. И этот выбор неслучаен, он решает как минимум три задачи:

  1. Собственно язык позволяет писать под Java-машину различные приложения
  2. Большее количество интерфейсов, софта, пакетов и пр. позволит быстро начать писать на Scala resilient, scalable, reactive (и пр. базворды) приложения, которые наилучшим образом утилизируют все ваши CPU и память и, более того, безшовно позволят вам войти в экосистему бигдаты (big data) и прочего machine learning’а
  3. Как минимум на половину функциональный язык программирования ознакомит  с основными, лежащими на поверхности для простого смертного, преимуществами функциональных языков программирования и связанными с ними шаблонами проектирования.

Ну и нельзя не упомянуть лаконичность Scala по сравнению с Java

Кем буду завтра

Да, неверное, ничего кардинально нового со мной не произойдёт 🙂 Просто будут у меня ответы на более сложные вопросы. И благодаря этому, смогу летательные объекты выводить не только на околоземную орбиту, но и в дальний космос. А это, как вы уже понимаете, совсем другой коленкор, совсем другие скорости.

Спасибо за внимание.