Настало время рассказать о том, чем я занимался и что успел узнать в течении последних двух недель с момента начала нашего с Кириллом марафона по сегодняшний день.
Я, конечно, предполагал и знал, что придётся нелегко и спуску мне никто давать не будет. Однако начало взаимодействия с наставником оказалось для меня совершенно неожиданным. Скажем так, первым моим впечатлением от общения с Кириллом было таким, как будто я попал на жесткий психологический тренинг). В первую очередь, он ясно дал мне понять, что основная моя проблема на пути к становлению профессионалом это не отсутствие технических знаний и не гуманитарный склад ума. При желании, все необходимые пробелы в этом плане можно восполнить, главное - это постоянство и упорство . Но главное, на чем я должен сосредоточиться с самого начала - это работа над собой и своими личностными качествами, таким, как уверенность в себе (а у меня с этим реально катастрофа!) и готовность отстаивать собственную точку зрения, умение хорошо коммуницировать с людьми, критическое и системное мышление, авторская позиция по отношению к жизни. По словам Кирилла, именно от развития этих качеств будет зависеть моё дальнейшее продвижение и будущий поиск работы, ведь работодателю в первую очередь важно увидеть перед собой проактивного и уверенного в себе человека, не боящегося трудностей и ответственности, умеющего аргументированно отстаивать собственную позицию. И именно этим вещам я должен уделять особое внимание, если хочу добиться успеха, а все остальное — приложится при достаточном упорстве и настойчивости.
Поэтому, первым делом, я занялся именно вопросом прокачки себя. Специфика моей нынешней работы такова, что я имею возможность воспринимать аудиоматериал в огромных количествах (в данный момент я работаю на конвеере, выполняя однообразную и монотонную работу, и фактически, заняты у меня только руки, в то время, как голова спокойно может воспринимать учебный материал). За последние две недели я успел скачать и прослушать две потрясающие аудиокниги. Одна из них - книга Ричарда Бренсона “К черту все! Берись и делай”. Для тех, кто не знает, Бренсон — это известный английский бизнесмен, миллиардер, основатель корпорации Virgin, которому удалось добиться всего, что он имеет благодаря одному очень важному качеству: там, где другие боятся и сомневаются, он просто берется и пробует. И добивается. И его книга именно об этом.
Вторая книга - одного из известнейших тренеров личностного роста в Украине — Ицхака Пинтосевича “Уверенность в себе и ораторское мастерство”. После прослушивания данной книги-тренинга, начитанной самим автором, уверенность в себе и мотивация начинают просто зашкаливать. Кстати, у него есть еще одна аудиокнига “Действуй! 10 заповедей успеха”, которую я уже когда-то раньше читал и хотел бы теперь еще разок прослушать, но пока что, при обилии всего остального, руки еще не дошли. Также начал слушать Стивена Кови с его “7 навыками высокоэффективных людей”, но в аудиоформате она мне как-то плохо заходит. Потом, когда будет время, попробую взяться за печатный вариант.
Еще Кирилл посоветовал первым делом почитать книгу Роберта Мартина “Идеальный программист”, так как там, помимо всего прочего, тоже присутствует достаточно много мотивации.
Теперь давайте все же перейдем к более технической стороне. Как и ожидалось, самым первым заданием, полученным от учителя, было создание, собственно, этого самого блога, в котором я в дальнейшем смогу постить заметки о своём продвижении. Для этого мне понадобилось познакомиться и разобраться со следующими темами и инструментами:
1. Распределенная система контроля версий Git.
Большую часть времени я потратил именно на освоение базовых навыков пользования гитом. Это заняло достаточно много времени и потребовало очень сильной концентрации, поскольку никогда раньше я не пользовался чем либо подобным. По ходу дела, я также упражнялся в использовании командной строки Linux, оттачивая базовые команды: такие, как навигация, создание и удаление файлов и директорий, редактирование файлов из консоли. Кстати, на линукс (а если точнее — на Ubuntu) я перешёл еще несколько месяцев назад, опять же по совету Кирилла. По сравнению с привычным мелкомягким интерфейсом здесь все кажется таким корявым и неудобным, многие вещи выглядят сырыми и недоработанными (так оно, на самом деле и есть), много всего приходится делать ручками через терминал, включая установку и обновление программ и драйверов, настройку системы и все такое прочее. Для человека с многолетним опытом использования винды все это кажется очень диким и непривычным. Но мне ясно дали понять, что если хочешь стать программистом — не стоит искать лёгких путей. Ведь ни для кого не секрет, что в основном веб-программисту приходится работать именно с машинами под управлением Unix-подобных операционных систем. Поэтому об умении обходиться с ними нужно позаботиться заблаговременно. Кроме того, основной инструментарий программиста (в том числе и Git) имеет в основном консольный интерфейс. Соответственно, умение работать с консолью является навыком первостепенной важности.
Но давайте вернёмся к гиту. В ходе освоения я пользовался этим учебником и вот этим курсом, плюс разными вспомогательными видео на YouTube. Учебник очень хороший и полный, хотя местами, конечно, сложный для восприятия. Естественно, я не проходил абсолютно весь учебник: это заняло бы слишком много времени, да и многие вещи на данном этапе мне попросту не нужны. Я сосредоточился на базовых вещах: таких, как создание и клонирование git-репозиториев, индексация изменений, коммиты, работа с ветками и доступ к удаленным репозиториям. А что касается курса - вот это действительно бомба! Сам курс проходится за несколько часов, весь материал доносится в очень лёгкой и доступной форме, по ходу дела ты работаешь с собственноручно созданным репозиторием, постепенно внося туда нужные изменения. В общем, всем советую попробовать прямо сейчас!
2. Генератор статических сайтов Jekyll.
Jekyll — это инструмент, позволяющий создавать статические сайты наподобие блогов и лендингов буквально в пару кликов. При этом, для самого базового использования вообще не требуется каких-либо знаний о создании сайтов и о верстке. Все это система берет на себя. Поэтому пользователь имеет возможность сосредоточиться не на реализации сайта, а на самом контенте. Если говорить о блоге, то все, что требуется для добавления новых постов - это просто создавать файлы в формате маркдаун с нужным нам контентом и оформлять их в определённом стиле (там все достаточно легко). Больше ни о чем беспокоиться не нужно: jekyll сам создаёт нужные файлы в формате HTML и размещает их там, где нужно.
Конечно, если копнуть поглубже, то там на самом деле можно творить много крутых вещей: например, создавать собственные шаблоны и т.п. и, скорее всего, в дальнейшем мне еще предстоит всему этому научиться, но пока что все, с чем я работал, было автоматизировано до предела.
На сайте Jekyll содержится подробное руководство по использованию сервиса. Правда, там все на английском языке, но если я серьезно хочу стать программистом, то нужно прилагать усилия к тому, чтобы научиться как минимум понимать англоязычные тексты, ведь основной объём информации по всем вопросам в программировании всегда был и будет доступен именно на инглише.
Кстати, по поводу английского: категоричным требованием Кирилла было в первую очередь перевести все доступные мне интерфейсы на английский язык. Это касается буквально всего: любые меню, будь то на сайтах, в приложениях, на компьютере и в телефоне, даже в банкомате. Чем больше английского будет в окружающем меня мире, тем лучше. В принципе, я старался следовать этому совету и раньше, но теперь активно перевожу на английский все, с чем приходится сталкиваться в жизни. Кстати, от себя могу еще посоветовать смотреть все фильмы только на английском в оригинале, с субтитрами. Это очень помогает научиться воспринимать англоязычную речь на слух. Я, вообще-то редко смотрю кино, особенно теперь, когда серьёзно занялся учебой: на это просто не остаётся времени. Но если уж и хочется иногда устроить себе праздник, то я всегда первым делом ищу фильм с оригинальной звуковой дорожкой и с возможностью выбора субтитров. Это так, на заметку.
3. Работа с GitHub.
Здесь даже нечего обсуждать) Любой программист знает о таком сервисе, как GitHub и просто обязан уметь работать с ним. Теперь, когда у меня имеется готовый сайт, созданный джекилом, я могу залить его на гитхаб и продолжать работать с ним так, как это делают настоящие профессионалы: создавая служебные ветки, внося изменения, вливая рабочие и проверенные изменения в основную ветку и фиксируя текущее состояние. Очень хорошо, что теперь у меня на руках есть настоящий рабочий проект, пусть и простой, с которым можно тренироваться.
На самом сайте гитхаба есть разные обучающие туториалы и видеоматериалы. Один из них я как раз прохожу прямо сейчас. Опять же, там все на английском, но нас ведь это не должно пугать, правда? Тем более, что английский там довольно легкий, лично мне было абсолютно все понятно даже без словаря.
Отдельная тема - доступ к удаленным репозиториям посредством безопасного протокола SSH. Гитхаб предоставляет возможность доступа к своим репозиториям с локального компьютера по этому протоколу, но можно взаимодействовать с ними и просто по HTTP. Кирилл дал мне ссылку на видео, где объясняется про то, что такое SSH и как этим пользоваться, но признаюсь честно, пока что я еще не успел разобраться с этим вопросом и все еще пользуюсь обычным HTTP-доступом.
4. Хостинг GitHub Pages.
Гитхаб предоставляет всем своим пользователям бесплатный хостинг для статических сайтов. Все, что нужно для того, чтобы начать пользоваться хостингом — это создать репозиторий с именем вида “username.github.io” и просто залить туда свой сайт. Теперь наш сайт сразу же становится доступным по вышеупомянутому адресу. При этом, если у вас есть своё собственное зарегистрированное доменное имя, его можно без проблем прикрутить к сайту и тогда можно будет переходить на него по более легкозапоминающемуся адресу. В принципе, здесь все очень просто, по крайней мере, на первый взгляд, лично у меня с этим никаких проблем не возникло.
Что еще можно добавить? Как я уже говорил, специфика моей работы такова, что с одной стороны, у меня остаётся очень мало времени и сил на практику и фактически, вся моя активность в плане учёбы приходится на конец недели. С другой стороны, во время самой работы у меня есть возможность поглощать просто тонны аудиоконтента: книг, подкастов, выступлений и т.д. Было бы глупо пренебрегать таким ценным ресурсом и надо пытаться использовать эту возможность по максимуму. Но проблема заключается в том, что в сети можно найти не так уж много аудиокниг, напрямую связанных с программированием. В самом деле: не будет же диктор сидеть и, с выражением, зачитывать нам код строка за строкой))) Поэтому в основном пока занимаюсь прослушиванием подкастов. Кирилл посоветовал мне послушать RadioJS. Я начал прямо с самого начала и на данный момент успел прослушать 13 выпусков. Конечно, далеко не все из обсуждаемых тем мне знакомы и понятны, временами говорят о таких вещах, о которых у меня вообще нет ни малейшего представления. Но главная задача сейчас - это просто пропитаться терминологией и получить общее представление о том, что представляет из себя современная веб-разработка. Кроме того, часть информации все равно по-любому откладывается в подсознании, так что определённая польза от этого, безусловно, есть. Кроме этого подкаста мне еще очень нравятся Веб-стандарты от создателей HTML Academy. Я все время слежу за их новыми выпусками, но теперь, наверно и его прослушаю с самого начала, когда разделаюсь с RadioJS). Если вы можете посоветовать мне какие-то дополнительные материалы для прослушивания, будь то книги, лекции или подкасты связанные с программированием и саморазвитием, я буду вам очень благодарен!
Пожалуй, на этом все, если вдруг вспомню что-то еще, то обновлю этот пост. А пока что, пойду синхронизироваться с Кириллом и продолжать учиться. Спасибо всем за внимание и до встречи!