Progwards — Java, Базовый уровень: от начала и до конца

Наиболее важные моменты, с которыми я столкнулся на курсе «Java, Базовый уровень». О программирование слышал, но не имел каких-либо знаний, если не брать в расчет владение HTML и CSS, но это языки разметки и внешнего вида, очень далёкие от Java. Записавшись на курс, предполагал, что будет не просто, но реальность оказалась ещё более сложной.

Копипаст (поиск готовых решений)

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

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

Смена подхода к изучению лекций

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

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

Путь для решения задач

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

…)

5) проверить, состоит ли слово только из букв методом isLetter().

6) сжать слова, убрав лишние пробелы через trim().

…)

В ходе детального разбора задачи появляется набросок структуры кода. Безусловно, возникали моменты, когда не понимал, как реализовать определённый фрагмент, в этом случае возвращался в Гугл, но не для поиска готового решения, а способов реализации отдельных составляющих. Например, для отладки требовалось заполнить массив случайными значениями, а класс Random ещё не был пройден, то в поиск вводилось «random numbers java». Почему запрос на английском? Потому что в англоязычном сегменте можно найти гораздо больше примеров и опять же языковая практика.

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

А может ну его, бросить…

Желание бросить изучение Java возникало неоднократно, особенно на начальном этапе, когда учёба была скорее мучением. Но чем дальше продвигался по курсу, тем больше знаний и навыков приобреталось, код в IntelliJ IDEA становился осмысленным, а вместе с ним и удовольствие от проделанного.

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

«В тот момент, когда вы хотите все бросить, вы максимально близки к успеху».

А что же в конце…

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

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

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

Олег Киселев, после окончания базового курса, март 2020