Искали статеечку с жалобами джуна о несправедливости 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)


  1. chernish2
    09.12.2023 10:37

    Вам прислали подробный разбор, а Вы ещё чем-то недовольны? Ну и зачем такого сотрудника брать в команду?


    1. Rive
      09.12.2023 10:37

      У меня сложилось впечатление, что они и не наймут даже при 100% попадании скиллсета.

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


    1. JordanCpp
      09.12.2023 10:37

      Разбор туфта. Сделай x, и ответ, вы не сделали y, могли догадаться. Это тупизм, а не разбор.


      1. vvbob
        09.12.2023 10:37

        Чаще всего даже таких отзывов не получаешь на тестовые.


      1. LinkFly
        09.12.2023 10:37

        Поддерживаю. Ты всё сделал объективно правильно. Тестовое задание сделал, навыки продемонстрировал. На Джуна уж точно. Говорю тебе как разработчик с 20-летнем стажем, из них не менее 10 лет коммерческого опыта.

        Успехов в развитии и не позволяй себя газлайтить;)


    1. SeregaSA73
      09.12.2023 10:37

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


      1. deathdrag
        09.12.2023 10:37

        Согласен с вами)

        Как я понял, вопросы нужно задавать в направлении конечного продукта. Т.е. что именно хочет увидеть заказчик.

        Здесь конечно можно добавить и пару вопросов касательно применения определённых навыков при выполнении работы, но их должно быть чуть-чуть, чисто "для галочки". (Надо же им дать возможность немного поумничать, а то получается, что он свою зарплату не заслужил) :)

        Как итог: всё это такой идиотизм. Понабрались зарубежных приёмов для организации производства, а про обычный человеческий подход забыли... Это я уже молчу про то, что некоторые "умники" не понимают как пользоваться этими приёмами на практике.


  1. Kelbon
    09.12.2023 10:37

    QT

    после этого бежишь

    А по заданию, ну давать тестовое задание на неделю это любимое занятие всех фирм где занимаются QT, это уже красный флаг


    1. SalazarMAX
      09.12.2023 10:37

      QT действительно ужас-ужас, а вот Qt вполне неплох в качестве графического фреймворка


      1. Rusrst
        09.12.2023 10:37

        Да ладно, вы документацию этого qt видели? Если да, то пойдите почитайте у Гугла про jetpack compose, вот где документация графического фреймворка.

        Плюс в qt целая куча не очевидных вещей, о которых даже зная C/Cpp можно поспотыкаться на ровном месте.


        1. yrHeTaTeJlb
          09.12.2023 10:37

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

          Мне искренне интересно узнать что-же там за такие неочевидные вещи


          1. Rusrst
            09.12.2023 10:37

            Так, ну давайте начнем рассказ про мое хождение по граблям - qt может сам освобождать часть элементов, если они переданы в qt класс, а потом при ручном освобождении мы падаем в runtime, qt painter может рисовать path двумя способами (мне это вообще в голову не приходило, зачем оно такое надо?) draw path, drawstrokepath. Ну про нагенеренную moc компилятором рефлексию и автор упомянул, я что-то для начинающих про нее тоже ничего не нашел :)


            1. yrHeTaTeJlb
              09.12.2023 10:37

              qt может сам освобождать часть элементов, если они переданы в 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.html


              1. Rusrst
                09.12.2023 10:37

                Я не буду ничего писать про два остальных примера, будем считать это моей невнимательностью, я все же не изучал qt отдельно никогда. Остановимся на path и painter.

                Вы конечно молодец, прислали мне пример из доки, он там и правда есть, ставится вместе с creator. Но есть одно большое но, там не рассматривается пример работы stroke path (я ошибся, написал по привычке drawstrokepath, на самом деле надо установить сначала stroke path, а потом draw path), а обычный, как оказалось работает не так как ожидается. Причем очееень неожиданно. И такое везде, где я начинаю погружаться в qt


        1. Arkasha
          09.12.2023 10:37

          У Qt шикарная документация, зачем брешете?


          1. Rusrst
            09.12.2023 10:37

            Вы видимо шикарную документацию не видели. Я ещё раз пишу, зайдите на jetpack compose, вот где шикарная документация


            1. Arkasha
              09.12.2023 10:37

              Зашёл, хоть и не шарю в котлине (на примере слайдера):

              • Тот же бриф в начале страницы, то же краткое описание member-ов, что и в доках qt

              • Те же примеры использования

              • То же подробное описание класса, его поведения и нюансов на отдельной странице (в qt просто листануть ниже, не суть)

              • Те же quick start гайды по разным частям библиотеки, best practices и все дела

              Разверните, пожалуйста, свою мысль вида "вы документацию этого qt видели?" и "зайдите на jetpack compose", а то я лично не понимаю, что вы хотите сказать.

              Для примера вот qml slider: мне вот больше нравится, там в брифе сразу типы member-ов и аргументы функций указаны, в отличие от вашего примера. А ещё доки qt доступны оффлайн в qtcreator по F1, не нужно ждать, пока грузятся страницы, которые у вашего примера в несколько мегабайт размером (не проверял, еcть ли оффлайн версия)


              1. 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


                1. Arkasha
                  09.12.2023 10:37

                  как раздел guides вообще выглядит - там все аккуратно разложено и все
                  можно понять и легко начать что-то делать человеку далёкому от
                  фреймворка

                  То же самое в доках Qt. И те же примеры использования (реализовывать не нужно, оно же в библиотеке уже). Вообще мне чёт лень с вами спорить, да и аргументы у вас все спорные, я сливаюсь.


    1. Sazonov
      09.12.2023 10:37

      Недавно делал тестовое в Crytek, там похардкорнее, и да, тоже на неделю (хотя по мне так нужно около 3 недель чтобы на 99% хорошую архитектуру сделать). На самом деле не вижу в этом проблемы, если вам действительно хочется именно на этот конкретный проект. Без примеров кода очень сложно понять, насколько человек может связывать в единое целое штучные классы (проектировать архитектуру). Думаю что джун в любом случае получил ценный опыт.

      З.Ы. А Qt элементарно ставится без впн практически через любой менеджер пакетов.


    1. rwscar
      09.12.2023 10:37

      IMHO любое тестовое на неделю - это красный флаг


      1. Sazonov
        09.12.2023 10:37

        Красный флаг только после ответа на два вопроса:

        1. Действительно ли вы хотите именно на этот проект

        2. Оплачивается ли такое тестовое (но это огромная редкость)

          Если хотя бы на один из вопросов ответ «да», то who not?


        1. PlatinumKiller
          09.12.2023 10:37

          Ну лично скажу, если первый и второй пункт «да», то тогда почему нет, денег лишних не бывает, вопрос лишь в цене и времени.


        1. Sazonov
          09.12.2023 10:37

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


    1. dmitrii-bu
      09.12.2023 10:37

      Иногда попадаются интересные задания. Не так давно делал тестовое на позицию performance engineer в HFT фонд. Нужно было покодить на C/x86 assembly под Линукс с упором на низкое лейтенси. Несмотря на то, что по результатам дальнейших собеседований получил отказ, вполне интересно провел время за выполнением такого задания.

      Когда же дают тестовые типа «Напиши сервис по перекладыванию джейсона из Кафки в Монгу и положи в докер», то как правило вежливо отказываюсь от дальнейших этапов, если не интересны проект, компания и компенсация.


  1. Suvitruf
    09.12.2023 10:37

    тестовое задание на неделю

    Беги, глупец.


    1. GospodinKolhoznik
      09.12.2023 10:37

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


      1. Teimir
        09.12.2023 10:37

        • Надо платить за тестовое


      1. Areso
        09.12.2023 10:37

        О, на Хабре с год назад была статья, что компания платит* за тестовые задания...Но был нюанс.


    1. petropavel
      09.12.2023 10:37

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

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


      1. Suvitruf
        09.12.2023 10:37

        Надеюсь, вам эти тестовые хотя бы оплатили.


    1. BenGunn
      09.12.2023 10:37

      Подпишусь под каждой буквой. У меня 26 лет коммерческого опыта. Переодически бампаю свои резюме на соответствующих ресурсах с целью посмотреть где предложат поработать и над чем. Иногда даже хожу на собеседования и вот что я понял за все свои три места работы. Тратить время на тестовые задания - величайшая глупость кроме ситуации когда ты очень хочешь здесь работать либо ситуация безвыходная(к этому конечно же я пришел не сразу). Причина такого банальная. Ты не в курсе какой код от тебя ждет другая команда. Ну серьезно, вы еще не знакомы, а уже любить друг друга собрались. Опять же тестовое это время которое крайне редко потенциальный работодатель соглашается оплатить. А иногда бывают лулзы в фидбеке после которых работать в данной компании уже не хочется.


      1. vvbob
        09.12.2023 10:37

        У меня единственный стимул выполнять тестовое - прикольная задача ,которую мне интересно выполнить независимо от результата, чисто по фану. Делать это ради работы - ну его нахрен.


        1. nronnie
          09.12.2023 10:37

          Это да. Но как раз такие задачи даже одного целого вечера не требуют. Уж точно не две недели.


          1. vvbob
            09.12.2023 10:37

            Вот потому обычно и отказываюсь от тестовых. Последний раз когда делал - получил фидбек плана "Нет". С тех пор даже время на все это тратить не хочу. У меня на тестовое тогда ушел целый день (хотел получше сделать), у ревьювера на ответ ушло три секунды, уверен что код он даже не смотрел. К черту все это.


      1. aamonster
        09.12.2023 10:37

        Ну пару часов-то можно.


    1. MiraclePtr
      09.12.2023 10:37

      "Тестовое на неделю" любят присылать, например, небезызвестные и очень уважаемые в индустрии JetBrains. Естественно, об оплате речи не идёт, ага.


      1. Chamie
        09.12.2023 10:37

        И задание вида «сделайте в точности как вот в этих продуктах», а потом «ой, а мы думали, в них по-другому работает, переделывайте».


        1. MiraclePtr
          09.12.2023 10:37

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


      1. shornikov
        09.12.2023 10:37

        Зависит от формулировки:
        вот вам тестовое, которое мы оцениваем как "работы на неделю"
        или
        вашу работу мы будем ждать до конца недели


        1. MiraclePtr
          09.12.2023 10:37

          Первое. Там сами требования в задании такие, что тянет как минимум на пару полных дней работы над задачей (то есть с учётом того, что человек днём работает на работе, остаётся делать тестовое задание по вечерам и выходит как раз на неделю, а то и больше). Причем это мнение не только кандидата, но и самих интервьюверов, потому что в задании есть приписка типа "Просим сделать реализацию достаточно простой, чтобы уложиться в 12 часов" - то есть сами авторы задачи подразумевают, что может потребоваться даже больше времени, но 12 часов на "простую реализацию" требуемого должно хватить.


      1. VG17
        09.12.2023 10:37

        Они ещё и фидбек присылать не любят )


    1. shmakovaa
      09.12.2023 10:37

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


  1. AndronNSK
    09.12.2023 10:37

    Если тестовое задание занимает больше 2х часов - забываешь контору и идёшь дальше.

    В 2017 году я делал тестовое С++ в одну из импортозаместительных контор на Эл начинается, на кс заканчивается.

    Написал там что-то элементарное типа std::unique_ptr или auto, а они мне - ваше задание не компилируется. И показывают лог 4го или 6го GCC.

    Как-то не получилось с ними поработать.


    1. BenGunn
      09.12.2023 10:37

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


    1. 40kTons
      09.12.2023 10:37

      Поясните шутку не плюсовикам? 4/6 GCC насколько древний?


      1. BenGunn
        09.12.2023 10:37

        4й GCC это середина 2000х годов. Разница между стандартами C++03 и C++11, например, колоссальна. А в наше время уже и C++11 кажется древностью.


        1. DrGluck07
          09.12.2023 10:37

          В этот момент STM-щики начали ронять скупую мужскую слезу...


          1. AndronNSK
            09.12.2023 10:37

            У STMщиков есть GCC, им чего горевать то? И IAR.

            Даже TI весьма давно поддержали 11й стандарт в Dsp 6000й серии.


            1. DrGluck07
              09.12.2023 10:37

              В том и дело, что для 6000, а для 5510 нет. В любом случае, на МК всё это приходит с сильным опозданием.


      1. AndronNSK
        09.12.2023 10:37

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


    1. kterik
      09.12.2023 10:37

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


      1. AndronNSK
        09.12.2023 10:37

        Дыа) и зарплаты у них очень грустные.


        1. kterik
          09.12.2023 10:37

          Зато они хорошо экономят на отделе тестирования! Все тесты выполняют пользователи на собственном оборудовании. И это не шутка.


    1. iig
      09.12.2023 10:37

      ваше задание не компилируется. И показывают лог 4го или 6го GCC.

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


      1. DrGluck07
        09.12.2023 10:37

        Мне кажется, это они должны писать в требованиях: хотим GCC 126 версии с перламутровыми пуговицами.


        1. AndronNSK
          09.12.2023 10:37

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

          Они ещё в задании написали, "поддерживать подключение нескольких клиентов' а потом такие: ой, а вы многопоточность не показали. Я грю - вы написали, поддерживать несколько клиентов - я поддерживаю. По очереди. Те такие - ну да, как-то не очень сформулировали ????


  1. Spaceoddity
    09.12.2023 10:37

    Леста?))

    В контору абсолютно неквалифицированных рукопопов? Тестовое на неделю? Ты посмотри какой важный птиц))

    Не, я всё понимаю, но есть же вещи которые не продаются - уважение к себе, например))

    Вы бы ещё в ВК (которые мэйлру) резюме отправили))


    1. venanen
      09.12.2023 10:37

      А в мейле, наверное, хорошо работать. Судя по результатам - чтобы в мейле хорошо работать, нужно очень плохо работать...


    1. MrSung
      09.12.2023 10:37

      Откуда знаешь, что в лесте рукожопы?


      1. Infthi
        09.12.2023 10:37

        по отделу балансировки


      1. Spaceoddity
        09.12.2023 10:37

        Я, при желании, конечно, могу насобирать вам тучу багов из клиента, которые не правятся годами - только на это никто не реагирует. Балансировку, "pay to win" и т.п. даже не трогаем.

        Вот мне кажется, характерный пример - год назад Леста и ВГ решили окончательно разделить сервисы на "независимые". И корабельную вики решили перенести на другой домен. Вот, по вашему - сколько надо времени на подобную задачу для компании масштаба Лесты? Пара часов? День? А несколько месяцев не хотите? Потому что ну не быстрое это дело - вручную копипастить контент с одного ресурса на другой...


        1. ZirakZigil
          09.12.2023 10:37

          которые не правятся годами

          Но ведь это наследе вг, нет? Если 10 лет пилить костыли по указке, то когда указка пропадает, вполне себе может оказаться, что убрать костыли уже очень тяжело. Да и леста поддержкой цистерн же вообще не занималась, по сути.

          Балансировку, "pay to win" и т.п. даже не трогаем.

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


          1. Spaceoddity
            09.12.2023 10:37

            Вы странный. Я же специально в качестве примера привёл кораблики, хотя с танчиками всё было бы ещё нагляднее.


      1. MrSung
        09.12.2023 10:37

        Минус за то,что я просто поинтересовался, на основе чего человек составил такое мнение?


  1. nronnie
    09.12.2023 10:37

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


    1. GospodinKolhoznik
      09.12.2023 10:37

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


      1. nronnie
        09.12.2023 10:37

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


        1. PsihXMak
          09.12.2023 10:37

          Да да, задания в духе «я загадал в этом коде ошибку, найди её». Проходили, знаем.


          1. nronnie
            09.12.2023 10:37

            Нет. Речь не обязательно о поиске ошибок, а о "поиске", например, "пахнущего кода". Сам код может быть формально и без ошибок. Хотя, впрочем почему бы и нет. Если там какие-то не глубоко запрятанные ошибки логики, а, какие-нибудь достаточно типичные ошибки связанные с неправильным использованием языка или платформы (ну, например, передача по значению вместо передачи по ссылке и т.п.) - если человек действительно имеет опыт разработки, то он такие вещи должен распознавать сразу же с одного взгляда.


            1. PsihXMak
              09.12.2023 10:37

              Если это код на проверку какой то конкретной ошибки по какой то конкретно одной теме - то ладно. Но, я не раз попадал в ситуацию, когда ты уже назвал 10 ошибок в блоке кода, а тебе говорят "А что еще?", либо "Это всё?". И ты сидишь и гадаешь, что именно задумал интервьюер, нашёл ли ты все ошибки, либо он хочет от тебя что-то конкретное.


              1. nronnie
                09.12.2023 10:37

                Меня другая тема выбешивает. Когда показывают кусок кода такой, что непонятно чем надо удолбаться, чтобы такое написать (например дюжину как-то хитровложенных try-catch-finally) и спрашивают: "Что он будет делать". Мля, да ничего он не будет делать, потому что тот, кто такое притащит на ревью с ревью уже живым не уйдет :))


                1. aamonster
                  09.12.2023 10:37

                  А сказать это пробовали? Можно вместе с ответом.


    1. olartamonov
      09.12.2023 10:37

      Оценить как человек пишет код можно за пятнадцать минут

      Нельзя.

      Между двадцатью строчками кода какого-нибудь алгоритма и комплексным решением, в котором надо сесть и полчасика для начала подумать над «кто на ком стоит», т.е. архитектурой — пропасть.

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


      1. Utyugovich Автор
        09.12.2023 10:37

        да, я тоже так думаю. Поэтому я не против сделать тестовое ну или предложить посмотреть свой git. Потому что у меня теперь этих тестовых там... Но почему-то все в основном отказывают и просят написать их тестовое :))


      1. nronnie
        09.12.2023 10:37

        Между двадцатью строчками кода какого-нибудь алгоритма и комплексным решением, в котором надо сесть и полчасика для начала подумать над «кто на ком стоит», т.е. архитектурой — пропасть.

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

        Вот, представим, я все-таки решил делать тестовое. Если я стану писать код "по студенчески", то

        1. Мне это неинтересно.

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

        Если же я стану писать код как будто он "боевой" для продакшена, то, даже учитывая наличие кучи готовых заготовок у меня минимум час уйдет только чтобы создать пустой скелет проекта (логирование, CA/SA/CI и т.п.). Плюс добавим к этому покрытие юнит- и интеграционными тестами, плюс хоть какое-то документирование тех же API. Вот и выйдет, что создать самый обычный (и в данном случае, в итоге, никому не нужный) CRUD надо будет пару вечеров потратить, а на это времени уже жалко.


  1. AkaZLOY
    09.12.2023 10:37

    Это же Lesta, неужели вы хотите работать 9-и часовой рабочий день и получать вычеты из зп за опоздания на минуту?


    1. s_poliakov
      09.12.2023 10:37

      А бесплатные ужины?!(


      1. nronnie
        09.12.2023 10:37

        Я когда в середине 2000 работал в одной конторе, то когда сидели на работе до 11-12 вечера, то присылали на всех пиццу, а потом еще такси до дома оплачивали :) На самом деле овертаймов там не было - просто из-за часового пояса клиента (US) часто приходилось рабочий день сдвигать, что в силу халявной пиццы и халявного такси было даже выгодно :))


  1. slsktnkv
    09.12.2023 10:37

    А можно выложить тестовое на гитхаб? Почитать, посмотреть.


    1. Utyugovich Автор
      09.12.2023 10:37

      Могу отправить в ЛС


      1. JordanCpp
        09.12.2023 10:37

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


        1. PervertGenius
          09.12.2023 10:37

          Могу прислать свое на "Trainee QA Automation", если надо.

          Делал как раз недавно, потратил часов 5 чисто из-за того что пытался сделать все идеально (а в одном задании вообще не очень верно сначала понял и даже перевыполнил)


          1. qvantum11
            09.12.2023 10:37

            Мне пришлите, если не сложно :)


      1. Rusrst
        09.12.2023 10:37

        Мне пришлите, если не сложно :)


  1. kdpdev
    09.12.2023 10:37

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


    1. Teimir
      09.12.2023 10:37

      Прекрасно


  1. 1dmitry
    09.12.2023 10:37

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


  1. zumotrix
    09.12.2023 10:37

    Вокруг Лесты сейчас столько инфо-шума за последнее время.. Бро, понимаю твою обиду по поводу потраченного времени. Но потом судьбе только спасибо скажешь, что не взяли. Я сам как-то работал с этой шарашкой, там половину штата набрали на автобусной остановке, и этот сброд тащит компанию на дно. P.S. я так понимаю, вакансия по плюсам вообще никак не связана с QT?


    1. Teimir
      09.12.2023 10:37

      Враньё, был я на автобусных остановках, нет их там


      1. zumotrix
        09.12.2023 10:37

        Ну так набрали уже)) по этому и нет))


    1. yrHeTaTeJlb
      09.12.2023 10:37

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


  1. Duck7722
    09.12.2023 10:37

    Что забавно, если начать спрашивать на собесах "Зачем?" - то легко отказывают. По логике, не ну человек, который слишком душнит.


  1. onets
    09.12.2023 10:37

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

    Придет время и вывод будет другой - не делать тестовые.


    1. kdpdev
      09.12.2023 10:37

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


    1. MaxKitsch
      09.12.2023 10:37

      Тестовые делать можно, если они занимают 2-3 часа.


      1. onets
        09.12.2023 10:37

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

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

        Было когда, я сфокусировался на бэк-енде, а надо было на фронте. Меня похвалили за бэк-енд, но не взяли из-за того, что я на скорую руку скопипастил фронт из интернета и не подчистил код.

        И было еще одно - "нам некогда проверять, вы нам не подходите".


  1. Tzimie
    09.12.2023 10:37

    Проблема лишь в том, что у меня уже была работа, и я вёл себя на ней не так

    То есть на момент полного погружения в тестовое на неделю вы забили на основную работу? Взяли отпуск? Отгулы? Как это работает?


    1. Utyugovich Автор
      09.12.2023 10:37

      нет, я уволился примерно пол года назад, потому что меня полностью посадили на C, хотя я приходил на вакансию "С++\С" всеми любимую :)
      До этого были проекты на С++, а потом перевели на микроконтроллеры, вот я и решил уйти. В вакансии о них ничего не было сказано, когда приходил устраиваться..

      Опять же, на Habr есть прекраснная статья о том, что С и С++ это разные языки. Вот это мой случай, я полностью разделяю такую точку зрения: https://habr.com/ru/articles/676816/

      И я не хотел с 0 учить ту сферу, которая мне не инетресна на инструменте, который мне не нравится тупо из-за бабок. Всё же я глуп и наивен, и хочу, чтобы работа нравилась :)


      1. Utyugovich Автор
        09.12.2023 10:37

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


        1. AndronNSK
          09.12.2023 10:37

          МК тоже разные бывают у нас в AKCP на CortexM3 без доп памяти был и SSL и SNMP и вэбморда и 3 десятка типов кастомных датчиков.


        1. ALexKud
          09.12.2023 10:37

          Сейчас под приличные микроконтроллеры пишут под операционной системой типа freertos и подобных. Другое дело что писать на С это сейчас глупость даже для микроконтроллеров. Код под С++ получается значительно компактнее по использованию флеш памяти просто потому что многие вещи, допустим интерфейсы spi можно делать наследованием от однократно написанного базового класса, а не тупо копировать. Но проблема в том что если в компании разработано много совта на С то разработчикам нужно переписывать под С++, но они его или не знают или нет времени на это или есть наработки, которые можно быстро использовать от проекта к проекту.


          1. AndronNSK
            09.12.2023 10:37

            Проблема в том, что на с++ способов выстрелить себе в ногу в 3000 раз больше. Программисты для с++ нужны квалифицированнее. А они просят больше денег. А там, где МК, этих денег не платят.


            1. ripandtear
              09.12.2023 10:37

              Зависит от. Есть компании, где платят нормальные деньги (меньше конечно, но не драматично и в целом в рынок вписывается) и на С и работу с МК. Но насчет квалификации, вы правы.

              Хотелось бы конечно, чтобы квалифицированных программистов на С становилось все больше.


          1. ripandtear
            09.12.2023 10:37

            Глупость это думать, что С++ решит все проблемы, просто потому что это С++. ООП для многих вещей спорный кроме GUI, а уж ООП в виде С++ это далеко не самое приятное, что могло получиться (Это еще мягко говоря).


            1. MiraclePtr
              09.12.2023 10:37

              Сила C++ в сравнении с C это далеко не только ООП.


              1. ripandtear
                09.12.2023 10:37

                Если вы про обширное кол-во доступных библиотек, то для С большая часть того что требуется повседневно, так же существует.


                1. MiraclePtr
                  09.12.2023 10:37

                  Вообще не про библиотеки. А например про гораздо лучшую типобезопасность (enum class, разные касты, темплейты вместо макросов, т.д.), RAII для освобождения ресурсов, compile-time вычисления и генерация, позволяющие, например, делать такое, неймспейсы, и т.д. Короче говоря, много вещей, которые упрощают разработку, сильно помогают отлавливать многие ошибки ещё на этапе компиляции, и при этом не добавляют оверхеда в рантайме.


                  1. ripandtear
                    09.12.2023 10:37

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

                    Я окунулся в пару больших проектов на С++, до этого купил и прочитал много серьезных книг по С++ (Скотт Мейерс, Райнер Гримм, и т.п., а главное - книга Федора Пикуса) чтобы быть "в курсе современного С++" и ООП в целом, естественно была так же изучена книга "Банды четырех" про шаблоны проектирования. Общался в процессе работы с другими коллегами, С++-программистами, которые были намного опытнее меня. Но одним из первых звоночков было, как мне помнится, когда один из таких действительно хорошо разбирающихся в С++ коллег смотрел мой код на ревью, нашел алиасинг в одном из методов, а потом сам же после штудирования стандарта и бог весть там чего еще, сказал спустя четыре час, что "Походу я был неправ, алиасинга там нет ".

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

                    Главное, что у меня на осознание этого заняло не так много времени, как бывает у многих, потратил всего около двух лет. Теперь только С и ассемблеры при необходимости, возможно, какой-нибудь Python в ограниченных объемах.

                    The cake is a lie.


                    1. MiraclePtr
                      09.12.2023 10:37

                      Ха :) Я ровно то же самое могу сказать, что и вы, а именно

                      Честно говоря, пару лет назад я думал примерно в таком же ключе

                      Только не пару лет назад, а гораздо раньше. Начав свою карьеру писал на C++, потом разочаровался в нем, и долгое время точно так же как и вы, решив "да ну нахер" разрабатывал на чистом Си, немного ассемблере, а для всяких сторонних инструментов (мы писали в основном под эмбеддед для промышленной автоматизации) на чем-нибудь более высокоуровневом (сначала на Delphi, царство ему небесное, потом на C#). И уже потом с течением многих лет и работой в разных проектах, насмотревшись на всякое и понаблюдав, как развиваются проекты от маленького прототипа то матёрого продукта с многолетней историей развития и собранными шишками, пришло понимание, что такое подход работает только для решений низкой и средней сложности, а как только продукты становятся гораздо более комплексными, а темп разработки и требования к надёжности и гибкости резко растут, то чистый Си - это dead end, и очень жаль, что осознание этого заняло так много времени. Переход обратно на плюсы в итоге открыл второе дыхание, и со временем я их полюбил. Мне действительно страшно представить, каким бы было то, что я делал в предыдущем месте работы и то что мы делаем сейчас, если бы мы писали это не Си, а не на плюсах - скорее всего, проекты бы до сих пор не вышли из беты, а про количество ошибок я и не говорю (да, речь все ещё про embedded-разработку). И вместе с тем пришло понимание, что ООП и всякие там паттерны от GoF - по-прежнему совсем не серебряная пуля, но тем не менее очень даже имеют смысл, если приложить их туда куда надо и когда надо. Кстати, кто сказал слово "Rust"? :)

                      нашел алиасинг в одном из методов

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


                      1. ripandtear
                        09.12.2023 10:37

                        Rust конечно представляется неплохим вариантом, но лично я сейчас не могу смотреть на его синтаксис (код выглядит страшновато), ну и в целом пока хватает С.

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

                        Насчет Си и dead end пока не соглашусь (Не буду исключать варианта, что потом в будущем приду к вашим же выводам). Потому как я видел и участвовал в довольно больших проектах на С, где подобных проблем (Гибкость и надежность) не было, с точно такой же длительной историей.


                      1. MiraclePtr
                        09.12.2023 10:37

                        По поводу алиасинга - в этом-то и смысл - искусственно выдуманная сложность С++

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


                      1. ripandtear
                        09.12.2023 10:37

                        Существуют.

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

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

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

                        У меня не хватает никаких ментальных сил все это помнить и учитывать, где я или компилятор С++ поставил в код UB или нет.


        1. fshp
          09.12.2023 10:37

          C это подмножество C++

          Неверно.

          void foo();

          Это совсем разные функции в этих двух языках. В C++ это функция без параметров, а в C это varargs функция.

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

          Можно перечислять бесконечно долго.


  1. NevoWin
    09.12.2023 10:37

    По статье насчёт качества кода трудно судить. Там действительно мог быть гавно-код.

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

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


    1. JordanCpp
      09.12.2023 10:37

      Нанимать нужно нормально. Всё остальное дичь.


  1. Xadok
    09.12.2023 10:37

    Если предлагают тестовое, то надо сразу отказываться. Это время потраченное зря. Лучше постучать в ещё одну компанию. Пускай возьмут на меньшую вилку, а потом спустя полгода уходим на х2. Повторять n лет.


    1. Kyushu
      09.12.2023 10:37

      Если предлагают тестовое, то надо сразу отказываться

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


  1. Nyaruko
    09.12.2023 10:37

    Ну ОК, установил Qt на комп (это заняло больше суток, ибо установщик работает лишь через VPN, а все бесплатные жесть какие медленные).

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

    Конечно, есть и минусы: build занимат несколько часов, потому что с j или parallel возникают определённые проблемы. Об этом даже писали в комментариях статье про кросс-компиляцию Qt.


    1. Utyugovich Автор
      09.12.2023 10:37

      О да, я думал об этом. Но раз уж поставил на скачку, то пускай стоит, зато не придётся потом со сборкой мучить и поиском зависимостей.


    1. usernameak
      09.12.2023 10:37

      У меня проблем с распараллеливанием сборки Qt не было - я просто брал пребилт бинарник jom :)


  1. JordanCpp
    09.12.2023 10:37

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

    Что-то дичь. Почему нельзя просто взять и проверить тестовое, по требованиям тестового задания?


  1. JordanCpp
    09.12.2023 10:37

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


    1. Utyugovich Автор
      09.12.2023 10:37

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

      Но всё же в реальной жизни ТЗ тоже не имеет всех деталей и указаний к реализации, поэтому задача программиста выяснить их. Одна из причин, почему нас никогда не заменит ИИ, кстати (но это отдельная тема)

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

      Такую точку зрению сегодня дал мой дипрук. И я могу согласиться как и с вами, так и с ним.


      1. JordanCpp
        09.12.2023 10:37

        Если вам так легче понимать, тогда не буду настаивать. Просто я не люблю такое жопное отношение. Если мне нужно узнать о софт скилла, я спрошу о работе, как проходит ревью, что делаете как общаетесь и т. д Этого достаточно. ТЗ это уже проверка не личности, а конкретного задания, сделал, не сделал и как сделал.

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

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


        1. Utyugovich Автор
          09.12.2023 10:37

          Мне кажетя такая позиция уместна, когда ты мидл и выше.

          У нас тут на дне мы говорим спасибо, если вообще дали тестовое :)


      1. Mapaxa864
        09.12.2023 10:37

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


  1. AlexanderS
    09.12.2023 10:37

    Согласны\не согласны? Что думаете?

    То, что автор нормально не спал - сам виноват. Правда если для того чтобы устроиться на работу нужно не спать, то страшно представить что будет когда начнётся сама работа)

    Тестовое на неделю - уже характеризует работодателя. Ну а то, что тестовое подразумевает диалог с HR по техническим (!!!) деталям - это вообще какой-то аншлаг.

    По моему, автору повезло туда не устроиться. Адекватные работодатели минимально фильтруют соискателей при приёме, отсеивая совсем неадекватных, берут сотрудника на испытательный срок на 0,5...1 месяц и его оценивает, фактически, его будущий руководитель. Но такой подход похоже уже давно вышел из моды.


    1. JordanCpp
      09.12.2023 10:37

      Но такой подход похоже уже давно вышел из моды.

      Походу всё не в моде.

      1. Быстрый софт, не в моде.

      2. Адекватное интервью и ТЗ, с последующей адекватной оценкой, не в моде.

      3. Нормальное человеческое отношение, не в моде.


    1. UserHome
      09.12.2023 10:37

      всего самого хорошего


  1. orfelin
    09.12.2023 10:37

    Работал у них почти 15 лет назад. Моё тестовое задание было написать рендер шариков и кубиков в стакане с физикой ( столкновения и вращения ). Справился за 4 дня. Взяли сразу. Никаких HR не было. Собеседовал сразу лид ( Олег Федоров респект ????)

    Два шикарных года. Команда атмосферная.

    Как сейчас там не знаю. Большая часть команды 2007-2009 разбежались


  1. 13werwolf13
    09.12.2023 10:37

    Ну ОК, установил Qt на комп (это заняло больше суток, ибо установщик работает лишь через VPN, а все бесплатные жесть какие медленные).

    ох уж эти сложности в недооперационках.. хорошо что у белых людей есть `sudo apt/dnf/zypper/pacman install`...


    1. Utyugovich Автор
      09.12.2023 10:37

      Фраза, которую вы никогда не услышите от пользоваетелй Linux:
      - Я не привык рассказывам всем подряд, какую операционную систему использую :D


      1. mc2
        09.12.2023 10:37

        Ok, поставить winget/choco и через него ставить. Альтернативы есть и не одна, а не страдания. Просто для кругозора полезно;)


        1. 13werwolf13
          09.12.2023 10:37

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


    1. sergiodev
      09.12.2023 10:37

      vcpkg install qt


  1. karavan_750
    09.12.2023 10:37

    Согласны\не согласны? Что думаете?

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

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

    Во второй части после получения ТЗ от эйчара незамедлительно подать список уточняющих вопросов, на которые эйчар точно не сможет ответить. Далее, если ответ от эйчара не поступит в тот же день, то предъявить ей за воровство сроков назначенных на решение. Если будет отмазываться, что она "не в теме" и вынуждена вопросы пересылать технарям, то задать вопрос: "Какой **** уполномочил ее ставить ТЗ, а необходимыми навыками для закрытия уточняющих вопросов не снабдил? И вообще, кем она себя возомнила?"

    P.S.: Вторую часть не пишите. А если напишете, не публикуйте, а то минусов насобираете. Просто имейте ввиду, что вот такие диалоги, возможно, следующему за вами рекрутеру окажут помощь.


    1. nronnie
      09.12.2023 10:37

      Я думаю, что мое обостренное чувство справедливости весьма негодует по факту постановки тех.задания эйчаром.

      Самая жесть, которая время от времени попадается - откликаешься на вакансию, а тебе в ответ ни "здрасте", ни "как живете", а просто молча берут и на почту тестовое задание сразу присылают. В топку сразу же, без разговоров :)


  1. hebedombiu
    09.12.2023 10:37

    Ох. Я похожим образом тестовое в Кефир проходил.

    Написать аналог Asteroids. Логика независима от представления. Время неограничено. Ок, потратил часов 10.

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

    Чего!? Строить ecs для приложения где по ТЗ и не предполагается не то что тысяч, даже сотен объектов? И как я должен был понять что им надо расширяемое приложение? Есть четкое ТЗ, с четкими требованиями. Оно готово.


    1. wellusion
      09.12.2023 10:37

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

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


  1. Ank0
    09.12.2023 10:37

    А офис Питерский или Минский?


  1. alelam
    09.12.2023 10:37

    Если отбросить тестовые на неделю, Лесту и т.п, то меня смущают два момента. 1. В любом рассказе про алгоритмические секции или лайвкодинг на собесах всегда обожают отдельно выделять насколько собеседуюшие любят уточняющие вопросы если условия сформулированы неоднозначно. 2. Я НЕ выдающийся программист. Поэтому каждый раз, когда я оказывался в ситуации "дедлайн через 2 дня, а еще ничего не готово и непонятно как, поэтому нет времени на сон" на выходе через эти два дня со сломанным режимом в качестве кода оказывался в лучшем случае кусок уг. Очень плохо пахнущего. И было такое как правило либо если вовремя не задал правильных вопросов, ограничивающих требования. Либо скилл не дотягивал до нормальной реализации требований.


  1. vvbob
    09.12.2023 10:37

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

    Хочется просто делать что-то без всех этих долбаных дедлайнов, спокойно, размеренно и по кайфу, но это обычно нереально, везде надо "херачить по аджайлу" фичи, нужные уже вчера..


    1. GospodinKolhoznik
      09.12.2023 10:37

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


      1. vvbob
        09.12.2023 10:37

        Я из 1С и пришел :)

        Как-то там еще меньше нравилось, может просто отдохнуть надо, уже не знаю даже.


        1. GospodinKolhoznik
          09.12.2023 10:37

          А что в 1С не нравилось? То, что постоянно надо меняющуюся нормативку изучать? Или у вас там тоже руководство требовало херачить код в супер сжатые сроки?


          1. Falakure1234
            09.12.2023 10:37

            А что, для работы в 1с разрабом надо нормативку? Консультанты для тебя переводят бизнес постановку на понятный тебе язык... Во всяком случае в разработке для sap так.

            Можно, конечно, знать это все, но для работы разрабом - ни к чему. Консультантом - да, отлично. Знаешь и как код писать и в предметной области шаришь


            1. khulster
              09.12.2023 10:37

              А что, для работы в 1с разрабом надо нормативку?

              Как правило, да. Серьезный спец по 1С он уже наполовину бухгалтер, а не чистый кодер.

              Консультанты для тебя переводят бизнес постановку на понятный тебе язык... Во всяком случае в разработке для sap так.

              И во многом по этому SAP значительно дороже в сопровождении, а многих вещей которые в 1Ске искаропки в нем нет в принципе.

              Но все же тут надо учитывать, что SAP и 1C довольно разные продукты решающие несколько разные задачи.


          1. vvbob
            09.12.2023 10:37

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

            Дедлайнов особо не было, но задачи в основном, помню, были довольно скучные, правка типовых процентов в 80 случаев, какие-либо отчеты допиливать, это просто скучно.


    1. nronnie
      09.12.2023 10:37

      Честно говоря для меня чем дальше, тем меньше я испытываю какой-то кайф от программирования.

      Честно говоря, я программирование уже ненавижу - какой уж там кайф :) Причем, дело в том, что мне нравится программировать, но все что связанное с работой... Год назад психотерапевт прописал тиоридазин - под ним работать как-то еще получается, но эта шляпа после пары месяцев приема действовать почему-то перестает, приходится перерывы делать.


      1. vvbob
        09.12.2023 10:37

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


        1. nronnie
          09.12.2023 10:37

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


  1. fizikdaos
    09.12.2023 10:37

    Побуду капитаном очевидность.

    Вот 99% что под фразой "срок - неделя" подразумевали, что в течении недели найди вечерок когда тебе удобно и сделай задание за пару часов. Ну потому что тестовых заданий на 40 раб. часов никто в здравом рассудке ни давать, ни делать не будет. Даже за деньги это что-то странное. Может они чуть и виноваты, что не разъяснили это, но кажется тут сам себе злобный буратино, мог бы и спросить.

    Собеседование - штука абсолютно без гарантий и обязательств, причем для обоих сторон до момента подписания договора. Это не так работает, что сделал тестовое и обязаны взять. Обычно в простейшем случае алгоритм работы - это "прособеседовали 5-10 человек, взяли кто больше понравился". Да, в больших компаниях многоуровневые собеседования и с каждым этапом шансы повышаются, но никаких обязательств брать если сделал задание нет и быть не может даже в них. Более того, страшную тайну открою, даже по ТК РФ на испытательном сроке (до 3 мес.) тебя вполне могут уволить в 3 дня без особых объяснений. На то он и испытательный срок. (нет, за просто так увольнять тебя не будут - это ж сколько денег и времени уже потрачено).

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


    1. Suvitruf
      09.12.2023 10:37

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

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


    1. MiraclePtr
      09.12.2023 10:37

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

      Про одну известную и уважаемую компанию, которая даёт тестовое на 12 часов (по мнению самих интервьюверов) я уже выше писал.

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


    1. raspberry-porridge
      09.12.2023 10:37

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


      1. code_panik
        09.12.2023 10:37

        Движок 2d или 3d?


        1. raspberry-porridge
          09.12.2023 10:37

          2d


    1. Utyugovich Автор
      09.12.2023 10:37

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


      1. fizikdaos
        09.12.2023 10:37

        Вас никто палками делать это не заставлял. Не хотите - не делайте. А они не хотят - и не берут вас. Свобода воли. Радуйтесь, что пока так можно, а не по распределению вас отправили.


    1. khulster
      09.12.2023 10:37

      Более того, страшную тайну открою, даже по ТК РФ на испытательном сроке (до 3 мес.) тебя вполне могут уволить в 3 дня без особых объяснений

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


  1. schernolyas
    09.12.2023 10:37

    Просто забудь. Ну и порадуйся что не попал в эту команду. У меня был похожий случай. Меня завернули поэтому что в задании я использовал самый строгий уровень изоляции, а это бьёт по производительности. Так что ...вы получили свой технический опыт. Наслаждайтесь. И не расстраивайтесь!


  1. orefkov
    09.12.2023 10:37

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

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


  1. cortl
    09.12.2023 10:37

    Вот если я не успею сделать его до конца за неделю, это не будет минус, если при этом у меня будет качественный код?

    Если основная функциональность не будет работать или будет работать криво - однозначно отказ.

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


    1. code_panik
      09.12.2023 10:37

      я не соблюдаю префиксы в именах переменных указывающих на их тип.

      Такое легаси, https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rl-name-type


  1. Viacheslav01
    09.12.2023 10:37

    Вспомнился конкурс от вконтактика:
    В ТЗ конкурся отдельным пунктом вот в этом месте делаем поведение Х, ни в коем случае не У!
    В резолиции жюри, этот победил потому что у него в отличии от остальных реализован У!


  1. vladshulkevich
    09.12.2023 10:37

    Так это... нефиг по помойкам шариться. И не нужен им разраб был, они чешут там свое ЧСВ об кандидатов, видимо. Опыт: пришел наниматься в офис, техдир такой "вот тебе комп, вот условие задачи", через час на желтой бумажке (которые на моник клеют) написал условия, я говорю "это официальный офер", он "да", и все счастливы.


  1. insecto
    09.12.2023 10:37

    Чёто я не понимаю плач. Контора прособеседовала и протестировала кандидата, кандидат не устроил, все пошли дальше. О чём слёзы?


  1. Katenk_aa
    09.12.2023 10:37

    У меня единственный стимул выполнять тестовое - прикольная задача ,которую мне интересно выполнить независимо от результата


  1. 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.