Дмитрий Свиридкин

Дмитрий Свиридкин

Неделя
Jul 26, 2021 → Aug 1, 2021
Темы
UndefinedBehaviour
C++
Индустрия
Кулстори

Архив недели @Nekrolm

Понедельник


Тут разыменовали nullptr, переполнили int32 и обратились к мертвому объекту — аккаунт захвачен неопределенным поведением! С вами на этой неделе Дмитрий @Nekrolm Свиридкин. Погромирую на крестах. Нахожу UB везде, к чему притрагиваюсь. И иногда преподаю страшный C++ и около него.

План! пн — "Что за черт-то?!" Вводная о себе и вообще вт — Любимый и ненавидимый C++, UB и Rust ср — Свободный день чт — Курсы что вел, как, почему и что узнал пт — Гос/частные компании: где веселее и лучше сб — Невыгорание и отдых вс — Свободный день

Прежде всего. На случай, если кто-то будет расстроен, обижен, возможно и/или разочарован моим мнением или взглядами: По методу кэрролловской Белой Королевы предлагаю тут выплакать все заранее

Поэтому Вакцинирован. Земля — геоид. Эллипсоид Красовского норм. 3.Во многом фаталист. Склоняюсь к теории симуляции. Большому взрыву это не мешает. Да и без разницы. C++ нельзя выучить. Держать два аккаунта с одинаковыми аватарками — неудобно :)

Mac не удобен Windows не удобен *nix норм. Ubuntu уже почти не падает Пишу преимущественно ближе к вечеру, потому что надо еще и работать Недостаточно эпатажен, чтобы превратить твиттер в тикток Думаю, с острыми моментами пока все

Кто таков, чем занимался и занимаюсь и по каким вопросам могу прояснить чуть больше, чем по всем остальным (мы же с вами эксперты по всем вопросам) Тред:

В айти не шел, оно само меня нашло. Поступал на прикладную математику и информатику в @mmcs_sfedu. Родители настаивали на механике и вообще ростовском государственном строительном университете. Ибо "дороги и мосты надо строить всегда". Но я шел чисто по фану и потому что могу.

Кем и чем буду заниматься совершенно не представлял до 3-4 курса. Просто диффуры делали бррр, а на C++ можно побеждать на олимпиадках. То что айтишникам вообще прилично платят узнал только в магистратуре.

Окончил бакалавриат. Откатался в нем по олимпиадкам. Разочаровался в олимпиадках. Устал от уравнений матфизики и численных методов — потому в магистратуру поступил на фундаментальную информатику и информационные технологии (Computer Science вроде)

Окончил магистратуру. Еще в бакалавриате написал большую дипломную, что ее хватило и на магистерскую, так что мог пинать бал... то есть спокойно работать на полставки. Увы, тогда магистратура в ЮФУ была не очень по нагрузке. Сейчас вроде огонь с геймдевом, но тогда не сейчас

В магистратуру также поступил просто потому что могу: без экзаменов, по олимпиадке. Экзамены те я б, скорее всего, тогда не сдал. Ибо направление ПМИ и ФИИТ вообще-то очень сильно отличались, а не просто "ну, там программирования больше". Выучить бы все не успел.

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

На 4 курсе я успел 9 месяцев потихоньку поработать с машинным обучением (первое место работы) и распознаванием речи. Было интересно (не долго), но я быстро разочаровался в месте работы и в машинном обучении, найдя его скучным.

Тогда я был маленьким и глупым и мне нравился Python. Но за эти девять месяцев меня стало от него тошнить. Еще был go, но его я невзлюбил с первого взгляда. Потому дальше искал работу плюсистом.

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

После, в Питере, работал снова с распознаванием речи. Но уже, слава богам, не обучал модели. Писал и оптимизировал алгоритмы поиска (инференс). Только C++, только хардкор. В обнимку с профилировщиком — так грустил, когда мне его сломали из-за политик безопасности.

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

Также с магистратуры веду всякие факультативы. На ютубе есть пара скромных записей youtube.com/channel/UCJs8y… Еще есть где-то ссылка на пару записей факультативы по алгоритмам и структурам данных, но я ее потерял

В прошлом году вел практику по C++ в питерской ВШЭ. В этом году вел полноценный (лекции и практики) самодельный курс по системному программированию под Linux на МКН СПбГУ.

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

