• ,

Начинающему JavaRush'евцу.

Если Вы поставили себе цель стать крутым Java-кодером и только начинаете свой путь с JavaRush, если Ваша цель получить максимум пользы от данного ресурса, а не бесполезное прожигание времени путем бездумного «отстреливания» задачек — этот топик для Вас.

Скажу честно, к написанию этого слегка брюзжащего поста меня подстегнула задача level05.lesson12.bonus03, а точнее один и тот же бесконечный вопрос возникающий буквально каждый день, а то и несколько раз в день в соседних топиках. Встречая очередной «крик о помощи» задумываешься, ну неужели человеку проще написать вопрос и ждать ответа неопределенное время, чем опустить взгляд на строчку ниже и прочитать то, что писалось уже не единожды.

Итак, предлагаю Вам свой алгоритм работы с заданиями JavaRush. Все изложенное ниже выработано на собственном опыте и опыте других студентов.

Решаем задачу самостоятельно.
  1. Внимательно читаем задание до конца.
    Не единожды замечал за собой, читаешь задание, где-то к середине в голове уже начинает складываться решение, воодушевленный тем, «какой Я умный» пишешь код, жмешь заветную кнопку и видишь — «Программа не прошла тестирование». Epic fail.
  2. Проверяем общий вид задачи. Убеждаемся что мы не меняли имена пакетов, классов, методов полученных с сервера, а новые методы, классы, пакеты созданы согласно заданию (если это оговорено). При сдаче на проверку в задаче не должно быть задокументированных кусков кода, текстовые коментарии не содержащие кода допустимы.
  3. Перечитываем условия задачи.
    Да, перечитываем его до тех пор, пока Вы не будете полностью уверены что поняли его верно и разночтения исключены.
    После этого возвращайтесь к задаче. Обязательно учтите что входные данные указанные в задании даются именно для примера, а не как исчерпывающее условие. При тестировании придумывайте свои данные, используйте граничные данные, пустые значение, null и прочие варианты которые могут подсунуть Вашей программе. Адекватного ответа от сервера, что же ему не понравилось, Вы не дождетесь, надейтесь только на себя.
  4. Итак, на Ваш взгляд задача работает правильно, корректно обрабатывают любые входящие данные, ответ тоже дает правильный, но сервер ее не принимает…
    Проверяйте вывод!
    Тут важно все, порядок ввода/вывода строк в консоль, вспомогательные сообщения, которые Вы добавили чтобы «программа была более красивой», лишний пробел в конце вполне может поставить крест на всей задаче. На данном этапе, наша с Вами задача научиться правильно решать поставленные задачи, а не создавать красивые программы с дружественным интерфейсом.
    Вообще, рекомендую хотя бы поверхностно ознакомиться с теорией тестирования программ. Хотя бы для того, чтобы хоть чуть-чуть представлять что может происходить с Вашей программой на сервере при проверке, как она может проверяться, и что в Вашей задаче может препятствовать успешному прохождению тестирования.
  5. Пункт желательный, но не обязательный к исполнению, так сказать уровень Nightmare.
    Представьте, что это задача не Ваша, а кто-то попросил Вас найти в ней ошибку. Поработайте компилятором, прогоните мысленно весь жизненный цикл программы в голове.
    Очень часто при подобном подходе можно заметить узкие места программы.

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

  1. Не спешите создавать новую тему или писать Ваш вопрос в пером попавшемся топике!
    Поверьте, 90% всех возникающих у Вас вопросов уже кто-то задавал до Вас и на них уже были даны ответы. Еще на 9% вопросов можно найти ответы на просторах интернета. Обычно, на поиск ответа на возникший вопрос уходит не больше 15 минут. В любом случае, ответ найденный самостоятельно принесет Вам гораздо больше пользы.
    Самый простой способ получить ответы на Ваши вопросы.

    Попутно Вы получите разъяснения задания,ссылки на теоретический материал, ознакомитесь с различными подходами к решению данной задачи, найдете кучу тестовых данных и просто познакомитесь с другими «жителями» этого форума.
  2. Давайте уважать друг друга!
    Если Вы не выполнили первый пункт, не стоит просить других пользователей предоставить Вам тестовые данные или найти ошибку в Вашей программе. Никому не интересно по десять раз писать одно и то же или работать Вашим личным гуглом.
  3. Итак, Вы искали, но не нашли, или нашли, но не знаете как исправить. Как правильно задать вопрос?
  4. Не создавайте новую тему, если есть существующие!
    Да, это не запрещено правилами форума, но подумайте о следующих студентах идущих по Вашим стопам. Думаю, гораздо проще найти ответы в одной ветке форума нежели в паре десятков.
  5. Публикуя свой исходный код, делайте это полностью!
    Да, включая задание, package, import и прочее. Ошибка может затесаться где угодно, а задание поможет отвечающему быстрее войти в курс дела, не тратя силы и время на выяснение о чем вообще идет речь.
  6. Правильно оформляйте свой код!

    Неформатированный код очень сильно затрудняет чтение и понимание, этим Вы ускорите получение ответа.
  7. Перед публикацией, попытайтесь упростить Ваш код. Если код содержит какие-либо «хитрые» моменты, прокомментируйте их. Учитывайте, что другому человеку придется прочитать и понять Ваш код.
  8. Постарайтесь быть как можно точнее в постановке вопроса.
    Как бы не смешно это звучало, но порой требуется переводчик «с русского на русский».
  9. Ну и на по следок. Будьте вежливы независимо от полученного ответа. ;)

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

От всего сердца желаю успехов в прохождении курса!

18 комментариев

