Pull to refresh
0
0

Sr. Software Engineer

Send message

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

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

Ходил один раз даже на собес в этом состоянии, но повторять такое я бы не рекомендовал, субьективно все длилось очень долго и мучительно, но собес тот, что удивительно я даже прошел.

Не преувеличивайте, никто и нигде не спрашивает про балансировку RB tree. На литкоде в большинстве своем достаточно простые задачки, и то, что дают на собеседованиях - тоже. Не понимаю этого бесконечного нытья на тему решения алгоритмических задач, ведь все эти алгоритмы и структуры данных буквально повсеместно встречаются в том же ядре Линукса, файловых системах, базах данных и т.п. Хотя бы минимальную базу да полезно знать.

Да создавать просто все объекты на стеке main-треда как локальные переменные и использовать потом их reference. У вас же один тред в однопоточном приложении и нет других тредов с кем объекты можно шарить.

Если мы говорим про однопоточное приложение, то чтобы менеджить динамическую память shared_ptr не нужен. Динамическая память обычно менеджится классами-обертками (контейнер/буфер) и освобождается при уничтожении таких объектов в деструкторе. shared_ptr такую динамическую память напрямую не менеджит, он просто контролирует количество ссылок (копий shared_ptr) и вызывает деструктор какого-то объекта only once, который и освободит эту память. В однопоточном приложении объекты попросту не с кем (чем) расшаривать и вместо shared_ptr можно просто создавать объекты на стеке это треда или если уж очень хочется ptr, то можно использовать unique_ptr. Как только такой объект покинет скоуп он уничтожится автоматически почистив за собой всю динамически аллоцированную память.

Мы же про shared ownership говорим, а не про динамическую память.

Сходу придумать случай когда Rc прям необходим в однопоточном приложении я не могу, но подозреваю, что с помощью Rc можно меньше запариваться об ownership и писать код будто у тебя язык с GC.

А зачем он нужен в однопоточном приложении, если все объекты можно, в целом, создать на стеке этого одного потока и использовать только reference?

Все, что вы написали безусловно абсолютно правильные и логичные рассуждения. Только вопрос в том, как разделение на краткосрочные и долгосрочные объекты удобно и красиво выразить в коде? Ведь тот же service call это не просто один вызов, где можно все объекты аллоцировать на стеке и они потом умрут сами собой, это может быть множество асинхронных операций, которые шарят какие-то данные между собой. Как аллоцирование всех этих объектов объединить одной нитью в коде, чтобы это не выглядело "ugly" и при этом минимизировать риск ошибок? Использование того же obstacks в лоб выглядит достаточно сложным.

А вообще reference counting, равно как и garbage collection - это путь в никуда (вместо них есть obstacks, arena memory regions)

А почему тот же obstacks это путь куда-то причем вместо reference counting/garbage collection? У нас появляется дополнительный слой в виде чанков/регионов/obstackов. Теперь мы должны решать какие чанки и когда аллоцировать, какие объекты в какие чанки класть, в каком порядке класть, вызывать правильные функции типа grow/fastgrow и т.п. Да, перфоманс аллокаций/деаллокаций при таком подходе безусловно лучше, но memory management становится еще более сложным.

Если перфоманс аллокаций/деаллокаций для нас принципиально критичен, то такой подход безусловно имеет смысл. А если мы хотим упростить себе memory management и чтобы память лишний раз не утекала, то особого смысла в obstacks я не вижу.

Так я осталась без наставника – снова прокачивать навык самостоятельного обучения и поиска информации.

Да, тепличные условия с наставником встречаются нечасто и такую возможность, обычно, имеют выпускники/студенты профильных вузов в больших компаниях. А остальных, как правило, сразу кидают на амбразуру.

Но это и имеет свои несомненные плюсы. Хорошая прокачка самостоятельности и характера потом сослужит тебе добрую службу.

Вот сами подумайте - есть куча актрис Голливуда. Ну, не знаю. Плейбой или любой аналогичный журнал откройте

Там немалая доля заслуги в работе стилистов, плюс пост-обработка фотографий, видео и т.п..

Если надо мной поработают голливудские стилисты, то я пол-Америки "склеить" смогу, утрируя конечно.

Было круто, когда мы ходили в офис

