Советы, которые помогут вам начать программировать
На сайте Business Insider можно посмотреть на список из 10 профессий, которые будут максимально востребованы в 2015 году. Неудивительно видеть, что для трёх из них нужны навыки программирования.
За последние годы программирование стало одним из самых важных умений для людей, которые стремятся к карьере, оплачиваемой и интересной работе. Множество людей, чьи профессии не были связаны с программированием, теперь желают научиться писать код. Стоит ли говорить, что это не так просто? Для того чтобы стать программистом, потребуется много времени, усилий и ошибок. Впрочем, это актуально для любой профессии.
Однако, если вы действительно хотите освоить этот навык, у нас есть несколько советов, которые помогут вам начать.
Выясните, почему вы хотите программировать
Если вы насмотрелись красивых фотографий офисов Google или Uber и других стартапов и решили, что хотите работать там же, это неплохая мотивация. Но если это единственная причина, по которой вы хотите стать программистом, то, возможно, её не хватит для сотен часов, которые вы будете проводить, создавая всё новые строки кода.
Выберите специализацию
Вы хотите верстать сайты? Создавать игры для Android или iOS? Делать софт для профессионалов? Каждое из этих направлений кардинально отличается от остальных. Не забывайте, что если вы решили стать независимым программистом и создать новый Minecraft, то для этого вам понадобятся усилия других людей — дизайнеров и гейм-дизайнеров. Конечно, если вы не хотите делать сами абсолютно всё.
Выберите правильный язык программирования
Идеального языка программирования нет. Каждый из них направлен на решение определённых задач. Хорошая новость в том, что, как только вы освоите один язык, выучить другие будет гораздо проще. К примеру, язык Swift позволяет писать приложения для iOS, а Java — для Android.
Попробуйте приложения для детей
Если вы делаете первые шаги в программировании, то давайте проследуем за этой метафорой и дальше. Почему бы не попробовать приложения для детей? К примеру, игра Code Combat, которая в виде RPG будет обучать вас JavaScript. Или Hopscotch — игра для iPad, рассказывающая об основах программирования.
Используйте бесплатные курсы
Вам даже не придётся особо напрягаться, чтобы найти стоящие курсы. Coursera, Udacity и другие образовательные сервисы предлагают сотни курсов по программированию на выбор. А мы каждый месяц выбираем 10 лучших курсов с Coursera. И часто в их числе оказываются интересные курсы, связанные с программированием.
Сделайте обучение интересным
Когда я думал о том, какие сервисы соблюдают тонкую грань между полезностью и интересным обучением, в голову пришло три названия:
- HTML Academy — здесь собраны практические задания по изучению HTML и CSS.
- Hexlet — на этом сайте собраны десятки уроков и практических занятий по программированию.
- Codeacademy — интерактивные занятия, обучающие всем языкам программирования бесплатно.
Скачайте бесплатные книги
Недавно мы рассказывали о подборке из 24 бесплатных книг по программированию. Каждая книга в списке описывает основы одного из языков. Они помогут понять, какой сфере программирования вы хотите посвятить себя.
Найдите ментора
Когда я впервые поехал кататься на лыжах, мне казалось, что я научился достаточно быстро: уже после первого дня я уверенно стоял и съезжал с горы. Так продолжалось где-то неделю, пока я случайно не встретил лыжника старой закалки, который сказал мне, что я катаюсь как подстреленный медведь. За час разговоров и упражнений с ним я узнал в десятки раз больше, чем за предыдущую неделю.
К чему это? Ищите ментора, наставника. Человек, который знает больше вас и захочет помочь, окажет вам услугу и даст огромный толчок в развитии.
Пройдите офлайн-курс
К сожалению, выбрать офлайн-курс гораздо тяжелее, чем онлайн. Это связано с тем, что вам придётся выложить существенную сумму денег, а какую пользу вы от этого получите — неизвестно. Находясь в поисках хорошего курса, прежде всего обращайте внимание на лекторов, которые его будут читать. Если это достойные программисты, работающие в известных компаниях, значит, они и вправду смогут вас чему-то научить. От теоретиков же лучше держаться подальше.
Экспериментируйте
Когда вы выучите основы, сможете перейти к этому совету. Изучайте, как работает код других программистов, просмотрите его и задайте себе вопрос: «Могу ли я сделать его лучше?». Наверняка. Старайтесь упрощать и придумывать элегантные решения.
Какие советы можете дать программистам вы?
Как научиться программировать с нуля и найти первую работу. Большой FAQ от Reddit
Сайт dev.by опубликовал самые часто задаваемые вопросы по теме обучения программированию с нуля и поиска первой работы, собранные /r/learnprogramming.
Список вопросов, на которые отвечает гайд
Начало
С чего мне начать?
Какой язык программирования стоит выучить первым?
Где можно найти качественные образовательные ресурсы?
Как совершенствовать навыки
Как перейти с начального уровня на средний?
Где можно найти тренировочные упражнения и идеи для проектов?
Как улучшить навык реализовывать задачи/задания в программах (алгоритмическое мышление)?
Я не могу придумать классную идею для проекта. Мне просто не хватает креативности? Как другие программисты ищут вдохновение?
Где можно найти примеры хорошего кода и проектов для обучения?
Как выучить темы, которые рассматриваются в стандартных университетских программах по информатике?
Как начать крупный проект и не забросить его?
Распространённые страхи и опасения
Я уже слишком стар для программирования?
Есть что-то другое, чему мне сначала нужно научиться?
Нужно ли мне хорошо знать математику?
Я много гуглю или не знаю, как делать что-то, когда только собираюсь начать. Это плохо?
Программировать сложно?
Вопросы про обучение
Что значит «знать язык» или «уметь программировать»?
Я только что начал учить язык Х. Стоит ли мне начинать учить язык Y?
Стоит ли учить более одного языка программирования одновременно?
Это плохо, что у новичков иногда возникают проблемы с задачами и упражнениями?
Как найти/поддерживать мотивацию, чтобы учиться программировать?
С чего мне начать Х?
С чего начать делать видеоигры?
С чего начать делать веб-сайты/веб-приложения/веб-разработку?
С чего начать делать мобильные приложения/приложения для Android/приложения для iOS/приложения для Windows Phone?
Как автоматизировать что угодно?
Терминология и словарь
В чём разница между информатикой (computer science, CS), компьютерной инженерией (computer engineering, CE), программной инженерией (software engineering, SE), программированием и кодированием?
С чём разница между Cи, C++, Objective-C и C#?
В чём разница между Java и JavaScript?
Инструменты и управление версиями
Что такое управление версиями/контроль версий? Стоит ли мне его использовать?
С чего начать использовать управление версиями?
Что такое IDE? Стоит ли мне её использовать?
Компьютеры и операционные системы
Какую операционную систему мне следует использовать?
Какой компьютер/ноутбук мне следует купить?
Карьера и работа
Можно ли заработать много денег на программировании?
Можно ли получить работу в программировании, не имея диплома по информатике? Или вообще без высшего образования?
Как войти в эту отрасль и получить стартовую должность?
Что делать дальше?
Больше не новичок
Программирование — лишь инструмент
Как улучшить навыки программирования
Разное
Как обучить программированию ребёнка?
Как делать вклад в open source-проекты?
У меня вопрос по Си/Python/другому языку.
Там нет моего вопроса. Что мне делать?
Да, мой вопрос есть в ЧаВо, но я хочу получить ответ от реального человека.
Как редактировать вики /r/learnprogramming (включая эти ЧаВо)?
Итак.
С чего мне начать?
Если вы хотите научиться кодить, для начала полезно правильно понимать, зачем вам это нужно. В этом видео на YouTube Кевин Чирс отлично объяснил, как нужно подходить к изучению программирования.
Далее, не забывайте, что не существует универсального способа научиться кодить — все люди учатся немного по-разному, и, возможно, вам придётся поэкспериментировать, чтобы найти тот вариант, который лучше сработает именно для вас. Впрочем, большинство людей использует следующий подход, который мы очень рекомендуем:
- Найти небольшую задачу или проект, который вам будет интересно решить. Можете попробовать создать инструмент для решения небольшой жизненной задачи или с нуля реализовать программу, которая вам кажется интересной. Такой проект мотивирует вас продолжать учиться кодить и даст возможность применить полученные знания на практике.
- Почитайте информацию о разных языках программирования, чтобы выбрать наиболее подходящий для вашего проекта. (См. рекомендации ниже).
- Найдите один качественный ресурс для новичков по этому языку и руководствуйтесь им. (Также см. ниже).
- Помимо этого ресурса, гуглите и задавайте вопросы.
- Выполните несколько оригинальных проектов на этом языке.
Вот эти вещи мы советуем не делать:
- Нельзя просто пассивно штудировать выбранный ресурс: делайте упражнения и домашние задания; практика – это незаменимая часть обучения программированию.
- Не переключайтесь без необходимости с одного языка на другой. Выберите один и придерживайтесь его, потому что главное в программировании — решать задачи, а не выучить языки. Научиться решать проблемы сложно, и этот навык можно отточить, только если постоянно тренироваться. Каждый раз, когда вы переключаетесь н
Нужно учить программирование! Ресурсы-помощники — Лайфхакер
Каждый в нашей стране должен научиться программировать, потому что это учит думать. Стив Джобс
Всем нужно знать программирование. Пусть на самом начальном уровне. И неважно, что вам это не пригодится в вашей работе. Как сказал Стив Джобс, это научит вас думать. А Стив Джобс был не самый глупый человек в этом мире. Давайте же поговорим о том, почему нам нужно учить программирование. А еще, мы покажем вам пару ресурсов, где вы сможете сделать ваши первые шаги в изучении программирования.
XX век стал переломным в вопросе грамотности населения. Люди научились читать, писать, считать и даже начали получать высшее образование. Благодаря этому, сегодня технический прогресс шагает семимильными шагами. У нас есть радио и телевидение, телефоны и компьютеры. Человек даже полетел в космос. В XXI же веке программирование стало новым стандартом грамотности.
Уже больше пары десятков лет без знания компьютера тяжело устроиться на хорошую работу. Я сейчас не говорю о тех, кто, например, работает на заводе. Хотя… На заводах теперь всю основную работу выполняют компьютеризированные станки. А теперь нашу жизнь заполнил Интернет. Телевидение быстро сдает позиции. Информационное пространство уже плотно занял Интернет. Собственно, вы эту статью читаете благодаря Интернету. И для того, чтобы быть активным участником на сайтах и форумах, желательно знать хотя бы html. А там и JavaScript можно выучить.
Еще одним весомым плюсом в пользу изучения программирования является состояние рынка труда. Программисты нужны в любой стране и в большом количестве. Если вы хороший или даже средний программист, вам не составит труда найти хорошо оплачиваемую работу. Или самому создать социальную сеть. Например, как парни, которые проживают в Кремниевой долине. Количество рабочих мест для программистов только растет.
Где учить?
Перейдем же к ресурсам, где вы можете открыть для себя мир программирования. Все эти ресурсы абсолютно бесплатны. И они очень круто сделаны. Все же, профессионалы этим занимались.
Code.org
Помните игру Angry Birds? Вот точно также вы будете играться и на этом сайте. Только одновременно будете изучать программирование. Круто ведь! Развлекающие видео расскажут о значении информатики в мире. А рассказ будут вести самые лучшие программисты мира и просто знаменитые люди. Структура кода, правильное мышление, значение эффективности — все это вы изучите вместе с этим увлекательным ресурсом.
Codecademy
Это один из популярных сайтов для изучения основ программирования. Еще до регистрации вам уже придется использовать JavaScript, чтобы написать свое имя и посчитать простенький пример. Ресурс постоянно обновляется, добавляются новые языки программирования. Сайт очень динамичный и интересный, а главное — он подстраивается под вас.
Udacity
Изучили основы программирования? Пора подниматься на уровень выше — идем в институт. Нет, для этого не нужно куда-то подавать документы, куда-то ехать. Вам всего лишь нужен Интернет. На сайте Udacity представлено огромное количество курсов. С помощью видеолекций вы сможете стать настоящим профессиональным программистом. Например, вы можете разработать поисковый движок или создать свою социальную сеть.
А как же дети?
Позаботьтесь о своих детях — познакомьте их с программированием. Помочь вам в этом может настольная игра Robot Turtles. С помощью игры ваш ребенок познакомится с основами программирования. Ну, а если им понравится, и они захотят большего, вы уже знаете, на какие ресурсы их отправлять.
Как стать программистом с нуля?
Многие люди хотят связать свою жизнь с программированием. Это профессия прогрессивная и интересная, она пользуется спросом и хорошо оплачивается. Освоить навыки программирования с нуля можно самостоятельно, но обучение может занять много времени и потребует определенных усилий.
Выбор языка и направления
Стать программистом с нуля в домашних условиях довольно сложно. Для начала придется выбрать более узкую сферу специальности, ведь программист может делать приложения, сайты и многое другое. Потом следует определиться с языком программирования. Это непросто, придется углубиться в сферу и потратить много времени на детальное изучение.
Сам процесс обучения может быть полностью самостоятельным и проходить с помощью доступной литературы и программного обеспечения, сервисов. Некоторые находят себе наставников или идут в специализированные учебные заведения для получения сертификата или диплома. Все варианты могут быть одинаково эффективными.
Рассмотрим основные направления и языки программирования.
- Веб-разработка. Здесь используются такие языки, как Python, Ruby, JavaScript и PHP.
- Разработка для мобильных устройств. Для гаджетов под управлением IOS нужно знать Objective-C, а если нужно писать для Android, то используется язык Java. В данном направлении также используется Swift.
- Разработка программ и игр для ПК. Следует знать такие языки: C++, C#, C.
- Машинное обучение и ИИ. Для работы в этом направлении используются Python, R, Scala.
С чего начать?
Выучить программирование в домашних условиях довольно сложно, однако такой выбор обязательно со временем окупится. В свободном доступе есть множество пособий и книг для освоения нового. Стоит понимать, что существует много языков программирования, и каждый создан для определенного круга задач. Есть и другая информация, которую придется изучать.
Для облегчения можно начать обучение программированию с курсов. Так, человек с практическим опытом сможет помочь определить вектор обучения. Более того, это отличный способ для сокращения временных затрат. Уроки и задания от профессионалов позволят быстро сориентироваться в большом количестве информации.
Если все же хочется осваивать коды самостоятельно, то рекомендуется работать с официальной документацией на языке оригинала.
Преимущества самостоятельного освоения профессии:
- большое количество практики, которая обязательно понадобится в ходе изучения языков и библиотек;
- возможность быстро начать зарабатывать, применяя новые навыки;
- более ответственный подход и настрой;
- минимальные финансовые траты или их полное отсутствие.
Стоит отметить, что стать профессионалом за короткий период времени не получится. Советов спрашивать не у кого, поэтому в обучении придется сталкиваться со многими сложностями. Поиск информации и ее анализ занимает больше времени, чем само обучение. Но в любом случае стоит определиться с родом деятельности в самом начале.
Часто новички начинают с освоения сложных и престижных языков. Первое время интерес сильный, но большая нагрузка приводит к его потере.
При выборе первого языка стоит ориентироваться на такие критерии:
- возможность будущего трудоустройства;
- низкий уровень вхождения;
- направление деятельности.
Уровень вхождения предполагает ту сложность языка, которая не заставит отказаться от его изучения.
Самыми доступными считаются PHP, Python, Ruby.
При этом важно четко понимать, подходит ли язык программирования для решения тех задач, что вызывают интерес. Так, для написания сайтов и игр нужно получить разные знания и навыки.
Разобраться в HTML и CSS
В самом начале пути стоит получить базовые навыки. HTML является языком гипертекстовой разметки. С его помощью создается веб-страница. Изучение довольно простое, ведь язык состоит из понятных тегов. CSS позволяет оформить ранее созданный элемент так, чтобы он был визуально красивым.
Найти подходящую литературу в свободном доступе легко, но в оригинале она на английском языке.
Многие специалисты рекомендуют не обращаться к переводам, а изучать программы в том виде, в котором они есть изначально.
Освоение HTML и CSS дает возможность работать верстальщиком. При желании стоит остановиться на этом этапе, уделить ему чуть больше времени.
Познакомиться с jQuery
Библиотека JavaScript имеет простой и понятный синтаксис. Есть довольно много литературы, которая поможет в обучении. Набор функций jQuery существует уже давно и позволяет улучшить страницу уже после использования HTML и CSS. С помощью этой библиотеки можно:
- убрать различия в отображениях документа, которые существуют между браузерами;
- абстрагировать интерфейс;
- исправить большую часть проблем, которые могут возникнуть при просмотре страницы.
Если при изучении стало интересно, то можно продолжить осваивать JavaScript, и тогда будет достаточно навыков для работы фронтенд-программистом.
Эта информация нужна всем, кто решил направиться в веб-разработку. В других случаях достаточно просто ознакомиться с библиотекой, понять принцип действия и двигаться дальше.
Освоить серверный язык программирования
Тут будущему специалисту предстоит делать выбор. Серверные языки нужны для того, чтобы описать возможные сценарии взаимодействия пользователя с приложением или сайтом. Перед обучением стоит тщательно продумать стратегию. Языков этого вида довольно много: PHP, Ruby, Java, C, Python и другие. Обычно в проекте используется тот, на котором есть больше специалистов.
Самым распространенным серверным языком программирования является PHP. Стоимость работы с его использованием невысока, ведь порог вхождения в нишу будет низким.
В случае с языками Java, Ruby, Python дела обстоят куда лучше. Знать все необязательно, нужно выбрать что-то одно и овладеть им в совершенстве. При этом самым простым для изучения считается Python.
Базовые знания
Программисту любого уровня и направления стоит знать математику. Причем ключевую роль имеет понимание логики, а не работа с числами. Считается, что это особо важно для выполнения трудоемких задач.
Каждый, кто решил начать обучение, должен знать английский язык на том уровне, чтобы понимать официальную документацию.
Большая часть образовательной литературы устаревает к тому моменту, как ее переводят на русский. Более того, программирование популярно в любой стране, и знание английского расширит горизонты начинающему специалисту.
Программисту обязательно нужно знать:
- язык разметки HTML и оформления CSS;
- JavaScript;
- системы Android, iOS, Windows для ПК и ее мобильную версию;
- алгоритмы.
Где получить опыт?
Освоить профессию с помощью одних только самостоятельных заданий невозможно, нужно заниматься реальными проектами. Постепенно знания позволят зарабатывать хорошие деньги. Свой первый код можно написать при создании собственного проекта, сайта или программы. Так поступают при изучении курсов программирования. Однако это не единственный способ.
Многие начинающие специалисты начинают фрилансить. Удаленная работа довольно удобна, ведь можно параллельно получать недостающие знания.
Для начала можно искать заказы на биржах фриланса. Придется заниматься мелкими и недорогими задачами, чтобы заработать определенный рейтинг и доверие со стороны работодателей.
Интереснее и перспективнее работать на англоязычных биржах. Оплата там больше, а задачи – разнообразнее. Такой опыт пригодится для создания портфолио. После работы в интернете можно найти компанию и строить в ней карьеру. Многие программисты так и продолжают работать удаленно ради собственного удовольствия и чувства независимости.
Довольно интересным вариантом будет поиск проекта, над которым работают такие же начинающие специалисты. Можно обратиться за помощью к знакомым программистам, которые смогут поделиться неким спектром задач. Многое зависит и от направления, которое было изначально выбрано для обучения. Так, при написании программ намного лучше сделать собственный проект.
Рекомендации
Профессионалы уверяют, что большое значение имеет первый язык, который начинает осваивать новичок. Именно эти знания станут основой для всех последующих. Первый язык позволяет понять логику написания кода, поэтому лучше, если он будет простым и понятным. Также следует как можно раньше начинать применять знания на практике.
Самым простым для изучения считается язык Python. Незамысловатый синтаксис не вызывает трудностей понимания логики, а знание этого языка позволяет сэкономить время. Более того, после освоения уже можно выполнять оплачиваемые задачи. Существующие базы библиотек сделают работу с Python максимально простой.
Следующим претендентом на изучение является Java. Язык популярный, используется при решении многих задач. Правда, осваивать его будет сложнее, чем предыдущий. Интересным вариантом будет и PHP. Особенность языка заключается в том, что есть много вариантов решения одной задачи.
Не стоит начинать с языков C, С++ и C#. Они открывают перспективы, однако отличаются высокой сложностью.
Все специалисты сходятся во мнении, что это худшее начало погружения в профессию. При этом важно, чтобы первый язык позволял решать задачи в выбранной сфере деятельности.
Что следует знать перед тем как «увлечься» программированием / Habr
Вступление
Этот хабратопик предназначается для всех тех, кто хочет с головой (или не очень) погрузиться в волшебный мир программирования, но пока не знает, с чего начать. Возможно, вы уже предпринимали попытки научиться программированию, однако безнадежно забуксовали.
Так получилось, что около четырех-пяти месяцев назад я решил слегка разнообразить свой досуг новым хобби и вплотную заняться веб-программированием. Как я докатился до жизни такой — это тема для совсем другой статьи, и речь сейчас пойдет не об этом. Речь пойдет о трудностях, с которыми я столкнулся, и к которым абсолютно не был готов. Возможно, этот топик поможет вам лучше подготовиться и не повторить моих ошибок.
Итак, после осознания навязчивого желания хотя бы немного да освоить это таинственное ремесло, каждый задает абсолютно логичный вопрос — «С чего же мне начать»? Ответов может быть множество — к услугам новичков скринкасты, книги, курсы, онлайн-обучение, форумы и прочее, и прочее. Учи-нехочу. И так как никакой общепринятой системы самообучения программированию не существует, можно смотреть и читать все без разбору, дни напролет. При желании, в чтении можно захлебнуться, однако для уверенного продвижения по лестнице знаний необходимо четко и эффективно расходовать свое время и силы, и если не знать с чего начать и куда двигаться — вы попросту забредете в дремучий лес, по которому можно блуждать неделями, пока, наконец, вы не выйдете на верную тропинку. Если выйдете вообще — велик шанс, что вам попросту все это дело быстро надоест.
Я и сам пошел по этому пути — скачивал тучи роликов, впридачу купил несколько книг, читал их и забрасывал, потому что мне все-равно не хватало знаний и подготовки, несмотря на то, что все материалы были предназначены для «новичков». Я постоянно гуглил разные мелочи, задавал нубские вопросы на форумах, хватая минусы, и это убивало во мне желание продолжать самообучение.
Да, любые знания и любой накопленный (нагугленный?) опыт вам, безусловно, поможет и пригодится, однако ваша цель научиться тому, чему вы хотите научиться, и увидеть мало-мальский результат в обозримом будущем ведь так?
Абсолютно все материалы, которые попадались мне на глаза, после краткого вступления немедленно бросались с места в карьер, предлагая читателю решения и примеры на заданную тему. Я чувствовал себя абсолютным двоечником в классе вундеркиндов, и постоянно сталкивался с одной и той же проблемой — авторы книг, впрочем как и любого другого образовательного материала, предполагали что я владею некоторой базой основ, которая, на первый взгляд, к непосредственному программированию не имеет никакого отношения.
Это как если вы пришли работать, скажем, крановщиком, вас в первый же день посадили в башню, и похлопали по плечу со словами «Ну, удачи!». А как же техника безопасности и базовое объяснение что делать, а чего делать не нужно? Как мне пользоваться инструментами? Что вообще у меня за инструменты в наличии? Что я должен знать перед тем как приступить к работе?
Статья носит сугубо рекомендательный характер, однако попадись мне подобный топик на глаза пол года назад, я бы значительно увеличил свою продуктивность, сэкономил уйму времени себе, а так же множеству людей с форумов, отвечавшим на мои абсолютно идиотские вопросы. К каждому пункту я добавил несколько ссылок, как отправных точек для начала обучения. Так как текст предназначается для абсолютных новичков (да и сам я еще таким себя считаю) — я буду изъясняться предельно просто и понятно, поэтому если вы — гуру, и вы нашли в моем тексте оплошность — судите, но не строго!
Итак, что же следует знать, перед тем как увлечься программированием?
1. Терминал
Буду с вами предельно честен. Если бы кто-либо пол-года назад сказал мне, что люди этой планеты до сих пор активно используют командную строку, даже при наличии навороченных графических интерфейсов и самых передовых ОС — я бы рассмеялся этому человеку в лицо. Однако после начала просмотра первого же скринкаста мне было уже не так смешно — вместо распрекрасного маковского интерфейса на меня сурово смотрело черное окно, которое я, кажется, видел и раньше, в девяностых. Уже спустя считанные дни я смеялся все меньше и сдержаннее, наблюдая как парни из скринкастов умело совершают любые действия при помощи текстовых команд, о предназначении которых я не имел понятия. Сами понимаете, насколько эта проблема затормозила мой процесс обучения. Я пытался держаться, повторяя себе, что терминал — штука ненужная, и наверняка человек из следующего скринкаста будет по-максимуму использовать ярлычки и мышку — но нет, чуда не происходило, пытка продолжалась и вскоре (после того как меня заинтересовала Node.js) я сдался.
Для вашего дальнейшего успешного самообучения программированию вам необходимо научиться пользоваться терминалом. Помимо непосредственного взаимодействия с языками программирования, обучение пользованию терминалом поможет вам лучше, так скажем, понять язык компьютера и устройство файловой системы в целом, а это уже маленький шажок в нужную сторону. Более того вы скажете мне спасибо, после того как начнете обучаться по скринкастам, в которых терминал используется постоянно.
Самообучение
25 вещей о терминале, которые должен знать каждый пользователь Mac (англ.)
How to be a terminal pro — серия отличных скринкастов от Tuts+
2. Регулярные выражения
Представьте себе, что вы решили выучить иностранный язык не вникая в его азбуку, алфавит или иероглифику. Конечно, это возможно. Но насколько это усложнит процесс и путь к пониманию сути вещей? Решение сомнительное, правда? Так вот, регулярные выражения (они же регексы, с ударением на первый слог) — это, объясняясь простым языком, в какой-то степени вспомогательная азбука любого программиста, или, выражаясь языком викисловаря — «формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов».
Выглядеть регекс может, например, так:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15})
Задача регулярных выражений — помочь программисту с поиском чего-либо. Сейчас объясню.
Если я в своей программе захочу найти все слова, частью которых является слово car (car, carrot, cartoon), мой регекс будет выглядеть так:
/car/
Если же меня интересует только слово car, я напишу:
/\bcar\b/
Дальше — веселее. Можно фильтровать поиск через слово, через букву, исключать слова перед или же после искомого результата… Список возможностей фильтрации результатов при помощи регулярных выражений по-настоящему захватывает, и в паре с терминалом, про который я вам уже рассказал выше, эта штука просто невероятно крута. Несмотря на различающийся синтаксис отдельно взятых представителей ООП, многие из них поддерживают регексы и экономят уйму времени людям их использующим.
«Ну поиск, кому оно надо? Я же буду учиться программировать, а не искать слова!» — наверняка подумаете вы. Я вас услышал и даже понял. Так что если вы все еще сомневаетесь в необходимости заморачиваться с регулярными выражениями, просто поверьте мне на слово — они вам пригодятся. Многие книги и скринкасты используют регексы в примерах, вообще не объясняя, что происходит — авторы думают, что вы уже владеете этими азами и особенно не акцентируют внимание на разжевывании написанного.
Зубрить их совсем не обязательно, но, согласитесь, просмотр пары-тройки скринкастов на данную тематику вас явно не убъет.
Самообучение
Скринкасты от Tuts+ — Regular expressions up and running
3. Софт для разработки — знай свое оружие
Правило номер один — вы должны по-максимуму знать и владеть своими инструментами. Грамотно выбранный и изученный редактор, в котором вы вскоре обязательно начнете творить чудеса, я легко могу сравнить с превосходно подобранным самурайским мечом. Солдаты собирают и разбирают свои автоматы с завязанными глазами — вот насколько хорошо вы должны владеть софтом, которым пользуетесь! Пока вы буква за буквой пишете простую функцию, ваш враг, используя весь потенциал своего редактора, напишет несколько.
Для веб-разработки существует огромное количество програм, от простых текстовых редакторов до сложных облачных решений. В этой статье я не буду сравнивать эти редакторы между собой, вам придется сделать это самостоятельно — ведь вам с этим редактором жить, работать и смотреть на него и в горе и в радости. Я остановил свой выбор на редакторе Sublime Text 2. Помимо тонны возможностей, которыми обладает Sublime, необходимо отметить, что он условно-бесплатный и по нему существует множество отличной документации. Возможно совсем скоро, познав все хитрости Sublime и научившись подключать к нему плагины, подобная строка будет для вас обычным делом:
div>(header>ul>li*2>a)+footer>p
(используется плагин Emmet, если кому интересно)
Самообучение
Готовим Sublime для front-end
Tuts+ — Sublime Text 2 first steps
4. Система контроля версий
«Ну а это еще что такое?» — спросите вы. О, система контроля версий это прекрасная вещь, без которой в наши дни не обходится ни один серьезный девелопер. Википедия гласит — «Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.» Систем контроля версий существует достаточно много, поэтому сразу скажу — ниже речь пойдет исключительно о GitHub, самом большом сервисе для совместной разработки проектов.
Резонный вопрос: «Зачем мне этот Гитхаб осваивать, ведь мне пока нечего выкладывать?» А причин на то несколько. Помимо содержания собственных репозиториев, GitHub, во-первых, поможет вам осознать себя частью огромного сообщества разработчиков (возможно, кто-то из читающих сейчас ухмыльнулся, но поверьте, это действительно важно, особенно на ранних стадиях обучения!). Кроме того, вы сможете взглянуть на чужой исходный код и научитесь правильно его скачивать и «форкать» (копировать). В дальнейшем GitHub частенько будет всплывать в различных онлайн-курсах и скринкастах, и, конечно же, их авторы будут уверены в том, что вы знаете, как Гитхабом пользоваться. Поэтому если у вас найдется немного времени на неделе, сделайте себе одолжение — попробуйте Git.
Самообучение
Tuts+ Git essentials
Try Git
5. История и культура
Этот пункт, скорее, вспомогательный, но если программиста которым вы восхищаетесь зовут Стив Джобс, то прошу вас, продолжайте чтение. Программирование имеет богатую и интересную историю (говорю вам как историк по первому диплому), в которой следует поковыряться хотя бы для общего образования. Занимаясь чем-либо, всегда полезно знать, откуда у этого чего-либо растут ноги. Кроме того, я искрене считаю, что без знания истории предмета невозможно полностью понять его суть, и, следовательно, достичь предельных успехов в его освоении. Поэтому если по прошествии некоторого времени такие имена, как Линус Торвальдс или же Грейс Хоппер не будут для вас пустым звуком — уважение вам и респект!
Помните — тот, кто не изучает историю, повторяет ее ошибки.
Заключение
Надеюсь, данный текст вас ни в коем случае не испугал, а наоборот, направил в нужную сторону, или же поможет в будущем избежать затруднений, которые постоянно встречаются на пути ученика. Я буду рад получить отзывы и комментарии, или же ссылки на дополнительные ресурсы, которые помогут новичкам в самообучении.
Никогда не сдавайтесь!
Советы, которые помогут вам начать программировать
На сайте Business Insider можно посмотреть на список из 10 профессий, которые будут максимально востребованы в 2015 году. Неудивительно видеть, что для трёх из них нужны навыки программирования.
За последние годы программирование стало одним из самых важных умений для людей, которые стремятся к карьере, оплачиваемой и интересной работе. Множество людей, чьи профессии не были связаны с программированием, теперь желают научиться писать код. Стоит ли говорить, что это не так просто? Для того чтобы стать программистом, потребуется много времени, усилий и ошибок. Впрочем, это актуально для любой профессии.
Однако, если вы действительно хотите освоить этот навык, у нас есть несколько советов, которые помогут вам начать.
Выясните, почему вы хотите программировать
Если вы насмотрелись красивых фотографий офисов Google или Uber и других стартапов и решили, что хотите работать там же, это неплохая мотивация. Но если это единственная причина, по которой вы хотите стать программистом, то, возможно, её не хватит для сотен часов, которые вы будете проводить, создавая всё новые строки кода.
Выберите специализацию
Вы хотите верстать сайты? Создавать игры для Android или iOS? Делать софт для профессионалов? Каждое из этих направлений кардинально отличается от остальных. Не забывайте, что если вы решили стать независимым программистом и создать новый Minecraft, то для этого вам понадобятся усилия других людей — дизайнеров и гейм-дизайнеров. Конечно, если вы не хотите делать сами абсолютно всё.
Выберите правильный язык программирования
Идеального языка программирования нет. Каждый из них направлен на решение определённых задач. Хорошая новость в том, что, как только вы освоите один язык, выучить другие будет гораздо проще. К примеру, язык Swift позволяет писать приложения для iOS, а Java — для Android.
Попробуйте приложения для детей
Если вы делаете первые шаги в программировании, то давайте проследуем за этой метафорой и дальше. Почему бы не попробовать приложения для детей? К примеру, игра Code Combat, которая в виде RPG будет обучать вас JavaScript. Или Hopscotch — игра для iPad, рассказывающая об основах программирования.
Используйте бесплатные курсы
Вам даже не придётся особо напрягаться, чтобы найти стоящие курсы. Coursera, Udacity и другие образовательные сервисы предлагают сотни курсов по программированию на выбор. А мы каждый месяц выбираем 10 лучших курсов с Coursera. И часто в их числе оказываются интересные курсы, связанные с программированием.
Сделайте обучение интересным
Когда я думал о том, какие сервисы соблюдают тонкую грань между полезностью и интересным обучением, в голову пришло три названия:
- HTML Academy — здесь собраны практические задания по изучению HTML и CSS.
- Hexlet — на этом сайте собраны десятки уроков и практических занятий по программированию.
- Codeacademy — интерактивные занятия, обучающие всем языкам программирования бесплатно.
Скачайте бесплатные книги
Недавно мы рассказывали о подборке из 24 бесплатных книг по программированию. Каждая книга в списке описывает основы одного из языков. Они помогут понять, какой сфере программирования вы хотите посвятить себя.
Найдите ментора
Когда я впервые поехал кататься на лыжах, мне казалось, что я научился достаточно быстро: уже после первого дня я уверенно стоял и съезжал с горы. Так продолжалось где-то неделю, пока я случайно не встретил лыжника старой закалки, который сказал мне, что я катаюсь как подстреленный медведь. За час разговоров и упражнений с ним я узнал в десятки раз больше, чем за предыдущую неделю.
К чему это? Ищите ментора, наставника. Человек, который знает больше вас и захочет помочь, окажет вам услугу и даст огромный толчок в развитии.
Пройдите офлайн-курс
К сожалению, выбрать офлайн-курс гораздо тяжелее, чем онлайн. Это связано с тем, что вам придётся выложить существенную сумму денег, а какую пользу вы от этого получите — неизвестно. Находясь в поисках хорошего курса, прежде всего обращайте внимание на лекторов, которые его будут читать. Если это достойные программисты, работающие в известных компаниях, значит, они и вправду смогут вас чему-то научить. От теоретиков же лучше держаться подальше.
Экспериментируйте
Когда вы выучите основы, сможете перейти к этому совету. Изучайте, как работает код других программистов, просмотрите его и задайте себе вопрос: «Могу ли я сделать его лучше?». Наверняка. Старайтесь упрощать и придумывать элегантные решения.
Какие советы можете дать программистам вы?