Здравствуйте, checkthestack, Вы писали:
C>Назрел карьерный вопрос, поделитесь идеями...
Ого, после этого своего вопроса я сюда три года не заходил, ничего себе тут обсуждений наплодили ;DD
Ну раз зашёл, не могу не отчитаться о решении этого своего вопроса и трёхлетних итогах.
Я уволился из той компании и месяца 3-4 потратил на самостоятельное изучение языка Golang. Без проблем устроился работать в российский банк пилить бэкэнд на go. Переход из C++ в Golang оказался очень простым, а вот переход из десктопных приложений, драйверов и прочего low level в современный бэкэнд оказался уже не таким лёгким, но увлекательным. Писать на golang приятно. Конечно тяжело, как и на любом языке, писать чисто, расширяемо, и легко тестируемо, но ты не тратишь время на бесконечное изучение references-ов в попытках избежать UB и других выстрелов в ногу. О переходе из C++ не жалею, удовольствия больше, нервяка меньше, аппетит улучшился, сон нормализовался, судя по письмам рекрутёров на linkedln и своим периодическим поискам на hh актуальность как разработчика возросла. В C++ было ощущение что ты постоянно пытаешься догнать актуальные знания, ты всё время где-то "не в теме". В golang быстро выходишь на универсальное понимание как пишут все и больше времени можно уделять предметной области.
Не знаю сколько я бы сейчас зарабатывал плюсовиком, но гошником выходит 230к на удалёнке на грейде middle+. По собственным ощущениям внутри компании и вакансиям кажется что пространство для роста есть
LK>Ну, всё-таки "переключение" на другой язык (привыкание к новому синтаксису, изучение библиотек) требует времени. И не каждый наниматель готов ждать пока работник "переключится".
Дело фактически не в языке.
а) системы сборки разные.
б) "экология" вокруг языка сильно зависит от задач.
Отсюда — много разных фреймворков под разные задачи
Даже на одном языке
А сам язык проблемы не представляет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, SkyDance, Вы писали:
N>>Да, можешь посмотреть, как оно работает в Яндекс такси, например. Там скорости Go или Java не хватает, всё на С++ SD>На С++ там не по этой причине.
Чувствуется какая-то недосказанность. Так по какой?
У них есть доклады, как переписывали части с Java на C++ как раз из-за тормозов первой. То есть C++ у них там не сразу всё завоевал.
Теперь выкатили свой userver в опенсорс, как бы играют в открытую.
Здравствуйте, Nuzhny, Вы писали:
N>У них есть доклады, как переписывали части с Java на C++ как раз из-за тормозов первой. То есть C++ у них там не сразу всё завоевал.
Чистая спекуляция: проект начинали "модно, стильно, молодежные" на жабе. Что-то пошло не так. Техлидов призвали из другого, успешного подразделения- зубров из 90-х. Они написали как знают, на плюсах.
Хороший ли выбор C++ для распределенного приложения- нет. Go лучше бы подошел.
Здравствуйте, Артём, Вы писали:
Аё>Хороший ли выбор C++ для распределенного приложения- нет. Go лучше бы подошел.
Тёмчик, ты бы определение "распределенного приложения" сперва сформулировал бы. А то ведь и расчеты на больших кластерах посредством MPI -- это тоже распределенные приложения. И как-то не слышно примеров, что Go там лучше бы подошел.
Да запиши ты себе уже постулатом: "C++ не годится для перекладывания ЖСОНа в базку и обратно!" И точка. Никто с этим не спорит. Но мир не ограничивается только лишь этим. Тебе тут люди говорят про другое применение плюсов. Но ты зациклился на том, что нужно получить запрос от юзера, демаршалить/десериализовать/смапить/<you name it> DTO во внутренний объект, сходить в базу, в другую, третью, скомпоновать ответ, обмазать слоем бизнес-логики, смаршалить обратно и отдать ответ. Еще раз: для таких задач плюсы действительно далеко не лучший выбор.
Здравствуйте, DiPaolo, Вы писали:
DP>Да запиши ты себе уже постулатом: "C++ не годится для перекладывания ЖСОНа в базку и обратно!" И точка. Никто с этим не спорит.
Злые языки говорят (говорят!) что если хочется экономить на железе, то "не годится" плавно перетекает в "один из немногих реальных вариантов". Вруть, небось.
А в Яндексе просто нормальных архитекторов и программистов нет, масштаба Тёмки, вот и страдают ерундой на плюсах.
S>Злые языки говорят (говорят!) что если хочется экономить на железе, то "не годится" плавно перетекает в "один из немногих реальных вариантов". Вруть, небось.
Ну когда нужно жестко оптимизировать, то тогда конечно достают с полки плюсы/Си или Раст берут. Но это от силы 1% случаев, в подавляющем большинстве кейс тот, что я описал выше: взять отсюда, положить туда, отдать ответ.
Здравствуйте, DiPaolo, Вы писали:
DP>Ну когда нужно жестко оптимизировать, то тогда конечно достают с полки плюсы/Си или Раст берут. Но это от силы 1% случаев, в подавляющем большинстве кейс тот, что я описал выше: взять отсюда, положить туда, отдать ответ.
Мне кажется, что уже лет 10 как (а может и 15) плюсы и нужны лишь в 1% случаев. Но, с учетом того, что информатизация проникает в окружающую нас действительность все ширше и ширее с каждым годом, этот 1% в количественном выражении все равно не падает.
Здравствуйте, LaptevVV, Вы писали:
LVV>А сам язык проблемы не представляет.
Это главное.
Я не айтишник. Но тоже давно компы использую — БЭСМ-4, pdp11... Алгол, Фортран, Асм (pdp), C/C++, Дельфи.
Вспоминаю как-то (подрабатывал в 90-х) начальник дал задание дописывать серверный софт на PHP. Когда я сказал, что не знаю ни php, ни html, ответил — 3 дня на изучение и работай.
Но это было >20 лет назад... сегодняшнюю ситуацию зацикливания на языках и фраймвеках не понимаю.
Здравствуйте, Артём, Вы писали:
Аё>Чистая спекуляция: проект начинали "модно, стильно, молодежные" на жабе. Что-то пошло не так. Техлидов призвали из другого, успешного подразделения- зубров из 90-х. Они написали как знают, на плюсах.
C++ команда Яндекса сильная и достаточно молодая, её представители есть в комитете по C++, а также среди авторов некоторых модулей boost. Всё мимо.
Аё>Хороший ли выбор C++ для распределенного приложения- нет. Go лучше бы подошел.
Тебе-то откуда знать? Кажется, что и современные плюсы особо не знаешь, и на То не пишешь, и с требованиями проекта не знаком. Или я что-то путаю?
Здравствуйте, SergeyIT, Вы писали:
SIT>Но это было >20 лет назад... сегодняшнюю ситуацию зацикливания на языках и фраймвеках не понимаю.
Не понятно, это был вопрос, утверждение или бахвальство.
Однако, есть известный в узких кругах Максим Лапшин из Erlyvideo, который придерживается таких же радикальных взглядов, как и ваш начальник из 90-х. Вот, например:
Человек пишет на C++, после чего я даю ему кусок кода на Erlang и говорю: «Поправь». Я не ожидаю от него услышать: «А я не знаю, что писать». Не знаешь – разберись. Два часа тебе на то, чтобы освоить новый язык.
И этот же Максим Лапшин любит говорить (например, на LOR-е), что писать программы на C++ -- это "разбирать корки по утрам" (подразумевается "core dumped" из Unix-ов).
Ведь как-то же в одной голове и то, и другое уживается.
Здравствуйте, so5team, Вы писали:
SIT>Но это было >20 лет назад... сегодняшнюю ситуацию зацикливания на языках и фраймвеках не понимаю. S>Не понятно, это был вопрос, утверждение или бахвальство.
Утверждение.
S>Однако, есть известный в узких кругах Максим Лапшин из Erlyvideo, который придерживается таких же радикальных взглядов, как и ваш начальник из 90-х. Вот...
Ничего радикального не вижу в этом. Начальник хорошо знает способности и возможности своих подчиненных... До этого лет 5 уже работал у него.
Кстати, учиться надо всю жизнь.
ЗЫ
Помню, в молодости, попросил помочь преподавателя, который читал нам Алгол60, изучить Фортран. Он посмотрел на меня как на полоумного и сказал — а чего там учить, 4 часа теоретических — 4 часа практических.
Взял описание FortranIV (DEC) из документации pdp11 (английского не знал). И через 8 часов стал писать свои программы. (Не бахвальство — так нас учили!). Были и другие случаи...
Здравствуйте, SergeyIT, Вы писали:
SIT>Утверждение.
А зачем оно было сделано?
SIT>Ничего радикального не вижу в этом.
Т.е. и вы считаете, что человека в современных условиях можно за пару-тройку дней перебросить с одного языка на другой?
SIT>Помню, в молодости, попросил помочь преподавателя, который читал нам Алгол60, изучить Фортран. Он посмотрел на меня как на полоумного и сказал — а чего там учить, 4 часа теоретических — 4 часа практических. SIT>Взял описание FortranIV (DEC) из документации pdp11 (английского не знал). И через 8 часов стал писать свои программы. (Не бахвальство — так нас учили!). Были и другие случаи...
Если речь о том, чтобы научиться перемножить две матрицы 100x100 на другом языке программирования, то может и 4-х часов много.
Только вот таких простеньких задачек у многих из участников этого обсуждения нет в принципе уже 20, а то и 30 лет.
В современных условиях скорее вызывает удивление утверждение вроде вашего. Вы можете не понимать почему нужно тратить много времени на погружение в язык/фреймворк до тех пор пока вам не потребуется, скажем, подправить кусок чужого C++ного кода, который на Boost.Spirit написан. Или вы столкнетесь с каким-то багом в потрохах ClickHouse или упомянутого здесь Яндексовского userver, и именно вам потребуется разобраться и довести до ума. И так, чтобы оно не падало затем по ночам. И так, чтобы пришедшие после вас не поминали вас незлым тихим словом.
Тут-то и выясняется, что можно дружно ржать на форумах над вопросами о виртуальном деструкторе, а потом выяснять какого органа в коде откровенная лажа и память течет (в том числе и из-за того, что кто-то деструктор как virtual не пометил).
Примерно в 2014 г., когда у нас в компании вся разработка, по сути, была только в СУБД Oracle (с помощью PL/SQL), у кого-то возникла идея написать продукт на Java. Поставили разработчикам Java и сказали писать на ней. Экспертизы по Java ни у кого не было, архитектуру никто не проектировал, процедурный стиль программирования просто перенесли на Java, а для отрисовки UI разработчики выбрали Vaadin Framework. На продукте разработчики менялись с регулярностью, кто-то пытался переписать отдельные части, кто-то создавал новые классы, соответствующие ООП, но архитектуры по прежнему не было и официально бизнес не давал времени на рефакторинг. Скорость разработки фич была невысокой, в продукте часто появлялись ошибки, они долго находились и исправлялись, а мотивация разработчиков медленно и верно двигалась к 0.
Примерно в 2014 г., когда у нас в компании вся разработка, по сути, была только в СУБД Oracle (с помощью PL/SQL), у кого-то возникла идея написать продукт на Java. Поставили разработчикам Java и сказали писать на ней. Экспертизы по Java ни у кого не было, архитектуру никто не проектировал, процедурный стиль программирования просто перенесли на Java, а для отрисовки UI разработчики выбрали Vaadin Framework. На продукте разработчики менялись с регулярностью, кто-то пытался переписать отдельные части, кто-то создавал новые классы, соответствующие ООП, но архитектуры по прежнему не было и официально бизнес не давал времени на рефакторинг. Скорость разработки фич была невысокой, в продукте часто появлялись ошибки, они долго находились и исправлялись, а мотивация разработчиков медленно и верно двигалась к 0.
Так тут налицо совершенно другие корневые проблемы:
— отсутсвие опыта у главного технического спеца в выбора технологий; возможно, молодые горячие тимлиды принимали решение, и захотели "пощупать" хайповое, или для строчки в резюме
— частая смена владельца кодовой базы
— кадровая текучка
— в целом неопытность (писать нужно придерживаясь стиля и парадигмы соответствующего языка/фреймворка, а не тащить процедурный стиль в Джаву)
— может была элементарная дурость или желание быть в тренде
— может была политическая борьба среднего или высокого менеджмента
Думаю, с тем же "успехом" они бы и на C#, и на Питон, и на JS переехали.
Здравствуйте, DiPaolo, Вы писали:
DP>Так тут налицо совершенно другие корневые проблемы:
Экспертизы по Java ни у кого не было
DP>- отсутсвие опыта у главного технического спеца в выбора технологий DP>- в целом неопытность (писать нужно придерживаясь стиля и парадигмы соответствующего языка/фреймворка, а не тащить процедурный стиль в Джаву)
Да уж, "вы не понимаете, это другое" (с)
DP>Думаю, с тем же "успехом" они бы и на C#, и на Питон, и на JS переехали.
Да ладно, тут вот утверждается, что освоить новый язык -- это как два... "Ничего радикального не вижу в этом.", если дословно.
Ну можно быть экспертом в языке, а можно быть экспертом в разработке ПО. Я тоже считаю язык всего лишь инструментом. Первичен продукт. Опытный инженер-разработчик ПО сможет подобрать нужные инструменты и освоить их в короткие сроки. В конце концов, он возьмет в команду нужного эксперта или проконсультируется с таковым. А "одностаночник"-эксперт в одном языке будет этот язык пихать где надо и не надо.
LVV>>А сам язык проблемы не представляет. SIT>Это главное. SIT>Я не айтишник. Но тоже давно компы использую — БЭСМ-4, pdp11... Алгол, Фортран, Асм (pdp), C/C++, Дельфи. SIT>Вспоминаю как-то (подрабатывал в 90-х) начальник дал задание дописывать серверный софт на PHP. Когда я сказал, что не знаю ни php, ни html, ответил — 3 дня на изучение и работай.
Аналогично. В прежние времена SIT>Но это было >20 лет назад... сегодняшнюю ситуацию зацикливания на языках и фраймвеках не понимаю.
А я понимаю. Вот сидел я в плюсах, более-менее знал про все необходимое.
А на работе пришлось вдруг на яву пересесть.
Объем фреймворка просто гигантский!
Да еще внешние сторонние компоненты.
Системы сборки совершенно другие по сравнению с С++.
В общем, фактически с нуля врубится в корпоративный легаси-код весьма сложно...
Поэтому в корпоративной разработке сложно сменить специализацию — очень много технических деталей придется осваивать фактически с нуля...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!