У меня было ровно наоборот в питерском офисе Яндекса. Хоть он выполнен достаточно ярко внутри, все равно, по моим ощущениям он был какой-то "пластиковый" и бездушный. Да и добираться до него на общ. транспорте было неудобно. Поэтому полной удаленке с марта 2020 я был очень рад.

Спасибо за разъяснения. Это тогда просто прекрасные новости. Подумываю теперь вернуться обратно в Казахстан после 7-лет скитаний, открыть ИП и дальше работать по удаленке.

В Казахстане есть 2 больших минуса по сравнению с той же Арменией и Грузией, что ставит под сомнение переезд туда.

  1. Более сложное иммиграционное законодательство, которое, по сути, является копи-пастой с российского. Нужно делать регистрацию, чтобы остаться на 90 дней, далее нужно делать РВП, чтобы остаться дольше чем на 90 дней. Для ВНЖ нужно получать некий листок убытия из РФ, ну и т.п.

  2. Если ты открываешь ИП по упрощенке и платишь 3% подоходного налога, то все равно, чтобы заплатить самому себе ЗП, нужно отдать 10% на пенсию, 3,5% на соц. отчисления и 5% на медстраховку, что уже в сумме больше 20% и убивает всю привлекательность для удаленщиков, фрилансеров и т.п.

Я как-то выгорел, как мне кажется, еще до начала самой работы. Хочу поделиться своей историей очень быстрого выгорания.

Я только закончил 3-й курс универа (2011-й год) и искал работу, где будет уже наконец-то "настоящее программирование". До этого я немного подрабатывал 1С-программистом, но это было совсем не мое и мне хотелось писать на нормальном языке. Я тогда за полгода подучил Джаву до более-менее нормального уровня (помогло решение олимпиадных задач и какое-то знание С++). И это был единственный язык (кроме PHP), на котором предлагалось большинство вакансий в моем городе.

Вариантов вакансий без опыта было маловато, но меня таки пригласили на собеседование в одну аутсорсинговую компанию. Они тогда активно набирали джунов. Как такового технического собеседования нормального не было и мне сразу дали тестовое задание реализовать простое web-приложение на сервлетах. Я сделал его за пару дней, заодно изучив какие-то азы веб-программирования. Отправив тестовое задание я стал ждать. Я очень сильно волновался, т.к. эта компания тогда мне казалась по сути единственным моим шансом устроиться на нормальную работу. Мне очень хотелось зарабатывать какие-то нормальные деньги и совмещать учебу и работу. Я считал, что если меня сейчас не возьмут, то придется вернуться обратно в 1С или учить PHP. А я тогда так мечтал, так мечтал писать на Джаве и делать какие-то интересные проекты, прокачиваться и т.п.

Ожидание было очень томительным и изматывающим, я не мог сфокусироваться ни на чем другом, кроме как на мыслях о будущей работе, вздрагивал от каждого уведомления на почту. Так прошло примерно 2 недели и мне наконец-то ответили, что я все сделал хорошо и меня берут на работу. Такое длительное ожидание объяснили тем, что у их программистов просто не было нормально времени проверить его. А я себе тогда надумал, что я сделал все настолько плохо, что им даже пренебрежительно просто написать отказ.

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

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

А потом случилась и моя первая в жизни паническая атака (благо дома), сердце тогда колотило так, что я думал, что я вот-вот умру от сердечного приступа. Я тогда пошел проверять сердце и с ним оказалось все вообще прекрасно. А ощущения все не никак не проходили.

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

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

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

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

