Многие на собеседованиях любят гонять по последним фичам языка. У меня это всегда вызывало недоумение, во всяком случае в сфере веб-разработки. На фронтенде ты смотришь CanIUse (или сношаешься с полифиллами), а на бэкенде ты смотришь на шаблоны vps/vds, которые предоставляют хостеры и прикидываешь когда же в них появятся нужные тебе версии языка. И я абсолютно не против развертывания среды выполнения нужной версии, которая будет отличаться от системной, но давайте будем честными с самими собой. Какой процент из вас ориентируется на последнюю доступную версию языка, а не на то что будет на в ближайшие пару лет дано в ощущениях, браузерах и датацентрах. Внимание опрос!
[Опрос] Насколько вам наплевать на фичи последней версии языка? -19
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какие версии интерпретатор/cреды а я предпочитаю:
-
11,6%[Все языки] Мне досталось легаси, которое разваливается от малейшего пука, использую любую версию языка какая работает, после меня хоть потоп.29
-
15,3%[PHP] Использую ту версию php что есть у нашего хостера / ориентируюсь на версию PHP которая будет ближайшие год-два у большинства хостеров.38
-
26,5%[PHP] Развертываю последнюю версию PHP, которая мне нужна и пишу используя ее фичи.66
-
1,2%[Python] Использую python 2.* и буду использовать, даже если придется даунгрейдить систему и все собирать руками, а что поделаешь десу.3
-
9,6%[Python ] Использую ту версию Python что есть у нашего хостера / ориентируюсь на версию Python которая будет ближайшие год-два у большинства хостеров.24
-
28,5%[Python] Развертываю последнюю версию Python, которая мне нужна и пишу используя ее фичи.71
-
3,2%[Perl] Использую ту версию Perl что есть у нашего хостера / ориентируюсь на версию Perl которая будет ближайшие год-два у большинства хостеров.8
-
1,6%[Perl] Функионала 5.8 мне хватит до конца жизни, а работать на серверах это подмножество будет до тепловой смерти вселенной.4
-
2,4%[Perl] Развертываю последнюю версию Perl, которая мне нужна и пишу используя ее фичи.6
-
4,0%[Javascript-backend] Использую ту версию NodeJS что есть у нашего хостера / ориентируюсь на версию NodeJS которая будет ближайшие год-два у большинства хостеров.10
-
29,3%[Javascript-backend] Развертываю последнюю версию NodeJS, которая мне нужна и пишу используя ее фичи.73
-
24,9%[Javascript-frontend] Пытаюсь попасть в 90% распространенных браузеров согласно CanIUse62
-
27,3%[Javascript-frontend] Пишу как хочу, использую транспиляцию и полифиллы, версия браузера — это социальный конструкт.68
-
6,8%[Javascript-frontend] Переобуваюсь на лету, если нужно добавить в проект виджет который был нужен еще вчера, то сдела две параллельных системы сборки.17
-
2,8%[Ruby] Использую ту версию Ruby что есть у нашего хостера / ориентируюсь на версию Ruby которая будет ближайшие год-два у большинства хостеров.7
-
5,2%[Ruby] Развертываю последнюю версию Ruby, которая мне нужна и пишу используя ее фичи.13
Комментарии (53)
EasyMod
24.05.2021 00:33Ну блин, спасибо за статью! Не думал, что такая проблема вобще имеет место быть. Пишу на сишарпе, проект крутится в докере с последней версией окружения, обновляю по выходу новой версии. У хостера центос 7, вобще без разницы
PerlPower Автор
24.05.2021 00:38-1Ничего не имею против докера(даже при всех его глюках), но когда я предложил его использовать на последнем месте работы, то мне намекнули, что не все горят желанием изучать эту технологию, особенно среди девопсов, от которых проект зависел куда больше чем от разработчиков. Это я опять к тому, что есть хорошие практики, а есть процент людей, которые их используют.
ganqqwerty
24.05.2021 01:01+8Бывают девопсы без докера? Я вообще думал что второе породило первых
Mozhaiskiy
24.05.2021 02:05+7Минутка абстрактных мыслей. Между прочим, огромное количество народу работает и сегодня без докера, просто ставя нужные им пакеты через условный apt. Они есть, они живые. Просто это давняя фишка Хабра, что есть тренд некого стека решений и считается, что он затронул поголовно всех и всюду, поскольку «остальные» либо боятся быть заминусованными, либо сидят в ридонли по принципу «будет время, посмотрю». Множество мелких разработчиков обслуживают своих клиентов вообще в одно лицо и годами сидят на устаревших стеках.
Возможно, это покажется странным, но толпы разрабов делают сайты и допиливают решения не используя IDE (тупо в редакторах кода), не пользуясь контролем версий (просто делая архивы рабочих папок), не используя докеров и композеров. И имя этой молчаливой массе — легион. Что в России, что за границей, огромное количество таких «легаси-разработчиков», которые годами поддерживают сайты с CRM-системы своих клиентов (в основном, малого бизнеса) по принципу «работает же».
Я не говорю, что это всё правильно, но большая ошибка думать, что все поголовно вышли вчера из команд Гугла или Яндекса.
Catslinger
24.05.2021 02:26+1Одно дело — когда разрабы сидят на устаревшем стеке, потому что им так привычно. Другое дело, когда админы заявляют разрабам в новом проекте, что те будут работать на устаревшем стеке, потому что админам так привычно.
PerlPower Автор
24.05.2021 02:36Третье дело — когда ваш проект подмножество другого проекта, которому уже много лет, где уже есть толпы разработчиков и рабочая версия языка, от которой отступать дюже дорого.
Просто я уже с 2016 года занимаюсь тем, что мигрирую с php 5 на php 7, а уже вышла 8 версия. И я хочу понять масштабы этой беды.Sky550
25.05.2021 12:39Глядя на наш код который работает на php 7.4 со строгой типизацией и strict_types=1 почти в каждом файле, переход для нашей компании будет не сильно болезненным. Тем более что для совместимости много чего оставили как есть и не ломали.
PerlPower Автор
25.05.2021 13:13-1Хорошо, что в мире существует только PHP и только ваша компания! Вы из какого отдела, коллега, что-то вас не припомню?
raamid
24.05.2021 02:33Я из такой толпы, могу добавить, что мы довольно разношерстные. Так чисто для статистики, использую Docker, git, различную автоматизацию на базе Chokidar и Puppeteer. Но при этом в Гуглах не работал и как-то обхожусь без IDE. В том смысле, что не настраиваю IDE вроде удаленной отладки, разных плагинов и т.д. Где-то не разобрался, где-то лень.
SergeiMinaev
25.05.2021 19:22+1Возможно, это покажется странным, но толпы разрабов делают сайты и допиливают решения не используя IDE (тупо в редакторах кода)
Если это VIM, то IDE не нужна, хехе :)
Между прочим, огромное количество народу работает и сегодня без докера
Так докер нужен не во всех случаях. Это просто инструмент, который надо использовать по назначению. Поэтому само по себе отсутствие докера ни о чем не должно говорить.
Asxer
25.05.2021 12:52-1Вот есть у меня один заказчик. Когда у него проекты стартую я, то добавляю и докер и ci/cd, использую нормальные фреймворки и IDE, пишу тесты, использую git и всё такое. Всё хорошо, но когда время от времени мне прилетает от него какой-нибудь легаси проект от другой команды у меня просто волосы дыбом встают. И это случается намного чаще, чем хотелось бы. Самое интересное, что они такие решения пихают из расчёта, что это быстрее, но моя личная практика показывает, что хорошие решения не замедляют разработку, это скорее вопрос привычки — ты привык писать хорошо, значит будешь плюс-минус писать так же по скорости как и тот, кто привык делать тяп-ляп. Но ты будешь выигрывать в долгую. Жаль, что множество людей всё ещё этого не понимают.
Sm1le291
25.05.2021 06:53+2Заблуждаетесь, куча народа и сегодня работает без докера, потому что не везде он нужен
ganqqwerty
25.05.2021 10:18Да ну много кто работает без девопсов по той же причине
Sm1le291
25.05.2021 10:59+1Не вижу четкой связи девопс/докер.
Во многих компаниях совсем недавно смигрировали с Windows 7/8 на 10 и на Windows Server 2019 которые имеют возможность выполнять докер нативно.
p.s. Если вы думаете что везде линукс, то он далеко не везде.
p.p.s Если вы думаете что и без докера у дев опс нет работы по настройке развертывания сложной системы на много серверов, то и тут вы ошибаетесь
p.p.p.s Помню во время работы в Job.ru мы успешно использовали Vagrant как простую замену докера на машинах разрабов
Sky550
25.05.2021 12:41Под NET пишете? Кроме этого нигде не видел чтобы ставили винду если нет привязки к продуктам, к тому же сами МС переводят свои продукты на линуху.
Dair_Targ
24.05.2021 00:44+1Как насчёт варианта: мне достался проект на не особо новых версиях, которые, в зависимости от критичности, наличия времени и требуемых усилий обновляются в рамках штатного процесса разработки?
PerlPower Автор
24.05.2021 00:46Думаю, это все же первый вариант.
Dair_Targ
24.05.2021 01:03Нет, существенная разница в том, что это не легаси, которое разваливается, а продукт с процессом управления сторонними зависимостями.
PerlPower Автор
24.05.2021 01:21Давайте мы вернемся к этому вопросу через 5 лет.
tmk826
24.05.2021 01:56Нашему проекту более 20 лет. Начали с java 1.2. Около 1М строк кода. Используем всё что даёт java 11. Проект постоянно рефакторится. С выходом 17 версии передём на неё. Так что всё зависит от процесса.
PerlPower Автор
24.05.2021 02:08По некоторым причинам я не включил шарп и джаву в опросник. Но если вы в течение следующих 5 лет смените стэк на один из печеисленных в опроснике, то приходите, мы оба узнаем много нового, будет интересно.
dynamicult
24.05.2021 01:16+5Это не опрос, а говно какое-то. Какой срез можно получить по таким вариантам ответов? Что они покажут?
0xd34df00d
24.05.2021 04:57+1Я упомянутыми вами языками не очень пользуясь, но, если вам интересны данные из соседней комнаты:
- C++. Уволился из одной компании во многом потому, что в 2019-м они еле осилили перейти на C++14. Работу, где сегодня не было бы C++20, рассматривал бы с очень низким приоритетом (если бы искал работу на плюсах). Мой личный хобби-проект (но опенсорс) в лучшие свои годы никогда не оглядывался на версии компиляторов в популярных дистрах — в моём собранном из гита предрелизном clang есть, значит, можно пользоваться.
- Хаскель. Зависит — в своих библиотеках я на версии компилятора пятилетней давности не смотрю. Использую свежие фичи тоже относительно спокойно, но они тут нужны обычно меньше, чем свежие фичи в плюсах.
fougasse
25.05.2021 09:55Нам из комнаты рядом всё-таки надо собираться конкретной версией gcc, т.к. в новых бывают новые баги(особенно в stl, когда разработчики довольно расслабленно трактуют слово may и делают совершенно нелогично), а на старую уже костыли прикручены.
Да и всякий buildroot тоже не так просто заводится под кастомное железо с предрелизными версиями тулчейнов.
Аналогично и с миграцие на clang, последний kernel и прочее.
В теории всё должно работать, на практике - там пропатчить, там закомментировать, там пару строчек дописать.
Это, конечно, не пет-проджект, да и под хост собирается отлично даже пререлиз-билдами, но хост чисто для дебага бизнес-логики, конечные устройства, к сожалению, далеко не так современны и легко обновляются.
0xd34df00d
25.05.2021 10:04Нам из комнаты рядом всё-таки надо собираться конкретной версией gcc, т.к. в новых бывают новые баги(особенно в stl, когда разработчики довольно расслабленно трактуют слово may и делают совершенно нелогично), а на старую уже костыли прикручены.
Прикольно было бы прочитать это в том же 2019-м, когда мы сидели на DTS-4 с gcc 5.3, который крешился от достаточно простых generic lambdas. При всех редхатовских патчах и бекпортах.
В теории всё должно работать, на практике — там пропатчить, там закомментировать, там пару строчек дописать.
На кланг я в нескольких проектах мигрировал ровно для того, чтобы патчить и комментировать (мой код, не кланговский), когда он не соответствовал стандарту (gcc и clang оба делают ошибки, но разные).
Это, конечно, не пет-проджект, да и под хост собирается отлично даже пререлиз-билдами, но хост чисто для дебага бизнес-логики, конечные устройства, к сожалению, далеко не так современны и легко обновляются.
Бизнес-прожекты мне тоже разные известны. Знакомый чувак до сих пор фигачит под C++03, и ему норм, а некоторые другие люди в достаточно чувствительных к ошибке областях фигачат на C++20, и им тоже норм.
tmpnick
25.05.2021 06:48+2А причём здесь вообще хостеры?) За вас что, хостер решает как вам делать проект?
На хостингах шаблоны делают обычно админы которые не особо дружат с программированием, и тем более с последними фичами языков.
Если вы не интересуетесь последними фичами языка на котором пишете основной объём кода — на собеседовании это уже кое о чём говорит.
Да и в чём вообще проблема? Сложно сделать docker create php:8-fpm?PerlPower Автор
25.05.2021 11:01А причём здесь вообще хостеры?) За вас что, хостер решает как вам делать проект?
На хостингах шаблоны делают обычно админы которые не особо дружат с программированием, и тем более с последними фичами языков.
— Допустим вы пишете коробочный продукт.
— Допустим вам просто хватает текущих фич мейнстримной версии языка из дистров распространненых серверных линуксов.
— Допустим не все программисты горят желанием быть в курсе последних фич языка, потому что текущие фичи решают их потребности.
— Допустим вашему проекту нужны какие-то библиотеки, которые есть под текущую мейнстримную версию, но не под последнюю.
Если вы не интересуетесь последними фичами языка на котором пишете основной объём кода — на собеседовании это уже кое о чём говорит.
О том, что человек пишет код с оглядкой на действующую инфраструктуру, и понимает, что в случае отсутствия девопса, девопсить будет он сам?
ewolf
25.05.2021 08:37+5Многие на собеседованиях любят гонять по последним фичам языка.
Эта фраза задаёт дух остальной части статьи: на собеседованиях спрашивают чушь, ведь большая часть сидит на старых версиях.
При этом из первого не следует второго. То, что на собеседованиях глупо спрашивать все распоследние фичи языка, которые легко посмотреть в чейнджлоге не означает, что сидеть на допотопных версиях языков и библиотек является хорошей практикой.
Оправдания в духе "у нас тут миллиард строк кода, нас некогда его рефакторить, нас надо фичи пилить" говорят лишь о том, что уровень разработки в компании низкий, а всем заправляют менеджеры, которые стремятся получить результат здесь и сейчас. Для компании такой подход может быть и оправдан, но для разработчика работа в таком месте является не всегда правильным решением.
Это как собеседования по алгоритмам: обычно они не имеют отношения к реальной работе, но это не значит, что разработчик совсем не должен думать о своей теоретической подготовке.
PerlPower Автор
25.05.2021 11:15-1Эта фраза задаёт дух остальной части статьи: на собеседованиях спрашивают чушь, ведь большая часть сидит на старых версиях.
Какой дух статьи? Это опрос с введением и заголовком, чтобы привлечь внимание, причем показавший достаточно интересные результаты. Но из-за того что его заминусовали, он не будет отображаться в боковых блоках и провисит на виду гораздо меньше чем мог бы.
При этом из первого не следует второго. То, что на собеседованиях глупо спрашивать все распоследние фичи языка, которые легко посмотреть в чейнджлоге не означает, что сидеть на допотопных версиях языков и библиотек является хорошей практикой.
У вас те версии что используются в большинстве дистров и под которые в текущий момент работает максимальное количество библиотек — допотопные?
Оправдания в духе «у нас тут миллиард строк кода, нас некогда его рефакторить, нас надо фичи пилить» говорят лишь о том, что уровень разработки в компании низкий, а всем заправляют менеджеры, которые стремятся получить результат здесь и сейчас. Для компании такой подход может быть и оправдан, но для разработчика работа в таком месте является не всегда правильным решением.
Опрос про мейнстрим и bleeding edge. А вы выдумали себе легаси монстра и лихо его забороли. Поздравляю с победой.ewolf
25.05.2021 11:56Благодарю за поздравления :)
У вас те версии что используются в большинстве дистров и под которые в текущий момент работает максимальное количество библиотек — допотопные?
Абстрактно отвечать не готов. Часто да, язык в дистрибутиве операционный системы не самый свежий.
Опрос про мейнстрим и bleeding edge. А вы выдумали себе легаси монстра
Судя по комментариям именно в легаси монстрах этот вопрос и возникает.
justboris
25.05.2021 11:05Во-первых спрашивать про какие-либо фичи на собеседовании (и новые, и старые) – это антипаттерн. Собеседование нужно для выяснения опыта кандидата, а не проверки знания наизусть методички языка.
Но если уж в ходе разговора речь зашла о новых фичах языка, то это должно идти в плюс кандидату, потому что говорит о его любознательности и желанию обучаться.
Zibx
25.05.2021 12:32+2Есть компании которые ещё не успели мигрировать на более новые версии собеседований!
LarexSetch
25.05.2021 11:45Когда читал, думал что будет развита идея, об осознанном применении инструментов разработки включая версии языка...
Собственно новые версии языка создаются не просто так они решают определённые задачи которые необходимы для разработчиков. Да не всегда используется весь инструментарий, но это зависит от различных факторов, а уж от хостера меньше всех (хотя, если бюджеты копеешные и за каждый доллар в месяц нужно воевать, то наверно есть определённая зависимость)
К тому же обновление до последних версий очень желательно. Это связано в первую очередь с поддержкой языка и обновлениями связаннвюыми с безопасностью (но это уже другая тема)
PerlPower Автор
25.05.2021 13:19-1А во что можно развить эту идею? При условии, что в каждом конкретном случае мы по-разному ограничены ресурсами, ситуацией, кадрами. Максимум можно попытаться понять что на самом деле творится в отрасли.
LarexSetch
25.05.2021 14:51В описание личного опыта, например. Описать свой контекст, причины выбора того или иного инструмента, описать ситуацию и доступные ресурсы.
А вот то что творится в отрасли, гораздо сложнее понять и разобраться.
F0iL
25.05.2021 15:54Ну вот у нас семейство больших промышленных Embedded-Linux проектов с многолетней историей, перешли c С++11 на C++17 и всеми командами нарадоваться не можем, и да, мы реально используем много новых фич из новых стандартов. Разрабатывать стало приятнее, код стал гораздо читаемее и интуитивно понятнее. С интересом и надежной смотрим на C++20, когда его полностью будут поддерживать компиляторы.
Некоторое время назад имел отношение к JS-разработке — там все еще веселее. Когда был переход от ES5 к ES6 с добавлением промисов, async/await, arrow functions, нормальных классов и очень многих других вкусностей, некоторые люди тоже бурчали, мол, «напридумывали всякого, вообще наплевать.» А если сейчас вы про всё это не знаете и не используете, вас просто посчитают профнепригодным разработчиком, и правильно сделают. Поэтому принцип простой: за новыми фичами языков стоит следить и стоит их понимать. Потому что это «новые фичи» в итоге станут мейнстримом.
rozalba
25.05.2021 01:12А как же безопасность? Обновления — это не только синтаксический сахар и новые фичи, это еще и фиксы уязвимостей. В том же PHP обновление — это одна из рекомендаций безопасности в официальной документации пруф
PerlPower Автор
25.05.2021 02:12В поддерживаемых дистрибутивах тоже регулярно выпускаются обновления безопасности.
andreymal
Во-первых, любой нормальный хостер предоставляет возможность установить систему из собственного iso-образа
Во-вторых, контейнеры же
PerlPower Автор
В третьих — это лишние действия, которые кто-то должен выполнить по сравнению с развертыванием стандартного шаблона. А потом нужна одна библиотека, вторая, третья и уже стоишь перед выбором собирать кучу всего из сорцов или положиться на мейнтейнеров текущего мейнстримного дистра.
andreymal
Ну значит контейнеры, это давно уже общепринятый стандарт, и совершенно неважно какой там шаблон у хостера
PerlPower Автор
Да, и тестирование стандарт. И много что еще стандарт, но это отнюдь не значит, что 100 % отрасли его использует.
Zibx
Про node.js вообще не понял что за стандартный шаблон. Если проект без ci\cd — nvm и nvm install любая.версия. Если проект с кучей инстансов, то нужны контейнеры и в них будет именно та версия которая нужна разработчику. Не обязательно прям последняя, но, как минимум, LTS.
Bonio
Ну вот, кто не использует, тот и пологается на мамантовое по всяких хостеров.
Kromeshnaja
Я точно также могу заявить, что поддерживают контейнеры сейчас практически все.
Так что для меня более актуально версия языка поставляемая с базовым образом docker file
nikbond
А зачем вы работаете на такой галере, которая игнорирует стандартные отрасли? Мне кажется это просто вопрос профессионального самоуважения.
PerlPower Автор
Потому что могу себе это позволить.
nochkin
Эти «лишние действия» направлены на предсказуемость системы в целом вне зависимости от хостера и прочего. Не переписывать же код только из-за того, что решил сменить хостера.
PerlPower Автор
Да, можно его изначально писать так, что при смене сервера ничего не придется переписывать. Причем без контейнеризации.
nochkin
Можно писать под древнюю версию, но бывает, что некоторые фичи выкидывают в более новых. Под какую-то более конкретную версию всё равно надо ориентироваться.
И лучше когда это зависит от тебя, а не от хостера что бы не создавать vendor-lock для своего проекта.