Фидбэк по тестовому заданию

Мой первый пост, если что — прошу простить...

Я начинающий разработчик без коммерческого опыта. Подал в заявку в компанию, которая искала как-раз такого — без опыта (если база есть — остальному мы научим). Дали тестовое. На мое скромное мнение я с ним справился довольно успешно. Но мне отказали с комментарием:
«Неверная фильтрация
Обязательные параметры в функции, не соответствуют ТЗ
Низкое качество кода»
Попросил дать более развернутый фидбэк — отказали.

Я потом еще раз просмотрел свой код — ошибок не нашел (писал на JavaScript). Хочу попросить помощи у сообщества по оценке моего тестового, чтобы понимать, действительно ли у меня там все так плохо и если да, то где именно, над чем мне нужно еще поработать?
Ссылка на ТЗ по тестовому:
docs.google.com/...​V3XTW1Po/edit?usp=sharing

Ссылка на мой код (сделал в гуглдоке чтобы не ругалось на .js):
docs.google.com/...​bUJ_4mCI/edit?usp=sharing

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Мне его прислали «в личку» на djinni. Я просто скопировал «один в один» в гуглдок.

Не переживайте, сейчас вселенная кандидата идите на следующее собеседование. Только сделайте вывод из прошлого, ваш код коллеге не понравился потому что выполнен «не в формате» тоесть его сложно читать. Поскольку сколько программистов, столько и стилей написания кода были придуманы стандарты оформления кода (style guide). Для JavaScript самый широко используемый — созданный компанией AirBnB
— github.com/airbnb/javascript Изучите и оформляйте свой код в этом формате, можете сразу сказать тем кто даёт тестовое — «я буду использовать airbnb код стайл».
А тем кто пишет сами тестовые задания — поглядите как фирмачи делают codingcompetitions.withgoogle.com/hashcode/archive

Изучите и оформляйте свой код в этом формате

а линтер — не советуешь?

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

Слово «десять...» лишнее. Неужели никто не заметил?

Или сразу написать как надо
Чтоб ошибки бросились в глаза
Чтоб за кодинг получать зарплату
А не чтоб любили через за..

Мой подход и прост и очевиден.
Это как бы скульптора подход.
Или быстро или качественно
Люди пишут свой программный код.

Во-первых, нафига код прислали в гугл-доках? Надо было например через playcode.io чтобы сразу можно было посмотреть на результат выполнения кода. Во-вторых, можно попроще и покомпактнее напейсать, например

const filterTotal = dataFilter => dataFilter.map(v => {
      const name = v.name.split(' ');
      return {
         'first_name': name[0],
         'last_name': name[1],
         'age': calcCurrentAge(v.dob),
         'favorite_animals': v.favorite_animals
      };
});
filterAnimals тоже сократить можно. if (animals == undefined) можно заменить на просто if (!animals), сразу далее идёт повторная проверка, ну в общем пример небольшой, но там хватает уже говнокода. В-третьих, конструкции типа return console.log(......) — бредовые, возвращать нужно значения по сути. Ещё можно юзать for...of для перебора массива, и прочие возможности нового стандарта.

Чаще чем ты думаешь требуются совместимости со старыми стандартами.

Это до 2015 года чтоли? Надо не забывать, что Bootstrap5 и Vue3 вообще не поддерживают IE11, на него просто болт положили. А остальные браузеры обновляются автоматически. Если у кого-то стоит IE7 и больше ничего, значит там ещё 98 венда, пусть сходят на свалку и проапгрейдят там свой комп.

С десктопами ещё полбеды. А вот что делать с мобильными девайсами... там же Ад и Израиль.

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

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

Качество кода действительно страдает детскими ошибками. Но лечение этих ошибок занимает 1 урок. Единственная причина, по которой их допускают — НИГДЕ НЕ УЧАТ их не совершать.