Не мог не пройти мимо этого топика, т.к. сам оказался в ситуации автора чуть больше года назад. Но, я все же решил рискнуть и принять оффер от Яндекса и вот что из этого вышло.
Я шел на конкретный и довольно интересный проект в Яндекс.Облако. Проект этот в т.ч. связан с опенсорсом, а именно с ClickHouse. Это несомненно добавляло вистов по сравнению с тем, чтобы идти в какой-нибудь абстрактный отдел глубоко в недрах Яндекса. Плюс, я до этого тоже контрибьютил в опенсорс и получал за это ЗП. Мне это очень нравилось и я хотел продолжить эту традицию.
По началу было очень тяжело. Весь мой прошлый опыт был связан с Java миром. А теперь мне надо было писать на С++ (ClickHouse), Питоне и Го (Облако). Плюс, привыкал к внутренним инструментам и инфрастуктуре Яндекса. Я очень хотел уволиться уже спустя 2 месяца работы, но перетерпел этот момент, т.к. понимал, что засиделся в своей зоне комфорта и это был переходный период. Плюс, стремно было отдавать обратно сайн-ап бонус и хотелось проверить себя чего я стою на самом деле.
Спустя пол-года стало гораздо легче, а спустя год я чувствую себя уже очень уверенно. Освоил на достаточном уровне С++, прокачал ширину знаний и навыков. Привык к специфике работы в большой компании, когда ты не можешь просто зайти в соседний кабинет или подойти к соседнему столу и решить любые вопросы. Можно сказать, вышел на новый уровень.
Если считать по деньгам за год, то с учетом сайнапа, премий и уже завестившихся RSU я уже вышел в плюс на > 1 млн. рублей. А условия по зарплате, что на прошлой работе, что в Яндексе у меня были очень близкие к автору (он писал это в каком-то из комментариев). Но мне повезло, т.к. первые RSU мне выдавали по курсу 35 $ за акцию, а сейчас они стоят 70$. Но в любом случае, я был бы в плюсе.
Насчет работы по ночам — это миф. Единственное, когда тебя может это побеспокоить — во время дежурств. Дежурства и то, что они не оплачивается, а только компенсируются отгулами — это реально жирный минус Яндекса. И ладно, если ты дежуришь за какой-то один сервис, но сотни кластеров реальных пользователей могут реально стать болью, особенно по началу. Но ситуация с каждым разом становится все лучше. Да и привыкаешь просто, как и ко всему…
А так, я работаю в среднем 6 часов в день и мне этого времени спокойно хватает, чтобы закрывать все свои задачи и получать D на ревью.
Я для себя сделал вывод, что продуктивно идти в Яндекс можно в 3-х случаях:
1) Когда ты идешь туда с конкретными целями и за конкретными знаниями и возможностями. Идти, условно, Java-разработчиком куда-нибудь в Яндекс.Дзен мне лично кажется такой себе затеей. А вот, например, идти разрабатывать распределенную СУБД и изучать новые знания и языки — вполне себе ничего. Будем честны, в РФ, в этом плане по масштабам нагрузки и хардкора у Яндекса конкурентов нет.
2) Если ты только выпустившийся студент, то можно очень неплохо прокачаться, особенно, если попасть на какой-нибудь интересный проект. Я в свои 22 мог только мечтать о Яндексе, работая на безликой галере по написанию говнокода.
3) Если ты уже состоявшийся человек и тебе нужна стабильность и тихая гавань. Я встречал достаточное кол-во программистов 40-50+ в Яндексе и вроде никто их не собирается никуда сливать в ближайшем будущем.
Был у меня подобный опыт на одном проекте. Первый же пулл-реквест получил разнос в 100 комментов, некоторые из них вообще были в виде картинок «смех*чек». Через месяц я уже практически уволился, т.к. не мог уже больше терпеть такого необоснованно-агрессивного отношения. Благодаря уговорам своего менеджера с прошлого проекта, я все-таки остался, и сжав зубы, продолжил терпеть. Спустя какое-то время стало легче. Но через год я все равно уволился. Последней каплей стал коммит, где я реализовал графовый алгоритм, с помощью которого мы перебалансировали Кафку и сэкономили по 3 кора на каждой машине, который тех-лид ревертнул, когда вернулся из отпуска со словами «НИПАНЯТНА».
Спору нет, глядя на тот самый первый пулл-реквест сейчас, я понимаю, что с точки зрения дизайна кода, он был не очень. И за год на этом проекте я сильно прокачался в этом плане, за что я этим людям благодарен. Но этот год стоил мне тонну нервных клеток и, наверное, небольшой психологической травмы.
Сейчас я на новом проекте и новой команде. У нас все просто идеально с точки зрения морального микроклимата.Я делаю много ревью, и стараюсь максимально мягко относится к человеку, чей код я оцениваю. Придираюсь только к совсем уж явным косякам типа копи-пасты, нейминга, читаемости, но стараюсь давать свободу в реализации, если код решает проблему.
Недавно даже похвалил в одном пулл-реквесте человека за написанный код, так он в Слаке аж переспросил на всякий, не стеб ли это :D
Попробую перенести эту практику с похвалой на постоянную основу и буду нести добро в массы. А то, мне кажется, люди привыкли слушать только замечания.
В статье упущен один очень важный момент — это мотивация. Судя по содержанию, она здесь только одна — деньги. И это печально.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity