Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
350 - Telegram Web
Telegram Web
Воскресный #юмор

Программиста спрашивают:
— Как вам удалось так быстро выучить английский язык?
— Да, ерунда какая. Они там почти все слова из Java взяли.
В 2021-2023 мне посчастливилось быть ведущим и членом программного комитета C++ Zero Cost Conf. В этом году наша конференция пройдёт уже в четвёртый раз. Мы снова идём сразу в два города: 27 июля конференция пройдёт одновременно в Москве и Ереване. И снова в программе будут доклады о применении C++ для решения практических задач.

Оказаться на сцене и выступить с докладом можете и вы — сейчас открыт Call for papers. Чтобы подать доклад, переходите на сайт конференции, нажимайте "Подать доклад" и заполняйте форму.

Выступая на конференции, вы:
развиваете свой личный бренд
вносите вклад в сообщество разработчиков
помогаете развиваться своей карьере
🥐 точно нормально покушаете на конференции на отдельном спикерском фуршете 🤪

Подавайте доклад и увидимся на прогонах 😉
Воскресный #юмор

Сидит программист, пишет программу, вдруг, стук в дверь. Открывает — а там смерть с косой! Программист:
— Не забирай меня сейчас, дай программу дописать!
Смерть:
— А я не за тобой, я за твоим ноутбуком
Самое сложное собеседование по С++ в моей жизни

Или третий пост о том, какие знания и навыки помогли мне пройти собеседование в Order Capital. Предыдущие посты:
Собеседование в Order Capital. Часть 1
Собеседование в Order Capital. Часть 2

Третье собеседование было с моим текущим руководителем, которого в компании считают самым большим знатоком С++ 💪. Мне дали 3 задачи, про каждую из которых можно рассказать отдельную историю. Я так сделаю: сейчас расскажу, что помогло справиться с первой, а про две другие — в следующих постах.

Первая задача была на динамический полиморфизм в C++. Были весьма стандартный для таких задач код и вопрос — что выведет код?

struct B {
~B() {
std::cout << "B::~B()" << std::endl;
}
};

struct D : B {
~D() {
std::cout << "D::~D()" << std::endl;
}
};

int main() {
std::sharead_ptr<B> p1 = std::make_shared<D>();
}


Если знаете C++, напишите в комментариях, что бы вы ответили. А потом продолжайте чтение.

После внимательного чтения кода хочется ответить, что на экране появится только B::~B(), потому что деструктор у B невиртуальный. И это ... неверно. Этот код корректно разрушит объект типа D и выведет

D::~D()
B::~B()


Я именно так и ответил, и это было чистое везение 😉

Когда мы делали модуль про наследование в "Жёлтом поясе по С++", мы искали способы не рассказывать в нём про виртуальные методы, чтобы не перегрузить людей материалом. При этом очень хотелось показать людям, как сложить в один контейнер объекты разных типов, являющихся наследниками одного базового класса. Тогда кто-то из преподавателей написал и запустил примерно такой код:

/* Определение структур B и D из кода выше*/
int main() {
std::vector<std::shared_ptr<B>> objects;
for (size_t i = 0; i < 5; ++i) {
objects.push_back(std::make_shared<D>());
}
}


Мы очень удивились, увидев, что деструктор
D вызывается, несмотря на то, что он невиртуальный, и стали разбираться, как же это работает. Оказалось, что std::shared_ptr хранит внутри себя deleter, который знает тип объекта, переданного в конструктор, и поэтому может вызвать правильный деструктор! Если в коде выше заменить shared_ptr на unique_ptr, то чуда уже не будет — будет вызываться только деструктор B, потому что в uniqure_ptr deleter является частью типа.

В общем, моё везение в первой задаче состояло в том, что я уже столкнулся с ней в "Жёлтом поясе по С++" 😎

🤔 Интересно, как бы стало развиваться собеседование, если я бы не знал этой особенности
shared_ptr? Наверное, мы углубились бы в его внутреннее устройство...

В этой задаче был ещё миллион вопросов про виртуальные функции и «умные» указатели, но на них все несложно ответить, если хорошо прошёл «Коричневый пояс по С++» понимаешь, как работает динамический полиморфизм,
unique_ptr и shared_ptr.

Итого, справиться с первой задачей мне помогли:
удача — неотъемлемая спутница успеха
хорошее знание динамического полиморфизма в C++

Расскажите, а как вам везло на собеседованиях?
Гугление на собеседовании: жульничество или находчивость?

Продолжу рассказ про самое сложное собеседование по С++, которое у меня было. Про везение в первой задаче рассказал здесь. Сейчас перейдём ко второй.

Она была на метапрограммирование шаблонов и работу с typelists. Меня попросили написать метафункцию, которая определённым образом преобразует один typelist в другой.

Я понимаю, как это всё работает, но давненько такое не писал. Поэтому в голове у меня не складывалось, как это всё закодить. В какой-то момент я осознал, что здесь и сейчас не напишу эту функцию, поэтому я стал ... гуглить. Продолжая вслух рассуждать о том, как бы я написал эту метафункцию, я в соседней вкладке ввёл запрос типа C++ typelists и довольно быстро нашёл на гитхабе подходящую библиотеку. Я пробежался по её коду, нашёл там метафункцию, которую мне надо написать, и смог быстро понять, как она устроена.

В итоге удалось написать правильное решение, подглядывая в найденный репозиторий.

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

Как считаете, такое решение задач - это читерство или норм?
Про толковых проджектов

По моему опыту, не все проджект-менеджеры в IT одинаково полезны 😉Больше всего ценятся настоящие решалы, которые организуют команды, процессы и облегчают работу всем вокруг.

Артём — один из тех, кто отвечает за технологическое развитие в Сбере. Чтобы сделать что-то классное, ему иногда приходится убеждать бежать в одну сторону 200+ команд. По мнению Артёма, современным IT-компаниям нужны люди,
кто умеет решать проблемы
кто умеет задавать вопросы
кто умеет в work life balance
кто понимает продукт и
его техническую сторону не хуже какого-нибудь архитектора

Подписывайтесь и читайте истории о карьерном развитии от того, кто применил их на себе
👍 "Самый крутой доклад на всей конференции, на мой взгляд"
👎 "Я честно не осознал, почему это попало на конференцию"


И первое, и второе — отзывы на мой доклад "Что-то у меня тормозит: заглядываем внутрь С++ контейнеров" на конференции C++ Russia 2023.

Я делал обзор его содержания у себя на канале сразу после выступления.

А сейчас, спустя почти год, наконец, его запись появилась на YouTube. Посмотрите и напишите в комментариях, какой отзыв ближе вам.
Воскресный #юмор
О soft skill'ах у senior разработчика

#реалтайм

Пошёл третий месяц моей работы senior C++ developer'ом. Беззаботный флёр простых вводных задач позади, и начинается настоящая работа.

Взялся за очередную задачу. День над ней голову ломаю — никакого результата. Второй день, третий — ноль прогресса 🤯 В такой ситуации невольно появляются сомнения в собственной компетентности... Ну лучше не давать им разгуляться, потому что дело наверняка в чём-то другом 💡

И тут я осознал! Я не понимаю, какой результат у меня должен в итоге получится❗️
— Что должно заработать, что раньше не работало?
— Что должно стать возможно, что раньше было невозможно?

Я просто пытался "сделать хорошо", не понимая, а что сейчас плохо 🤦‍♂️

Следующие два дня (вчера и позавчера) прошли за терзанием всех коллег рядом шквалом вопросов "А чего мы вообще хотим?" В итоге у меня, наконец, появился тикет, в котором есть чёткий Definition of Done — подробное описание образа результата, к которому мы хотим прийти. И как-то после его появления удалось и пошаговый план составить, как идти. И сразу стало понятно, какой код писать...

👉 Мораль — если вы долго не можете справиться с задачей, возможно, дело не в вас, а в постановке задачи.

Знакомо?
Please open Telegram to view this post
VIEW IN TELEGRAM
👋🏻Всем хорошей пятницы!

Друзья, сегодня я пригласил в гости Даниила Беликова - Flutter-разработчика, который начал программировать в 27 лет и за последние пять лет прошёл тернистый путь в мобильной разработке
Я попросил Даниила подготовить текст на тему того, как пройти испытательный срок джуну.
Давайте посмотрим, что вышло🔽

Привет, это Даниил!
В интернете много статей на тему того, как найти первую работу, но крайне мало про то, как на ней задержаться. Ловите три основных правила, которые помогут пройти испытательный срок в любой компании.

♥️ Работайте чуть больше положенного
Правда в том, что от вас ожидают максимальную вовлечённость и энтузиазм. Джун может ошибаться, но не может проявлять безразличие. Если хотите заслужить уважение со стороны коллег, работайте чуть больше положенного. Понимаю, что хочется топать ножками и возмущаться, но так мыслят люди. Мы всегда ценим трудолюбие других, потому что самим хочется лениться.

