Как выбирать технологию для изучения новичку / опытному?

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

  1. Востребованность
  • можно определять по количеству вакансий (поиск вакансий)
  1. Популярность (иногда хайп)
  • противовес Востребованности
  • можно определять по количеству резюме
  • можно определять по google.trends
  1. Новизна
  • конек для тех, кто имеет возможность / способности в кратчайшие сроки изучить, против тех, кто долго раскочегаривается
  • часто хромает на Обучающие ресурсы
  • часто меньше старых технологий, соответственно такие технологии можно быстрее выучить (чем старые)
  1. Обучающие ресурсы
  • часто эквивалентны Популярности (т.е. хорошие ресурсы с одной стороны хорошо, с другой стороны понимаешь, что в этой технологии большая конкуренция)
  • как я догадываюсь, в любой технологии нужны люди умеющие (даже, если в технологии низкая Популярность), поэтому для новичка хорошие Обучающие ресурсы наверное must have
  1. Перспектива
  • набирающие востребованность технологии
  • частично теряющие востребованность технологии
  • вымирающие технологии

Мое мнение по поводу того что важно для начинающего.

Должна быть. Количество вакансий, особенно если смотреть на ограниченном количестве ресурсов на ограниченной территории, не отображает востребованности. Я бы смотрел на глобальную статистику использования, и на годовые тенденции для оценки растет/падает количество пользователей языка/технологии. Тренды важнее сиюминутных значений потому что начинающий будет искать работу через год-два (или новую работу или вторую-третью).

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

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

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

Начинающие не работают на перспективу. У начинающего задача - закрепиться. Когда будет 3-5 лет опыта, то будет достаточно ресурсов чтобы пробовать “вскочить” на хайповую новую перспективную технологию без опасности остаться без денег/работы в ближайщее время.


Иногда критерием выбора технологии для начинающего будет доступность ментора. Например, хороший друг, опытных PHP-шник готов всегда подсказать-помочь. Тогда придется учить PHP. После, когда будет достаточо ресурсов для переключения в другую технологию (работа и опыт применения программирования), переключаться на то что хочется.


Для опытных.

  1. Понять для себя чего хочется, что доступно и что уже есть.
  2. Изучать “нетленку” программирования (т.е. такие зания которые будут актуальны всегда).
  3. Пробовать хайповые технологии, если хочется.
  4. Искать технологии которые дают больший рычаг для решения задач.
  5. Следовать сердцу, держа голову в готовности скорректировать курс.

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

1 лайк

Парень молодец, говорит по делу, но больше советы подойдут для опытного уже работающего программиста.

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

Как я наблюдаю “хит сезона” как раз таки Java. Еще к Python нездоровый интерес, про Go вообще что говорить (что за шум, а драки нету)…

На самом деле, все логично:
Java - тонны легаси, которые нужно поддерживать
Python - это data science (не только, конечно), который “next big thing”.
Go - в Украине он не популярен (поэтому и кажется, что “что за шум”), а продуктовый запад весь на нем плотно сидит. И, собственно, бэкенд потихоньку переезжает на него с тех же Java и PHP.

https://www.tiobe.com/tiobe-index/

1 лайк

Посмотрите список самых высокооплачиваемых языков программирования 2019, тик думаю очень даже поможет в выборе)))

На первых местах Clojure, F#, Scala, Elixir. Это явно не то с чего нужно начинать и не то что рынок труда требует.

Может я упускаю то какой принцип анализа применять к списку?

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

1 лайк

Одна из сильных сторон Clojure — использование платформы JVM. Интеграции с Java, крайне проста. Очень хорош ЯП

3 лайка