🔥Тред (Дмитрий Свиридкин)
@itunderhood Я кстати смотрел, как ты рассказывал про распознавание речи но на другом канале. Хорошо получилось. youtu.be/f0WEJEHGOvQ
Сейчас вскроют все мои шкафы со скелетами twitter.com/ivn_finaev/sta…

Вечер близится. В качестве заготовки на завтра предлагаю опросец. Предупреждаю, варианты в нем все совершенно серьезные. C++ — язык не очень популярный. И мой вопрос такой: пишите ли вы на нем: регулярно, немножко или нет совсем. Встречался лишь в книгах и универе — не катит.
🤔 9.2% Пишу регулярно
🤔 4.0% Думаю, что пишу
🤔 14.4% Иногда приходится
🤔 72.5% Нет, никогда.

Пункт 2 нужен, например, для тех, кто использует C с классами:)

Также есть майкрософтовский C++/CLI, его, пожалуйста, туда же.

Вторник


Вечер близится. В качестве заготовки на завтра предлагаю опросец. Предупреждаю, варианты в нем все совершенно серьезные. C++ — язык не очень популярный. И мой вопрос такой: пишите ли вы на нем: регулярно, немножко или нет совсем. Встречался лишь в книгах и универе — не катит.
Новый день настал. Ожидаемо, плюсовики тут мало представлены. Но есть время. Возможно, они еще не проснулись. twitter.com/itunderhood/st…

Сегодня про C++, Rust и вообще почему я продолжаю кушать кактус Тред первый.

Как все четкие пацаны, я начинал с паскаля. Но не с турбо или фри, а с @PascalABCNET. Тогда еще без .NET (потом я узнал, что эта инкарнация паскаля уже пару лет как была мертва). Но потом ушлый десятиклассник смекнул, что на паскале писать олимпиадки не удобно (ибо sort нет)

Тогда я решил "выучить" что-то серьезное. На выбор были Java или C++. В Java с порога было множество непонятных ключевых слов, и вообще stdin парсить не удобно... А C++ — зашибись. Изи. Выбор очевиден!
notion image

Параллельно какой-то диванный стартапер предложил освоить php и html и пилить с ним сайтики и зашибать миллионы: он бы осваивал css, а я бы пыхал. Мне не понравилось. Но много разных html тегов я выписал в тетрадку...

На первый курс уже поступал со "знанием" плюсов. Они мне так нравились, так классно. Так бы с одними плюсами и остался, если бы умный человек не шепнул: на олимпиадках важно быстро решить задачу, чтоб не тратить время на простые штуки, полезно иметь в арсенале Python или Ruby.

В универе было много курсов "связанных" с C++. Правда, сути они не раскрывали и подвоха я не видел. Так что к четвертому курсу был уверен, что буду работать на плюсах и вообще умею и практикую. Смартпоинтеры знаю, мьютекс лочить умею, чего еще надо? Любимый язык!

А потом я пошел работать... И че-то все падает, все через жо, память течет, треды крашаться. Падение на выходе — вообще любимая тема. Кажется, это немного не тот C++, которому меня учили...

Сломанные абстракции. Неявно умирающие объекты. Безумие инициализации... Нас учили слишком радужному C++. Которого достаточно, чтобы сделать что-то игрушечное, ну или в олимпиадки поиграть. Но обратного пути нет. Надо было работать работу, ничего другого я все равно не знал

Ну ладно, давайте откроем неиссякаемый источник безумия: (Я в процессе такие восхитительные вещи понаходил) Один лайк — один пример UB на C++!
Стал изучать, как со всем этим бороться: isocpp.github.io/CppCoreGuideli… Начал ковырять различные виды UB и как их опознавать. Тут даже старенький тред в твитторе есть: twitter.com/Nekrolm/status…

Чем больше ковырял, тем больше ужасался и восхищался. Победить это невозможно, только возглавить. Из удобного языка для меня C++ превратился в неповоротливое чудовище, при использовании которого нужно просто угорать, чтобы не сойти с ума.

Я люблю C++, потому что искать и расковыривать весь этот треш — забавно. По крайней мере для меня Буквально час назад обнаружил лютый static finalization order fiasco, пофиксил и еще минут 15 писал развернутый комментарий, почему этот код нельзя трогать.

Я люблю C++, за то что среди огромной кучи известной массы и в нем есть что-то хорошее: метапрограммирование шаблонов и constexpr. Там просто UB нет. Почти нет...

