Самостоятельное изучение программирования

 Многие люди пытаются изучить программирование самостоятельно, но у большинства из них ничего не выходит. Причины самые разные. В этой статье мы сосредоточимся на том, что может помешать самообразованию программиста.  Хоть веб-разработка и не является программированием в чистом виде и по сложности никогда не сравнится с написанием кода на ассемблере, в данной статье мы рассмотрим программирование в контексте веб-разработки на PHP.

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

Заблуждение №1. Программирование – это сложно.

На самом деле, для написания программного кода нужно не так уж и много знаний. Никто из программистов не держит в уме и десятую долю встроенных функций языка. Вполне достаточно иметь общее представление о возможностях платформы, на которой вы работаете, и знать десяток-другой наиболее используемых функций или процедур, а для остального есть официальные справочники и Google.com. Не так давно мне приходилось округлять десятичные дроби до ближайшего целого числа. Так как я крайне редко использую данную функцию языка PHP, а также из-за того, что в других языках она называется иначе, я без стыда стал искать ее на официальном сайте разработчика, который, кстати, должен быть первым местом для поиска такой информации.

Заблуждение №2. Программирование – это легко.

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

Заблуждение №3. Программист держит в уме код всего проекта.

На это способны лишь единицы, которых природа наделила исключительными умственными способностями. Если не говорить о тривиальных задачах уровня Hello world, разработчик помнит лишь формат исходящих и входящих  данных того или иного куска кода и набор ситуаций, в которых этот код работает адекватно. Никто не держит в голове тысячи строк классов, которые были когда-то написаны и протестированы. Когда я обращаюсь к методу из модели, которую когда-то написал, мне вовсе не обязательно помнить подробности ее функционирования, ведь я уже позаботился о том, чтобы быстро найти нужную информацию.

Заблуждение №4. Чистота кода вторична, главное – функционал.

На самом деле, очень важно писать код разборчиво, делать отступы для элементов относительно родительских, давать переменным имена, по которым можно легко догадаться о назначении этих самых переменных, оставлять в коде комментарии, объем которых, по-хорошему, должен быть примерно 30% от количества строк кода. Среди программистов есть такое правило – пиши код так, как будто с ним потом будет работать психически неуравновешенный человек, который знает, где ты живешь. Это правило следует соблюдать всегда, ведь время от времени оно работает буквально. Даже если логика программы хромает, но код читается замечательно, дорабатывать функционал для такого проекта – сплошное удовольствие, а не головная боль. И обучаться этому навыку необходимо сразу, а не откладывать на потом – позже от плохой стилистики кода избавиться очень сложно.

Заблуждение №5. Устаревшие технологии мне ни к чему.

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

Заблуждение №6. Новинки – да!

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

Заблуждение №7. Мое приложение защищено от взлома

Существуют сотни способов взломать сайт или испортить его. Начинающему веб-разработчику, пожалуй, стоит помнить две вещи:

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

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

При разработке сайта вполне адекватным будет предположение, что архитектор базы данных допустил ошибку, библиотеку jquery на серверах Google взломали, пользователи намеренно пытаются загрузить зараженные вирусами файлы, системный администратор что-то напутал, а любимый framework нарушит эмуляцию транзакционности процесса в самый ответственный момент.

Заблуждение №8. Я знаю достаточно.

Пожалуй, самое вредное и опасное заблуждение программиста. Знаний никогда не бывает достаточно как вглубь, так и вширь. Всегда найдутся неочевидные аспекты самых примитивных конструкций, влияющие на выполнение кода, всегда найдутся альтернативные пути решения типовых задач, которые могут оказаться эффективнее, не говоря уже о колоссальной скорости эволюции ИТ-технологий. Также, если вы себя считаете узкоспециализированным программистом, это не значит, что завтра вам не придется выполнять работу коллеги, который трудится в другой нише веб-разработки. Тем более, PHP не является строго типизированным языком и некоторые его компоненты на сервере под Windows ведут себя не так, как с другими операционными системами.

Заблуждение №9. Я потрачу время и напишу уникальную функцию.

«Изобретение велосипедов» – это типичный недостаток новичка. Программированием занимаются тысячи людей в течение многих лет, и если вы натолкнулись на трудную задачу, скорее всего, с ней встречались и другие люди, которые коллективно нашли оптимальное решение. Поиск готового решения всегда экономит время и нервы, кроме того случая, когда вы хотите набить руку и написать этот код самостоятельно. Тут Ctrl+C и Ctrl+V противопоказан.

Заблуждение №10. В интернете размещают только правильные советы и примеры.

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

Итак, после рассмотрения опасностей, которые поджидают начинающего программиста, можно попробовать сделать что-то самостоятельно. Для начала необходимо попробовать повторить примеры из учебников или видео-уроков. Когда подобная работа уже не вызывает приступов отчаяния, можно попытаться сделать очень простой сайт с возможностью изменять часть его содержимого с помощью веб-интерфейса. Если программист осилил этот этап самообучения, расслабляться не стоит – необходимо попросить другого человека написать вам задание для сайта примерно такой же сложности. Этот этап очень важен, поскольку разработчик впервые сталкивается с реальным заданием, которое необходимо выполнить. Именно в этот момент формируется трезвое представление о программировании и веб-разработке. Следующим пунктом идет оценка проделанной работы – попросите знакомого опытного программиста взглянуть на программный код. Также очень важным моментом является ретроспектива – через некоторое время необходимо возвращаться к старым проектам. Если возникнет желание что-то улучшить или оптимизировать, значит, вы совершили качественный скачок вперед. Обратная ситуация говорит о том, что вам необходимо пересмотреть свои представления о веб-разработке или вам просто не хватает теоретических знаний.



Комментарии

Комментарии (0)

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

ПОСЛЕДНИЕ КОММЕНТАРИИ

  • Эстония
    Tien
    : Is that really all there is to it because that'd be flaibergastbng.
  • Полезные советы новичкам WordPress
    Роман
    : В строке с "else if" в примере (на картинке) вроде не хватает одной закрывающей кавычки. И
  • Gekos красно-золотой
    Админ Блогович
    : ИЛИ выступлениями на внешних семинарах/конференциях
  • Gekos в Стамбуле: мы работаем там, где лето
    Денис
    : Очень крутая статья!
  • Как увернуться от гранаты или «Яндекс АГС – уберется все!»
    Рустем
    : Спасибо за кейс. На счёт хостингов - полностью согласен. Некоторые сайты расположены на ка
  •