kitchen

2 August 2022

🧱Байтодрочеры vs 🚜Джейсоноукладчики

by Anton Sosnin

img

👴 В айти существует поверие, что настоящие программисты пишут на C++, Rust или на худой конец на Си, перекладывают гигабайтики и делают что-то серьёзное, какое-то НАСТОЯЩЕЕ программирование. Эту идею, например, вбросил на обсуждение Фил на записи выпуска “Мы обречены” со мной.

⌛ Когда-то и я, C++ джун, тешил себя такой мыслью: ну и что, что зарплата 500$, зато ЭЛИТА. Не то что эти бэкендеры со своим PHP. Или джаваскриптеры, которых тогда ещё называли верстальщики. Делал я правда десктопные продукты, из которых вычищал баги и легаси, и до задач с хоть какими-то интересными алгоритмами мне было ещё расти и расти.

📚 По мере роста я потрогал другие языки и технологии. За это время Go занял свою нишу в качестве Си для дурачков (не осуждаю), Python укрепился как язык для ноучной ноуки, прототипирования и изучения программирования (произошла чудовищная ошибка). А JS стал языком вообще всего, прям как C++, со своими болезнями, попытками их излечить, часто недостаточно успешными, долгой компиляцией, но с одним принципиальным отличием.

🤔 C++ считается сложным языком для НАСТОЯЩЕГО программирования, а JS сложным не считается. Ну а раз язык не сложный, начать изучать его может кто угодно, но и программирование будет ненастоящие. Суррогат такой, программный субпродукт, для ненастоящих программистов, для любого с улицы, садись и пиши, даже линковщик под ноги на входе не кидают. И в лицо не бьют, и денежку платят, в целом жить можно: 60k$ в год это тебе не 6k$ всё-таки. Чувствуете странность?

💸 Программирование ненастоящие, а зарплата настоящая! А как же так произошло? Джейсоны, конечно, тяжелее, чем байтики, но спину не сорвешь. И алгоритмы на собеседованиях одинаковые. Но мир изменился и одними плюсовиками массовый продукт делать сложно (потому что C++) и дорого (потому что долго), особенно если для веба. А одними джаваскриптерами просто (в npm даже is-odd есть и в целом есть npm) и дешёво (потому что не 3 года, а 4 месяца).

❓ Что нужно знать программисту? Не чтобы пройти собеседование, это отдельная тема, а чтобы успешно работать 98% времени.

🚲 Первым - C++, стандартную библиотеку и что сказать компилятору, с помощью, например make или CMake. Любителям Visual Studio можно без последнего.

🚗 Вторым - JS, Webpack, HTML, CSS, DOM и ещё обычно в требованиях обязателен какой нибудь из фреймворков или node.js иначе ну не с нуля же всё писать, мы не в мире C++.

🧪 Можно возразить про глубокие хард скиллы, типа как устроен компьютер, прерывания, регистры, потоки, предсказания переходов. А с другой стороны, как устроен современный веб? DNS, CDN, инструменты для кеширования, сжатия, трассировки и, само собой, JS движок.

💪 Чего сказать то хотел? Не бывает ненастоящих программистов среди тех, кто работает. В смысле реально работает, трудится, занимается программированием как ремеслом. Тех кто ловко лавирует между митингами давайте оставим для другой статьи.

🕵️‍♂️ В следующий раз когда подумаешь: “Вот он - настоящий, а я так, вкатился”, оцени что заставило тебя так думать. Другой набор знаний? А он тебе нужен? Серьезные задачи? Некоторые люди вообще в космос летают! Профессионализм? Вот тут, скорее всего, есть чему поучиться, главное не перепутать кто действительно профессионал, а кто инфлюенсер.

😎 В следующий раз когда подумаешь: “Вот он - вкатился, а я - настоящий”, подумай ещё раз. Сможешь ты, настоящий, тоже самое что и вкатившийся? Продукт до конечного пользователя за несколько месяцев доставить, например? Какой толк в подроченых байтиках, если твой пользователь недоволен?

И важное, но очень короткое видео на тему:
Сухоруков: талант и труд