Но я ненавижу C++, потому что я вынужден думать об огромной куче деталей, решая простейшую задачу. А также писать лютое количество велосипедов (обязательно с ошибками), вновь и вновь решая задачу, которая решена везде. Кроме C++.

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

Ненавижу, потому что у нас никогда не будет фич, которые нам обещают. В нормальном виде. Неделю назад я видел, как прекрасный стектрейс будущего C++23 внезапно из opencv ведет в сетевую библиотеку Poco, от которой он не зависит... Безумие. А почему? А потому что линковка...

Возникает вопрос
notion image

Во-первых, мне за это платят. Во-вторых, расследование UB — это всегда детектив с погонями и приключениями. Моя работа не рутинная. В-третьих, множество историй, которые можно рассказать. А рассказывать всякую дичь я люблю. В-четвертых, я не упорствую 🤡🤡🤡

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

Пока получается не очень — писать приходится, но не новый код. Последний год я на плюсах в основном правил старый код.

🔥Тред (Дмитрий Свиридкин)
Сегодня про C++, Rust и вообще почему я продолжаю кушать кактус Тред первый.
Тред второй. Первый был про кресты. Теперь про ржавчину. twitter.com/itunderhood/st…

Если вы думали, что @Nekrolm шутил на счет Rust - нет, он действительно переписал (пока не всё) и сделал MR pic.twitter.com/d7h6UEctgn
Сегодня я мог бы стать настоящим Rust девелопером, но пулреквест пока еще не влили twitter.com/0xfe0d/status/…

С ржавым плотно знаком пару лет. Слышал о нем и раньше, но относился скептически. Аля плюсовый auto_ptr безопасный положили в основу и радуются. (auto_ptr перемещался при копировании, если что, и тем всем доставлял боли)

Сейчас отношусь к нему как нормальной такой альтернативе для C. Но не для C++. Плюсы им полностью заменить пока не получается, да и не надо.

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

Такой хорошей жизни захотелось не только в стильном модном молодежном языке, но и в проклятых крестах, так что я начал исследовать возможности шаблонных безумий gist.github.com/Nekrolm/27ef2c…

По всевозможному перекладыванию забот программиста на плечи компилятора начал упарываться в магистратуре. Глянув однажды запись лекции @_bravit про Idris youtu.be/o-7zhrUP3ds Да, я не знал, что так можно. Ибо ПМИ, а не ФИИТ.

@itunderhood Я уже отписался, что можно вливать!
Ну все, я Rust-девелопер twitter.com/0xfe0d/status/…

После глубоких изысканий с плюсовыми шаблонами, от Rust хотелось того же. Но, увы, то const generic еще unstable, то higher kinded types еще только в планах. А в плюсах есть первое и жалкая, но вполне достаточная имитация второго (template template)

Тем не менее, год назад я все-таки зарядил свой первый продакшон-компонент на Rust. Он совершенно дурной и простой, потому все согласились на авантюру.

Тогда же выяснил, что поднять приватное корпоративное хранилище пакетов — вообще не тривиально. Готовых решений не было. Девопсов напрягать ради непоймичего — дорого. Сегодня решения есть. Rust усилился jfrog.com/confluence/dis… github.com/sonatype-nexus…