♥️ Выстраивайте отношения с наставником
Как правило, каждому новичку дают опытного специалиста, который должен ему помогать. Знайте, что от этого человека будет зависеть ваше будущее в компании. Как сделать так, чтобы он дал положительную рекомендацию? Не сомневайтесь в его экспертизе, не забивайте на советы, не перебивайте идиотскими шутками и держите фокус на поставленных задачах.

♥️ Участвуйте во всех активностях
Плох тот сотрудник, кто держится особняком. У каждой компании свои приколы, но они обязательно есть. Если хотите выжить, максимально вовлекайтесь во все активности. Коллектив захотел поиграть в настолку? Вы с ними. Коллектив скидывается на подарок бухгалтерше? Вы тоже с ними. Чем больше вы интегрированы в коллектив, тем сложнее с вами попрощаться.

P.S. Если пост Даниила показался вам полезным, подписывайтесь на его канал "Мама, я вайтишник" там вы найдете полезные советы по трудоустройству и познакомитесь с историями и опытом других людей из мира IT😉
Please open Telegram to view this post
VIEW IN TELEGRAM
Воскресный #юмор

Когда после 20 лет разработки ядра Linux решил заняться чем-нибудь другим, но язык С тебя все равно не отпускает 🤪
И почему я не делал этого раньше? 🤯

У нас на работе есть pull request с жарким обсуждением. Там уже под 80 комментариев, и дифф затрагивает не один десяток файлов. Обсуждают не правильное количество пробелов или имена переменных (тогда бы комментариев было ещё больше 😆), а API набора классов, которые будут использоваться повсеместно.

Я быстро перестал следить за этим PR'ом — слишком там много всего происходило. И вот в начале этой недели обсуждение перетекло в рабочий канал в Slack — ребята продолжали искать наилучший API.

Обычно в таких ситуациях я оставался в стороне от обсуждения. «Ну я же не участвовал в этом огромном PR'е, я же не знаю всех деталей. Что я могу там сказать?» Причём «обычно» — это все 11 лет в Яндексе.

А тут я вдруг понял, что несмотря на то, что я не владею всеми нюансами, мне есть что сказать 🤔 И я вовлёкся в обсуждение, начав с выяснения, какую проблему мы решаем.

Спустя несколько часов после того обсуждения мне пришла идея, какое API может решить задачу. Я её озвучил. В итоге мы выбрали «наилучший API», и моя идея заняла заметное место в итоговом решении 💪💡

Вечером того дня я пребывал в шоке 😱 Я впервые порвал свой поведенческий паттерн, и это привело к локальному успеху. А что бы со мной было, если бы в годы Яндекса я вёл себя так же хотя бы в 25% случаев? Этого уже никто не узнает, но что-то наверняка сложилось бы иначе...

❗️Опять я на своём опыте вижу, как важны софты, чтобы получать удовлетворение от работы. И не бояться высказать своё мнение — один из таких навыков.

А как вы ведёте себя в подобных ситуациях?
Нас стало на 200 человек больше, пора рассказать новичкам и напомнить старичкам, что это за канал.

Привет! Я — Илья Шишков, и я — программист. Привет, Илья! Из языков программирования лучше всего знаю C++. Я 11 лет был разработчиком в Яндексе. Главным моим творением за эти годы являются онлайн-курсы «Пояса по С++». Обычно люди после многих лет в Яндексе хвастаются тысячами RPS, миллионами пользователей и прочим highload'ом, но у меня получилось иначе. Не менее 40 тысяч человек зашло на наши «Пояса», десятки благодаря им устроились в Яндекс, сотни нашли другую классную работу. И я этим горжусь.

Ещё я люблю выступать на конференциях: мои доклады были на C++ Russia, TeamLead Conf, C++ Zero Cost Conf и других. В последней я являюсь членом программного комитета и ведущим.

В 2023 я ушёл из Яндекса, чтобы попробовать себя в предпринимательстве. В результате появился проект «Выше вилки» — тренинг по зарплатным переговорам для айтишников. Но жизнь вернула меня в IDE, и сейчас я — senior C++ developer в HFT компании Order Capital в Дубае.

Я понял(а), что ты классный. А чем полезен твой канал?

Здесь я рассказываю о карьере разработчика как она есть:
— какие знания и навыки на самом деле пригождаются на собеседованиях
— когда, чтобы быть полезным, нужно перестать писать код и пойти разговаривать
— так ли на самом деле круто живётся тем, кто исполнил айтишную мечту и уехал в Кремниевую Долину
— что бесит в айтишке

Посты выходят 1-2 раза в неделю, в комментариях обычно глубокие дискуссии и много личного опыта подписчиков.
Copilot: ожидания и реальность

Я месяц регулярно использовал Copilot в своей работе и хочу поделиться итогами.

