Как правильно подходить к изучению веб-разработки

Дневник разработчика

Я прошёл и пересмотре уже более 10ти курсов и интенсивов. На протяжении всего периода обучения и работы над реальными проектами в моём сознании постоянно формируется концептуальное видение идеального процесса обучения. Видимо эта тема мне интересна даже больше чем работа над чужими проектами.

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

Не так давно я увлёкся программированием на Ruby. Энтузиазм не прошёл и я по прежнему горю желанием освоить этот красивый и интересный язык программирования, который пришёл в мир из страны восходящего солнца. Пока что я изучаю базовые вещи — основы языка Ruby. Но параллельно с его изучением, я просматриваю не мало роликов и перечитываю статьи на тему ROR (Ruby on Rails) — очень популярного фреймворка на базе Ruby.

Сегодня подумал: на сколько глубоко мне потребуется познать язык Ruby? Когда же я смогу взяться непосредственно за ROR? После небольшого исследования я сформировал мнение на этот счёт и хотел бы поделиться им с тобой.

Как глубоко нужно изучить Ruby, прежде чем приступать к Ruby on Rails?

В поисках ответов на этот вопрос я полез в свою шпаргалку по Ruby-курсам. Я составил её что бы планомерно подойти к изучению программирования. Пробежавшись по ней я освежил в памяти те платформы, которые делают курсы по Руби и ROR. Глянул на их учебные программы. Если принять во внимание все эти программы и документацию Rails, появляется понимание фундаментальных вещей, которые нужно знать любому веб разработчику, если он хочет быть лучше среднего программиста.

Основные дисциплины которые нужно знать любому программисту

Базовые знания об устройстве операционных систем

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

Английский — чтение и перевод документации

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

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

Работа с командной строкой

Командная строка это основа работы программиста! Первые строки кода на большинстве языков ты пишешь именно там. Особенно, если ты пишешь не под виндой, а на Linux или MacOS. Я и сам сейчас на Windows сижу и мне стыдно. Реально стыдно, потому что это не правильно!

Командная строка является основным способом ввода информации и взаимодействия с со средой для которой вы пишете программы. Если ты еще не уверен в своих навыках работы с командной строкой — пора исправлять это упущение. Дальше будет только сложнее!

Устройство компьютерной сети, протоколы и технология клиент-сервер

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

Принципы организации сетей, терминология, модель OSI, стеки протоколов TCP/IP и так далее. Всё это неразрывно связанно с разработкой программного обеспечения и взаимодействием программ, операционных систем и передачей данных.

Любой образованный разработчик должен иметь чёткое понимание основ работы компьютерных сетей, протоколов передачи данных и технологиях типа клиент-сервер.

Основы императивного программирования

Императивное программирование это то с чего все начиналось! Ты знаешь что такое фон Неймановская архитектура? А слышал про то как должны храниться данные в памяти компьютера? Если тебя это вводит в ступор — ты нифига не понимаешь в основах! Ровно как и я. Хотя нет! было дело, в каком то сериале, по-моему в теории большого взрыва я слышал что то про машину фон Неймана ))) но это все.

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

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

Мы пишем программы, которые говорят компьютеру что нужно делать. Но как это можно писать, не понимая, фундаментальных методологий? Это тебе не табы с пробелами перебирать. Это более масштабная тема и она обязательна к изучению до того как ты начнёшь изучать типы данных и создавать методы!

Объектно-ориентированное программирование

Умение правильно оперировать абстракциями и воспринимать конструкции языка как объекты, которые подчиняются определённым правилам — залог успеха. По сути в ООП программа состоит из объектов. Каждый объект в сценарии является экземпляром определённого класса. Ты знаешь иерархию наследования классов? Я — нет. И мне больно это осознавать!

Реляционные базы данных

Если вы работаете с данными, то должны уметь их правильно хранить. Но понимание того что такое хорошо и оптимально, а что — не очень — обретаешь только после изучения реляционных баз данных. Там ты познакомишься с теорией избыточности и способы её устранения при хранении информации.

Понимание организации структуры таблиц и выстраивание взаимосвязей, нормализация, внешние ключи и индексы — это лишь малая часть того что тебе и мне предстоит изучить. Честно признаюсь, что чем больше я погружаюсь в мир программирования, тем больше пугаюсь того какие горы информации еще не изучены мной. Тут одной жизни явно будет маловато.

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

SQL — умение строить запросы к БД

SQL- язык программирования специального назначения, разработанный для управления данными в реляционных СУБД. Если мы что то храним, значит должны уметь и обрабатывать эту информацию. Мы же для этого её и храним 😉 Умение выстраивать запросы к базам данных — основной навык, который приходит с пониманием принципов SQL.

  • select
  • inner join
  • outer join
  • group_by
  • const, cum

Это и многое другое нам пригодится в том же Ruby. Изучи хотя бы основы.

HTML, CSS и JS

Как же хорошо что я это знаю. Ты умеешь верстать? как нет?! Не умеешь размечать гипертекст для страничек сайта и стилизовать его смысловые разделы? Не знаком с пониманием методологии верстки и доступности интерфейсов? Мне жаль, но ты не сможешь называть себя полноценным разработчиком, без этих навыков. Более того, изучение вёрстки это не так сложно, как знание паттернов в программировании. Тебе достаточно пары месяцев и нескольких лендингов в портфолио, что бы освоиться в этом направлении.

Регулярные выражения

Что можно делать с помощью регулярных выражений:

  • Проверять то, что вводит пользователь, чтобы быть уверенным в правильности данных (например, правильно ли пользователь ввёл email или ip-адрес).
  • Разбирать большой текст на меленькие кусочки (например, выбирать данные из большого лога).
  • Делать замены по шаблону (например, убирать непечатаемые символы из XML).
  • Показывать невероятную крутость тем, кто не знает регулярных выражений.

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

Юрий Ронин