Вот интересно, умеют ли компиляторы оптимизировать вот такую фигню? struct Wrapper { float val; explicit Wrapper(float v) : val(v) {} }; struct VecWrapper { std::vector<Wrapper> vec; explicit VecWrapper(std::vector<float> v) { // transform v into vec } } ?
Я читал всякие "разгромные" разборы на тему, что rustc генерит код хуже, чем плюсовые компиляторы. Но вот эту фичу разборщики осторожно обходят стороной twitter.com/Nekrolm/status…

🔥Тред (Дмитрий Свиридкин)
Ну и тред третий. Короткий. Про UB.

Очень часто приходят в реплаи и советуют перейти на что-нибудь из JVM. Типа там UB нет.

Вообще, оно везде есть. И C++ != UB. Самый простой пример — любой ffi вызов может быть с UB, если вы нарушили какие-то предусловия

А в C++ его просто много. Его интересно исследовать. Можно даже книжку написать. Это, конечно, не книжка, но тоже ничего github.com/Nekrolm/ubbook

Мое самое любимое UB — бесконечный цикл без обозреваемых эффектов. Любимое, потому что крайне редко жахает, но все же может.

Мои самые нелюбимое UB — static Initialization/finalization order fiasco и ODR violation. Потому что черт знает когда бахнет, но обязательно бахнет. И будет больно. И фиг найдешь.

🔥Тред (Дмитрий Свиридкин)

Среда


Если у Яндекса на собесах будут такие задачи с обсуждением требований, я готов прийти за еще одной колонкой. А в формате задания на дом без возможности выяснить чего хотят — говно. twitter.com/st_1ena/status…
В порядке свободных мыслей в свободный день. Ну и по мотивам нашумевшего тестового twitter.com/Nekrolm/status… Минитред

Я не часто хожу по собеседованиям. Всего пару раз (по три-четыре компании) . Так что выборка крайне мала.

Плюсовиков все спрашивают про умные указатели и STL. Любимый вопрос — потокобезопасность shared_ptr. Вопросов, важных для C++ разработчика на самом деле, почти не задавали. Складывается иногда впечатление, что C++ у них просто потому что, и ищут того, кто что-то напишешь.

В яндексовом скрининге такой вопрос только один был: "знаете ли вы, что такое UB?" На их "секциях" также никаких полезных знаний, кроме алгоритмических, проявлять не требовалось

C++ большой и разный. Есть милый и пушистый C++ со стандартной библиотекой, фреймворками и by-value семантикой во всем (by-value убивает 90% UB, ценой производительности)

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

И вот на собеседованиях почему-то спрашивают именно про этот мир. Но ведь есть еще и жуткий ад настоящего C++. С выгрызанием производительности через unsafe и платформозависимые вещи. Через глубокое понимание работы компилятора и OS

И как-то в моем преставлении те, кто пишет на C++, должны в основном общаться с этим адом. Потому что зачем еще им C/C++?

Но дай бог иногда про кэш спросят на собеседовании и хорошо.

А задачи из треда с тестовым хорошие. Только их не дома решать надо, а обсуждать с интервьюером. По ним можно много чего узнать.

Я, кстати, тестовые на дом никогда не получал и не выполнял. Наверное, личный бренд решает. Такие дела.

🔥Тред (Дмитрий Свиридкин)
Сегодня я видел множество кривеньких велосипедных конструкций, для которых человечество уже давно придумало полноценные, хорошо оттестированные и зарекомендовавшие себя решения. (В)опрос: Как часто вы изобретаете велосипеды и тащите их в прод?
🤔 8.9% На каждую задачу
🤔 31.8% Только если так проще
🤔 53.8% Иногда -не знаю о готовом
🤔 5.5% Никогда

В плюсовом мире, по моим ощущениям, наблюдается какая-то велосипедная болезнь. "В каждом достаточно зрелом проекте найдется класс строки"

Видел по четыре имплементации функции разбиения строки по пробелам в одном и том же проекте. Иногда по две имплементации в одном и том же файле

Объясняю себе я это по-разному. Во-первых, тяжелое наследие C, в котором ничего нет из коробки, а когда что-то все таки есть, то оно крайне небезопасно (strtok, привет). И странное наполнение стандартной библиотеки.

Во-первых, готовые решения часто тяжело притащить. Сколько-нибудь адекватными плюсовые пакетные менеджеры стали не очень давно. проблема с изоляцией и модульностью (нет их, даже с C++20)

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

Ну и наконец: "Эти инженеры гугла/яндекса/фейсбука ничего не умеют — я лучше сделаю" Путь великой гордыни плюсовиков

Конечно же, тут я не рассматриваю решения, требующие закупок лицензий, сертификации и подобного. Это уже не велосипед.

🔥Тред (Дмитрий Свиридкин)

Четверг


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

Джунов не было, оставалось причинять к кому-то другому... Ведëте ли вы курсы, преподаете, проводите ли мастер-классы? Если да, то что именно? Если не основная деятельность, то связана ли она с тематикой основной?
🤔 0.9% Да, основная деятельность
🤔 10.8% Не основная, но регулярно
🤔 31.5% Иногда бывает
🤔 56.8% Ничего такого не делаю

@itunderhood На четвертьставки пилю курс по Java на Я.Практикуме. И полуобразовательный канал в телеге, но не для джунов. Не могу не учить людей вокруг, это ж отдых, а не работа!
Таки да. Лишь бы бумажной отчетностью не задушили. Как вариант смены вида деятельности для того чтобы отвлечься — неплохо. twitter.com/PavelTcar/stat…

Тред про всякие курсы и образовательную активность. Поехали.

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

Начинал с кружков по олипиадному погромированию. Оно мне долгое время крайне нравилось: соревновательный дух, нетривиальные задачи, C++... ух! Из Ростова-на-Дону и области как-то совсем мало было представлено команд на студенческих соревнованиях. Хотя школьники толковые были.

Если команд нет, их, наверное, можно собрать. Главное заинтересовать, а потом научить. В @mmcs_sfedu тогда был кружок олипиадного программирования "на полтора человека". Сначала сам ходил, потом задачи для него стал готовить, затем разбирать... и понеслась...

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

Со школьниками наоборот. Плюс у них была мотивация в виде всяких бонусов к поступлению.

Так или иначе, но так я пошел по этой скользкой дорожке: "объясняй другим, чтобы самому разобраться"

Разбираешься с алгоритмом. Придумываешь на него задачу. Выдаешь ее. Потом рассказываешь решение. Слушатели не понимают. Объясняешь по-другому. Сам перестаешь понимать. На третий раз наконец все всë поняли. Наверное.

На первом курсе магистратуры проводил факультатив по алгоритмам и структурам данных. Без привязки к олимпиадкам. На ПМИ подобного курса не было совсем. Так что должно было быть кому-то полезно...

Неудачный выбор времени (субботы, вроде), конкурирующие активности, я как любитель использовать только мел и доску... В общем, ко мне ходило человек 5. В основном те, кто и так ходил на олимпиадное погромирование :)

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

На втором курсе проводил небольшой факультатив по цифровой обработке сигналов. Такой курс в универе был, но сильно теоретический. Ну и я в это время работал и как раз демодулировал всякие PAL/SECAM/NTSC. И было чего рассказать и показать en.m.wikipedia.org/wiki/PAL

Тогда начал все-таки делать слайды, а не мазаться в мелу. Дизайнерской жилки у меня нет, пилил простенькие слайды с помощью slides.com Удобно, но экспортировать никуда без подписки не дает, а я бедный студент, меня жаба душит платить. Благо, интернет работал.

Но опять неправильный выбор времени и конкурирующие активности (там факультатив по гемдеву зарядили) — курс слушали три человека.

🔥Тред (Дмитрий Свиридкин)
Тред про всякие курсы и образовательную активность. Поехали.
Второй тред. Про большие курсы. Их не много. twitter.com/itunderhood/st…

В прошлом году позвали вести практику по C++ в питерской ВШЭ у первого курса. Задачи готовые, проверяй, объясняй, все дела. Ну ок. Я не против. Я знаю, что C++ не знаю, а это отличная возможность, его узнать чуть получше.

У меня в бакалавриате в первый год, если что, C++ не было. И думаю, это правильно. Учить программированию с него — можно, но идея так себе.

Но тут вроде как все олимпиадники, монстры, титаны, аж страшно, и "умеют" программировать. Так что ладно. (На самом деле нет)

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

Но непобедимый факт: бОльшая часть студентов отложит все до последнего момента. И не обязательно потому что лентяи. Может быть высокая нагрузка и дедлайны каждый день.

Читать одно и то же пару раз — норм. Читать 15 раз — кошмар. Нет, не в смысле списывают. А в том смысле, что лабораторные задачи часто простые и имеют только одно решение. А на C++ никто его, конечно, правильно написать не может

Очень много ошибок при написании плюсовых программ. Условно: есть 20 типовых ошибок. Каждый делает 10-15 из них. И каждому надо про его особое множество выстрелов в ногу рассказать и расписать.

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

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

Типовой комментарий "Ссылка на строку кода: тут UB, потому что..."

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

Когда ко мне на факультативы приходило два человека — было грустно. Когда у тебя 8-15 молчащих не реагирующих черных квадрата — вообще депресняк.

Заставлять включать камеры — как-то не очень. Не экзамен ведь. Да и если включить, нагрузка на сеть подскакивает и трансляции начинают лагать.

@_bravit Совместный лайвкодинг — получается хаос Выдать задачи и ждать — на удаленке получается мертвое царство Выдать задачи и потихоньку их по ходу разбирать — получается еще одна лекция... Разбор примеров и крайних случаев — опять лекция... Я так и не понял.
Как вообще по-нормальному вести практические занятия по программированию в удаленном формате — загадка. Их и в неудаленном формате не всегда понятно как вести twitter.com/Nekrolm/status…

Однажды от @_bravit поступило заманчивое предложение выучить еще и программирование под Linux. Звучало оно, конечно, не так, но именно так я его понял. Я взял перерыв на полгода, чтобы переждать удаленку (ха-ха) и подготовиться

Накидал план из тем, которые знал, в перемежку с теми, о которых только слышал. И начал собирать мануалы. Материалов лекционных набралось достаточно. Что-то уже в бою заходило не очень, что наоборот. Студенты еще набор тем подкинули (на следующий раз).

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

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

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

Но большие задачи тяжело проверять. И если каждый из 10-15 человек сдаст решение на 3-4 тысячи строк плюсового кода, я в этом утону

Да и студенты тоже утонут. Потому пошел по пути групповых решений. Получилось не плохо и не хорошо. Я не делал промежуточных дедлайнов, к которым надо подготовить определенные фичи. А надо было бы. Чтобы избежать оттягивания всего до конца и ночных хакатонов.

Со стороны это могло выглядеть как "Представьте, что я ваш продакт менеджер, и сделайте хорошо". Ну как обычно бывает :)

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

