Во-первых, считаю важным проговорить, что вопрос с тестами не решен для нас окончательно, этот пост — один из способов найти истину. Так что дальше прошу рассматривать мои ответы не как попытку отказаться от любого открытия тестов, а как искренние контраргументы.
Закрытые тесты не позволяют отделить ошибки в алгоритме от ошибок в разборе входных данных или от «неправильного» прочтения задания, которое почти неизбежно в определенном проценте случаев.
Да, но ведь ошибки нужно минимизировать в любом коде, не важно, сложный это алгоритмический код или чисто техническая штука. Любой код полезно писать максимально чисто.
Закрытые тесты означают, что ваши наставники тратят больше времени на общение со обучающимися, разъясняя вещи, которые можно было бы просто увидеть в результатах тестов (т.е. буквально выполняют работу машин). Время ваших сотрудников, которое оплачивает ваша компания!
Нам кажется что сценарий
«Тест упал -> иду к наставнику -> наставник задаёт вопрос о логике моего алгоритма/советует вспомнить про краевые случаи -> я отвечаю на вопросы или следую советам наставника, сама додумываюсь до проблемы в коде»
лучше, чем сценарий
«Тест упал -> я взяла тесткейс, нашла в коде баг, поправила, отправила в систему опять»
Несложно заметить, что во втором сценарии я гораздо меньше думаю. Студенты, которые ошибаются и проводят плодотворную работу над ошибками вместе с наставниками, по-моему, лучше и быстрее “набьют руку”. Безусловно, это непростой путь, но он точно результативный.
Закрытые тесты скорее всего приводят к большей фрустрации учащихся и к большему уровню недовольства курсом в целом. Понятно, что ваша цель — научить людей алгоритмам, но как знать, сколько из них бросают это дело, потому что «аргх ничего непонятно опять ошибка!»?
За этим мы следим, стараемся помогать тем, кому сложно. Человек никогда не уходит от нас незаметно, так что все такие случаи известны и посчитаны
Закрытые тесты не похожи ни на реальное программирование, ни на реальное самостоятельное написание тестов. Неясно, действительно ли они помогают научиться тестировать код, по крайней мере курсы или книги по юнит-тестированию вроде бы такое не практикуют массово?
Мы считаем, что да, помогают, это консенсус многих преподавателей и программистов, с которыми мы обсуждали курс.
Наверное, чтобы доказать это или опровергнуть раз и навсегда, нужен эксперимент. Подумаем, как его устроить, чтобы не напугать студентов :)
Непонятно, приводят ли закрытые тесты к лучшему или худшему уровню понимания алгоритмов или программирования в целом (мне исследований на такую тему не попадалось, но мб я плохо искал). Тем не менее, можно в рамках вашего же курса это проверить — учащихся много, вполне можно устроить небольшое исследование.
Опять же, не могу привести исследование сейчас, но думаю, устроим что-то подобное вместе со студентами, которые будут не против.
Вероятно, открывать тесты по желанию учащегося было бы разумным компромисом (типа, нажать на кнопочку и согласиться с предупреждением). По факту вы ведь сейчас так и делаете! Только с привлечением живого человека, которому, опять же, нужно оплачивать его время, который не может ответить всем сразу, который мог бы отвечать на более интересные вопросы. А учащийся должен ждать этого ответа какое-то (полагаю, не очень малое) время, что тоже усиливает фрустрацию.
Мы думаем в сторону того, чтобы дать подсмотреть «по кнопке» несколько тестов. Большинство тестов всё равно довольно объемные и их открытие вряд ли сильно поможет.
Спасибо, что участвуете в обсуждении и предлагаете варианты, нам это важно.
Но у вас же все-таки курс по алгоритмам, а не по юнит-тестированию?
Тестирование на наш взгляд — важная часть обучения алгоритмам.
Если не умеешь реализовывать алгоритм так, чтобы код работал — значит не научился алгоритмам (в нашем понимании).
Чтобы писать рабочий код, надо уметь его тестировать, видеть разные кейсы.
Так что не вижу больших проблем в том, чтобы тренировать навык тестирования в курсе по алгоритмам. В конце концов, студенты приходят к нам за навыком, а не за «лёгкими» галочками напротив задач.
И да, конечно мы рассказываем им почему тесты закрыты и подробно объясняем что нужно делать, если не получается побороть тест.
Самый важный аргумент против открытия тестов — это то, что, придумывая тесткейсы самостоятельно, студент со временем научится писать код чище, заранее угадывать, где могут быть проблемы. Это банально бережет ресурсы программиста. Ну и если мы говорим о том, что в реальной жизни тест известен, потому что TDD — кто-то же должен был эти тесты изначально написать. Значит надо уметь тесты придумывать, причем всесторонние, охватывающие разные случаи, связанные с задачей.
Сходу видно несколько сложностей в реализации:
1) Платформа не умеет предлагать новую задачу в ответ на неудачную попытку, и вообще гибкости не так много: либо открыть все тесты, либо все закрыть.
2) Нужно решить сколько таких попыток давать человеку и сделать соответствующее кол-во задач на каждую тему. Это уже попроще, чем первый пункт, но всё равно требует времени.
Ну и вижу некоторый минус в том, что изначальная задача останется нерешенной. В этом смысле лучше уж открыть один текст-кейс по запросу, предварительно убедившись, что человек уже попробовал предложенные нами подходы по поиску бага.
В любом случае спасибо за идею, любые такие предложения заставляют лишний раз подумать и может быть в итоге придумать что-то классное.
Кинули пока не умеющего плавать человека посреди километрового пролива и сказали «плыви». Мол когда придёт время в реальности плыть вы столкнётесь с тем же окружением и теми же проблемами. Отсюда вытекает вполне логичный вопрос: а нафига нужно такое обучение?
Если я правильно поняла, то ваш комментарий относится к закрытым тестам. Тут не могу согласиться с вашей аналогией про жесткое обучение плаванию. Открытие тестовых кейсов — не единственный способ помочь студентам. Мы подробно рассказываем, что делать, если код не работает, какие подходы стоит попробовать.
К тому же есть несколько человек, к которым можно обратиться за помощью, если что-то не получается, они всегда помогут и могут даже выдать тест, если это кажется целесообразным.
Я правильно понимаю, что вы хотели сгладить негатив после недавней критической статьи? Мне кажется что наиболее эффективно было бы сделать работу над ошибками и публично об этом рассказать, а не просто в очередной раз, другими словами рассказывать про проект.
Что касается работы над ошибками – именно о ней мы и рассказали. В недавней критической статье был описан случай из сентября 2020 — ошибки того времени мы уже исправили, и об этом рассказываем в посте.
Добрый день! Ситуация, описанная в посте произошла в сентябре, с тех пор многое изменилось. Уверены, новый курс принесёт большую пользу любому желающему изучить алгоритмы. Если есть вопросы — задавайте, буду рада ответить. Понимаем, что студенты ожидают надлежащего уровня сопровождения, помощи и внимания, всё это даём, стараемся, чтобы это можно было почувствовать на любом этапе обучения.
Полностью согласна, отзывы стоит изучать перед покупкой любой учебной программы, слишком много сейчас на рынке некачественных курсов, даже от больших брендов. Ответила ниже на пост, если у вас будут вопросы про Практикум — задавайте их, копнём поглубже вместе, стараемся давать максимум информации, чтобы пользователи могли принять взвешенное решение.
Во-первых, спасибо за участие в бета-тесте.
Он действительно был не самым удачным, но критика тестеров очень пригодилась нам при рефакторинге курса. Сейчас мы стараемся не повторять ошибок и организуем бета-тесты иначе: даём больше поддержки, не оставляем людей в одиночестве.
Что касается джавы, тайм-лимиты там поправлены, а курс на этом языке проходит около 16% наших студентов.
В ИТМО много сильных алгоритмистов, не зря ребята много раз становились чемпионами мира по программированию. Рискну предположить, что материалы там скорее ориентированы на «продвинутого» пользователя, который уже понимает, как устроены алгоритмические задачи. Если курс от ИТМО не кажется вам слишком сложным — могу его только порекомендовать. Ещё на ютубе есть классные лекции по алгоритмам от Павла Маврина, тоже очень рекомендую.
Меня зовут София Техажева, я лид факультета бэкенд-разработки в Яндекс.Практикуме и отвечаю за курс «Алгоритмы для разработчиков». Спасибо, что вы поделились историей Ирины. Хорошо помним этот кейс. События разворачивались в сентябре и послужили для нас серьёзным основанием обновить как программу курса «Алгоритмы», так и систему возвратов, с которой на тот момент у нас были существенные трудности.
Мы поняли, что на курс приходят не только опытные программисты, и поэтому добавили в него больше информации о том, что такое алгоритмы, зачем они нужны, чего ждать от их изучения.
Теперь студенты сдают на ревью не только код, но и текстовое описание решения задачи, а также оценку сложности. Это помогает уменьшить количество мискоммуникаций между студентами и ревьюерами. Кроме того, мы обновили всю теорию курса и сделали задачи понятнее. Наши студенты отмечают значительный рост качества учебных материалов.
Мы не снимаем с себя ответственности за доставленные Ирине неудобства и хотим отметить, что её претензии в наш адрес небезосновательны. Нам очень жаль, что они продолжают тревожить Ирину и спустя время после разрешения ситуации.
Одновременно с этим мы очень рады, что в результате конфликта нам вместе с Ириной удалось найти решение, которое удовлетворило обе стороны. Ирина приняла наши извинения и скидку на следующий курс Практикума, продолжив обучаться в Практикуме в рамках программы по Data Science.
Видео в курсах доступны бесплатно, доступ к заданиям, и, соответственно, сертификату о прохождении курса — за деньги. Также есть возможность заполнить на платформе заявку на финансовую помощь (financial aid) и получить скидку.
Во-первых, считаю важным проговорить, что вопрос с тестами не решен для нас окончательно, этот пост — один из способов найти истину. Так что дальше прошу рассматривать мои ответы не как попытку отказаться от любого открытия тестов, а как искренние контраргументы.
Да, но ведь ошибки нужно минимизировать в любом коде, не важно, сложный это алгоритмический код или чисто техническая штука. Любой код полезно писать максимально чисто.
Нам кажется что сценарий
«Тест упал -> иду к наставнику -> наставник задаёт вопрос о логике моего алгоритма/советует вспомнить про краевые случаи -> я отвечаю на вопросы или следую советам наставника, сама додумываюсь до проблемы в коде»
лучше, чем сценарий
«Тест упал -> я взяла тесткейс, нашла в коде баг, поправила, отправила в систему опять»
Несложно заметить, что во втором сценарии я гораздо меньше думаю. Студенты, которые ошибаются и проводят плодотворную работу над ошибками вместе с наставниками, по-моему, лучше и быстрее “набьют руку”. Безусловно, это непростой путь, но он точно результативный.
За этим мы следим, стараемся помогать тем, кому сложно. Человек никогда не уходит от нас незаметно, так что все такие случаи известны и посчитаны
Мы считаем, что да, помогают, это консенсус многих преподавателей и программистов, с которыми мы обсуждали курс.
Наверное, чтобы доказать это или опровергнуть раз и навсегда, нужен эксперимент. Подумаем, как его устроить, чтобы не напугать студентов :)
Опять же, не могу привести исследование сейчас, но думаю, устроим что-то подобное вместе со студентами, которые будут не против.
Мы думаем в сторону того, чтобы дать подсмотреть «по кнопке» несколько тестов. Большинство тестов всё равно довольно объемные и их открытие вряд ли сильно поможет.
Спасибо, что участвуете в обсуждении и предлагаете варианты, нам это важно.
Он действительно подходит не всем, к нам стоит идти за навыком (или чуйкой, как вы говорите).
Тестирование на наш взгляд — важная часть обучения алгоритмам.
Если не умеешь реализовывать алгоритм так, чтобы код работал — значит не научился алгоритмам (в нашем понимании).
Чтобы писать рабочий код, надо уметь его тестировать, видеть разные кейсы.
Так что не вижу больших проблем в том, чтобы тренировать навык тестирования в курсе по алгоритмам. В конце концов, студенты приходят к нам за навыком, а не за «лёгкими» галочками напротив задач.
И да, конечно мы рассказываем им почему тесты закрыты и подробно объясняем что нужно делать, если не получается побороть тест.
Да, видимо нам стоит как-то в эту сторону двигаться, учиться показывать часть тестов.
Сходу видно несколько сложностей в реализации:
1) Платформа не умеет предлагать новую задачу в ответ на неудачную попытку, и вообще гибкости не так много: либо открыть все тесты, либо все закрыть.
2) Нужно решить сколько таких попыток давать человеку и сделать соответствующее кол-во задач на каждую тему. Это уже попроще, чем первый пункт, но всё равно требует времени.
Ну и вижу некоторый минус в том, что изначальная задача останется нерешенной. В этом смысле лучше уж открыть один текст-кейс по запросу, предварительно убедившись, что человек уже попробовал предложенные нами подходы по поиску бага.
В любом случае спасибо за идею, любые такие предложения заставляют лишний раз подумать и может быть в итоге придумать что-то классное.
Если я правильно поняла, то ваш комментарий относится к закрытым тестам. Тут не могу согласиться с вашей аналогией про жесткое обучение плаванию. Открытие тестовых кейсов — не единственный способ помочь студентам. Мы подробно рассказываем, что делать, если код не работает, какие подходы стоит попробовать.
К тому же есть несколько человек, к которым можно обратиться за помощью, если что-то не получается, они всегда помогут и могут даже выдать тест, если это кажется целесообразным.
Что касается работы над ошибками – именно о ней мы и рассказали. В недавней критической статье был описан случай из сентября 2020 — ошибки того времени мы уже исправили, и об этом рассказываем в посте.
Он действительно был не самым удачным, но критика тестеров очень пригодилась нам при рефакторинге курса. Сейчас мы стараемся не повторять ошибок и организуем бета-тесты иначе: даём больше поддержки, не оставляем людей в одиночестве.
Что касается джавы, тайм-лимиты там поправлены, а курс на этом языке проходит около 16% наших студентов.
В ИТМО много сильных алгоритмистов, не зря ребята много раз становились чемпионами мира по программированию. Рискну предположить, что материалы там скорее ориентированы на «продвинутого» пользователя, который уже понимает, как устроены алгоритмические задачи. Если курс от ИТМО не кажется вам слишком сложным — могу его только порекомендовать. Ещё на ютубе есть классные лекции по алгоритмам от Павла Маврина, тоже очень рекомендую.
Меня зовут София Техажева, я лид факультета бэкенд-разработки в Яндекс.Практикуме и отвечаю за курс «Алгоритмы для разработчиков». Спасибо, что вы поделились историей Ирины. Хорошо помним этот кейс. События разворачивались в сентябре и послужили для нас серьёзным основанием обновить как программу курса «Алгоритмы», так и систему возвратов, с которой на тот момент у нас были существенные трудности.
Мы поняли, что на курс приходят не только опытные программисты, и поэтому добавили в него больше информации о том, что такое алгоритмы, зачем они нужны, чего ждать от их изучения.
Теперь студенты сдают на ревью не только код, но и текстовое описание решения задачи, а также оценку сложности. Это помогает уменьшить количество мискоммуникаций между студентами и ревьюерами. Кроме того, мы обновили всю теорию курса и сделали задачи понятнее. Наши студенты отмечают значительный рост качества учебных материалов.
Мы не снимаем с себя ответственности за доставленные Ирине неудобства и хотим отметить, что её претензии в наш адрес небезосновательны. Нам очень жаль, что они продолжают тревожить Ирину и спустя время после разрешения ситуации.
Одновременно с этим мы очень рады, что в результате конфликта нам вместе с Ириной удалось найти решение, которое удовлетворило обе стороны. Ирина приняла наши извинения и скидку на следующий курс Практикума, продолжив обучаться в Практикуме в рамках программы по Data Science.
Так что стоит вспомнить и алгоритмы, и JS/HTML/CSS.