Turambar
Шикарно! Спасибо огромное! Все понятно и предельно подробно!
Сам нахожу (если уже уперся совсем) подсказки в уже имеющихся темах — по 1 пункту )
Solank
  • Solank
  • 0
  • Комментарий отредактирован 2015-01-22 15:03:11 пользователем Solank
Звонок на радио:
— Поставьте пожалуйста песню про Анапу!
— ?????
— А-на-па-следок я скажу…

По сабжу — хорошо написано, спасибо =)
Sdu
Да =) Есть такой косяк, не доглядел, спасибо что обратили внимание, в следующий раз буду внимательнее. ) Если сейчас исправлю, топик выкинет с главной.
bazizdeg
А по поводу
оформления кода
это верно подмечено. Удивительно, но похоже это не всем очевидно.
TransCosmio
Предлагаю ссылку на этот топик давать в качестве ответа на все бездумно созданные темы. Просто ссылку, без объяснений, и не начинать помогать, пока страждущий не оформит пост правильно.
napeHb
Встретилось несколько задач, где не проходил проверку реверсивный список, в условии про это ничего не было сказано.
javaNub
Большое спасибо за пост! Было несколько раз, пока не отключил комменты со своим кодом()…
Примем к сведению :)
zuzka
в разработке уже несколько лет, вот решил подтянуть и джаву… очень правильно замечено: читать задание до тех пор, пока не убедитесь что все правильно поняли и все сделали как там написано!
Gwyn
Хочу обратиться ко всем, у кого:
— вызвали проблемы задачи 8-9 уровней, как и 17 -18 по причине непонимания кода
— когда вы просто по 3 часа разбираете код из 3 классов, где методы переплетены и по 100 раз вызывают друг друга
— когда вроде понимаете, зачем конструктор, но повторить не можете.

для меня эти 3 этапа были контрольными токами, на которых я упирался в тупик. Этапами, на которых не бросить обучение удалось только напряжением силы воли.
Когда ты смотришь в код задачи изученой 2 дня назад темы и понимаешь, что все забыл и сегодня ты в нем ничего не понимаешь…
НЕ ДЕЛАЙТЕ МОЕЙ ОШИБКИ — НЕ ЛЕЗЬТЕ НА ФОРУМ ЗА ГОТОВЫМ КОДОМ ИЛИ ПОДСКАЗКОЙ.

Каждая сданная с подсмотром подсказки задача ОТДАЛЯЕТ ВАС от обучения. Сейчас мне дико надо пройти снова те задачи на потоки, а я не могу. рву на себе волосы, что спешил проскочить сложный уровень и проматывал задачи. А теперь мне не хватает опыта их решения, чтобы пройти ту же биг задачу на 27 уровне.
вернитесь в тему задачи, перечитайте. Лезьте в интернет. Куда угодно. на форум идите только в 2 случаях
— программа прошла ваши тесты, но не принимается
— вы сдали задачу и идете посмотреть как эту задачу сделали другие.
К примеру, есть очень крутая бонусная задача «кроссворд». Я убил 2 дня на алгоритм, он вышел в 300 строк.
и когда я таки ее сдал и полез на форум, то увидел алгоритм на 50 строк. Но я никогда бы не понял его красоты и сути, если бы не потратил 2 дня на свой.
Для копипаста — коддинга не нужен джавараш.
Сейчас я этот алгоритм применяю в своих проектах игр — крестики — нолики на большом поле, морской бой от хед ферст у меня разросся до 8 классов, причем я выкинул их класс с логикой и написал с ноля свой. С сериализацией, ИИ и прочими свистелками, которые я дописываю до сих пор (Использую Java FX 2.0 для гуи, поскольку свинг устарел и жить ему от силы еще пару лет. Причем продираться через FX приходится с минимумом документации, штудируя англ. форумы. )

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

Теперь после 2 самостоятельно написанных игр, понимаю что могу просто сесть и сделать ее, ибо зашел к этой задаче с другого края.
Но… сначала допишу третью игру )
Sygurny
Чувак, ты крут!
Javis
Полностью согласен! Поправлю тебе карму за прозрение))
ksenobite
Поучительный пост. Но позволю себе не согласиться. Форум — это часть обучения. Все сталкивались с задачами типа «надо угадать что пришло в голову автору валидатора». Если не понятно что требуется или собственное решение не проходит, а новых идей нет, то почему бы не залезть на форум? В чужом решении можно почерпнуть не меньше знаний, чем в лекции. Не хочу обидеть автора, но он потратил 2 дня и 300 строк кода на написание велосипеда. Потом он залез на форум и нашел 50 строк кода того «как надо было делать». Наверняка там использовался как-то готовый функционал, о котором автор никогда не узнал бы, не посмотрев он чужое решение. Я призываю сознательно относиться к работе с форумом и с чужим кодом. Безусловно, просто копируя чужой код, не разобравшись как он работает, ничего не достигнешь. Но и закручивать гвоздь отверткой не самая лучшая идея. Хотя, если у вас много свободного времени и вы не знаете на что его потратить, то почему бы и нет? =)
molodets
А как создать топик в разделе «Обсуждение задач»? У меня при создании топика в выпадающем меню «В какой блог публикуем?» есть только один вариант: «мой персональный блог».
hubert
А зачем создавать топик? Недостаточно минуса в карме?
Читаем FAQ
molodets
Чтобы получить ответы по задачам, топики на которые не были созданы
Sdu
Я думаю все дело в этом:


Добро пожаловать!

P.S. Врать не буду, был приятно удивлен увидев что администрация сделала отсылку к моей статье.
Pegas
  • Pegas
  • 0
  • Комментарий отредактирован 2016-04-15 14:34:35 пользователем Pegas
На help.javarash аудитория меньше, тут веселее.
Truefirefox
апну чатик
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.