Были и удачные решения: я никак не ограничивал в выборе языка для решений. Ограничение только в здравом смысле и возможности решить задачу на этом языке. На C/C++ свет клином не сошелся. Были решения на go, Rust, на питоне тесты всякие. Хорошо.

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

В любом случае я узнал много нового, попробовал себя в роли менеджера (пока не очень) и отлично провел время. Рекомендую.

🔥Тред (Дмитрий Свиридкин)
Не расстраивайтесь, если сильно скучно. Завтра я как наброшу, так наброшу!

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

Пятница


Не расстраивайтесь, если сильно скучно. Завтра я как наброшу, так наброшу!
Дальше по плану: Я работал и в гос НИИ и у частников, и у частников, работающих на нужды гос сектора, и мне все везде понравилось. Имею некоторые мысли по этому поводу. Тред. twitter.com/itunderhood/st…

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

Дальше нужна небольшая предыстория для раскрытия персонажа. У меня странно-патриотичные родители, убежденные, что лучше всего быть частью ВПК или напрямую армии (пенсии, квартиры от государства, все дела)

Ну и меня как-то в такой атмосфере и воспитали. Так что я был тем персонажем, что добровольно бы пошел в армии (но здоровья нет). Меня в школе после олимпиады по криптографии сначала позвали в академию ФСБ, но быстро открестились, увидев историю болезни.

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

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

