Приступая к написанию заголовка к данному посту, я ужаснулся: вот уже почти два месяца прошло с тех пор, как я начал вести этот блог! Всё это время я, вроде бы, как напряженно тружусь, затрачивая почти всё свободное время на самообучение. Постоянно приходится выбирать между семьей и учебой и каждый раз необходимо принимать непростые решения: ведь в любом случае нужно пожертвовать чем-то важным. Часто приходится жертвовать собственным сном и отдыхом при том, что работа у меня с одной стороны физически тяжелая, а с другой — сопряжена с определенным риском и требует высокой концентрации внимания. Чтобы иметь возможность пообщаться со мной, коллеги должны ловить момент, ведь в основном на перерывах я всегда занят либо чтением, либо прослушиванием подкастов. Я забыл, когда в последний раз я выходил на улицу просто для того, чтобы прогуляться или заняться какой-нибудь физической активностью. Вместо этого, в выходные я весь день просиживаю взаперти за монитором, либо читая книги с телефона, отращивая живот и приобретая дефицит витамина D.
И что же в итоге? Могу ли я с гордостью сказать, что действительно добился каких-либо серьёзных успехов в программировании за всё это время? Да, я узнал много нового, научился пользоваться разными полезными инструментами вроде джекила и гитхаба, немного освоился в терминале линукса, прочел несколько хороших книг и получил представление о том, что такое алгоритмы и для чего они нужны. Я прослушал неимоверное количество подкастов о веб-разработке и теперь всегда смогу поддержать разговор на темы “Safari — это новый IE” и “будут ли поддерживаться гриды в 2017?”. Но все это ни о чем, ведь когда речь заходит о практике, я как был полным нулем — так и остался им. Когда люди узнают о том, что я учусь на веб-разработчика, то чаще всего сразу же спрашивают: “а какие фреймворки используешь?”. Какие фреймворки? Я не знаю, что такое фреймворки, я никогда не видел в живую ни одного из них. Я и кодить-то толком не научился на нативном JS, на написание простейшей быстрой сортировки у меня уходит целый день. Каждый стандартный метод для работы с массивами я загугливаю по 10 раз и после этого он снова благополучно вылетает у меня из головы. Наконец, у меня нет ни одного готового сайта, даже самого простого, который я мог бы с гордостью показать друзьям и знакомым. (Этот — не в счёт, ведь его, по сути, сделала за меня одна бездушная программа, написанная на языке Ruby). И всё это — потому, что мое обучение построено таким образом, что оно состоит на 95% из теории и, дай бог, если в нем есть хотя бы 5% практики.
Проанализировав все вышесказанное, я пришел к выводу, что надо срочно что-то менять, поскольку моя бедная мотивация, до сих пор державшаяся на последнем издыхании, теперь и вовсе забилась в предсмертных конвульсиях.
Во время последней нашей синхронизации с Кириллом, я пожаловался на полное отсутствие практики и был удивлен услышать, что на самом деле, он тоже не понимает, почему я трачу столько времени на чтение, ведь, когда он советовал мне определенные книги, то не имел в виду, что я должен прочитывать их от корки до корки и тем временем забивать на все остальное. Например, в случае с алгоритмами подразумевалось, что я буду пытаться на практике реализовать некоторые из них и, по мере надобности, обращаться за информацией к книге. С другой стороны, Кирилл объяснил мне, что он мог бы прямо сейчас научить меня как поднимать сайты и прочим практическим вещам, но это было бы не совсем верным решением. Да, если правильно выполнять все задания, заручившись при этом поддержкой учителя, то всё, безусловно, получится и я на какое-то время почувствую себя героем. Но что случится в следующий раз, когда мне придётся столкнуться с подобной задачей самому? Шаг влево, шаг вправо — и вот уже я в панике перед возникшими ошибками! Чтобы избежать подобных ситуаций, мне требуется проделать еще очень много подготовительной работы. В первую очередь научиться работать с ошибками и выработать в себе навык первым делом всегда обращаться к документации. Понять принципы работы операционной системы и научиться конфигурировать ее самостоятельно, поскольку это, как ничто другое, способствует выработке правильного программистского мышления. Для того, чтобы хорошо разобраться во всех тонкостях моей убунты, Кирилл посоветовал книгу “Unix и Linux. Руководство системного администратора”, однако еще раз предупредил, что ни в коем случае её не нужно прочитывать от корки до корки. Просто использовать, как справочник, время от времени углубляясь в необходимые темы по мере возникновения вопросов.
В плане практики сейчас от меня требуется самостоятельно реализовывать на JS некоторые алгоритмы, начиная с самых простых, таких как сортировка пузырьком и быстрая сортировка, потом, по мере продвижения Кирилл будет говорить, за какие алгоритмы и структуры данных браться дальше. Для этих целей я создал у себя отдельный репозиторий на Гитхабе, где буду сохранять все это дело. Думаю, в будущем пригодится, хотя бы для того, чтобы работодатель смог увидеть, что я хотя бы что-то знаю и умею. Кое что уже успел сделать и закоммитить, теперь продолжаю двигаться в данном направлении.
Пока больше особо рассказывать нечего, но надеюсь, что теперь стану продвигаться намного быстрее именно в плане практики и в следующий раз уже действительно будет, чем похвалиться. Ну а пока что — всем хорошей недели!