Comments 204
Скажу про Гугл, там действительно 3 из 5 собеседований — это задачи по кодингу, но я бы не назвал их оллимпиадными. Меня спрашивали о развороте слов в строке, буферизации и только один вопрос был про направленный графы, но я прямо ответил, что понятия не имею, что это такое. Устроился на уровень 5 т.е. senior.
У товарищей такого же рода задачи спрашивали.
Уровня английского, когда человек может сказать «хере ви итерейт овер зе лист энд инкремент вариайбл джи» более чем достаточно, чтобы пройти интервью и выйти на работу. Через 3-6 месяцев люди начинают говорить легко и быстро. Конкретно в FB есть спонсируемые курсы для не нейтив-спикеров.
Плохой английский на интервью мешает только кандидату. Вместо того чтобы сфокусироваться на задаче, человек тратит очень много сил на то чтобы просто говорить. Но даже это не проблема почти никогда.
Видимо все мои знакомые не очень способны к языкам, большинство через 6 месяцев только начинает понимать, о чем говорят на митингах :)
То бишь примерно Easy-Medium с leetcode?
levels.fyi
>Зависит ли за напрямую от грейда?
Да, есть условные вилки для каждого грейда.
>Может ли хотя бы теоритически Джуниор получать больше Мидла? Мидл больше синьера?
Часть компенсационного пакета опциональна: бонусы и RSU. Они зависят от перформанса. Технически успешный мидл может по итогу собрать больше среднего сениора.
>Какая вообще зп в Лондоне в Фейсбуке? Реально ли получать 180-200 тысяч в год?
Очень расплывчатый вопрос. Какой валюты, гросс или нетто, на какой позиции, базовой зарплаты или тотала. Вообще, levels.fyi :) Там можно отфильтровать по позиции и по офису.
£180-200k в фб в Лондоне получать вполне реально, сколько от этого будет оставаться после налогов можно посмотреть на https://www.uktaxcalculators.co.uk/
Моя математика показывает что для 200к налог будет 41.5%, что как бы совсем немало:)
Не забывайте, что в России налоги тоже не маленькие. На западе обычно в эти 40% все взносы уже входят, а в России это все дополнительно к 13% приплюсовывается. Однако, на западе довольно часто встречается прогрессивная шкала налогов. В итоге много где налоги в среднем меньше, чем России. Айтишников это меньше касается, но тем кто меньше зарабатывает — сильно помогает.
«Бред» — это сложное слово про интервью, я не хочу спорить. Но практика показывает, что подобное интервью позволяет выбирать хороших инженеров. Обратное не верно. Я не спорю, что бывают false negative, когда очень крутой инженер не смог решить задачу. Но тут значит все факторы (коммуникация, подсказки, кодинг, да и все 4-5 интервью прошли не так). Это неудача, но они случаются.
К сожалению, многие думают, что интервью удалось, если решишь задачу, а если не решишь, то провалено. Это не так. По крайней мере не должно быть так. Суть — понять, как человек можно думать и придумывать. Тогда есть высокий шанс, что человек способен научиться работать.
Разумеется, есть найм спецов в конкретную отрасль, ну допустим в команду баз данных. Но обычно это какой-то уровень стафф или выше, когда нужны действительно глубокие знания, чтобы уметь вести команду и продукт в верном направлении. Тогда уже разговор будет другой и в стартапе и в большой компании.
Про миддл и сеньор: это мера опыта. Допустим я сеньор, от меня ждут умения взять проект или понять проблему. Понять как ее решать. И решить. И я это должен делать сам, без того, чтобы мне кто-то указал. Ожидания от миддла меньше. Однако, когда я был миддлом, ожидание почему-то тоже было похожее на сеньорное :) Не знаю, на счет ответственности. По моему, всегда ответственность на том, кто ведет проект. В общем есть точно довольно интересный документ про уровни (я его видел, когда был в Dropbox, но вроде есть в каждой конторе), где каждый уровень расписан. И в основном это scope задач, которые Вы решаете.
Я, в принципе, уже смирился с мыслью, что когда в следующий раз буду искать работу — придется порешать задачки, потому что выше определенного уровня без них попасть сегодня не получится. Но, глядя на продукцию гугла и фейсбука, возникает вопрос — а куда они этих отборных кадров девают, почему такая трэшачина-то выходит?
например, уровень владения языком
Эм. А зачем? На мой взгляд, если программист не знает конкретного языка или фреймворка, он его изучит, и я готов ему на это дать время и деньги. Более того, я организую ему обучение за счет компании и внутренние тусовки с правильными людьми. Но если он не понимает как именно его программа запускается на сервере и взаимодействует с окружающим миром и не понимает базовых принципов написания программ: структуры данных, рекурсия vs циклы, процессы, потоки, O нотация и так далее, то я не смогу его этому научить за разумный срок. На изучение фреймворка, даже большого уходит до года, а на инженерное мышление уходят иногда десятилетия.
По языку я спрашиваю обычно несколько вопросов, просто чтоб понять водят ли меня за нос, говоря о большом опыте. Грубо говоря, если Python Senior не знает как пишется декоратор, это странно, а если знает то это повод поговорить о функциях высшего порядка, частичном применении и их влиянии (или отсутствии этого влияния) на то, что он делал раньше и будет делать у нас.
Мне кажется примитивным сводить умение программировать к доскональному знанию языка. Это как в школе. Есть отличники, которые каждый урок истории выдают все даты на зубок, но через год уже ничего не помнят. Но обязательно найдется раздолбай в классе, который понятия не имеет о дате смерти Павла I, но точно объяснит вам, а почему это произошло, как это связано с гвардией, сложными взаимоотношениями между Елизаветой, Екатериной, Павлом и Александром, а так же как это выглядит с точки зрения марксизма. Вот такие раздолбаи, если попадают в правильную среду и учатся ответственности, становятся очень сильными программистами, архитекторамии и rockstar, а отличники дальше мидла вырастают редко и обычно уходят в менеджмент.
Нет ничего сложного в C++, оказывается.
Если не использовать эти фичи (которые рано или поздно сведутся к плюсам), то непонятно, зачем вообще брать плюсы.
Потому что в си нет классов. По-моему, можно вполне писать на си как на Java 1.6, иногда в нужные места вставляя более тонкое управление памятью, ну и может быть, заимствовав каких-нить уж очень вкусных синтаксических сладостей типа лямбд. В проект с таким код-стайлом легко вьехать свитчеру с других языков.
- Все, о чем пишет Степанов — мимо, не включаем, слишком сложно.
- Шаблоны — включаем ограниченно, делай как в джаве, не выпендривайся.
- Множественное наследование — нафиг, делай как в джаве, не забивай себе голову
- Невиртуальные функции — нафиг, не забивай себе голову
Да, С++ отдельная песня. Уж очень тяжел язык, слишком много UB, поэтому невозможно быстро изучить. Но он такой по сути один.
которую в Яндексе спрашивали про ++i++i++; Что выведется мол на экран.
Такого в Яндексе уже очень давно не спрашивают.
Я слышал недавние байки, что нанимают человека в Яндексе, а потом просят прислать какой-нибудь кусок кода на C++, хоть со стак оверфлоу скопировать, чтоб вставить в отчеты о найме :)
Вообще эти собесы в Яндексе уже такая дикая легенда на местном рынке, что пожалуй пора выпускать опровержения с их стороны.
Зачем нужны опровержения, которым все равно мало кто поверит, если можно самостоятельно сходить на собеседование и всё узнать?
а куда они этих отборных кадров девают, почему такая трэшачина-то выходит?
Не уверен, но думаю, что примерно туда же, куда и у нас. Сначала гоняют по алгоритмам, а потом человек три года грубо говоря «перекладывает данные из одного json в другой протобаф». А года через 3 и глаза уже не так горят, да и менеджеры с задачами «нужно было вчера» никак не отстают.
А простите, что за трешачина? Инстаграм вроде бы открывается, не падает. Фотки грузятся, лайки ставятся. Лента в ФБ открывается, посты постятся. WhatsUp вроде почти везде используют и тоже не падает. Остальные продукты тоже работают хорошо. У гугла тоже вроде поиск работает, почта тоже, youtube вообще по моему в половине вкладок у всех открыт, кого я знаю. Все продукты держат какую-то фантастическую нагрузку и огромное число юзкейсов. Так что за треш то?
Но тут надо выставить ожидания правильно. Все-таки gmail — уже давно не тупо почтовый клиент. Там же куча фич есть вроде чата, редактора, автодополнения, оффлайн режима. Хотелось бы, конечно, что бы оно сильно быстрее грузилось, но не так все плохо.
Вы знаете, я прямо сейчас замерил. Gmail быстрее чем хабр загружается.
Все почему-то зацикливаются на задачах, но ведь soft skills очень сильно решают на интервью. Время одиночек прошло и без умения общаться с людьми (клиентами, коллегами) далеко не уехать.
Провожу в Гугле по два интервью в неделю в среднем на уровень 6 Engineering Manager, в основном coding, хотя иногда и другие. Никак не могу сказать, что спрашиваю олимпиадные задачи, как минимум потому, что не умею решать их сам. Интересует умение рассуждать, поиск решения, реакция на мои замечания, исправление собственных ошибок, общий скилл работы с кодом.
Требования к Engineering Manager на уровнях 5-7 в части технических скиллов в принципе эквивалентны требованиям к инженерам соответствующих уровней, допускается уровень минус один. Ну и coding interview будет одно-два, а не три.
И да, огромное большинство кандидатов с 15-20 годами опыта в Долине эти интервью не проходит.
Илоне — успехов и потом — терпения. Молодец.
Неужели в небольшой компании не так интересно или меньше возможностей? Или само чувство приобщения к чему-то большому и известному притягивает людей?
Хадуп, Спарк, КликХаус и тому подобные штуки не используют компании из 10 человек.
Я немного пописываю на Go, и если верить вакансиям подобные штуки (не именно все эти, но многие похожие) используют абсолютно все конторы, вне зависимости от размера.
И ещё у всех хайлод. И микросервисы в кубернетисе (даже если это единственный Go-бинарник).
Все хотят быть «как у Гугла», наверное.
Деньги и проекты. Платить в маленьких больше не будут. Я проходил собеседования во многие компании в долине. Если компания не публичная то они дают базовую ЗП может и выше но у них нет второй части — акции. А это ещё плюсом такая же вторая ЗП. Точнее они дают свои внутренние стоки но они ничего не стоят. В уши льют что вот мы выйдем на IPO и тогда все разбогатеют, но вероятность этого мизерная.
Ну а проекты, я например работаю в Гугл, в разработке софта для сетевых карт будущего. Такие железки появятся в дата центрах года через 2-3. Если кто-то ещё их разрабатывает то такие же гиганты как Гугл.
в 99% случаев в маленькой компании будет и комфортной и платить будут больше.
У Гугла, например, зарплаты довольно высокие. А что касается комфорта, то это тоже спорный вопрос. Маленькая компания, например, не сможет так же обустроить офис с трехразовым питанием, спорт залом и душевой. Офис вероятнее будет находится в неудобной локации. Это, конечно, субъективные вещи. Если вы предпочитаете и можете работать из дома — то эти перки вам малоинтересны.
Для меня причастность к большому стала важным (и очень важным) фактором только через шесть-семь лет разработки.
В России эти компании, если верить статьям тут же, не особенно задирают зарплаты. Кроме того, работа в большой компании — это практически всегда работа в офисе (опять же в России), в крупном городе. А, значит, это дорогая аренда, еда, транспорт и пр.
То есть вот вы имеете информацию, в России действительно выгоднее работать в Яндексе чем в конторе средней руки?
Но ведь в России их и нет…
Как это нет? Есть и Яндекс и Майкрософт и АйБиЭм и почти все прочие. Я не знаю, есть ли Фейсбук, но на суть вопроса это никак не влияет.
Зарплаты в Лондоне и Америке интересуют не только лишь всех россиян. Мне вот они, к примеру, вообще безразличны. Я спрашивал именно про Россию.
В России эти компании, если верить статьям тут же, не особенно задирают зарплаты.
Они в России вообще есть? Тут из подобного только Яндекс, но они особенные — платят меньше рынка. FAANG таким не страдают. В России в Яндексе можно работать ради задач или престижа. В FAANG есть еще точно высокая зарплата.
Но большие компании — это стабильность. Акции не настолько прыгают, как у маленьких. А если говорит про pre-IPO, так вообще неясно, выйдет компания или нет. Ну еще допустим в Facebook куча очень крутых проектов, в которых нет ощущения большой компании, когда 5-10 человек пишут очень мощные вещи. То есть возможности тоже есть.
А вот еще такой вариант, Вы решили завести семью. И вхерачивать по 14 часов без выходных уже не кажется такой заманчивой перспективой, как в 22 года. Хочется сходить на jiu jitsu или тайский бокс после работы, поужинать с детьми. Большие компании очень ценят work/life balance. И планы работы это закладывают. В отличие от маленьких компаний, где вам нужно успеть все за неделю, потому что через неделю надо питчить, и если это не будет готово, то денег не будет и все пойдут по домам.
Ну и еще вариант. В большой компании можно научиться как надо делать. То есть все системы должны работать вот так. Потому что это проверено временем, нагрузками и sev'ами.
Но аргумент понятен.
Такой к вам вопрос:
Если есть продукт, который мне нравится и я в него верю, почему бы не учавствовать в нем. Я так пошел в свое время в Убер, потому что, как бы это банально не звучало, я верил, что мы делаем что-то очень крутое и нужное.
У вас нет ощущения, что Убер и без вас сделал бы этот продукт точно так же? То есть реально ли оценить вклад каждого конкретного сотрудника в успех или неудачу компании? Ведь без этого, считаю, того самого ощущения сопричастности не появится.
Ну вот в том же яндексе акции по результатам пологодового ревью — значимая часть дохода
Я вообще говорил только про IT компании. И чем меньше человек, тем выше количество задач на одного, то есть у вас растет требования (ну если только не какие-то государственные вливания там или еще что-то), ведь надо делать новые вещи.
В общем, данная тема и правда очень субъективная, так что особо не вижу смысле в ней. Это был исключительно мой взгляд на вещи. Я очень даже допускаю, что в нем много предположений и допущений.
Правда по этому поводу я раньше думал так: вот устроюсь, я, скажем, в Яндекс, а вокруг одни олимпиадники и будет постоянное ощущение определённого давления. Есть такой эффект на практике в известных конторах?
Про гугл скажу — нет такого. Обычные люди кругом, неглупые, разумеется, я десять лет работал в российском аутсорсере — там не хуже люди были в среднем. Но, конечно, есть и очень умные, куда умнее меня, и понятно, что в компании на 100тыс сотрудников их много.
С процессами такой же бардак, как и везде.
У меня еще есть ненулевое количество коллег, которые из серии «ой, да че там делать — час работы». А как попросишь их подробно расписать по пунктам, что нужно сделать, выясняется, что там только кодить пару дней, не считая тестирования.
Скажу от себя про гугл, я туда не стремился, он ко мне сам пришел, я согласился. Интересных вещей несколько:
- технический масштаб задач. Сотни миллионов запросов в секунду, экзабайты данных. Такого нет почти нигде.
- культура делать то, что надо, а не только собирать из кусочков. Это весьма обоюдоострая штука, дофига велосипедов, но при этом навык проектирования систем вот именно от задачи, зная, что если надо — хоть железо кастомное можно сделать — он больше нигде не применим. Ну и поддерживать такие штуки потом тоже интересно.
- организационный масштаб. Ну мало где ещё есть команды из 10000 человек, делающие одну систему — а тут такого много. Задачи по управлению такими командами в других местах просто не возникают. Это, конечно, не мой уровень, но хотя бы видно, как это происходит.
При этом не боги горшки обжигают, и, в основном, кругом обычные люди, такие же вчерашние студенты, зачастую, как были в России у меня, и ни разу не умнее и не лучше подготовленные. И бардак с процессами есть, каждый делает как хочет. И велосипеды эти внутренние не всегда так хороши, как хотелось бы. То есть чуда-то нет никакого.
Как-то так..
Вопрос причастным: зачем люди стремятся в Гугл, там, Фейсбук или Яндекс?
Оу, тут много чего в кучу. Очень индивидуально и не всем подходит, но попробую накидать немного, тоже без подвоха. Неблагодарное это дело. Не судите строго:
— финансовая стабильность работодателя: доходы диверсифицированы. бывает очень важно;
— финансовые вилки с большим разбросом: если вы интересны и нужны, то торг очень уместен;
— хорошая строчка в резюме: трамплин. если нужен. а лишним никогда не бывает;
— повышенный шанс встретить много «умных» коллег: далеко не аксиома, но так;
— всякие плюшки: бесплатные визы, спортзалы, помощь в покупке недвиги, гибкие графики;
— устоявшаяся техническая инфраструктура: можно пользоваться готовым, а не выстраивать с нуля;
— и снова инфраструктура: можно не уметь ее полноценно готовить самому, но сам факт, что вы пользовались грамотно настроенной уже будет, пусть небольшим, но плюсом со стороны будущего интервьюера. вы носитель культуры;
— уважение окружающих: "-где работаешь? -в {company_name}. -wow!". с годами проходит.
— проекты, которыми пользуются многие: причем сразу. сотни тысяч, миллионы, сотни миллионов;
— кого-то перехватывают на подлете: еще в вузе на практике/стажировке. ноготок уже увяз и вопрос «куда идти» отсутствует;
P.S.
Что-то в отдельности никогда не побеждает. Обычно в кучу: это, это и вот то.
Могу накидать столько же, если не больше, минусов (куда же без них) ;-)
Все эти плюсы, на мой взгляд, со временем начинают терять актуальность. Ну, кроме денег, понятно. При этом, мне кажется, что минусов в крупной конторе не меньше и сальдо получается около нуля. Как считаете?
— ваш вклад в проект может оказаться сильно размыт. проект один, под-проектов много, а людей еще больше;
— плюшки работодателя могут оказаться не к месту: кофе не пью, дмс-ом не болею, печенья и орехов нужна пригоршня/две в неделю. что там еще? а… впрочем и остальным нет нужды пользоваться;
— меж-проектные согласования могут показаться адом на яву. куча встреч, разговоров, аргументов, балансирование на лезвии. правки потому, как «кто-то что-то понял по своему». и все ради того, что бы сделать простую и атомарную штуку в продакшене;
— умные коллеги могут оказаться кислотными: требовать или ерунду или нереальные сроки. причем вполне аргументированно. они умные и как-то надо постоянно снова балансить;
— повышение зарплаты может быть простым на словах: профессиональные HR-ы вооружены не менее профессиональными покупными средними медианами и прочими красивыми статистиками;
— очень и очень не очевидно: ваши рядовые коллеги здесь, сейчас и в ближайшее время могут оказаться на голову выше вас и работать за деньги о которых вы грезите;
— рутины может оказаться очень много: около 90% вне зависимости от вашей крутизны. бизнес устоявшийся и развивается местами очень спокойно;
— вас может начать под-бамбливать от гибких технологий типа аджайла: брали на под-проект X и Y, а надо быстро разобраться и нести ответственность за бесконечные E, T и C.
что минусов в крупной конторе не меньше и сальдо получается около нуля. Как считаете?
Так, но кому как. :-) Сильно индивидуально и смотря, что нужно.
Еще минус важный есть, кому-то это dealbreaker — нельзя, пока работаешь в Гугле, участвовать в open source. Вернее можно, но все права принадлежат Гуглу. Видимо, сделанно, что бы не судиться потом, в рабочее ли время условный сотрудник пилил мега идею, или это его личная работа. С учетом что выдают кучу оборудования, можно работать из дома по гибкому графику — это все нетривиальные вопросы. Похожая нервотрепка есть с и другими компаниями: надо, по крайней мере, получать разрешение что-то стороннее делать.
Другая проблема — очень формализованный и забюрократизированный процесс повышения. Зарплату вам может ваш менеджер поднимать, если вы хорошо работаете, но рано или поздно вы в потолок вашего грейда упретесь. Тут придется очень много сил и труда потратить на составление документации, доказывающей левым, незнакомым с Вашей работой людям почему вы достойны повышения. Это отдельный навык, слабо пересекающейся с остальной работой.
Связанно с этим — каждый год надо проходить peer review, даже если вы не идете на повышение. Это вы должны описать всю вашу работу и достижения. Потом ваши коллеги пишут ревью на ваши достижения. Это все влияет на рост зарплаты и возможность повышения. Это довольно стрессовый период. В маленьких компаниях все немного проще.
Ну, про совещания вам уже рассказали. Их много и они достают.
Еще в такой большой компании появляется политика и связанные с этим драмы. Какой-то там директор домогался своей подчиненной, а потом ушел из компании, получив 40 миллионов долларов (вскрылось несколько лет спустя). У всех подгорает, все это обсуждают, вся цепочка менеджеров пишет письма, что никогда больше и мы расследуем и боремся. Активисты пишут открытые письма против чего-то или там за что-то. Это не напряжно и это все можно пропускать мимо себя, но может кому-то это будет очень неприятно. Если не смотреть на драмы такого порядка, то, по моему опыту, на более низком уровне климат очень доброжелательный, каких-то скандалов и интриг тут нет (говорю про Гугл).
А получается достигать достижения? Мне как-то сложновато пока перестроиться на этот американский достиганческий лад. «Что делал?» «Работу делал, вот запустили полезную штуку вшестером.» «Чего достиг?» «Как чего? Я же сказал, штуку запустили!»
Работу делал, вот запустили полезную штуку вшестером.
А это главная проблема, но немного не так, как вы думаете. Единственный простой способ показать достижения — это запустить какую-то штуку. Тут еще придется красиво все описать (дизайн доки, графики и метрики на много-много страниц) и чтобы коллеги хвалили. Отсюда, возможно, растут ноги у желания запускать продукты, даже если они не очень готовы или не очень-то и нужны.
- Концентрация крутых ребят вокруг выше, чем в других местах. А где крутые ребята, там и возможность и желание тоже стать покруче, и возможность с ними замутить крутые штуки.
- Твоим софтом без дураков будут пользоваться. Если повезет — то сотни миллионов.
- Ты будешь решать не только слесарные, но и инженерные задачи.
> Я занималась олимпиадами с 8 класса
> Три раза участвовала во всероссийской олимпиале, хотя ни разу не выигрывала
> У меня были дипломы других олимпиад
> это помогло поступить в ВШЭ
То есть у девушки к 11 классу было ~5 лет «опыта» работы. Ну норм, чо. А я крапиву палкой бил в 8 классе.
Для работы в Google нужно быть чемпионом мира по программированию?
Нет, не обязательно. Это вообще какие-то глупые люди придумали эти вещи про чемпионов мира. Не понимаю их. Дурачки какие-то, ей богу. Достаточно быть чемпионом своей страны или города.
К тому же Илона на всеросе не взяла диплом — она не чемпион мира.
Дык полтора-два годика вдумчивого фигачинга литкода должны помочь, разве нет?
Лучше всего, конечно, не нанимать криворуких.
Можно конечно сказать, что это бред сивой кобылы, но:
— качество сервисов от этих компаний становится всё хуже. Как же так, если в компаниях работают сотрудники, прошедшие кучу вступительных этапов?
— посмотрите состав увольняемых сотрудников в наступивший кризис, превалирующая доля как раз эти самые группы толерантности.
А можно какой-нибудь пруф про массовые увольнения инженеров в Фейсбуке и в Гугле в связи с кризисом?
Убер в пример чур не приводить.
Убер увольнял до, увольняет сейчас. Доходит до отзывов джоб-офферов.
https://www.forbes.com/sites/jackkelly/2020/05/13/uber-lays-off-3500-employees-over-a-zoom-call-the-way-in-which-a-company-downsizes-its-staff-says-a-lot-about-the-organization/#779b8e537251 например.
Я правда не считаю, что стоит оптимизироваться на условный FAANG.
Но для фана раньше любил алгоритмические задачки решать.
3 – juniorУ меня предположение, что эквивалент senior у них где-то на уровне 6-7. Ну не может программист, который скорее всего работал только в 1-ом — 2-х проектах, поработавший над относительно небольшим количеством и разнообразием задач и, скорее всего, не участвовавший в разработке с нуля, стать сеньором.
4 – middle
5 – senior
6 – staff
дальше – 7, 8, возможно 9, но таких мало
И не знаю связан ли подобный стремительный рост с тем, то в ФБ такие кривые и противоречивые АПИ.А подобное мне кажется следствием отсеивания алгоритмическими собеседования. Если разработчик плох в алгоритмах, но силен в других вещах, его отсеют. На остальные этапы пройдут только те, кто хорош в алгоритмах. И среди них может быть большой процент посредственностей во всем остальном.
Думаю, что было бы качественней, если какой-то средний проходной бал считали по нескольким навыкам (например: алгоритмы, проектирование, кругозор и техническая эрудированность).
Это зависит скорее даже не от того, сколько вы знаете, а о того, сколько вы готовы взять на себя ответственности за большие проекты, как вы можете общаться с людьми, работать с другими командами, строить взаимоотношения, договариваться, идти на компромиссы. В большей степени это soft skills.
Есть разные архетипы. Некоторые люди самостоятельно создают сложные фичи, но у меня такого не было. Мне больше нравится общение с людьми, совместная работа, задавание пути развития продукта.
В общем, чем раньше понять, что технические навыки наименее полезные навыки для карьеры, и развивать их, тем лучше.
Без нормальных сеньоров далеко они не уедут… И похоже это становится все более очевидным даже людям со стороны.
Вот совсем скоро к ним придет настоящая высокая нагрузка и они узнают, что масштабироваться и строить действительно серьезные проекты без сениоров нельзя.
А кто в фейсбуке строит серьезные проекты? Все решения уже давно придуманы, обычные сеньеры только перекладывают protobuf и дергают api существующих систем, никакого там умения масштабироваться на уровне продуктовых команд не нужно.
Большие проекты сами по себе же создаются, развиваются и в конечном итоге умирают, да?
Подёргать API-шку несложно, сложно решить важную задачу, «просто дёргая API-шку».
Это в любой компании так, что нужно решить важную задачку дергая апишку. В чем отличие то от рогов и копыт, кроме пафоса работы в фб?:)
А в твиттере есть команды интересные в платформе, которые решают задачи создания всяких хранилищ и облачных решений и попасть в них можно не находясь в CA ;)
Нужны примеры прям.
Ну я вот живой здесь.
В Фейсбуке в Лондоне, например, есть часть MySQL-команды, целиком команда logdevice (https://logdevice.io/, очень грубо — внутренняя кафка), часть команды tupperware (очень грубо — внутренний кубернетес), целиком команда Scribe (очень грубо — внутренний Splunk), Source Control (команда, которая держит внутренние репозитории). Просто то, что я вспомнил прямо сейчас и о чём можно говорить.
Ну так пример проекта за пределами менло парка в котором идёт активная разработка.
Ну вот эти уже другое дело, а разработка или просто поддержка?
Я вот прям не верю, что инженеры продуктовых команд решают вопросы масштабирования. В чем именно серьезность штук заключается? И почему этой серьёзности нет в обычных компаниях?
Попробую предположить. Меньше юзеров, менее жесткие требования к софту
Все задачи неподъёмные просто из-за более низкого качества разрабов, больше ценятся те, кто умеет хорошо говорить, а не те, кто умеет хорошо делать. С точки зрения бизнеса это понятно, денег полно и можно думать не об эффективности, а о снижении рисков. С проблемами геораспределения и траффика на праздники сталкиваются большинство работающих контор, никакого рокетсайенс в этом нет.
На всякий случай покажу табличку сарказм.
Потому что любая задача становится сложной.
Вы запускали bazel build //... && bazel test //...
в вашем проекте перед коммитом? А теперь не можете.
Вы хотите обновить ядро на всех серверах вашего проекта? А теперь это проект на пару месяцев.
Вы хотите просто задеплоить новую версию софта? А теперь не можете, в процессе деплоя часть железяк тупо умрёт, а часть запровижионится.
Вы ждали раньше, пока ваш сторадж отребилдится перед тем как деплоить новую версию софта (ну просто чтобы минимизировать риски)? А теперь не можете, ваш сторадж ребилдится всегда.
Вы хотите изменить интерфейс API, добавить аргумент в какой-то RPC-колл? Добро пожаловать в кодовую базу вообще всех проектов, кто вас использует.
Хотите обновить python 3.7 на python 3.8? Ну вы поняли.
и что из выше перечисленного так сложно и требует каких то особых навыков? Новое ядро просто тестируется на небольшом подмножестве прод серверов, а потом автоматически раскатывается, внимание sre требуется от силы на пару дней, так же как и в маленькой конторе. Все остальное из той же серии, никаких серьезных инженерных проблем, любой нормальный инженер из компании, в которой есть хоть лям юзеров, знает что делать, чтобы все работало.
На минуточку, фейсбук в три тысячи раз больше, чем типичная "компания, в которой есть хоть лям юзеров".
Вы правда верите, что система обновления ядер, которая прячется за словосочетанием "автоматически раскатывается" масштабируется в три тысячи раз без обнаружения множества подводных камней? Однажды я работал в "компании, в которой есть как минимум лям юзеров" (вы тоже там работали, кстати :D), я там масштабировал Cobbler чтобы налить всего лишь три тысячи машин за 24 часа. Один маленький пример из того опыта: пришлось выкинуть TFTP (который абсолютно стандартен здесь!), потому что TFTP крайне нестабилен, если TFTP-сервер хоть чуть-чуть нагружен. Если у вас 50 машин — вы просто поретраите десяток машин. Если 3000 — уже не поретраите. Впрочем, видимо, остальное масштабирование до масштабов фейсбука стало бесплатным, если просто дёрнуть протобуф и переложить данные в JSON.
Фейсбук надо, наверное, в клауде развернуть, там все проблемы решены. RuVDS подойдет? :)
Впрочем, мне вас не переубедить.
Так в том и дело, что для тебя как для разраба разницы нет: в gcp ты хостишься или в private cloud фейсбука. Все проблемы решены, ты только jsonчики перекладываешь, в то время как разрабы в мелких конторах должны разбираться во всех технологиях которые они используют. Те мелкие конторы более требовательны к уровню разрабов а не наоборот.
То есть я правильно понимаю? Инфраструктурные команды в фейсбуке не нужны потому что в фейсбуке уже есть инфраструктурные команды, и там все задачи решены?
Ну ок.
Я уверен, что в фб есть люди которые решают сложные задачи, но на 1 такого человека приходится 100 перекладывателей json, разве нет? И даже у того одного человека основная сложность это не сама задача, а согласование с миллионом стейкхолдеров, что не совсем инженерная задача.
ЗЫ. А это правда что фб до сих пор использует для хранения связей MySQL + memcached но гордо называет это TAO?
Вы знаете, я долго думал, что на одного человека со сложными задачами приходится 100 перекладывателей json. Но ни одного перекладывателя json я не знаю, а людей со сложными задачами знаю сотни. Иронично, а?
ЗЫ. А это правда что фб до сих пор использует для хранения связей MySQL + memcached но гордо называет это TAO?
Я боюсь, что ответ на этот вопрос я не знаю :) А это правда, что Амазон использует жесткие диски и ссд, но гордо называет это S3?
Я рад за вас:) хорошо когда вокруг так много действительно сложных и новых задач :)
Мне просто кажется, что многие из них не сильно сложнее задач с которыми сталкиваются обычные разработчики в обычных компаниях.
ЗЫ. Про Амазон как то некорректно, так то фб использует тоже ssd ;)
В итоге, ребята, которые всю жизнь условно писали на Java садятся за какой-нибудь pytho/js и начинают из него делать Java, что потом вообще поддерживать невозможно становится.
Как уже многие говорили. На собеседованиях гоняют по алгоритмам, нетривиальным задачам и устраивают вайт-борд. А по факту сидишь и гоняешь json для какого-то внутреннго сервиса графика уборки офиса.
В итоге, ребята, которые всю жизнь условно писали на Java садятся за какой-нибудь pytho/js и начинают из него делать Java, что потом вообще поддерживать невозможно становится.Справедливости ради, стоит отметить, что так будет делать большинство в аналогичных ситуациях, если нет времени углубиться в новый стек или в нем нет стандартов, как с js раньше было. Берут лучшее/привычное из того, с чем был опыт, и пытаются применить в новом стеке.
Странный посыл насчёт невозможности найти работу в долине если не IT. Сложно найти работу не в IT если она должна обеспечивать жизнь. А просто низкоквалифицированной работы с оплатой до 20$/час навалом. Если один человек в семье работает нормально в IT то второй спокойно устраивается на почасовую и имеет гибкий график и свои 2-3к в месяц.
1) Выиграть грин-карту
2) Выиграть H-1B
3) Устроиться на работу в интернациональную компанию, отработать год, получить L-1, переехать, оформить грин-карту.
А он не умрет на 2-3к в месяц?
А если серьезно, то вы же не думаете, что каждый человек в каждом магазине или ресторане заколачивает по $100k в год? Огромное количество людей тут работает именно за 2 — 3к в месяц. Естественно — это не основной доход семьи. В оригинальном комментарии говорилось о втором человеке, обычно это супруга, которая часто вообще не работает, но если ей становится скучно то спокойно на part time может получать свои 2к.
Но я не в коем случае не говорю. что один человек, без жилья на 3к в долине отлично проживет. Конечно нет. Но если в семье два человека работают, то даже если они оба работают за 20$/час то за 4 недели это 6400$. А если взять продленную смену то и 8к заколотить можно. Хочу обратить внимание, что это мы говорим о работе, которую любой человек с улицы способен делать.
Вообще я на себе заметил интересный эффект. Тяжелее всего кода ты слегка проходишь вверх уровень малоимущих. Т.е. примерно 100к в год на семью. Тогда тебе власти уже не помогают, и ты сам за все платишь по полным ценам. Конечно, какой-нить бомж из СФ возмутился бы такому высказыванию, но у них там своя история.
Это было уже давно – в 2015 году, я училась с 2013 по 2017,
…
…
…
Это не так важно. Я провожу собеседования несколько раз в неделю, мне все равно, на каком языке будут писаться задачи. Главное – чтобы люди понимали, могли придумать решения.
Да ну! Выдыхай!!!
На машине очень удобно ездить. Не нужно думать, где пересадку делать, где там ветка закрыта из-за забастовки. Ждать ничего тоже не нужно на остановке. Сел и поехал. И думать про маски, всякое социальное дистанцированиие тоже не нужно. Очень все просто и прямо.
Чтобы по выходным не вымирал — нужно в Soho жить.
Не бы в НЙ, может там ещё хуже все. Вы жили не в жилом районе по сути. В тех районах, где живут больше, а не офисы — толпы и в выходные. Может даже и больше тк все не в центре.
Я и в метро/автобусе не могу читать из-за тряски, только слушаю. Ну и у меня маршрут удачный, примерно 80% времени машина сама по хайвею едет. Я как то даже в ноуте ковырялся пока ехал, тк алерт прилетел.
Дисклеймер: я работал в Фб, и все что ниже, мое мнение, компания большая, другие инженеры могут иметь совершенно другой опыт.
«На собеседованиях больше ценится реальный опыт или решение задач из олимпиад?
Ценится все. „
Опыт и образование принимается во внимание, но ценится меньше, чем перформанс при решении задач. Не только решение задач, но ваше поведение, ход мысли, работа с интервьювером — все это плюс ессна знание и понимание алгоритмов, структур данных и т д.
“с junior на middle надо перейти за два года
с middle на senior – за три года;
если не получается – увольняют»
Вроде ж уже отменяют везде (в Фб и Гугле).
«Как грубо говоря отличить Мидла от сеньера?»
Есть метрики, и менеджеры постоянно (реально это их работа) работают над вашим карьерным ростом. Без подробностей — не хочу наврать, давно это было.
«Вопрос причастным: зачем люди стремятся в Гугл, там, Фейсбук или Яндекс?»
1. Свобода действий — грубо тебе не ставят задачи, ты решаешь что делаешь, твои идеи, ты свой архитектор и менеджер, бери и твори. Даунсайд конечно, когда придет время ревью надо будет показать, что то что ты делаешь приносит прибыль.
2. Деньги, акции, бонусы плюс плюшки — бесплатная еда, транспорт, у них нереальное количество всяческих плюшек — за полгода привыкаешь жить как на курорте (но работать). И нет, 300k это не средняя зарплата сеньора в долине, 99% компаний это таки не FAANG (большинство даже не в зп чартах), 180-200k может. В FAANG скажем 200k и до миллионов, но! если посчитать бонусы, страховку, 401k match, транспорт, оплату переезда, еду в конце концов, даже с 200k FAANG будут далеко впереди…
3. Резюме — имея Фб или Гугл в резюме можно рассчитывать на лучшие зарплаты, легче найти работу (да-да даже для хорошего инженера полгода поисков в штатах это нормально)
«Просто миддл фейсбука это прокаченный джун.»
Что-что а уровень инженеров в Фб весьма достойный, у меня были претензии к менеджменту, но все инженеры с которыми работал были круты (есть с чем ставнить: TI, Amazon, Nvidia, Panasonic)
Как по-вашему, год нарешивания задачек с литкода — это форма честного прокачивания своих problem solving скиллов или форма нечестного взлома системы найма на работу? Предположим, что система этого самого нарешивания очень хороша: кандидат классифицирует задачи, осознаёт, в каких местах он косячит чаще всего, решает больше задач, чтобы устранить свои недостатки, научается считать big O для большого класса задач и впитывает в себя методику подсчета, собирает фидбек на mock interview, учится рассуждать вслух, учится продумывать решение и лишь затем писать код, учится быстро и чисто писать код, который продумал, на вайтборде, учится дебажить свой код в голове и на бумаге и прочее. Вот прошёл год подготовки. В итоге мой скилл нарешивания литкодовских задач на время перед белой доской существенно вырос. Можно ли сказать, что если я делал все правильно, я стал лучшим программистом? Или же я стал просто лучшим проходистом собеседований?
Я считаю, что можно.
Во первых задачи подобные тому, что спрашивают на собеседованиях, действительно попадаются в ежедневной работе (по крайней мере, в Гугле). Да, не каждый день. Но программист, который нарешал тучу таких задачек для прохождения интервью сможет решить рабочую задачу, когда как программист, который не умеет решать "алгоритмические" задачки, скорее всего напишет какой-то адский бред, или хотя бы дико неэффективный, не читаемый, и плохо поддерживаемый код. Просто потому что "тупое" решение задачи, если и возможно, то его очень тяжело сделать хорошо.
Во вторых умение решать такие задачи здорово вправляет мозги. Вы начинаете уметь разбивать задачу на подзадачи, искать паттерны, мыслить абстрактно. Это все очень полезные навыки при разработке сколько-нибудь сложных систем.
Еще один скил, нужный для прохождения интервью — умение объяснить решение задачи. Не написать код и сказать "вот тут мы делаем так", а именно рассказать в виде "сначала итерируемся слева-направо запоминая минимум для каждой точки, потом идем справа-налево поддерживая частичную сумму". Это полезный навык при обсуждении и проектировки решений.
Дада, я все эти вещи начал в себе замечать после того как стал готовиться. Спасибо за ответ!
Это противоречивые утверждения.
Просто пишите про то, с чем моя точка зрения не совпадает.
На leetcode я не решал задачи. Но, учась в лицее, нарешал кучу алгоритмических задач, хотя и не олимпиадного уровня. Плюс в универе они тоже были, но в гораздо меньшем количестве, хотя в целом посложнее. Конечно, как-то сказывается, что я этим занимался в прошлом. Но все-таки за 10 лет работы что-то более-менее алгоритмически сложное приходилось писать раз 5. То, что я раньше делал за полчаса, сейчас займет несколько часов, т.к. навык решения алгоритмических задач сильно притупился.
Зато, если в те времена, я мог написать прогу максимум в 10к строк, т.к. дальше ни другие, ни я просто не смогли бы ее поддерживать и расширять, то сейчас несколько сотен тысяч строк не проблема сделать достаточно читабельными и расширяемыми.
Но программист, который нарешал тучу таких задачек для прохождения интервью сможет решить рабочую задачу, когда как программист, который не умеет решать «алгоритмические» задачки, скорее всего напишет какой-то адский бред, или хотя бы дико неэффективный, не читаемый, и плохо поддерживаемый код.Я точно не знаю, что там за задачки на leetcode.
Вы начинаете уметь разбивать задачу на подзадачи, искать паттерны, мыслить абстрактно.
Я уверен, что как раз программист, нарешавший кучу алгоритмических задач, но без опыта работы, точно напишет на реальном проекте какой-то адский бред, не читаемый, и плохо поддерживаемый код) Ну и если нужно, прокачать навык решения задач можно во время работы (после работы, на выходных), как и все остальное прокачивают, когда устраиваются джунами.
Алгоритмические задачи не учат писать читаемый код, не учат разбивать задачу на подзадачи, не учат/практически не учат паттернам, не учат мыслить абстрактно. Для их решения нужно 10, 20, ну 500 строк (почти потолок). Это не тот объем кода, при котором одному человеку будет сильно необходимо заботиться о качестве кода.
Этому учат книги, статьи, видеоматериалы, другие люди, при совмещении с практическим опытом, когда пишешь большие проекты, где, например, надо делать сложные формы под 10 ролей. Или когда ищешь, как упростить или не городить сложную иерархию наследования. Или когда стараешься писать код с учетом того, что требования могут неоднократно поменяться. Или когда думаешь, как ускорить разработку, как лучше избежать написание лишнего, избежать дублирование кода и нужно ли его в данном случае избегать. Или когда думаешь, как вставить новый функционал, о возможности которого автор кода/плагина/фрейворка/системы совсем не позаботился или не подумал.
Я не говорю, что от алгоритмических задач нет пользы. Они как математика. Тренируют мозги, а также дают знание структур данных и алгоритмов, дают какие-то знания для решения определенного круга задач. Большинству в реальной работе нужны будут редко (за исключением некоторых направлений) и забудутся почти до основания, как и все неиспользуемое. Все зависит от того, чем заниматься.
Ещё я вот подумал про конторы с кучей велосипедов — важно умение оглядеть по-быстрому проект на миллионы строк кода и быстро понять, где там что. Это вообще непонятно как прокачивать.
А так, в случае контор с кучей велосипедов, да и почти в любой, без авторов обычно не разобраться. Имхо, куда больше зависит от того, как написано, а не от навыков нового разработчика.
В компании которая растет, получает десятки тысяч (наверное) резюме в день и нанимает сотни в период роста и десятки в период простоя, просто невозможно создать систему, которая будет работать честно.
В компаниях типа Гугл и Фб, привыкли работать с big data, поверьте все результаты интервью и дальнейший перформанс скармливаются ии и изучаются, процесс улучшается от года к году в соответствии с фидбеком.
Однако вы упускаете objective системы — цель не в том, чтобы нанимать лучших, а в том чтобы максимально исключить false positive. Не нанять хорошего инженера это ничего страшного, а вот нанять плохого — это сказывается на перфомансе очень сильно. И оно вроде так работает, насколько я могу судить.
Ну окей, а сейчас хочу работать в гугле, значит надо пройти гугловый собес. Открыл литкод — и не закрывай пока штучек 200-300 задачек не нарешается, а на mock-interview не будешь регулярно срывать аплодисменты. Ну, раз надо, будем делать и будем подходить к этому процессу максимально осознанно и вдумчиво, брать будем пониманием, а не зубрежкой.
Вообще, меня очень порадовал ответ о том, что мой ближайший год будет не просто наяриванием тестов на определенный экзамен, но и повысит мой профессионализм как разработчика.
До Facebook у меня не было опыта, кроме стажировок
Да как это у всех так получается?!
Вдогонку вопрос — как получается справляться с опенспейсами?
Наташа расскажет, как перешла во фронтенд посл 30, за 4 года не только выросла в синьора, но и стала обучать других: она аккредитированный GoogleDevExpret, выступает на англоязычных конференциях, пишет статьи и гайды.
Задать Наташе вопрос можно в комментариях в этом посте.
Эфир пройдет тут
До Facebook у меня не было опыта, кроме стажировок, и путь от junior до senior занял два года…— когда в большом IT станут снова цениться инженеры, а не инфлюэнсеры?..
… Мне больше нравится общение с людьми, совместная работа, задавание пути развития продукта…
… Мой приятель перешел с junior на senior за полтора года, так что быстрое продвижение возможно, как и медленное.
Нишевые исключения конечно есть, но их мало и будет только меньше.
Facebook — как сбербанк, с ним либо бабушки с фиолетовыми волосами (странные личности), либо те, кто в него вляпался и теперь сидит…
А всё это я к тому, что всякие сеньоры и джуниоры никак не влияют на ситуацию, прекрасно зная о ней — попали внутрь монстра и молчат, ничего не делают для улучшения — печально, и идти работать в такую контору из-за этого не хочется. Идёт отторжение facebook на уровне пользования.
Инсайды от сотрудника Facebook: как попасть на стажировку, получить оффер и все о работе в компании