Но, конечно, платят не 300кк/сек. А еще работать надо. Часто в авральном режиме. Так что хорошего понемногу.

За два года в Питере, в ЦРТ, мне ни разу не приходилось таскать серваки, программировать в тумбочке или развертывать комплекс в лесу. В общем скука. Зато без авралов (ну почти).

Вот бы совместить оба варианта, но так, похоже, не бывает.

Вместо занимательных катаний телег с комплектующими и отладкой на коленях (вот так примерно) развлекали скрамом. Развлечение так себе, имхо.
notion image

Ну и, конечно же, вот таких прекрасных записей в трудовой книжке, работая на большой и богатой галере, получить сложно
notion image

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

Технологии старые, кстати, далеко не везде. Но бывают. Помню, как соседствовали C++17 с последними на тот момент Qt и какое-то древнее зло на C++Builder

Также получил важный не только в работе, но и в жизни навык "прохода по звонку". Это когда берешь и звонишь по телефону нужному человеку, чтобы тебя пропустили. Прямо руками берешь и прямо голосом решаешь вопросики. Очень действенно. Рекомендую.

Еще о паре полезных мудростей поговорим завтра. А в общем: работайте там, где хотите. Работайте там, где хорошо (вам). А где плохо — не работайте.

Ах да: Мальчик: NDA Мужчина: Гриф секретности

🔥Тред (Дмитрий Свиридкин)
@itunderhood Меня звали в одну контору писать расширения postgresql на расте, денег нормально, но в заказчиках росгвардию на сайте увидел – отказался сразу.
Забавный факт. С первого места работы (ООО, модельки для распознавания речи пилил) я уволился, узнав, что заказчиком выступает минобороны. Чтобы устроиться во ФГУП, заказчиком которого является... twitter.com/GolerGkA/statu…

