Когда выбираешь для проекта:
Чаще всего — не выбираешь.
Если все же выбираешь. Не так важно какой язык больше подходит, важнее, какой компания сможет поддерживать — тут все зависит от количества специалистов в компании, их уровень на рынке и, соответственно, их зарплаты.
Когда выбираешь для себя:
Смотри на компании и бизнес, которые тебе нравятся, наличие свободной документации, перспективы, комьюнити и зарплаты на 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
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, то на выбор языка для изучения могут влиять количество вакансий, интересная вам предметная область и наличие курсов, открытых источников и знакомых, которые могут помочь в изучении.
Спасибо, ребят, интересно было с вами пообщаться.