Искали статеечку с жалобами джуна о несправедливости IT? Так вот же она!
В чём суть истории
Подал резюме в Lesta Studio. HR связалась, рассказала о командах. Назначили технический собес. Задавали вопросы по C++, на всё ответил. На вопросы по ОС показал себя плохо. В итоге сошлись на том, что нужно дать мне тестовое задание на многопоточку. До свиданья, до свиданья, вам HR пришлёт задание.
В итоге HR сообщает, что тестовое изменили, и теперь ты будешь делать на Qt редактор списка объектов. Срок неделя. Классика.
Ну ОК, установил Qt на комп (это заняло больше суток, ибо установщик работает лишь через VPN, а все бесплатные жесть какие медленные).
Само задание, если коротко: программа редактор списка игровых объектов. В ней должна быть возможность создавать файлы списков, сохранять их на комп, открывать внутри себя ранее созданные, чтобы просматривать или редактировать. Должна быть формочка для создания нового игрового объекта, чтобы было чем наполнять список, плюс нужно предусмотреть несколько базовых типов, которые уже есть при старте приложения, таких как "игрок" или "стена". Во время редактирования прога должна показывать, что есть несохраненные изменения, а также должны быть кнопочки undo\redo, если успете.
Разработка
Qt наконец-то установился. В начале зачем-то начал искать в базовых объектах какую-то логику, чтобы можно было через фабрику или абстрактную фабрику наполнять объект различными свойствами. Я это видел примерно как в Unreal Engine с их системой добавления переменных. Вот если сделал переменную типа float, то появилась GUI, чтобы двигать ползунок или вписать точное float значение, или если это строка, вместо этого открывался TextEdit, а если нужен объект, который работает по принципу union, выпадал список для выбора одного конкретного значения.
В общем, это только Core программы, а я прям застрял и часто переписывал код. Всё же пришёл к тому, что я слишком усложняю задачу, это ведь всего лишь тестовое задание, люди на том конце просто хотят увидеть, как чел пишет код, а значит мои переусложнения бесполезны. Сделанная работа лучше идеальной, сказал себе, тем более всего неделя дана.
Остановился на том, чтобы считать все свойства объектов строками. Написал небольшой парсер, дабы писать созданные файлы в специальном формате и при чтении потом на их токены можно было в дальнейшем накручивать дополнительную логику. Чтобы и имя объекта, и свойство, и описание свойства или объекта можно было легко отделить.
Это позволило выделить базовые типы объектов, о которых было сказано в тестовом, в отдельный файл и сделать из него нечто вроде БД, а в будущем это позволило бы легко изменить этот файл и в прогу загружались бы совершенно другие базовые типы. Вроде как достаточно гибко.
Примерно на этом этапе понял, что осталось 3 дня до сдачи, а у меня даже GUI не готово толком.
Я окончательно перешёл в режим кранча, формочку для создания объектов урезал лишь до возможности добавления объекту максимум до 2-х свойств, ибо о полноценной расширяемости не сказано в тексте задачи, а если обратят внимание, то легко докручу. Да и вообще, это ведь не главное. Главное – чтобы код был хороший (Да-да, наивный я, из прошлого).
Последним штрихом стало разграничение всех состояний основного окна приложения, чтобы я мог просто позвать одну функцию, передать ей аргумент из enum-а, а она мне все нужные кнопки делала активными, а другие прятала, какие-то scrollArea чистила и т.д. С таблицей состояний стало значительно удобнее.
Последние 2 ночи я просто не спал и сбил свой режим с намерением успеть допилить код. Добавил два стека для нормальной реализации undo\redo функций, которые были в тестовом не обязательны, а как задание со звёздочкой. Залил всё на Git, сделал ReadMe файл, оформил описание сценариев работы приложения с картинками, почти как настоящая документация, хе-хе.
Отдал всё HR. Через неделю приходит ответ и начинается самое интересное.
Результат
«К сожалению, показанный уровень выполнения тестового задания недостаточен для рассмотрению на позицию junior»
Штааа? ????
«Если смотреть на инструментарий, для нас очень важно, чтобы при разработке задавались вопросы типа «для чего мы это делаем?», «как это будет использоваться?» и т.д.»
Для чего делаем? Чтобы увидеть мои навыки программиста. Как будет использоваться? Никак. Это тестовое задание. Или я чего-то не знаю?..
Дальше идёт список того, чего в моём приложении нет. Об этом не было написано в тестовом, и поэтому сначала подумал, что мне стоило догадаться добавить это самому.
Один интересный пункт был «Рефлексия отсутствует (можно было хотя бы попробовать использовать рефлексию из Qt)». Стал искать инфу о рефлексии в C++. Оказывается, в сам язык хотят добавить её лишь в 2026 году… А в Qt она да, действительно есть. Я о ней никогда не слышал, ибо Qt всё же не основной мой инструмент, да и планировалось изначально вообще дать тестовое на многопоточку. Мне удалось решить задачу и без рефлексии ведь, почему это плохо?
«Несмотря на недочёты выше не могу не отметить довольно чистый код, и наличие Undo/redo как бонуса. Будем рады рассмотреть вас вновь в следующем году, при условии «работы над ошибками»».
Рефлексия результата
Долго пытался понять, что сделал не так. Ведь я просто взял и выполнил тестовое задание. Ну да, не добавил того, что не было сказано добавить, но они похвалили за чистый код. Спасибо, значит чтения одноимённой книги и разных других стандартов не прошли даром.
А потом понял в чём основная причина. Я не задавал вопросы. Оказывается, это было экспресс моделирование за одну неделю, как будущий сотрудник будет вести себя на работе. А раз он не задал ни одного вопроса, значит и на работе он будет вести себя так же – не собирать обратную связь, не уточнять детали после получения задачи. Ну-да ну-да, это хреновый программист. Сразу видно – слабые soft skills. Логично.
Проблема лишь в том, что у меня уже была работа, и я вёл себя на ней не так. Для всех своих приложений на Qt собирал полно инфы, чтобы обеспечить удобный user experience.
Я не задавал вопросы по другой причине. Скажем так, делать тестовое и быть на работе – совершенно 2 разных процесса. Одно дело, когда ты можешь написать коллеге в чат, или подойти и спросить его в соседнем кабинете, а другое, когда перед вами буфер в форме HR. А HR, если ты задашь вопрос по тестовому в четверг, даст ответ лишь в понедельник. А сдавать задачу в среду. И разве это так должно работать? Кандидат должен либо ждать, либо писать неправильно, пока ждёт ответ, чтобы потом переписывать всё за 2-3 дня? Мне кажется это абсурд. Поэтому и не вижу смысла задавать таким образом вопросы. Я уже общался в таком формате при выполнении других тестовых, и получал ответы именно с такой задержкой.
Как по мне, логичнее оценивать человека по тому:
Какую архитектуру он сделал;
Как произвёл декомпозицию на отдельные классы;
Соблюдает ли правило 5;
Насколько безопасны его функции;
Перехватывает ли он исключения и создаёт ли собственные;
Использует ли библиотеку <algorithm> вместо того, чтобы писать велосипед;
Использует ли STL вместе с constexpr и концептами для обобщения кода;
Грамотно ли он применяет паттерны;
Насколько читабелен в целом его код (а то может он налепил магических чисел с непонятными литералами);
Пользуется ли динамическим полиморфизмом;
Написал ли unit-тесты для программы;
Насколько в целом его решение соответствует SOLID, то есть открыт ли его код для расширения и закрыт ли для изменений.
Нет, ты не задаёшь вопросы. Значит ты даже не junior. Приходи через год, может поумнеешь. Для меня это так выглядит :-\
Итог
В завершение, скажу парадоксальную вещь. Это был хороший урок. Это был очень болезненный урок, потому что у меня была надежда, что бессонные ночи, пропущенные пары и сбитый режим — это не зря. Что в этот то раз ведь должно повести. Но нет… Эта попытка учит, что нужно ещё больше задавать вопросов собеседующим по поводу тестового задания. А что оно проверяет? А будет ли там дана полная информация? А есть ли более оперативный способ связи, чем через HR? А что для вас приоритетнее при выполнении задачи? Вот если я не успею сделать его до конца за неделю, это не будет минус, если при этом у меня будет качественный код? А как будет оцениваться качество кода? А что вы хотите увидеть? и т.д.
Тот факт, что я делюсь этой историей не делает меня хорошим человеком, не создаёт мне положительной репутации, а скорее наоборот. Но я лишь надеюсь, что для кого-то такой опыт окажется полезным. Вот вам, дети, урок: задавайте вопросы, ибо по законам тестовых заданий, там всё описано не полностью. Да и вообще, как часто говорят в интернатах – "код не важен, а важно ваше умение работать с людьми и с требованиями".
Иначе получается такая ситуация:
Да и вообще, посмотрите на этого дядю, дети. Его продолжают не брать на работу ведь не просто так. Сразу по статье видно – конфликтный, не знает программирование, коммерческого опыта лишь 1 год. Да и 100% там было что-то сказано разумное в ответе, просто он умолчал. Ну да, это правда. Они сказали, что список свойств объекта должен быть расширяемым, а не ограничиваться 2-мя. Да и вообще, почему можно создать 2 объекта с одинаковым именем? :)
Согласны\не согласны? Что думаете?
Комментарии (170)
Kelbon
09.12.2023 10:37QT
после этого бежишь
А по заданию, ну давать тестовое задание на неделю это любимое занятие всех фирм где занимаются QT, это уже красный флаг
SalazarMAX
09.12.2023 10:37QT действительно ужас-ужас, а вот Qt вполне неплох в качестве графического фреймворка
Rusrst
09.12.2023 10:37Да ладно, вы документацию этого qt видели? Если да, то пойдите почитайте у Гугла про jetpack compose, вот где документация графического фреймворка.
Плюс в qt целая куча не очевидных вещей, о которых даже зная C/Cpp можно поспотыкаться на ровном месте.
yrHeTaTeJlb
09.12.2023 10:37Я видел его документацию, у меня к ней и раньше претензий не было, а на контрасте знакомства с Unreal Engine, я так и вообще руку пожал бы лично каждому кто ее написал.
Мне искренне интересно узнать что-же там за такие неочевидные вещи
Rusrst
09.12.2023 10:37Так, ну давайте начнем рассказ про мое хождение по граблям - qt может сам освобождать часть элементов, если они переданы в qt класс, а потом при ручном освобождении мы падаем в runtime, qt painter может рисовать path двумя способами (мне это вообще в голову не приходило, зачем оно такое надо?) draw path, drawstrokepath. Ну про нагенеренную moc компилятором рефлексию и автор упомянул, я что-то для начинающих про нее тоже ничего не нашел :)
yrHeTaTeJlb
09.12.2023 10:37qt может сам освобождать часть элементов, если они переданы в qt класс
Ну так в этом случае в доках пишут "takes ownership": https://doc.qt.io/qt-6/qmainwindow.html#setCentralWidget. Ну либо вы удалили какой-то QObject у которого есть parent, но про это тоже подробно расписано: https://doc.qt.io/qt-6/objecttrees.html
drawstrokepath
Если вбить это в Гугле, находится только ваш комментарий в этом посте. А про рисование паинтером есть вот такая простыня с компилируемыми примерами: https://doc.qt.io/qt-6/qtwidgets-painting-painterpaths-example.html
нагенеренную moc компилятором рефлексию
https://doc.qt.io/qt-6/metaobjects.html
https://doc.qt.io/qt-6/properties.htmlRusrst
09.12.2023 10:37Я не буду ничего писать про два остальных примера, будем считать это моей невнимательностью, я все же не изучал qt отдельно никогда. Остановимся на path и painter.
Вы конечно молодец, прислали мне пример из доки, он там и правда есть, ставится вместе с creator. Но есть одно большое но, там не рассматривается пример работы stroke path (я ошибся, написал по привычке drawstrokepath, на самом деле надо установить сначала stroke path, а потом draw path), а обычный, как оказалось работает не так как ожидается. Причем очееень неожиданно. И такое везде, где я начинаю погружаться в qt
Arkasha
09.12.2023 10:37У Qt шикарная документация, зачем брешете?
Rusrst
09.12.2023 10:37Вы видимо шикарную документацию не видели. Я ещё раз пишу, зайдите на jetpack compose, вот где шикарная документация
Arkasha
09.12.2023 10:37Зашёл, хоть и не шарю в котлине (на примере слайдера):
Тот же бриф в начале страницы, то же краткое описание member-ов, что и в доках qt
Те же примеры использования
То же подробное описание класса, его поведения и нюансов на отдельной странице (в qt просто листануть ниже, не суть)
Те же quick start гайды по разным частям библиотеки, best practices и все дела
Разверните, пожалуйста, свою мысль вида "вы документацию этого qt видели?" и "зайдите на jetpack compose", а то я лично не понимаю, что вы хотите сказать.
Для примера вот qml slider: мне вот больше нравится, там в брифе сразу типы member-ов и аргументы функций указаны, в отличие от вашего примера. А ещё доки qt доступны оффлайн в qtcreator по F1, не нужно ждать, пока грузятся страницы, которые у вашего примера в несколько мегабайт размером (не проверял, еcть ли оффлайн версия)
Rusrst
09.12.2023 10:37О, это вы хорошо зашли) можете посмотреть как раздел guides вообще выглядит - там все аккуратно разложено и все можно понять и легко начать что-то делать человеку далёкому от фреймворка. Так же даны примеры!!! реализации.
Вот к примеру про картинки и их кастомизацию, у qt ничего похожего и рядом нет. Примеров архитектурных компонентов вообще не найти. Примеры мобильных приложений тоже не найти. И все как-то сложно. Аналогов codelabs тоже нет. И так куда не пойти...
Qt creator это отдельный вид садизма, там даже автоимпорт qt классов не реализован до сих пор. Документация кстати и в Android studio доступна, т.к. есть исходники с комментариями, чего тот же qt может быть лишён (как я понял исходники qt Cpp добавить как-то можно, но по умолчанию из нет)
https://developer.android.com/jetpack/compose/graphics/images/customize
Arkasha
09.12.2023 10:37как раздел guides вообще выглядит - там все аккуратно разложено и все
можно понять и легко начать что-то делать человеку далёкому от
фреймворкаТо же самое в доках Qt. И те же примеры использования (реализовывать не нужно, оно же в библиотеке уже). Вообще мне чёт лень с вами спорить, да и аргументы у вас все спорные, я сливаюсь.
Sazonov
09.12.2023 10:37Недавно делал тестовое в Crytek, там похардкорнее, и да, тоже на неделю (хотя по мне так нужно около 3 недель чтобы на 99% хорошую архитектуру сделать). На самом деле не вижу в этом проблемы, если вам действительно хочется именно на этот конкретный проект. Без примеров кода очень сложно понять, насколько человек может связывать в единое целое штучные классы (проектировать архитектуру). Думаю что джун в любом случае получил ценный опыт.
З.Ы. А Qt элементарно ставится без впн практически через любой менеджер пакетов.
rwscar
09.12.2023 10:37IMHO любое тестовое на неделю - это красный флаг
Sazonov
09.12.2023 10:37Красный флаг только после ответа на два вопроса:
Действительно ли вы хотите именно на этот проект
-
Оплачивается ли такое тестовое (но это огромная редкость)
Если хотя бы на один из вопросов ответ «да», то who not?
PlatinumKiller
09.12.2023 10:37Ну лично скажу, если первый и второй пункт «да», то тогда почему нет, денег лишних не бывает, вопрос лишь в цене и времени.
Sazonov
09.12.2023 10:37Опять кто-то молча минусует все подряд комменты, без каких-либо аргументов. Видимо кому-то я насолил =\
dmitrii-bu
09.12.2023 10:37Иногда попадаются интересные задания. Не так давно делал тестовое на позицию performance engineer в HFT фонд. Нужно было покодить на C/x86 assembly под Линукс с упором на низкое лейтенси. Несмотря на то, что по результатам дальнейших собеседований получил отказ, вполне интересно провел время за выполнением такого задания.
Когда же дают тестовые типа «Напиши сервис по перекладыванию джейсона из Кафки в Монгу и положи в докер», то как правило вежливо отказываюсь от дальнейших этапов, если не интересны проект, компания и компенсация.
Suvitruf
09.12.2023 10:37тестовое задание на неделю
Беги, глупец.
GospodinKolhoznik
09.12.2023 10:37Я за одно такое взялся и устроился на довольно хорошую работу. Но мне сразу сказали что заплатят 1000$ независимо от того справлюсь я или нет. Но то была зарубежная компания, а у нас тут другая атмосфера.
Areso
09.12.2023 10:37О, на Хабре с год назад была статья, что компания платит* за тестовые задания...Но был нюанс.
petropavel
09.12.2023 10:37Ну почему. Мы когда давали тестовое, срок вообще не ограничивали. Я называл срок в две недели как ориентировочный, типа, мы перестаём ждать, но присылать можно и позже. Это ж просто вежливость, кому сколько времени нужно, у кого сколько времени свободного есть.
Но я все тестовые сам делал вначале, и если в 10 минут не укладывался, то слишком сложное, не годится. Считалось, что кандидат может за пару часов разобраться.
BenGunn
09.12.2023 10:37Подпишусь под каждой буквой. У меня 26 лет коммерческого опыта. Переодически бампаю свои резюме на соответствующих ресурсах с целью посмотреть где предложат поработать и над чем. Иногда даже хожу на собеседования и вот что я понял за все свои три места работы. Тратить время на тестовые задания - величайшая глупость кроме ситуации когда ты очень хочешь здесь работать либо ситуация безвыходная(к этому конечно же я пришел не сразу). Причина такого банальная. Ты не в курсе какой код от тебя ждет другая команда. Ну серьезно, вы еще не знакомы, а уже любить друг друга собрались. Опять же тестовое это время которое крайне редко потенциальный работодатель соглашается оплатить. А иногда бывают лулзы в фидбеке после которых работать в данной компании уже не хочется.
vvbob
09.12.2023 10:37У меня единственный стимул выполнять тестовое - прикольная задача ,которую мне интересно выполнить независимо от результата, чисто по фану. Делать это ради работы - ну его нахрен.
nronnie
09.12.2023 10:37Это да. Но как раз такие задачи даже одного целого вечера не требуют. Уж точно не две недели.
vvbob
09.12.2023 10:37Вот потому обычно и отказываюсь от тестовых. Последний раз когда делал - получил фидбек плана "Нет". С тех пор даже время на все это тратить не хочу. У меня на тестовое тогда ушел целый день (хотел получше сделать), у ревьювера на ответ ушло три секунды, уверен что код он даже не смотрел. К черту все это.
MiraclePtr
09.12.2023 10:37"Тестовое на неделю" любят присылать, например, небезызвестные и очень уважаемые в индустрии JetBrains. Естественно, об оплате речи не идёт, ага.
Chamie
09.12.2023 10:37И задание вида «сделайте в точности как вот в этих продуктах», а потом «ой, а мы думали, в них по-другому работает, переделывайте».
MiraclePtr
09.12.2023 10:37...и это ещё если через неделю (в течении которой кандидат должен был свое свободное время тратить на выполнение для них этого тестового) ему вдруг не пришлют "К сожалению, позиция закрыта, мы решили продолжить с другим кандидатом, всего хорошего" даже не дождавшись результата.
shornikov
09.12.2023 10:37Зависит от формулировки:
вот вам тестовое, которое мы оцениваем как "работы на неделю"
или
вашу работу мы будем ждать до конца неделиMiraclePtr
09.12.2023 10:37Первое. Там сами требования в задании такие, что тянет как минимум на пару полных дней работы над задачей (то есть с учётом того, что человек днём работает на работе, остаётся делать тестовое задание по вечерам и выходит как раз на неделю, а то и больше). Причем это мнение не только кандидата, но и самих интервьюверов, потому что в задании есть приписка типа "Просим сделать реализацию достаточно простой, чтобы уложиться в 12 часов" - то есть сами авторы задачи подразумевают, что может потребоваться даже больше времени, но 12 часов на "простую реализацию" требуемого должно хватить.
shmakovaa
09.12.2023 10:37Я когда на джуна устраивался, получил тестовое задание на неделю, и да, делал его целую неделю. Правда через полгода, когда стал миддлом, мог сделать его за 2-3 часа. Все зависит не от срока, а от сложности тестового задания
AndronNSK
09.12.2023 10:37Если тестовое задание занимает больше 2х часов - забываешь контору и идёшь дальше.
В 2017 году я делал тестовое С++ в одну из импортозаместительных контор на Эл начинается, на кс заканчивается.
Написал там что-то элементарное типа std::unique_ptr или auto, а они мне - ваше задание не компилируется. И показывают лог 4го или 6го GCC.
Как-то не получилось с ними поработать.
BenGunn
09.12.2023 10:37А иногда бывает, что от тебя вместо плюсов ждут какую то адовую смесь плюсов с си и полный запрет на алгоритмы и контейнеры.
40kTons
09.12.2023 10:37Поясните шутку не плюсовикам? 4/6 GCC насколько древний?
AndronNSK
09.12.2023 10:37На дворе 17й год, а у них в компиляторе не включена поддержка 11го стандарта. Причём, они даже не знают, базовые вещи, что в него входят.
kterik
09.12.2023 10:37А, так вот почему Элтекс настолько сырые прошивки для своего оборудования клепает.
iig
09.12.2023 10:37ваше задание не компилируется. И показывают лог 4го или 6го GCC.
Ну так надо заранее уточнять требования. Может у них есть любимый компилятор, или несколько.
DrGluck07
09.12.2023 10:37Мне кажется, это они должны писать в требованиях: хотим GCC 126 версии с перламутровыми пуговицами.
AndronNSK
09.12.2023 10:37Как бы да. компилятор и стандарт обязательно нужно указывать в задании.
Они ещё в задании написали, "поддерживать подключение нескольких клиентов' а потом такие: ой, а вы многопоточность не показали. Я грю - вы написали, поддерживать несколько клиентов - я поддерживаю. По очереди. Те такие - ну да, как-то не очень сформулировали ????
Spaceoddity
09.12.2023 10:37Леста?))
В контору абсолютно неквалифицированных рукопопов? Тестовое на неделю? Ты посмотри какой важный птиц))
Не, я всё понимаю, но есть же вещи которые не продаются - уважение к себе, например))
Вы бы ещё в ВК (которые мэйлру) резюме отправили))
venanen
09.12.2023 10:37А в мейле, наверное, хорошо работать. Судя по результатам - чтобы в мейле хорошо работать, нужно очень плохо работать...
MrSung
09.12.2023 10:37Откуда знаешь, что в лесте рукожопы?
Spaceoddity
09.12.2023 10:37Я, при желании, конечно, могу насобирать вам тучу багов из клиента, которые не правятся годами - только на это никто не реагирует. Балансировку, "pay to win" и т.п. даже не трогаем.
Вот мне кажется, характерный пример - год назад Леста и ВГ решили окончательно разделить сервисы на "независимые". И корабельную вики решили перенести на другой домен. Вот, по вашему - сколько надо времени на подобную задачу для компании масштаба Лесты? Пара часов? День? А несколько месяцев не хотите? Потому что ну не быстрое это дело - вручную копипастить контент с одного ресурса на другой...
ZirakZigil
09.12.2023 10:37которые не правятся годами
Но ведь это наследе вг, нет? Если 10 лет пилить костыли по указке, то когда указка пропадает, вполне себе может оказаться, что убрать костыли уже очень тяжело. Да и леста поддержкой цистерн же вообще не занималась, по сути.
Балансировку, "pay to win" и т.п. даже не трогаем.
Это тоже наследие вг. Да и народ не поймёт, если резко начать нерфить сильный премы, пусть их там и немного совсем.
Spaceoddity
09.12.2023 10:37Вы странный. Я же специально в качестве примера привёл кораблики, хотя с танчиками всё было бы ещё нагляднее.
MrSung
09.12.2023 10:37Минус за то,что я просто поинтересовался, на основе чего человек составил такое мнение?
nronnie
09.12.2023 10:37Хороший разбор того, почему с тестовыми заданиями на дом не надо связываться вообще. Оценить как человек пишет код можно за пятнадцать минут дав ему небольшой live coding прямо на собеседовании. А делать задание дома это из сферы "пойди туда не знаю куда" - никогда не будешь знать что от тебя на самом деле хотят и никаких уточняющих вопросов не задать в случае чего.
GospodinKolhoznik
09.12.2023 10:37За время интервью можно успеть узнать, как хорошо человек поднатаскался в решении олимпиадных задачек ни больше ни меньше.
nronnie
09.12.2023 10:37А зачем обязательно давать какие-то задачи? Можно сделать вполне типично - дать пару дюжин строчек
говнокода, попросить найти в нем изъяны и показать пути их исправления. По-моему это вполне показатель того насколько человек умеет работать с реальным кодом. А всякие переворачивания строк как раз никакого отношения к реальности не имеют.PsihXMak
09.12.2023 10:37Да да, задания в духе «я загадал в этом коде ошибку, найди её». Проходили, знаем.
nronnie
09.12.2023 10:37Нет. Речь не обязательно о поиске ошибок, а о "поиске", например, "пахнущего кода". Сам код может быть формально и без ошибок. Хотя, впрочем почему бы и нет. Если там какие-то не глубоко запрятанные ошибки логики, а, какие-нибудь достаточно типичные ошибки связанные с неправильным использованием языка или платформы (ну, например, передача по значению вместо передачи по ссылке и т.п.) - если человек действительно имеет опыт разработки, то он такие вещи должен распознавать сразу же с одного взгляда.
PsihXMak
09.12.2023 10:37Если это код на проверку какой то конкретной ошибки по какой то конкретно одной теме - то ладно. Но, я не раз попадал в ситуацию, когда ты уже назвал 10 ошибок в блоке кода, а тебе говорят "А что еще?", либо "Это всё?". И ты сидишь и гадаешь, что именно задумал интервьюер, нашёл ли ты все ошибки, либо он хочет от тебя что-то конкретное.
nronnie
09.12.2023 10:37Меня другая тема выбешивает. Когда показывают кусок кода такой, что непонятно чем надо удолбаться, чтобы такое написать (например дюжину как-то хитровложенных
try-catch-finally
) и спрашивают: "Что он будет делать". Мля, да ничего он не будет делать, потому что тот, кто такое притащит на ревью с ревью уже живым не уйдет :))
olartamonov
09.12.2023 10:37Оценить как человек пишет код можно за пятнадцать минут
Нельзя.
Между двадцатью строчками кода какого-нибудь алгоритма и комплексным решением, в котором надо сесть и полчасика для начала подумать над «кто на ком стоит», т.е. архитектурой — пропасть.
И людей, которые умеют красиво вещать о программировании, красиво писать двадцать строчек и при этом демонстрировать абсолютно лавкрафтовский ужас в любой комплексной задаче, я лично встречал (и собеседовал тоже, да).
Utyugovich Автор
09.12.2023 10:37да, я тоже так думаю. Поэтому я не против сделать тестовое ну или предложить посмотреть свой git. Потому что у меня теперь этих тестовых там... Но почему-то все в основном отказывают и просят написать их тестовое :))
nronnie
09.12.2023 10:37Между двадцатью строчками кода какого-нибудь алгоритма и комплексным решением, в котором надо сесть и полчасика для начала подумать над «кто на ком стоит», т.е. архитектурой — пропасть.
Разработка "комплексного решения с архитектурой" (такого, которое оценить можно будет) это как раз и будет задача на неделю, от которой нормальные люди сразу шарахнутся.
Вот, представим, я все-таки решил делать тестовое. Если я стану писать код "по студенчески", то
Мне это неинтересно.
Я это уже просто не умею, потому что у меня голова и руки уже под другое заточены.
Если же я стану писать код как будто он "боевой" для продакшена, то, даже учитывая наличие кучи готовых заготовок у меня минимум час уйдет только чтобы создать пустой скелет проекта (логирование, CA/SA/CI и т.п.). Плюс добавим к этому покрытие юнит- и интеграционными тестами, плюс хоть какое-то документирование тех же API. Вот и выйдет, что создать самый обычный (и в данном случае, в итоге, никому не нужный) CRUD надо будет пару вечеров потратить, а на это времени уже жалко.
AkaZLOY
09.12.2023 10:37Это же Lesta, неужели вы хотите работать 9-и часовой рабочий день и получать вычеты из зп за опоздания на минуту?
s_poliakov
09.12.2023 10:37А бесплатные ужины?!(
nronnie
09.12.2023 10:37Я когда в середине 2000 работал в одной конторе, то когда сидели на работе до 11-12 вечера, то присылали на всех пиццу, а потом еще такси до дома оплачивали :) На самом деле овертаймов там не было - просто из-за часового пояса клиента (US) часто приходилось рабочий день сдвигать, что в силу халявной пиццы и халявного такси было даже выгодно :))
slsktnkv
09.12.2023 10:37А можно выложить тестовое на гитхаб? Почитать, посмотреть.
Utyugovich Автор
09.12.2023 10:37Могу отправить в ЛС
JordanCpp
09.12.2023 10:37Выкладывайте ваше задание и тестовое. Вы nda не подписывали. Не надо оберегать неадекватных ревьюверов. Просто уже интересно, что там надо было такое предугадать.
PervertGenius
09.12.2023 10:37Могу прислать свое на "Trainee QA Automation", если надо.
Делал как раз недавно, потратил часов 5 чисто из-за того что пытался сделать все идеально (а в одном задании вообще не очень верно сначала понял и даже перевыполнил)
kdpdev
09.12.2023 10:37Не стоит исключать вариант, что причины отказа просто высосаны из пальца, чтобы они смотрелись как-то болеменее осмысленно, хотя причина отказа совсем в другом. Вообще хорошо, что посмотрели код. Мой любимый случай - выполненое тестовое устроило, пригласили еще раз. Чета там про паттерн какой-то спросили, я сослался на тестовое, что мол вот там как раз этот подход и применил. Мне ответили: а мы, честно говоря, тестовое не смотрели, но паттерны вы не знаете, досвидос.
1dmitry
09.12.2023 10:37Всегда можно отказаться брать тестовое, сославшись на собесы с другими конторами. Вы же работу ищите, а не тестовые.
zumotrix
09.12.2023 10:37Вокруг Лесты сейчас столько инфо-шума за последнее время.. Бро, понимаю твою обиду по поводу потраченного времени. Но потом судьбе только спасибо скажешь, что не взяли. Я сам как-то работал с этой шарашкой, там половину штата набрали на автобусной остановке, и этот сброд тащит компанию на дно. P.S. я так понимаю, вакансия по плюсам вообще никак не связана с QT?
yrHeTaTeJlb
09.12.2023 10:37Например, в блице тулы для артистов на qt. Если ищут человека в туловую команду, тогда вполне себе может быть связана.
PS. Но это абсолютно точно не тулы блица.
Duck7722
09.12.2023 10:37Что забавно, если начать спрашивать на собесах "Зачем?" - то легко отказывают. По логике, не ну человек, который слишком душнит.
onets
09.12.2023 10:37Эта попытка учит, что нужно ещё больше задавать вопросов собеседующим по поводу тестового задания
Придет время и вывод будет другой - не делать тестовые.
kdpdev
09.12.2023 10:37А пока оно не пришло, выкладывать на свой гитхаб с целью в будущем тыкнуть туда.
MaxKitsch
09.12.2023 10:37Тестовые делать можно, если они занимают 2-3 часа.
onets
09.12.2023 10:37Дело не только во времени. Еще в нечетких требованиях и в невозможности обсудить реализованное решение. В большинстве случаев - тестовые это угадай-ка мысли в голове проверяющего.
У меня было два нормальных тестовых - одно оплачиваемое, второе - там были тесты. И моя задача сводилась к тому, чтобы тесты проходили. Но по второму я все равно не получил никакого фидбека.
Было когда, я сфокусировался на бэк-енде, а надо было на фронте. Меня похвалили за бэк-енд, но не взяли из-за того, что я на скорую руку скопипастил фронт из интернета и не подчистил код.
И было еще одно - "нам некогда проверять, вы нам не подходите".
Tzimie
09.12.2023 10:37Проблема лишь в том, что у меня уже была работа, и я вёл себя на ней не так
То есть на момент полного погружения в тестовое на неделю вы забили на основную работу? Взяли отпуск? Отгулы? Как это работает?
Utyugovich Автор
09.12.2023 10:37нет, я уволился примерно пол года назад, потому что меня полностью посадили на C, хотя я приходил на вакансию "С++\С" всеми любимую :)
До этого были проекты на С++, а потом перевели на микроконтроллеры, вот я и решил уйти. В вакансии о них ничего не было сказано, когда приходил устраиваться..Опять же, на Habr есть прекраснная статья о том, что С и С++ это разные языки. Вот это мой случай, я полностью разделяю такую точку зрения: https://habr.com/ru/articles/676816/
И я не хотел с 0 учить ту сферу, которая мне не инетресна на инструменте, который мне не нравится тупо из-за бабок. Всё же я глуп и наивен, и хочу, чтобы работа нравилась :)
Utyugovich Автор
09.12.2023 10:37Да, C это подмножество C++, но одно дело, когда основной язык это C++ и лишь иногда приходится считать байтики, а другое дело, когда из твой жизни полностью выпиливается С++, и остаются лишь микроконтроллеры с typedef-ами и операционкой в форме бесконечного цикла while в основе.
AndronNSK
09.12.2023 10:37МК тоже разные бывают у нас в AKCP на CortexM3 без доп памяти был и SSL и SNMP и вэбморда и 3 десятка типов кастомных датчиков.
ALexKud
09.12.2023 10:37Сейчас под приличные микроконтроллеры пишут под операционной системой типа freertos и подобных. Другое дело что писать на С это сейчас глупость даже для микроконтроллеров. Код под С++ получается значительно компактнее по использованию флеш памяти просто потому что многие вещи, допустим интерфейсы spi можно делать наследованием от однократно написанного базового класса, а не тупо копировать. Но проблема в том что если в компании разработано много совта на С то разработчикам нужно переписывать под С++, но они его или не знают или нет времени на это или есть наработки, которые можно быстро использовать от проекта к проекту.
AndronNSK
09.12.2023 10:37Проблема в том, что на с++ способов выстрелить себе в ногу в 3000 раз больше. Программисты для с++ нужны квалифицированнее. А они просят больше денег. А там, где МК, этих денег не платят.
ripandtear
09.12.2023 10:37Зависит от. Есть компании, где платят нормальные деньги (меньше конечно, но не драматично и в целом в рынок вписывается) и на С и работу с МК. Но насчет квалификации, вы правы.
Хотелось бы конечно, чтобы квалифицированных программистов на С становилось все больше.
ripandtear
09.12.2023 10:37Глупость это думать, что С++ решит все проблемы, просто потому что это С++. ООП для многих вещей спорный кроме GUI, а уж ООП в виде С++ это далеко не самое приятное, что могло получиться (Это еще мягко говоря).
MiraclePtr
09.12.2023 10:37Сила C++ в сравнении с C это далеко не только ООП.
ripandtear
09.12.2023 10:37Если вы про обширное кол-во доступных библиотек, то для С большая часть того что требуется повседневно, так же существует.
MiraclePtr
09.12.2023 10:37Вообще не про библиотеки. А например про гораздо лучшую типобезопасность (enum class, разные касты, темплейты вместо макросов, т.д.), RAII для освобождения ресурсов, compile-time вычисления и генерация, позволяющие, например, делать такое, неймспейсы, и т.д. Короче говоря, много вещей, которые упрощают разработку, сильно помогают отлавливать многие ошибки ещё на этапе компиляции, и при этом не добавляют оверхеда в рантайме.
ripandtear
09.12.2023 10:37Честно говоря, пару лет назад я думал примерно в таком же ключе, что и вы.
Я окунулся в пару больших проектов на С++, до этого купил и прочитал много серьезных книг по С++ (Скотт Мейерс, Райнер Гримм, и т.п., а главное - книга Федора Пикуса) чтобы быть "в курсе современного С++" и ООП в целом, естественно была так же изучена книга "Банды четырех" про шаблоны проектирования. Общался в процессе работы с другими коллегами, С++-программистами, которые были намного опытнее меня. Но одним из первых звоночков было, как мне помнится, когда один из таких действительно хорошо разбирающихся в С++ коллег смотрел мой код на ревью, нашел алиасинг в одном из методов, а потом сам же после штудирования стандарта и бог весть там чего еще, сказал спустя четыре час, что "Походу я был неправ, алиасинга там нет ".
Но в целом, мои впечатления от этого опыта были сугубо негативные, в стиле известного мема "Пятачок, неси ружье".
Главное, что у меня на осознание этого заняло не так много времени, как бывает у многих, потратил всего около двух лет. Теперь только С и ассемблеры при необходимости, возможно, какой-нибудь Python в ограниченных объемах.
The cake is a lie.MiraclePtr
09.12.2023 10:37Ха :) Я ровно то же самое могу сказать, что и вы, а именно
Честно говоря, пару лет назад я думал примерно в таком же ключе
Только не пару лет назад, а гораздо раньше. Начав свою карьеру писал на C++, потом разочаровался в нем, и долгое время точно так же как и вы, решив "да ну нахер" разрабатывал на чистом Си, немного ассемблере, а для всяких сторонних инструментов (мы писали в основном под эмбеддед для промышленной автоматизации) на чем-нибудь более высокоуровневом (сначала на Delphi, царство ему небесное, потом на C#). И уже потом с течением многих лет и работой в разных проектах, насмотревшись на всякое и понаблюдав, как развиваются проекты от маленького прототипа то матёрого продукта с многолетней историей развития и собранными шишками, пришло понимание, что такое подход работает только для решений низкой и средней сложности, а как только продукты становятся гораздо более комплексными, а темп разработки и требования к надёжности и гибкости резко растут, то чистый Си - это dead end, и очень жаль, что осознание этого заняло так много времени. Переход обратно на плюсы в итоге открыл второе дыхание, и со временем я их полюбил. Мне действительно страшно представить, каким бы было то, что я делал в предыдущем месте работы и то что мы делаем сейчас, если бы мы писали это не Си, а не на плюсах - скорее всего, проекты бы до сих пор не вышли из беты, а про количество ошибок я и не говорю (да, речь все ещё про embedded-разработку). И вместе с тем пришло понимание, что ООП и всякие там паттерны от GoF - по-прежнему совсем не серебряная пуля, но тем не менее очень даже имеют смысл, если приложить их туда куда надо и когда надо. Кстати, кто сказал слово "Rust"? :)
нашел алиасинг в одном из методов
Алиасинг и вытекающие из него проблемы - это изначально не сколько плюсовая, а именно сишная штука. Можно подробности той истории, точно ничего не путаете?
ripandtear
09.12.2023 10:37Rust конечно представляется неплохим вариантом, но лично я сейчас не могу смотреть на его синтаксис (код выглядит страшновато), ну и в целом пока хватает С.
По поводу алиасинга - в этом-то и смысл - искусственно выдуманная сложность С++ настолько зашкаливающая, что когда казалось бы опытный и квалифицированный программист на С++ находит то, чего не существует, и тратит много времени на то, чтобы убедиться что этого действительно нет - это как-то не очень хорошо, на мой взгляд Но это я привел один из примеров, разбирать тот же плюсовый код на шаблонах это вообще отдельная песня...
Насчет Си и dead end пока не соглашусь (Не буду исключать варианта, что потом в будущем приду к вашим же выводам). Потому как я видел и участвовал в довольно больших проектах на С, где подобных проблем (Гибкость и надежность) не было, с точно такой же длительной историей.
MiraclePtr
09.12.2023 10:37По поводу алиасинга - в этом-то и смысл - искусственно выдуманная сложность С++
Но подождите, ведь алиасинг и связанные с ним трудности существуют и в обычном C, C++ не добавляет к нему какой-то особой специфики. Поэтому это не звучит как недостаток только именно плюсов, у Си есть ровно та же самая проблема (см. например тут, группа про C++, но обсуждают код на Си и компилируют его Сишным компилятором), от этого даже в свое время в LKML полыхнуло (речь про этот коммит)
ripandtear
09.12.2023 10:37Существуют.
Проблема в том, что человек изначально не до конца понимал что это, откуда берется, и как этого избежать. И поэтому ему это привиделось там, где этого нет.
Это конечно относится и к С, в данном случае пример вышел и правда не очень показательный.
В С понятно хватает и своих проблем, но их хотя бы сильно меньше по кол-ву, при этом более-менее про них уже все известно за столько лет. С каждым новым стандартом С++ добавляется нечто к тому здоровенному кол-ву вещей, что уже есть.
У меня не хватает никаких ментальных сил все это помнить и учитывать, где я или компилятор С++ поставил в код UB или нет.
fshp
09.12.2023 10:37C это подмножество C++
Неверно.
void foo();
Это совсем разные функции в этих двух языках. В C++ это функция без параметров, а в C это varargs функция.
В С есть ключевые слова, отсутствующие в C++. Массивы переменной длинны в C++ появились лишь недавно (хотя gcc отходил от стандарта и позволял их использовать).
Можно перечислять бесконечно долго.
NevoWin
09.12.2023 10:37По статье насчёт качества кода трудно судить. Там действительно мог быть гавно-код.
Про бежать при упоминании о тестовом задании в неделю все сказали. Это верно на 100%. Но это твой выбор был. Это было частью контракта , ты его принял, но тебе никто не обещал, что тебя возьмут.
Но считай, что тебе повезло и ты отделался испугом в неделю работы. А ведь могли тебя взять на зп в 2 раза ниже рынка, нагрузить вот такой хиротой, которую ты неделю делал. А потом ещё бы из тебя виноватого делали, что мы тебя взяли, а ты плохо справляешься.
Xadok
09.12.2023 10:37Если предлагают тестовое, то надо сразу отказываться. Это время потраченное зря. Лучше постучать в ещё одну компанию. Пускай возьмут на меньшую вилку, а потом спустя полгода уходим на х2. Повторять n лет.
Kyushu
09.12.2023 10:37Если предлагают тестовое, то надо сразу отказываться
Надо писать везде крупными буквами. Особенно когда не указывают срок сдачи работы, и ты пытаешься работать 24\7, чтобы его выполнить, а потом тебе напишут страницу ерундовых замечаний.
Nyaruko
09.12.2023 10:37Ну ОК, установил Qt на комп (это заняло больше суток, ибо установщик работает лишь через VPN, а все бесплатные жесть какие медленные).
В текущих реалиях Qt лучше скачать с торрента в готовом виде или собирать самому из нужной версии. Архив можно скачать с их сайта. Без VPN не пускает, но можно отменить загрузку, отключить VPN-расширение в браузере и начать скачивать заново, скорость будет намного выше.
Конечно, есть и минусы: build занимат несколько часов, потому что с j или parallel возникают определённые проблемы. Об этом даже писали в комментариях статье про кросс-компиляцию Qt.
Utyugovich Автор
09.12.2023 10:37О да, я думал об этом. Но раз уж поставил на скачку, то пускай стоит, зато не придётся потом со сборкой мучить и поиском зависимостей.
usernameak
09.12.2023 10:37У меня проблем с распараллеливанием сборки Qt не было - я просто брал пребилт бинарник jom :)
JordanCpp
09.12.2023 10:37Автор сделал тестовое, ревьюверу не зашло потому, что он не предвосхитил, функционал тестового задания, в котором данного функционала не было описано?
Что-то дичь. Почему нельзя просто взять и проверить тестовое, по требованиям тестового задания?
JordanCpp
09.12.2023 10:37Автор, наниматель неадекватен. И не нужно копаться в себе. Вы сделали задание, наниматель начал выдумывать претензии о функционале, который не описан в тестовом. Занавес.
Utyugovich Автор
09.12.2023 10:37Ваша точка зрения тоже имеет место быть, и мне хочется с ней согласиться даже. Спасибо за совет.
Но всё же в реальной жизни ТЗ тоже не имеет всех деталей и указаний к реализации, поэтому задача программиста выяснить их. Одна из причин, почему нас никогда не заменит ИИ, кстати (но это отдельная тема)
И то, что человек способен делать, пока не получил ответ: сидит без дела или пытается решить доступным способом -- это ведь тоже показатель, разве нет?
Такую точку зрению сегодня дал мой дипрук. И я могу согласиться как и с вами, так и с ним.
JordanCpp
09.12.2023 10:37Если вам так легче понимать, тогда не буду настаивать. Просто я не люблю такое жопное отношение. Если мне нужно узнать о софт скилла, я спрошу о работе, как проходит ревью, что делаете как общаетесь и т. д Этого достаточно. ТЗ это уже проверка не личности, а конкретного задания, сделал, не сделал и как сделал.
Ненавижу хитрый прищур на собеседовании. Типа сейчас мы будем тебя дрочить на тему, чего ты не знаешь, а не то, что нам нужно по вакансии.
Прошло уже более 10 лет и с самого начала, я принял для себя решение никогда таким не становиться.
Utyugovich Автор
09.12.2023 10:37Мне кажетя такая позиция уместна, когда ты мидл и выше.
У нас тут на дне мы говорим спасибо, если вообще дали тестовое :)
Mapaxa864
09.12.2023 10:37Требование "задавать вопросы по ТЗ", может быть и валидное, но, имхо, совсем не на джуна. Так как джунам обычно достаются задачи попроще, не требующие задавания вопросов и/или навыков гадалки.
AlexanderS
09.12.2023 10:37Согласны\не согласны? Что думаете?
То, что автор нормально не спал - сам виноват. Правда если для того чтобы устроиться на работу нужно не спать, то страшно представить что будет когда начнётся сама работа)
Тестовое на неделю - уже характеризует работодателя. Ну а то, что тестовое подразумевает диалог с HR по техническим (!!!) деталям - это вообще какой-то аншлаг.
По моему, автору повезло туда не устроиться. Адекватные работодатели минимально фильтруют соискателей при приёме, отсеивая совсем неадекватных, берут сотрудника на испытательный срок на 0,5...1 месяц и его оценивает, фактически, его будущий руководитель. Но такой подход похоже уже давно вышел из моды.
JordanCpp
09.12.2023 10:37Но такой подход похоже уже давно вышел из моды.
Походу всё не в моде.
Быстрый софт, не в моде.
Адекватное интервью и ТЗ, с последующей адекватной оценкой, не в моде.
Нормальное человеческое отношение, не в моде.
orfelin
09.12.2023 10:37Работал у них почти 15 лет назад. Моё тестовое задание было написать рендер шариков и кубиков в стакане с физикой ( столкновения и вращения ). Справился за 4 дня. Взяли сразу. Никаких HR не было. Собеседовал сразу лид ( Олег Федоров респект ????)
Два шикарных года. Команда атмосферная.
Как сейчас там не знаю. Большая часть команды 2007-2009 разбежались
13werwolf13
09.12.2023 10:37Ну ОК, установил Qt на комп (это заняло больше суток, ибо установщик работает лишь через VPN, а все бесплатные жесть какие медленные).
ох уж эти сложности в недооперационках.. хорошо что у белых людей есть `sudo apt/dnf/zypper/pacman install`...
Utyugovich Автор
09.12.2023 10:37Фраза, которую вы никогда не услышите от пользоваетелй Linux:
- Я не привык рассказывам всем подряд, какую операционную систему использую :Dmc2
09.12.2023 10:37Ok, поставить winget/choco и через него ставить. Альтернативы есть и не одна, а не страдания. Просто для кругозора полезно;)
13werwolf13
09.12.2023 10:37незнаю как вингет, а чоко притащит официальный инсталлер qt и запустит его, и тут мы снова упрёмся в необходимость vpn.
karavan_750
09.12.2023 10:37Согласны\не согласны? Что думаете?
Я думаю, что мое обостренное чувство справедливости весьма негодует по факту постановки тех.задания эйчаром. Хотя многие возразили бы на это утверждением, что я просто токсик.
Предлагаю написать вторую часть, где вы собеседуетесь на эту же вакансию со меной своих контактных данных или попросить кого-нибудь из знакомых посодействовать участием.
Во второй части после получения ТЗ от эйчара незамедлительно подать список уточняющих вопросов, на которые эйчар точно не сможет ответить. Далее, если ответ от эйчара не поступит в тот же день, то предъявить ей за воровство сроков назначенных на решение. Если будет отмазываться, что она "не в теме" и вынуждена вопросы пересылать технарям, то задать вопрос: "Какой **** уполномочил ее ставить ТЗ, а необходимыми навыками для закрытия уточняющих вопросов не снабдил? И вообще, кем она себя возомнила?"
P.S.: Вторую часть не пишите. А если напишете, не публикуйте, а то минусов насобираете. Просто имейте ввиду, что вот такие диалоги, возможно, следующему за вами рекрутеру окажут помощь.
nronnie
09.12.2023 10:37Я думаю, что мое обостренное чувство справедливости весьма негодует по факту постановки тех.задания эйчаром.
Самая жесть, которая время от времени попадается - откликаешься на вакансию, а тебе в ответ ни "здрасте", ни "как живете", а просто молча берут и на почту тестовое задание сразу присылают. В топку сразу же, без разговоров :)
hebedombiu
09.12.2023 10:37Ох. Я похожим образом тестовое в Кефир проходил.
Написать аналог Asteroids. Логика независима от представления. Время неограничено. Ок, потратил часов 10.
Ответ: примененные вами подходы не работают в случае большого количества объектов и большого разнообразия логики. И вообще присмотритесь к ecs. Приходите через пол года.
Чего!? Строить ecs для приложения где по ТЗ и не предполагается не то что тысяч, даже сотен объектов? И как я должен был понять что им надо расширяемое приложение? Есть четкое ТЗ, с четкими требованиями. Оно готово.
wellusion
09.12.2023 10:37Аа, я тоже для Кефира делал тоже самое тестовое задание) Отдельно игровой движок, 2 отдельные игры, чтобы продемонстрировать возможности движка. Учитывая, что я был только с универа и вообще без опыта - я тогда считал, что получилось здорово. Увы, но Кефиру тестовое не понравилось. Уж не помню причин, давно было.
Зато потом в другой конторе эту игру приняли в качестве тестового, а на собесе интервьюер её даже похвалил и сказал, что немного погонял в неё. Было приятно)
alelam
09.12.2023 10:37Если отбросить тестовые на неделю, Лесту и т.п, то меня смущают два момента. 1. В любом рассказе про алгоритмические секции или лайвкодинг на собесах всегда обожают отдельно выделять насколько собеседуюшие любят уточняющие вопросы если условия сформулированы неоднозначно. 2. Я НЕ выдающийся программист. Поэтому каждый раз, когда я оказывался в ситуации "дедлайн через 2 дня, а еще ничего не готово и непонятно как, поэтому нет времени на сон" на выходе через эти два дня со сломанным режимом в качестве кода оказывался в лучшем случае кусок уг. Очень плохо пахнущего. И было такое как правило либо если вовремя не задал правильных вопросов, ограничивающих требования. Либо скилл не дотягивал до нормальной реализации требований.
vvbob
09.12.2023 10:37Честно говоря для меня чем дальше, тем меньше я испытываю какой-то кайф от программирования. Прикольное увлечение с решением заковыристых задачек, в спокойном режиме, когда ты не сильно парясь временем изучаешь проблему, читаешь, изучаешь все что с ней связано, придумываешь алгоритм, реализуешь его, вылизываешь реализацию до идеального уровня, как-то превратилось постепенно в работу на конвейере, где от тебя требуется выдать что-то хрен пойми что, удовлетворяющее каким-то неясным требованиям из башки постановщика задачи, и выдать это в нереально короткий срок. Чем дальше тем больше задумываюсь о том, что-бы бросить все это к чертям собачьим. Наверное это то самое выгорание, ХЗ, задолбало как-то всё, устал, уже нет никакого желания ходит по всем этим собесам и убеждать каких-то людей в том что я не самозванец и реально работал все эти годы и делал всю требуемую работу.
Хочется просто делать что-то без всех этих долбаных дедлайнов, спокойно, размеренно и по кайфу, но это обычно нереально, везде надо "херачить по аджайлу" фичи, нужные уже вчера..
GospodinKolhoznik
09.12.2023 10:37Может в 1С уйти? Там же вроде ценится, чтобы человек знал нормативно-правовую базу и если её хорошо изучить, то потом уже можно почивать на лаврах экспертного знания и позволить себе работать с комфортной скоростью не приводящей к выгоранию, а не херачить по аджайлу с дедлайном вчера.
vvbob
09.12.2023 10:37Я из 1С и пришел :)
Как-то там еще меньше нравилось, может просто отдохнуть надо, уже не знаю даже.
GospodinKolhoznik
09.12.2023 10:37А что в 1С не нравилось? То, что постоянно надо меняющуюся нормативку изучать? Или у вас там тоже руководство требовало херачить код в супер сжатые сроки?
Falakure1234
09.12.2023 10:37А что, для работы в 1с разрабом надо нормативку? Консультанты для тебя переводят бизнес постановку на понятный тебе язык... Во всяком случае в разработке для sap так.
Можно, конечно, знать это все, но для работы разрабом - ни к чему. Консультантом - да, отлично. Знаешь и как код писать и в предметной области шаришь
khulster
09.12.2023 10:37А что, для работы в 1с разрабом надо нормативку?
Как правило, да. Серьезный спец по 1С он уже наполовину бухгалтер, а не чистый кодер.
Консультанты для тебя переводят бизнес постановку на понятный тебе язык... Во всяком случае в разработке для sap так.
И во многом по этому SAP значительно дороже в сопровождении, а многих вещей которые в 1Ске искаропки в нем нет в принципе.
Но все же тут надо учитывать, что SAP и 1C довольно разные продукты решающие несколько разные задачи.
vvbob
09.12.2023 10:37Мне нравится программирование, в 1С ты очень быстро в этом плане упираешься в ограничения встроенного "езыка", не знаю как там сейчас, когда перешел в другое направление там, к примеру, полноценного ООП не было и не предвиделось, даже использование систем контроля версий было практически невозможным.. ну и много чего еще не нравилось.
Дедлайнов особо не было, но задачи в основном, помню, были довольно скучные, правка типовых процентов в 80 случаев, какие-либо отчеты допиливать, это просто скучно.
nronnie
09.12.2023 10:37Честно говоря для меня чем дальше, тем меньше я испытываю какой-то кайф от программирования.
Честно говоря, я программирование уже ненавижу - какой уж там кайф :) Причем, дело в том, что мне нравится программировать, но все что связанное с работой... Год назад психотерапевт прописал тиоридазин - под ним работать как-то еще получается, но эта шляпа после пары месяцев приема действовать почему-то перестает, приходится перерывы делать.
vvbob
09.12.2023 10:37Может стоит поискать другой проект? Мне чуток полегчало когда проект поменял - было настолько безблагодатное легаси.. Наверное это я еще после него никак в норму не приду, нынешний сильно лучше, иногда даже программируешь, а не только совещаешься и баги правишь :)
nronnie
09.12.2023 10:37Я когда был молодой тоже считал - вот надо поменять проект, или поменять работу, а потом понял что ничего не меняется и везде одно и то же. Меняешь просто одну энтерпрайзную помойку на такую же другую и продолжаешь каждый день возиться с очередной кучей хлама. Отрасль такая. А заниматься чем-то действительно умным я не вышел уровнем. В энтерпрайзе тоже можно, конечно по-умному разрабатывать, только почему-то этого никто нигде не делает. Накидали контролов на форму, переложили полдюжины джейсонов, коммитнули в репу и все довольны, всем все ок.
fizikdaos
09.12.2023 10:37Побуду капитаном очевидность.
Вот 99% что под фразой "срок - неделя" подразумевали, что в течении недели найди вечерок когда тебе удобно и сделай задание за пару часов. Ну потому что тестовых заданий на 40 раб. часов никто в здравом рассудке ни давать, ни делать не будет. Даже за деньги это что-то странное. Может они чуть и виноваты, что не разъяснили это, но кажется тут сам себе злобный буратино, мог бы и спросить.
Собеседование - штука абсолютно без гарантий и обязательств, причем для обоих сторон до момента подписания договора. Это не так работает, что сделал тестовое и обязаны взять. Обычно в простейшем случае алгоритм работы - это "прособеседовали 5-10 человек, взяли кто больше понравился". Да, в больших компаниях многоуровневые собеседования и с каждым этапом шансы повышаются, но никаких обязательств брать если сделал задание нет и быть не может даже в них. Более того, страшную тайну открою, даже по ТК РФ на испытательном сроке (до 3 мес.) тебя вполне могут уволить в 3 дня без особых объяснений. На то он и испытательный срок. (нет, за просто так увольнять тебя не будут - это ж сколько денег и времени уже потрачено).
Обратная связь после собеседование - это правило хорошего тона, но не обязательство. Хорошо, если дали, а если ничего не сказали, то может и к лучшему. А то близко примет к сердцу и в окно выйдет. Или пойдет на хабр статью на весь белый свет писать как его не оценили в компании.
MiraclePtr
09.12.2023 10:37Ну потому что тестовых заданий на 40 раб. часов никто в здравом рассудке ни давать, ни делать не будет
Про одну известную и уважаемую компанию, которая даёт тестовое на 12 часов (по мнению самих интервьюверов) я уже выше писал.
Это как раз "на неделю", если учитывать, что днём кандидат скорее всего работает фулл-тайм на текущем месте работы, да и не факт что он сможет посвятить тестовому все свои выходные.
raspberry-porridge
09.12.2023 10:37У одной из российских игровых студий тестовое задание на джуниора C# состоит из самописного игрового движка с реалтаймовой самописной физикой (в том числе коллизии) и последующем создании на этом движке своей игры (благо, придумывать что-то новое тут не надо, просили клон одной ретро игры). В идеале - игровая логика должна быть сделана на самописной реализации ECS. Сомневаюсь, что это возможно сделать с нуля за пару часов.
Utyugovich Автор
09.12.2023 10:37у меня вышел проект на 800+ строк кода... Ну если вы пишите такое за вечерок, это здорово. Но лично мне и понадобилась неделя как раз.
fizikdaos
09.12.2023 10:37Вас никто палками делать это не заставлял. Не хотите - не делайте. А они не хотят - и не берут вас. Свобода воли. Радуйтесь, что пока так можно, а не по распределению вас отправили.
khulster
09.12.2023 10:37Более того, страшную тайну открою, даже по ТК РФ на испытательном сроке (до 3 мес.) тебя вполне могут уволить в 3 дня без особых объяснений
Но при этом это правило работает в обе стороны, о чем многие работодатели почему-то забывают. Т.е. ты тоже можешь ничего не объясняя, взять свои вещи и покинуть компанию в течении этого срока. Испытательный - он для обеих сторон.
schernolyas
09.12.2023 10:37Просто забудь. Ну и порадуйся что не попал в эту команду. У меня был похожий случай. Меня завернули поэтому что в задании я использовал самый строгий уровень изоляции, а это бьёт по производительности. Так что ...вы получили свой технический опыт. Наслаждайтесь. И не расстраивайтесь!
orefkov
09.12.2023 10:37-- Вот тестовое задание, это же не сложно, вполне делается за неделю, мы хотим посмотреть, соответствуют ли ваши навыки нашим ожиданиям
-- А вот номер моей банковской карты, вас же не затруднит перевести на нее тестовую зарплату, это не сложно, всего за неделю. Я хочу посмотреть, соответствует ли ваш уровень зарплаты моим ожиданиям.
cortl
09.12.2023 10:37Вот если я не успею сделать его до конца за неделю, это не будет минус, если при этом у меня будет качественный код?
Если основная функциональность не будет работать или будет работать криво - однозначно отказ.
Как минимум два раза делал тестовые в геймдев. Один раз обратную связь не предоставили даже после напоминания о себе через неделю. В другой раз при отказе сослались на то, что я не соблюдаю префиксы в именах переменных указывающих на их тип.
code_panik
09.12.2023 10:37я не соблюдаю префиксы в именах переменных указывающих на их тип.
Такое легаси, https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rl-name-type
Viacheslav01
09.12.2023 10:37Вспомнился конкурс от вконтактика:
В ТЗ конкурся отдельным пунктом вот в этом месте делаем поведение Х, ни в коем случае не У!
В резолиции жюри, этот победил потому что у него в отличии от остальных реализован У!
vladshulkevich
09.12.2023 10:37Так это... нефиг по помойкам шариться. И не нужен им разраб был, они чешут там свое ЧСВ об кандидатов, видимо. Опыт: пришел наниматься в офис, техдир такой "вот тебе комп, вот условие задачи", через час на желтой бумажке (которые на моник клеют) написал условия, я говорю "это официальный офер", он "да", и все счастливы.
insecto
09.12.2023 10:37Чёто я не понимаю плач. Контора прособеседовала и протестировала кандидата, кандидат не устроил, все пошли дальше. О чём слёзы?
Katenk_aa
09.12.2023 10:37У меня единственный стимул выполнять тестовое - прикольная задача ,которую мне интересно выполнить независимо от результата
Olololnet
09.12.2023 10:37Неплохо флешбекнуло
Шёл 2019 год, его начало. предваряя: у леслы не поменялось ничего за 5 (пять!) лет.
Прошёл базовое собеседование, предложили задачу на дом. хоть и 5 лет прошло, но навскидку там было (c++ и qt):
реализовать 2д редактор
редактор отображает 2д карту с объектами
объекты умеют отображаться различным образом, в зависимости от конфига
конфиг умеет задавать внешний вид и свойства объекта, из-за чего емнип объекты могли находиться или не находиться рядом с другими
редактор умеет создавать карту, загружать, сохранять + есть средства редактирования
конфиг умеет управлять свойствами и типами объекта, поэтому редактор может вести себя по-разному
Героически собравшись, реализовал всё вышеуказанное, обошлось это в 2 недели труда и в 2-3к строк кода. Туда же минимальная дока, красивый читаемый код, запускаемая сборка.
Фидбека не было без запроса. После запроса буквально было "реализовано всё верно, но не совсем так как хотелось бы нам". Наверно бОльшую степень удивления мне уже никогда в жизни не испытать. На всякий случай показал на ревью спецу, который в этом намного больше собак съел: он предложил несколько улучшений но в целом оценка в проделанной задаче была высокая.
Почитав про подобные кейсы я сделал выводы почему такое возможно:
все плевали на кандидатов и на их время. правильно сделанное задание не гарантирует даже что его посмотрят, не говоря уже о фидбеке или даже о том, что этап собеса будет пройден
на вакансию параллельно рассматривается много кандидатов, из нескольких хороших выберут кого-то 1 и всё.
программисту, который смотрит задачи: у него нет ни времени, ни желания сделать это подробно и дать обратную связь на решение
hr может крутить собеседования 24/7 даже в условиях, когда никого не ищут на вакансию. видимо чтобы когда кто-то понадобится, уже будет несколько человек, которые прошли несколько этапов. т.е. hr быстрее закроет позиции. если позиций не оказалось - кандидаты просто свободны и всё. т.е. найм проходит 24/7 в независимости от того, нужен кто-то или нет.
о кандидате банально могут просто забыть, процессы растянуты, собеседуется много людей. потом могут и не связать имя и фамилию из письма с тем как прошёл другие этапы и со сделанным заданием
Бесценный вывод я тогда сделал: больше никаких домашний тестовых заданий. Они не гарантируют ничего, они съедают много времени и сил, никто не скажет как будут оценивать (тогда как фактор субъективности в данном случае влияет на всё), высоковероятно не дадут нормальную обратную связь.
Естественно, за сэкономленное время на таких тестовых заданиях, можно пройти от нескольких собеседований в другие компании, что намного эффективнее.
Но всё же, вызывает удивление, что там всё осталось также практически 1 в 1.
chernish2
Вам прислали подробный разбор, а Вы ещё чем-то недовольны? Ну и зачем такого сотрудника брать в команду?
Rive
У меня сложилось впечатление, что они и не наймут даже при 100% попадании скиллсета.
Некоторые вакансии в этой компании висят месяцами, что говорит о том, что они и не собираются их закрывать, а при любых попытках расширить команду до состояния "ну вот, придётся работать" начнут отбрыкиваться изо всех сил.
JordanCpp
Разбор туфта. Сделай x, и ответ, вы не сделали y, могли догадаться. Это тупизм, а не разбор.
vvbob
Чаще всего даже таких отзывов не получаешь на тестовые.
LinkFly
Поддерживаю. Ты всё сделал объективно правильно. Тестовое задание сделал, навыки продемонстрировал. На Джуна уж точно. Говорю тебе как разработчик с 20-летнем стажем, из них не менее 10 лет коммерческого опыта.
Успехов в развитии и не позволяй себя газлайтить;)
SeregaSA73
Палка о двух концах, на следующем задании после того как он будет задавать вопросы ему в итоге скажут что он ничего не знает и все время спрашивает и нафига нам в команду такой сотрудник который вместо работы будет ходить и всех спрашивать :)
deathdrag
Согласен с вами)
Как я понял, вопросы нужно задавать в направлении конечного продукта. Т.е. что именно хочет увидеть заказчик.
Здесь конечно можно добавить и пару вопросов касательно применения определённых навыков при выполнении работы, но их должно быть чуть-чуть, чисто "для галочки". (Надо же им дать возможность немного поумничать, а то получается, что он свою зарплату не заслужил) :)
Как итог: всё это такой идиотизм. Понабрались зарубежных приёмов для организации производства, а про обычный человеческий подход забыли... Это я уже молчу про то, что некоторые "умники" не понимают как пользоваться этими приёмами на практике.