А далее, человек либо усваивает урок, либо посылает всех нахер, считая что он один самый умный, а другие ничего не понимают. Именно этот фактор отсеивает 4 из 5 программистов. И лично я бы отсеивал ещё на 1 курсе ВУЗа. К сожалению, при поступлении не получится, потому что для теста нужна зона комфорта.

Здесь чистая психология: Либо человек готов работать вместе с другими, используя наработки сотен тысяч других программистов, либо мyдак.

Кстати говоря, это не только в программировании так. Но в любой работе, где требуются совместные профессиональные действия. Если бы вы СТРОИЛИ так же, как пишете код, вас бы прораб ссаными тряпками гнал.

Смотрите, что не так: Код правильный (вроде как, не проверял). Но ПОНЯТЬ, что он делает — малореально. А ведь это очень маленький кусочек кода. Код должен быть понятен даже тем, кто не читал ТЗ. Даже если для этого придётся написать комменты. А там уже могли бы указать, на каком языке, шпрехен зи руссе, или инглиш фроммайхарт.

UPD: Всё-таки автор невнимательно прочитал ТЗ. Бывает. Но это не тяжёлая ошибка, это вообще банальное воспитание. Один раз лид отымеет без вазелина, заставит переписать, и всё пройдёт. И все через это проходили.

Грубо говоря, это плохое тестовое. Не потому что нельзя сделать. А потому что ничего по сути не тестирует. Такое тестовое я мог бы дать прямо на собеседовании — где не нужно ничего объяснять, а просто накодить — и вуаля. Тогда бы я хоть увидел, как человек кодит и почему. И он бы рассказал, почему кодит именно так. Кодить, разумеется, не на бумажке.

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

А вы могли бы указать на эти детские ошибки, хотя бы в общих чертах, что бы я понимал «в каком направлении нужно копать»?

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

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

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

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

В JavaScript не разбираюсь, но разбираюсь в дебильных тестовых:

1. Нет форматирования текста.
2. Нет форматирования кода.
3. «Немножко текст по-дебильному написан».
4. Нет тестов, который ваш код должен проходить.
5. Нет написанного заранее готового решения, которое они ожидают от кандидата. Его можно присылать кандидатам, у которых низкое качество кода на их взгляд, чтобы не отказывать в развернутом фидбеке — лучше, чем ничего.

И так у них, скорее всего, не только в тестовом, но и в коде, документации и процессах.

ТЗ міг описувати початківець, але ТЗ зрозуміле і його можна вирішити.

я би дозволив собі не погодитись. ну от в тестовому пише

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

**Аргументы вызова функции: **

Массив любимых животных
Объект диапазона возраста с ключами from и to

ну от приходить на вхід перелік якихось тварин... і що далі? повернути людей, у яких список улюблених тварин містить _всіх_ тварин з переліку, чи людей, чий список улюблених тварин містить _хоча_б_одну_ з переліку? чи ще якийсь третій варіант? в завданні про то ні слова і жодного прикладу, щоб якось це пояснити нема. задача з розряду «вгадай, що в мене в голові». очевидно, що вирішити її в принципі не можливо, бо незрозуміло, що саме вирішувати.

Зробити обидва варіанти або складніший щоб показати свої вміння

Google робить як на мене дуже толкові описи завдань для HashCode своїх. От як на мене те що треба — описують проблему яку потрібно вирішити — а не якісь технічні деталі, як то «аргументи функції мають бути не обов’язковими» (і з точку зору дизайну — це дуже погано). Опис тестового міг би бути набагато краще. І фідбек — «мені код стайл не подобається», можно було одразу сказати що код має відповідати скажімо арбіендбі чи якомусь іншому кодстайлу.

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

Хорошая вакансия и задачи интересные.

ТЗ просте, якість коду дійсно низька, на вакансію без досвіду 50+ кандидатів і якщо кожному писати розгорнуту відповідь то це цілий робочий тиждень бо чим більше помилок тим більше буде розгорнута відповідь.

как-то похоже, что это ты это ТЗ выдал...

Вам треба покращувати ваші дедуктивні здібності

Подписаться на комментарии