Когда выбираешь для проекта:

Чаще всего — не выбираешь.

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

Когда выбираешь для себя:

Смотри на компании и бизнес, которые тебе нравятся, наличие свободной документации, перспективы, комьюнити и зарплаты на HH.

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


Тайм-коды
00:00 — вступление
1:00 — какой бэкграунд у спикеров
3:08 — выбор языка программирования для проекта
4:18 — как разработчику выбирать, на чём писать
6:40 — про важность скорость и производительность языка
7:34 — Google разработали свой язык — Go
8:06 — как Go так быстро стал популярным
9:17 — почему PHP-шники переходят на Go
9:50 — зачем использовать 2 и больше языков в проекте
12:54 — про умирающий PHP
15:25 — почему в крупных корпорациях пишут на Java, .NET, ...?
17:54 — PHP-шники дороже Go-шников
18:45 — мы пишем на Erlang. почему появляется спрос на немассовые языки вроде Scala, Elixir, Erlang?
21:14 — почему так хейтят Python?
22:19 — как выбрать свой первый язык программирования?
25:00 — качество разработки падает из-за низкого порога входа
28:37 — про выбор языка для open-source

Промотать к видео

Миша Шпаков — dev-тимлид VDS Timeweb.
Олег Филимошин — архитектор Timeweb Cloud.
Макс Карпенко — dev тимлид внутренних сервисов Timeweb.

Миша: Меня зовут Михаил Шпаков, я тимлид разработки продукта VDS в Timeweb. и сегодня со мной в подкасте Олег и Максим. Ребята, расскажите, пожалуйста, немного о себе.

Олег: Давайте с меня начнем, меня зовут Олег Филимошин, я работаю архитектором в Timeweb, конкретно, делаю облако. 

Макс: Меня зовут Максим Карпенко, я тимлид команды инструментов поддержки, мы занимаемся разработкой внутренних продуктов для нужд компании. 

Миша: У нас сегодня интересная тема — выбор языка программирования для проекта. И давайте сперва расскажем о том, какой у вас опыт и с какими языками вы начинали работать, работаете сейчас и куда смотрите?



Макс: Если говорить про опыт, то начинал, как всегда, с Pascal, в университете изучал С#, но так сложилось, что пошел в PHP. Позже появился JavaScript, на предыдущем месте работы и здесь добавился Go. 

Олег: Я изучал С# в школе, потом в учебном заведении пришлось зайти в Pascal и Delphi. Странный путь в обратную сторону. Потом я подумал, что веб-разработкой можно больше денег заработать, выучил PHP, JavaScript. В какой-то момент мы в компании решили, а почему бы не перейти на Node, так как он подходил под наши задачи. После случился Python и Go.

Миша: Я сам занимаюсь frontend/backend разработкой, в основном в web. У меня похожий путь. Начинал с PHP когда-то, сейчас в основном пишу на JS, Node.

Как правильно подойти к выбору языка на проекте. Это вопрос больше к Олегу, так как он архитектор. Можешь рассказать, какой у тебя был опыт?



Олег: У меня вопрос сначала к вам, вы обычно выбираете язык или пишете на том, что досталось?

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

Олег: Если формально говорить, то для выбора языка программирования для нового продукта стоит:

  • Посмотреть на рынок, есть ли эти специалисты.
  • Посмотреть на зарплаты этих специалистов.
  • Посмотреть на список репозиториев и список библиотек, то есть насколько богатая обвязка у языка.
  • Посмотреть, насколько много экспертизы в компании. 


Это часто решает больше, чем подходит язык или нет. 

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

Лучше вы напишете на том же PHP, который все знают. Пусть работает чуть медленнее, зато вы можете спокойно это поддерживать и развивать. Если что-то упадет, это не будет проблемой. 

Миша: А если я хочу выбрать язык для себя, то как мне к этому подойти?



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

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


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

Миша: Я когда готовился подкасту, то загуглил, что люди умные пишут в интернете. Во многих статьях был блок про скорость, производительность и так далее. Как вы вообще считаете, это актуально в современной разработке?



Макс: В теории, да, производительность и скорость важны. В реальности, нет, важнее, чтобы это был поддерживаемый код. В конечном итоге, быстрее будет докупить железо.

Олег: Это стандартная ситуация, что железо стоит дешевле, чем люди, но до поры до времени. Если для работы проекта на тяжелом и медленном языке вам приходится поддерживать лишний дата-центр, выгоднее будет переписать на что-то эффективнее. Опять же, это зависит от размера компании. Например, в Google специалисты создали свой язык — Go.

Миша: На самом деле очень интересная тема про Go. Язык относительно новый и понятно, что за ним стоит большая компания, но по нему меньше информации в интернете, намного меньше StackOverflow по нему заполнен, чем по тому же PHP или java. Как получается, что он так быстро набрал популярность?



Макс: Как бы там ни было, PHP был нестабилен в производительности — его еще Node пытался уничтожить

Наверное еще микросервисная архитектура, которая снова вылезла наверх. Одна из причин, почему Go разрабатывался, это необходимость Google писать микро-сервисы. С — это дорогие специалисты, это дорогая поддержка, это постоянные утечки памяти, и Go должен был это все сгладить. 

Популярность набрала наверно из-за низкого уровня входа. Я точно не сравнивал, но знаю, что у Go самая короткая документация. Не в том смысле, что плохая, а в том, что язык лаконичен и прост. 

Сейчас стандарт появился — PHP/Go. Это не противопоставляющие языки, они дополняют друг друга. Обычно логика пишется на PHP, а на Go создаются какие-то нагруженные сервисы для решения сложных задач. 

Много специалистов PHP переходят  на Go. 

Миша: Интересно, а почему так легко переходят?

Макс: Простой язык. Go — С-подобный язык, лаконичный. Там нет таких нагромождений как в java, sharp.

Миша: Зачем нужен конструктор из двух языков, если можно взять и написать все на одном?



Макс: Поддержка опять же, распределение задач. 

Олег: Я предположу, что еще нагрузки возросли, по облакам это видно очень наглядно. Чтобы поддерживать производительность только на PHP не у всех хватит денег. Плюс популяризация микро-сервисов, Kubernetes подъехал. И тут Google подкинул язык с низким входом. Плюс вероятность ошибиться ниже, он компилируемый. Еще — один стандарт код-стайла у Go, который Google придумал и сказал всем делать одинаково. PHP, в этом плане, — просто Ад.

Олег: Мне кажется PHP сейчас всем в наследство достается и поддерживают его по старой памяти. Я не могу представить, кто и для чего в 2021 году выбрал бы PHP как основной язык для нового продукта.

Миша: PHP хоронят уже очень давно. Но умирает ли он?



Макс: У меня другое мнение. 

Я где-то не согласен с Олегом, и могу аргументировать, почему иногда я выберу для проекта PHP, а не Go. Наоборот — я люблю ООП и мне его иногда не хватает в Go. Когда будет какая-то более сложная доменная область, я скорее выберу PHP. Go достойно решает свои задачи, но большие приложения на нем писать, мне лично, сложнее.

На счет смерти PHP не знаю. Язык простой, я его сравниваю с Node. Но Node частенько текла по памяти.

PHP — железное решение для веба. Я не видел ни одной CMS на Node (хотя они безусловно есть), но все знают Битрикс, WordPress, Joomla, куча движков на PHP. Банально, Facebook, ВКонтакте написаны на PHP, хотя у них это скорее наследие, они бы отказались от него, если бы могли.

Миша: Есть же еще группа языков для «кровавого энтерпрайза»: Java, .NET. Почему именно их выбирают? 



Олег: Для банков раньше при выборе между PHP и Java, выбор был в пользу Java. Это библиотеки, поддержка, серьезность и зрелость языка на тот момент. 

Кстати, парадокс про PHP: он умирал два года, но когда часть разработчиков перетекла в Go, неожиданно появился дефицит PHP-шников. Сейчас у PHP-шников зарплаты доползли до уровня Go-шников и выше.

Макс: Я еще читал статью, там упоминали, что 10 лет назад во всех курсах для обучения использовали язык Java. 
 
Олег: Это был академический язык. Все фаулеровские книги были по Java.

Миша: Сейчас есть смысл брать .NET или Java? Или стоит вместо нее брать Node, Go или какие-то модные штуки?



Олег: Еще Scala же есть. 

Макс: Ага, и Ruby on Rails еще не умер.

Миша: Олег интересную тему поднял. Есть Scala, и куча не очень популярных языков, с интересными проектами и хорошими зарплатами. Мы в Timeweb пользуемся Erlang, тоже довольно редкий язык. Как такие язык вообще пролезают?

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

Макс: В Timeweb Erlang появился раньше, чем я. Компании довольно старая, много было на PHP, но он не вытягивал, нужен был более производительный язык. Поэтому появился Erlang — думаю, так же, как описал Олег — прижился, мы его используем и поддерживаем. А ещё пару лет назад, когда был дикий рост IT, возникла странная ситуация — нам стало проще найти Erlang-истов, чем PHP-шников, что тоже интересно.

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

Макс: Плюс еще было время жесткого хейта PHP. 

Олег: JS ему на замену подъехал.

Миша: Допустим я начинающий специалист, настолько начинающий, что даже не выбрал язык программирования. Что мне изучать?



Олег: То, на что спрос сейчас есть. Хотя, от предметной области сильно зависит. Тот же Python в web не так часто встречается. Python — довольно простой, Openstack написан. Как первый язык — вообще отлично. 

Плюс перспективы развития языка учитывать. Растет ли комьюнити.

Миша: Как это оценить? Есть рейтинги на Stack Overflow или JetBrains. Может, что-то еще?

Олег: Ребята на работе расскажут (смеется). 

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

Макс: Но качество разработки в целом падает. 

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

Миша: Кто-то участвовал в open-source? На чём пишут там?



Олег: Я пытался. Легко писать в open-source. Написал readme, а звездочку друзья поставят. Тяжело контрибьютить в чужой код. Нужно пройти 33 круга ада, чтобы это куда-то вмерджили.

Мне кажется, что нет такого языка, где нет open-source решений. 

Миша: Круто, многое обсудили. 

Попробую подвести итог. 

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

Нет изначальной разницы между языками для коммерческой разработки и open-source проектов

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

Спасибо, ребят, интересно было с вами пообщаться. 


Комментарии (4)