@itunderhood Были времена в #ЦРТ. Во время легендарного проекта в Мексике парни прогали в бункере федеральной полиции. А гостиницу, из которой они уехали через пару недель расстреляли из пулемета. Местный колорит :)
Если ваши процессы разработки выглядят не так, не зовите меня twitter.com/Marauder__/sta…

Суббота


Еще о паре полезных мудростей поговорим завтра. А в общем: работайте там, где хотите. Работайте там, где хорошо (вам). А где плохо — не работайте.
Сегодня как раз по плану эта самая мудрость. На выходных надо отдыхать. И работать не больше 8 часов в день. А еще в отпуск ходить стоит. Небольшой тред twitter.com/itunderhood/st…

Я еще ни разу не успел выгореть. Чуть не подохнуть — да, а выгореть пока не получалось. Собственно я и не планирую.

Когда два года назад в один день из двух месяцев 35-40 градусную жару еле живой вывалился на ходу из душного автобуса, в котором около месяца нон-стоп добирался на работу в том числе на выходных (ибо дедлайн близко), тогда твердо решил что-то менять. Желательно все.

Уволился. Переехал в Питер. Больше никогда не работаю по выходным и праздникам. Без надобности стараюсь не программировать. Особенно на C++.

Отпуск весь тратить пока не получается (хз,что делать в долгом отпуске), но 18-20 дней из 28 положенных отгуливаю

У меня нет никаких программистских пет-проектов, которыми надо заниматься по выходным или, не дай бог, по ночам. У меня вообще нет пет-проектов. Только заметки про UB таковыми можно назвать.

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

Внимательные подписчики иногда могут поймать меня за постингом скринов с кодом на выходных. Но это я все ради мемов про неопределенное поведение.

🔥Тред (Дмитрий Свиридкин)
@itunderhood А будет тред как работать 8 часов в рабочие дни, отдыхать в выходные и при этом более менее стабильно развиваться и становиться лучше?
Еще более мини тред: twitter.com/gorancheg/stat…

Что значит стабильно развиваться и становиться лучше? Если пытаешься развить мелкую моторику, в 25 лет впервые начав учится играть на гитаре — это считается?

Слушать конференции, чтобы следить за развитием технологий, с которыми работаешь? Это каждый день что ли делать надо? Я раз в месяц а то и два что-нибудь такое погуглю и норм.

Изучать новые технолгии? Это может выполнятся и в рамках рабочих обязанностей. Есть такой замечательный подход: сначала изучить, как задачу решают в мире, какие варианты существуют, а только потом уже рваться все программировать.

Смена вида деятельности — отличный отдых. Хотите верьте, хотите нет. Для меня работает. И когда я пилю материалы для какой-либо лекции я совмещаю приятное с полезным: отдыхаю и изучая новые.

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

Я не работаю в безумно скачущух по фреймворкам областях разработки. И не хочу там работать. Во всем должна быть мера. Ради чего оно? Синдромом самозванца, требующем немедленно пойти и разобраться во всём новом, ведь другие же определенно знают, давно не страдаю.

🔥Тред (Дмитрий Свиридкин)
@gorancheg @itunderhood Можно работать меньше 8 и в рабочее время изучать новое

Воскресенье


Вcе cвое cвободное врeмя конeчно нeт. Нo пoчему бы пeред cном нe почитaть пaру cтраниц cкучной cложной книжки, кoторая имeет нeпосредственное oтношение к таскaм. Кaк тaски cменятся, тaк книжкy в дaльний ящик. twitter.com/itunderhood/st…
Непосредственное отношение к таскам — нафиг. Отвлекаться от рабочих задач во время отдыха крайне важно. А так-то, конечно, читайте перед сном то, что вам нравится. Особенно если вы после этого лучше спите. twitter.com/0x3f00/status/…

Я прогулялся, сходил в муз. школу, получил одобрение от преподавателя, что у меня получается уже менее плохо, чем месяц назад, часок посплю, утомленный переменой погоды, посмотрю часовую лекцию про теорему Гудстейна и буду писать заметку про UB. А как проходят ваши выходные?

Все те, у кого сейчас дежурства — держитесь. Ваше дело благое.

Неделя подошла к концу. Надеюсь, все кто хотел разочароваться разочаровались. Остальные остались. В основном аккаунте @Nekrolm я шитпостю чаще, лучше и иногда по делу. Можно фолловить. Или нет. Все равно никуда не денетесь и волнами твиттера что-нибудь да донесет. Всех благ!

Ссылки