Если кратко, то у меня два вывода:
— я ожидал гораздо большего
— у меня есть ощущение, что я так и не научился его готовить

Я более месяца использовал Copilot при написании кода (Codeium, если быть точным) и наблюдал, как он влияет на мою производительность. Я понял, что он очень хорош в маленьких вещах:

1. Додумать инициализатор переменной

const auto name = json["name"].as_string();
const auto surname = // сам допишет json["surname"].as_string();


2. Нагенерировать ассертов в тестах
3. Подставить параметры

class Widget {
private:
std::string caption;
int value;

public:
Widget(std::string widget_caption, int widget_value):
// Codeium сам вставит инициализацю членов caption и value
};


Это касается контекстных подсказок, которые Codeium делает в процессе написания кода. Ещё у него есть чат — там можно просить его сделать что-то более сложное. И вот мне кажется, я пока недостаточно много с ним экспериментировал. Самое сложное, что мне удалось сделать с помощью этого чата — это добавление/удаление параметров в шаблонную структуру:

template <typename T, typename U, typename W>
struct Params {
T t;
U u;
W w;

Params(T t, U u, W w): t(t), u(u), w(w) {}
};


Выделяешь код выше, открываешь чат, пишешь "Remove param W from struct Params" и получаешь код

template <typename T, typename U>
struct Params {
T t;
U u;

Params(T t, U u): t(t), u(u) {}
};


Это быстрее и удобнее, чем редактировать класс самому. Но когда такое надо сделать в нескольких классах, которые живут в разных файлах, Codeium говорит, что у него лапки.

На этой неделе был один день, когда Codeium не работал, и я заметил, что вообще не страдаю из-за этого. Так что на данный момент для меня это приятная штука, которая берёт на себя часть мелкой рутины, но пока что очень далека от того, чтобы заменить собой программистов.

Буду дальше экспериментировать с чатом и держать вас в курсе. Делитесь в комментариях кейсами, как Copilot упрощает вашу работу.
«Не подошёл»

Именно с таким вердиктом завершился мой испытательный срок, а вместе с ним и работа в дубайской HFT-компании 😔

Более развёрнутый фидбек — «Ты классный, но мы ожидали бо̀льшего». Здесь можно было бы посыпать голову пеплом и сказать: «Ну как я мог так облажаться?! 😭» Но более глубокий анализ ситуации наталкивает на другие выводы.

Новость о непрохождении испытательного срока стала для меня полнейшей неожиданностью 🤯 Я ни на мгновение не сомневался, что прекрасно вписался в компанию. Поэтому пришёл на итоговую встречу, собираясь обсудить, что получилось, что — нет, и дальнейшие планы. Вышел я оттуда уже без рабочего ноутбука...

В течение всего испытательного срока я получал только положительную обратную связь, меня периодически упоминали в планах на будущее. Уйма позитивных сигналов давала мне уверенность, что я всё делаю правильно. И вот здесь вылезает главная проблема — никто даже не попробовал дать мне понять, что я не оправдываю ожиданий❗️Говорят, они долго обсуждали, что со мной делать, но вообще никак не вовлекли меня в этот процесс. У меня просто не было шанса скорректировать своё поведение...

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

Мне очень нравилась эта работа. Поэтому я попробовал уговорить руководство продолжить сотрудничество, выстроив взаимодействие на основе полученного фидбека. Даже на следующий день пришёл в офис и произнёс пламенную речь, снова предложив продолжить работать вместе, но ничего не вышло 😢

Следующие пару дней я почти не вылезал из кровати 🤕 Казалось, я, наконец, нашёл своё место... Казалось, я попал туда, где чувствовал доверие, поддержку и видел, как мои навыки идеально вписываются в цели компании. Но совершенно внезапно жизнь развернулась на 180°, и реальность оказалась совсем другой 😔

Чему учит эта история?

В Яндекс Еде меня много критиковали, но на каждом ревью ставили хорошие оценки. Здесь же получилось наоборот: только позитивные сигналы, а на самом деле неудовлетворённость результатами и расставание. Опять получается, что именно soft skills определяют, насколько успешное сотрудничество у вас получится:
— выстроить коммуникацию с руководством
— вовремя сообщить о проблеме сотруднику
— вовремя запросить на себя фидбек, не дожидаясь, когда это сделает руководство

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

До недавного времени мне казалось, что говорить о пользе юнит-тестов в 2020-х годах — это то же самое, что рассказы о пользе Интернета. Мол, все уже давно это знают и применяют, и ничего нового тут нет.

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

