Эта статья предназначается для всех тех, кто хочет погрузиться в волшебный мир программирования, но пока не знает, с чего начать. Возможно, вы уже предпринимали попытки научиться программированию самостоятельно, однако по каким-то причинам застряли. Статья поможет вам лучше подготовиться к пути и не наделать ошибок.
Итак, после появления навязчивого желания хотя бы немного освоить новое направление, каждый задает логичный вопрос — «С чего же мне начать»? Ответов может быть множество — к услугам новичков скринкасты, книги, курсы, онлайн-обучение, форумы и прочее, и прочее. Учи-не хочу. И так как никакой общепринятой системы самообучения программированию не существует, можно смотреть и читать все без разбору, дни напролет. При желании, в чтении можно захлебнуться, однако для уверенного продвижения по лестнице знаний необходимо четко и эффективно расходовать свое время и силы, и, если не знать с чего начать и куда двигаться — вы попросту забредете в дремучий лес, по которому можно блуждать неделями, пока, наконец, вы не выйдете на верную тропинку. Если выйдете вообще — велик шанс, что вам попросту все это дело быстро надоест.
Большинство новичков идут именно по такому пути — смотрят обучающие ролики, покупают недешевую литературу. Читают ее и забрасывают, потому что все-равно не хватает знаний и подготовки, несмотря на то, что все материалы были предназначены для «новичков».
Любой опыт, даже нагугленный – это опыт. И он бесспорно где-нибудь и пригодится. Ведь главное для программиста – умение искать информацию. Но цель-то стоит другая – научиться и увидеть результат учений.
Суть всех обучающих материалов – разбор решений и проблем без особого посвящения в тему. Вы что-то должны научиться делать, но каким образом – вопрос. Авторы книг, впрочем, как и любого другого образовательного материала, предполагают, что вы владете некоторой базой основ, которая, на первый взгляд, к непосредственному программированию не имеет никакого отношения.
Это как если вы пришли работать, скажем, крановщиком, вас в первый же день посадили в башню, и похлопали по плечу со словами «Ну, удачи!». А как же техника безопасности и базовое объяснение что делать, а чего делать не нужно? Как мне пользоваться инструментами? Что вообще у меня за инструменты в наличии? Что я должен знать перед тем как приступить к работе?
Статья носит сугубо рекомендательный характер, однако призвана увеличить продуктивность новеньких специалистов, сэкономить уйму времени, а также сохранить карму множеству людей с форумов, отвечающим на порой не совсем адекватные вопросы.
Итак, что же следует знать, перед тем как увлечься программированием?
Если вы имели опыт с образовательными видеоматериалами, то наверняка видели, как гуру из скринкастов умело совершают любые действия при помощи текстовых команд в черном окне. Никто же вэ тих самых скринкастах не учит пользоваться терминалом. Предполагается, что новички и так уже все знают.
Для дальнейшего успешного самообучения программированию необходимо научиться пользоваться терминалом. Помимо непосредственного взаимодействия с языками программирования, обучение пользованию терминалом поможет вам лучше понять язык ПК и устройство файловой системы в целом, а это уже маленький шажок в нужную сторону. Более того дальнейшее обучение по скринкастам, в которых терминал используется постоянно уже будет намного легче и продуктивнее.
Представьте себе, что вы решили выучить иностранный язык не вникая в его азбуку, алфавит или иероглифику. Конечно, это возможно. Но насколько это усложнит процесс и путь к пониманию сути вещей? Решение сомнительное, правда? Так вот, регулярные выражения (они же регексы, с ударением на первый слог) — это, в какой-то степени вспомогательная азбука любого программиста, или, выражаясь языком викисловаря — «формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов».
Выглядеть регекс может, например, так:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15})
Задача регулярных выражений — помочь программисту с поиском чего-либо.
Если вы в своей программе захотите найти все слова, частью которых является слово car (car, carrot, cartoon), ваш регекс будет выглядеть так:
/car/
Если же интересует только слово car, я напишу:
/\bcar\b/
Дальше — веселее. Можно фильтровать поиск через слово, через букву, исключать слова перед или же после искомого результата… Список возможностей фильтрации результатов при помощи регулярных выражений по-настоящему захватывает, и в паре с терминалом, эта штука просто невероятно крута. Несмотря на различающийся синтаксис отдельно взятых представителей ООП, многие из них поддерживают регексы и экономят уйму времени людям их использующим.
«Ну поиск, кому оно надо? Я же буду учиться программировать, а не искать слова!» — наверняка подумаете вы. Но поверьте, они вам необходимы. Многие книги и скринкасты используют регексы в примерах, вообще не объясняя, что происходит — авторы думают, что вы уже владеете этими азами и особенно не акцентируют внимание на разжевывании написанного.
Самоучитель поможет разобраться с регулярными выражениями (англ.)
Главное правило — вы должны по-максимуму знать и владеть своими инструментами. Пока вы буква за буквой пишете простую функцию, ваш враг, используя весь потенциал своего редактора, напишет несколько.
Для веб-разработки существует огромное количество программ, от простых текстовых редакторов до сложных облачных решений. Мы не будем сравнивать эти редакторы между собой, вам придется сделать это самостоятельно — ведь вам с этим редактором жить, работать и смотреть на него и в горе, и в радости. Чаще всего выбор останавливают на редакторе Sublime Text 2. Это сложный редактор с молниеносной скоростью, с невероятно динамичным сообществом плагинов, с простой настройкой (и еще множеством преимуществ). Помимо прочего необходимо отметить, что он условно-бесплатный и по нему существует множество отличной документации. Возможно совсем скоро, познав все хитрости Sublime и научившись подключать к нему плагины, подобная строка будет для вас обычным делом:
div>(header>ul>li*2>a)+footer>p (используется плагин Emmet)
Самообучение
Система контроля версий это прекрасная вещь, без которой в наши дни не обходится ни один серьезный девелопер. Согласно википедии — «Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.» Систем контроля версий существует достаточно много, но речь пойдет исключительно о GitHub, самом большом сервисе для совместной разработки проектов.
Помимо содержания собственных репозиториев, GitHub, во-первых, поможет вам осознать себя частью огромного сообщества разработчиков (это действительно важно, особенно на ранних стадиях обучения). Кроме того, вы сможете взглянуть на чужой исходный код и научитесь правильно его скачивать и «форкать» (копировать). В дальнейшем GitHub частенько будет всплывать в различных онлайн-курсах и скринкастах, и, конечно же, их авторы будут уверены в том, что вы знаете, как Гитхабом пользоваться. Поэтому если у вас найдется немного времени — попробуйте Git.
Самообучение
Этот пункт, вспомогательный, но если вы читает про какого-то программиста, которым восхищаетесь - продолжайте чтение. Программирование имеет богатую и интересную истории. Занимаясь чем-либо, всегда полезно знать, откуда у этого чего-либо растут ноги. Кроме того, без знания истории предмета невозможно полностью понять его суть, и, следовательно, достичь предельных успехов в его освоении. Поэтому если по прошествии некоторого времени такие имена, как Линус Торвальдс или же Грейс Хоппер не будут для вас пустым звуком — вы на правильном пути!
Тот, кто не изучает историю, повторяет ее ошибки.
Все вышесказанное – исключительно для самоизучения. Но если все-таки сделать более-менее успешные шаги в обучении и практике самостоятельно не получается – Сибинфоцентр предлагает курсы, разработанные инструкторами-практиками и нацелены как раз на специалистов без опыта. Опытные преподаватели проведут вас от самого начала до написания собственных программ.
Вы будете знать на деле как решать самые необычные кейсы, где искать ответы и вообще, как пользоваться тем или иным языком ООП.
Мы предлагаем курсы и для тех, кто уже отправился в свободное плавание и хочет сменить направление или углубить свои знания, скажем, в безопасности.
Самое сложное для вас сейчас – определиться с желаемым направлением специализации. Если есть сомнения – наши менеджеры всегда помогут определиться и подберут курс обучения.
Курсы для веб-разработчиков
Код |
Курсы обучения |
Академ. часы |
Цена |
50564 |
16 |
от 16 000 руб. | |
20482 |
Углубленный курс по разработке приложений для Windows Store на HTML5 и JavaScript |
40 |
от 28 500 руб. |
20481 |
Основы разработки приложений для Windows Store на HTML5 и JavaScript |
40 |
от 28 500 руб. |
20480 |
Программирование на HTML5 с использованием JavaScript и CSS3 |
40 |
от 29 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
JS_Base |
24 |
от 18 000 руб. | |
JS_1 |
40 |
от 20 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
PHP1 |
40 |
от 19 000 руб. | |
PHP5 |
40 |
от 27 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
JSE8J |
40 |
от 20 000 руб. | |
JSE8NF |
16 |
от 16 000 руб. | |
JSE8F |
40 |
от 15 000 руб. | |
JSE8P |
40 |
от 20 000 руб. | |
JSE7F |
40 |
от 15 000 руб. | |
JSE7P |
40 |
от 15 000 руб. | |
JSE7_adv |
40 |
от 25 000 руб. | |
JSE7_base |
40 |
от 25 000 руб. | |
JaT2 |
20 |
от 25 000 руб. | |
SpD |
16 |
от 30 000 руб. | |
SpFr |
16 |
от 30 000 руб. | |
JVA-Spr |
24 |
от 25 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
Py_1 |
40 |
от 30 000 руб. | |
Py_2 |
Программирование на языке Python. Уровень 2. Продвинутый уровень |
50 |
от |
Py_3 |
Программирование на языке Python. Уровень 3. Разработка веб-приложений в Django |
40 |
от |
Py_4 |
40 |
от 35 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
front-end |
50 |
от 22 000 руб. | |
GOF |
24 |
от | |
USINT |
16 |
от 20 000 руб. | |
Git |
16 |
от 15 000 руб. | |
ARC-001 |
24 |
от | |
HTSS |
65 |
от 18 000 руб. | |
app-001 |
26 |
от 12 000 руб. | |
Mir_Adf |
40 |
от 25 000 руб. | |
10958 |
40 |
от 29 000 руб. |
Код |
Курсы обучения |
Академ. часы |
Цена |
Testing |
24 |
от 20 000 руб. | |
Jira |
Управление распределёнными командами с использованием Atlassian Jira и Confluence |
16 |
от |
JaT1 |
40 |
от 25 000 руб. | |
TestQA |
60 |
от 20 000 руб. |