На моей теперь уже бывшей работе тоже было пространство для улучшения в написании юнит-тестов: не весь код был спроектирован так, чтобы его легко было тестировать, а малое количество тестов на некоторые сложные компоненты затрудняло их понимание 😕

И сейчас я понимаю, что мой доклад «Принципы создания тестируемого кода» с далёкой С++ Russia 2016 вообще не потерял актуальности 💪 В начале идёт довольно баянистый рассказ о том, что делать автотесты хорошо, а не делать — плохо, но потом — всё ещё актуальные и ценные вещи:
👉 юнит-тесты — это пример применения кода
👉 юнит-тесты— это документация поведения
👉 «не все юнит-тесты одинаково полезны»: какими свойствами обладает полезный юнит-тест
👉 19:41 — Закон Деметры, который упрощает тестирование кода и защищает от многих ошибок
👉 30:03 — Dependency injection, который позволяет писать тесты, которые без него были просто невозможны
👉 38:23 — Single responsibility principle как основа проектирования тестируемого кода

И всё это с анализом не только положительных сторон применения этих подходов, но и цены, которую надо заплатить 💲

К записи этого доклада есть классный комментарий: «Интересно, что я все это знаю, но не использую. После специализации С++ на курсере мне надо было услышать все это от кого-то из авторов чтобы смириться»

А на ваш взгляд этот доклад восьмилетней давности всё ещё актуален?
Please open Telegram to view this post
VIEW IN TELEGRAM
LinkedIn по-русски

Расставшись с дубайской HFT-компанией, я снова поставил статус "Open for work" на LinkedIn. В итоге мне оттуда написали какие-то люди, с ними начался диалог.

Каждый раз заходя на LinkedIn, я пугаюсь сложности и запутанности его интерфейса — мне каждый раз приходится гуглить, как там скачать резюме. При этом я регулярно слышу, что это очень мощный инструмент для прокачки своей карьеры, и у меня есть стойкое ощущение, что я совсем не умею его готовить.

В телеграме есть канал о том, как вести свой LinkedIn грамотно. Его ведёт Евгений Котелевский, который эмигрировал в начале марта 2022 без работы и за 2 месяца вышел на удаленку в Великобритании благодаря прокаченному LinkedIn.

В канале LinkedIn по-русски Евгений делится своим инвестиционным подходом к ведению LinkedIn: как регулярно вкладывать в него по чуть-чуть и в ответ получать поток новых клиентов, а также иметь возможность быстро найти новую работу в кризисный момент.

Для меня главная ценность канала "LinkedIn по-русски" в том, что он не только даёт советы регулярно добавлять новые контакты или вести профиль на языке целевой страны, но и делится выдающимися профилями, из которых есть что позаимствовать. Например, вот действительно оригинальный способ рассказать об опыте работы продактом.
Cpp Zero Cost Conf уже через неделю! 🔥

27 июля в Москве и Ереване пройдёт уже 4-я конференция по практике применения C++.

В Москве с докладами выступят:
👉 Антон Полухин расскажет, что нас ждёт в С++ 26 и 29
👉 Константин Владимиров разберёт решения проблем в крупных кодовых базах
👉 Сергей Слотин лишит вас уверенности, что вы понимаете, как работает память компьютера

В Ереване будет не менее горячо: там Андрей Аксёнов, Костя Облаков и Александр Боргардт продемонстрируют сочетание хардкорного контента с искромётной подачей.

Я упомянул только 6 спикеров, хотя всего их будет 14. Конкурс в этом году был как никогда высокий, так что все доклады в программе будут мощными.

Я как во все предыдущие годы состою в программном комитете и буду вести московскую часть (в этот раз с напарницей).

Участие бесплатное, но надо зарегистрироваться. Можно прийти ножками, можно смотреть онлайн.

Всё подробности на странице конференции. Регистрируйтесь и увидимся на Cpp Zero Cost Conf
This media is not supported in your browser
VIEW IN TELEGRAM
Завтра в 12:00 мск начнётся C++ Zero Cost Conf. Туда всё ещё можно попасть, зарегистрировавшись. А сегодня были репетиции и финальные прогоны спикеров.

Вот вам небольшое видео, как мы пытались отрепетировать видеосозвон с треком, который будет идти в Ереване параллельно с Москвой.

Получилось странненько. Поэтому мы убрали это из программы 🤪

Ну а завтра всё уже будет красиво и без сучка̀, без задоринки. Подключайтесь к трансляции — доклады в этом году огонь. У нас в этом году был высочайший конкурс, так что было из чего выбрать 👍
2025/02/21 02:42:51
Back to Top
HTML Embed Code: