Когда учить программирование, что для этого нужно и с чего начать? Как научиться программировать с нуля в домашних условиях

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

Александр Агуленко, Software Engineering Intern в Google

"Программировать я начал в 9 классе, на уроках информатики в школе. Начинал я с Pascal, с участия в школьных олимпиадах по программированию. Олимпиады, в целом, дали огромный толчок, и эффект от участия в них до сих пор чувствуется на собеседованиях: многие задачи на них кажутся простыми.

Думаю, учиться никогда не поздно, было бы желание. Сейчас не нужно для этого учиться где-либо, можно дома, сидя на диване, найти огромное количество уроков в Интернете и, что самое главное, начать писать что-то, потому что, как мне кажется, лучше всего учиться на каких-то реальных проектах (я имею в виду, делать что-то работающее, пусть даже не выпущенное публично). Потом эти же проекты можно прикреплять в резюме, получая дополнительные бонусы "при прочих равных".

Я слышал историю о том, что двукратный чемпион мира по программированию Евгений Капун (из университета ИТМО) начал заниматься программированием только в университете и всего за несколько лет достиг больших успехов. Не берусь говорить, насколько правдива эта история, лучше уточнить её у ребят из ИТМО:)".

Сергей Миронов, руководитель направления eCommerce Software Development в Techport

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

Я компьютерами увлекался ещё с детства. ZX Spectrum - с него всё и поехало, после школы поступил на факультет информатики и радиоэлектроники, там начал программировать, но по сути ничего не выходило, да и всё это был детский лепет. Программировать научился когда уже закончил универ и попал на работу стажером. Поздно, думаю, не бывает, тут больше вопросы "зачем?" и "для чего?". Научиться кодить - проще, чем кажется, а вот разбираться в бизнесе, в котором работаешь, и решать его задачи с помощью программирования намного сложнее. Основная проблема поколения, которое сейчас приходит в эту профессию, - это амбиции и заблуждения. Со старта каждый хочет получать не менее 100 тысяч рублей, и, конечно же, все думают, что это очень весело, все начитались красивых статей на хабре про сводный график, кучу еды, гамаки, насмотрелись красочных фото офиса Яндекса и т.п. На самом деле, платить просто так никто не будет, без хорошего опыта, какое бы не было образование, ты никому не нужен. Я начал с 12 тысяч (в Макдональдсе в то время платили бы больше) со временем эта цифра, конечно, изменилась более чем в 10 раз, но это было непросто".

Валерий Попов, iOS developer в Rambler&Co

"В 19 лет начал, до этого даже в школе не было программирования. Правда, был олимпиадником по математике. Начинал с Delphi в универе, потом C++, Java, и так далее. Мне кажется, что и в 19 с нуля учить достаточно поздно, но если более объективно, то, думаю, не позже 30 стоит начать. Зависит от таланта и состояния мозгов. Конечно, есть исключения, но обычно люди за 30 уже хуже обучаемы, да и не могут кодить сутками".

Юрий Волков, разработчик в Яндекс

"Несмотря на то, что мне программирование было интересно почти всю жизнь (первые попытки были классе в седьмом), «изучать» программирование я начал где-то на третьем курсе.Тогда это были академические "плюсы" и немного питон. Ну, и почитывал «совершенный код» и ещё что-то. Осознал, что такое «настоящая разработка», уже в 2013-м и то, это были свои маленькие домашние проекты из разряда «сделай себе идеальный линукс».

Насчёт возраста, когда уже поздно: всё зависит от предметной области. Если ты хочешь стать БОГОМ АЛГОРИТМОВ - то начинать следует очень рано и готовить математическую базу в университете, изучая вышмат, в том числе и самостоятельно, ибо именно то, что тебе понадобится, забудут рассказать. Если тебе интересно быть в IT и/или тебе просто хочется иметь ненапряжную работу с большой зарплатой/соцпакетом/и т.д. - вряд ли поздно.Разве что за твоей спиной могут пошучивать что-нибудь типа «стажёр в команде старше сеньора».

Возраст, когда не стоит идти в разработку, - это возраст, когда становится тяжело изучать что-то новое. И если тебе это тяжело уже сейчас - скорее всего, эта работа не для тебя.

О себе:). Зарабатывать деньги разработкой я начал чуть больше полугода назад (а почти все мои друзья из этой сферы - 3–5 лет назад). До этого год работал админом в вузе, потом два года - в яндексовом хэлпдеске. То есть, места, где программирование никогда не было основным занятием".

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

С чего начать учится программированию с нуля чайнику?
В этой статье я постарался подробно разобрать, можно ли стать программистом с нуля самостоятельно и какие варианты есть для того, чтобы освоить программирование самостоятельно и начать зарабатывать на этом.
UPD : Тем, кто ищет, с чего начать изучать программирование с нуля в 2018 (или пока только собирается и приступит в 2019:)), сильно повезло благодаря книге Якова Крамаренко «Введение в разработку программного обеспечения». Я искренне рекомендую с ней ознакомится — она стоит того, чтобы обновить статью №1 по рейтингу Google и отзывам читателей для тех, кто изучает программирование самостоятельно.

Постарался дать самый лучший — на мой взгляд — путь. Предупреждаю — он не из легких! Дальнейшее прочтение может стоить вам многих часов интересных занятий:)

Скажу сразу — если вы решите изучать программирование только самостоятельно, не вкладывая денег — придется потратить больше времени. Рассчитывайте на освоение новой специальности минимум через год, если занимаетесь обучением параллельно с другой работой.

Если вы найдёте, чем дополнить эту статью, чтобы сделать её полезнее для людей — напишите в комментариях.

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

Книга по веб-программированию для начинающих

Версия 2016 года есть в переводе: https://courses.prometheus.org.ua/courses/Prometheus/CS50/2016_T1/about .

Лучше пройти курс на английском. И язык прокачаете, и информация посвежее. Хотя сильно курс не менялся — только в 2017 вместо PHP начал использоваться Python.

Прохождение курса займёт время, но даст довольно полное понимание, которое сложно иначе получить самостоятельно.

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

Лучший выбор в такой ситуации — на мой взгляд — начать изучать веб-разработку. Здесь ниже порог входа для новичков и есть возможность раньше начать выполнять несложные заказы.

Как самостоятельно стать программистом с нуля

Если бы я начинал с нуля изучать веб-разработку самостоятельно (понимая, что без вложения денег это более долгий путь), то сам себе я бы порекомендовал такой путь:

1. Разобраться в HTML и CSS

Хороший курс для базового освоения HTML и CSS: https://learn.shayhowe.com/html-css/ (English) или https://webref.ru/layout/ learn-html-css (перевод).

После этого стоит посмотреть на возможности Bootstrap, который стал стандартом де-факто для ускоренной разработки веб-приложений: http://getbootstrap.com/

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

На этом тоже можно зарабатывать — как на фрилансе, так и работая в ИТ-компании, которая специализируется на веб-разработке.

Но раз мы решили стать программистом — двигаемся дальше!

2. Познакомиться с jQuery

Если понравилось — можно продолжить разбираться с frontend и начать изучать Javascript .

Если следом пойдет https://angularjs.org/ или http://backbonejs.org/ — то это путь во фронт-енд разработку. Хорошая специальность, тем более, что такие знания пригодятся любому программисту, который выбрал веб-разработку.

Мой совет — пока остановиться на jQuery и двигаться дальше.

3. Освоить серверный язык программирования

Тут выбор большой. Самые перспективные языки программирования — Ruby, Java, Python, Node.JS (Javascript для сервера).

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

Хороший вариант — язык программирования Python и Django

Плюс — Python и Django научат вас «правильному» программированию. Python стабильно входит в ТОП5-10 самых востребованных языков, а хорошие специалисты в Python одни из самых высокооплачиваемых программистов. Python одновременно простой и понятный для начинающих программистов язык программирования, и при этом используется во многих крупных компаниях и на больших проектах.

Для самостоятельного освоения прочтите «Python для детей» Джейсона Бриггса или посмотрите:

Среди других материалов рекомендую Learn Python The Hard Way . книгу «Простой Python. Современный стиль программирования». И, конечно The Python 2 Tutorial и The Python 3 Tutorial .

Django — возможно лучший фреймворк для веб-разработки

Лучший инструмент на все случаи жизни очень сложно найти. Django имеет все шансы стать таким инструментом для веб-разработки.

С чего начать для изучения Django:

Начните с официальной документации, там очень хороший tutorial: https://docs.djangoproject.com/en/2.1/intro/

Tango with Django — это хорошая возможность подтянуть английский и одновременно получить понимание того, как устроены веб-проекты и как всё работает.

Вариант №2 — PHP и WordPress

Другой путь — начать с PHP и работы с популярными CMS. Если вы изучаете программирование сами и хотите быстро начать работать — начните с PHP.

Многие считают PHP «не совсем настоящим» языком программирования и для этого есть основания. PHP редко используется в крупных веб-приложениях и заточен только для веб — использовать его в других областях не получится.

С другой стороны — PHP лидирует по количеству запущенных в мире сайтов. На нем основаны самые популярные CMS (системы управления сайтами).

После этого разберитесь с созданием тем под WordPress — это вероятно самая популярная CMS в мире, если оценивать по количеству запущенных сайтов.

Хорошо разобравшись с этим, уже можно найти работу. Под PHP и WordPress очень много сайтов, поэтому работы хватит всем.

Как начать зарабатывать программистом

Многие представляют работу программиста-фрилансера так:

На самом деле это выглядит примерно так:

Если вы готовы к работе программиста и ищете способ зарабатывать — добро пожаловать на фриланс! Фриланс-биржи позволят вам найти простые заказы (возможно почти бесплатно на первых порах) — чтобы получить практику. Как правило, работа в ИТ-компании может быть прибыльнее, если вы просто ищете работу программиста.

Уже после пункта 2 — освоив HTML, CSS и jQuery — можно идти на фриланс биржи и брать несложные заказы, нарабатывая профиль.

Знаете английский? https://www.upwork.com/

Совсем нет, даже со словарем? http://freelance.ru/

К тому времени, когда вы сможете самостоятельно делать сайты, вам будет проще найти клиентов — будут отзывы и опыт.

Быстрый путь в веб-разработчики

Исходя из моего опыта, на изучение программирования с нуля уйдет от 6 до 12 месяцев в лучшем случае, при этом 6 месяцев — это если вам кто-то помогает.

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

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

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

Как только почуствуете уверенность в том, что можете что-то создать — ищите компанию, где сможете развиваться дальше или клиентов.

HTML, CSS, Python и Javascript — это только базовые знания, первый этап. Дальше очень важна практика, изучение алгоритмов и инструментов для разработки.

Если есть вопросы — задавайте в комментариях! Надеюсь эта статья поможет вам сделать первый шаг. Успехов!

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

10. Выясните, почему вы хотите программировать

Выбранное направление в учёбе будет зависеть в большей степени от того, почему именно вы хотите научиться программировать и сколько времени вы готовы уделять этому процессу. Если вы хотите стать программистом, первое что следует сделать - это записаться на профессиональные курсы (Google скомпилировал список навыков и курсов для тех, кто хочет стать инженерами-программистами). Если вы хотите создавать игры и веб-сайты для развлечения в свободное время, лучшим выбором являются интерактивные курсы. Bloc создал сравнительную таблицу курсов в зависимости от загрузки, стоимости и причины изучения программирования.

9. Выберите правильный язык

7. Попробуйте приложения для детей

Сейчас даже малыши учатся программированию. Несмотря на то, что многие программы для детского обучения весьма просты, некоторые из них (например, Scratch) подходят для любого возраста. Не имеет значения, сколько вам лет, даже детские анимационные приложения могут научить основам программирования (у edX есть новый курс обучения по Scratch).

6. Воспользуйтесь бесплатными онлайн-тренингами

Бесплатные онлайн тренинги и проекты (Codecademy , Hour of Code и др.) могут помочь вам в написании первой программы. Учебные пособия от Khan Academy, Codecademy, Code.org и других познакомят с основами программирования и всем необходимым для создания игры, сайта или другого проекта. Найдите нужный источник в зависимости от языка программирования, воспользовавшись . Это хорошая отправная точка, однако дальнейшее обучение вам нужно взять на себя.

5. Пройдите онлайн-курс

Онлайн-курсы по программированию предполагают более обширную образовательную подготовку по сравнению с сайтами, предлагающами онлайн-тренинги по одному языку. Такие курсы предназначены для обучения основным навыкам в течение нескольких месяцев на занятиях университетского уровня. Я большой поклонник гарвардского онлайн-курса CS50 (его можно пройти бесплатно). Существуют также другие возможности . Вы даже можете получить образование университетского уровня, выбрав один из 15 онлайн-курсов .

4. Бесплатные книги по программированию

Если вы застряли на какой-то проблеме или вам нужно найти ответ на свой вопрос, не стоит забывать о справочниках. На GitHub можно найти огромную коллекцию из более чем 500 бесплатных книг по программированию. Также доступна коллекция электронных книг, охватывающая 24 языка программирования.

3. Изучайте, играя

Иногда лучшим способом обучения являются игры. В то время, как многие учебники по программированию обучают вас программировать простые либо сложные игры, некоторые обучающие сайты сами являются играми: Code Combat и CodinGame - инструменты, используя которые вы можете весело провести время.

2. Найдите наставника или станьте им

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

1. Разберите чужой код

Сказал мне, что на курсе они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

Во-первых , есть живой преподаватель с хорошим бэкграундом в разработке. Виталий Куреннов, 6 лет пишет на Ruby и больше года обучает всех желающих этому навыку, работал над Ruby проектами для Nokia и Avaya.
Во-вторых , есть группа единомышленников, работая бок о бок с которыми, у вас многократно повысятся шансы дойти до победного конца и освоить программирование до того уровня, когда оно начнет приносить прибыль.

- Никита, почему именно Ruby?
- Все просто, мы нашли очень хорошего преподавателя.

Про Ruby
Попробовать сделать первые шаги можно прямо сейчас, займет всего 5-10 минут.


Нашел шикарный ресурс с геймификацией и сразу из браузера tryruby.org
За 5 минут выполняем несколько заданий, получаем ачивку и переходим на следующий уровень.


А зомбяк не хотите ли? railsforZOMBIES.org

Про Lisp

«Однако я не думаю, что смогу убедить кого-нибудь (старше 25) выучить Lisp.» Пол Грэм, «Побеждая посредственность»

, осваиваю Lisp.

;; Welcome to L(λ)THW! (let ((llthw "(learn lisp the hard way))) (format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw))) ;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.


Нашёл для себя удобную браузерную обучалку Learn Lisp The Hard Way

«За те годы, что я проработал в Viaweb, я прочитал множество объявлений о найме на работу. Примерно каждый месяц появлялся новый конкурент. Первое, что я делал после того, как проверял, доступна ли онлайновая демонстрация работы их программы, - смотрел список их вакансий. Через пару лет я научился отличать опасных конкурентов от неопасных. Чем больше отдавало IT-мэйнстримом от описания требуемых кандидатур, тем менее опасна была компания. Самыми безопасными были те, кому требовались специалисты по Oracle. О таких не стоило беспокоиться. Также мы были спокойны, если требовались разработчики на C++ или Java.

Если требовались программисты на Perl или Python, это уже было слегка пугающе - это значило, что компанией или, по крайней мере, ее технической частью заправляли настоящие хакеры. Если бы я когда-нибудь увидел объявление о найме на работу Lisp-хакеров, я бы обеспокоился не на шутку.» Пол Грэм, «Побеждая посредственность»

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

    например

    Общие упражнения:
    Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование на любом языке.
    Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
    Rosalind - это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
    Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
    codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
    Ruby Quiz - серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.

Как начать свой путь к карьере программиста с помощью самостоятельного изучения программирования? Это один из самых популярных вопросов на многих форумах, которым задаются практически все новички.

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

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

Теперь самый главный пункт – практика. Очень много новеньких тормозит на нем. Важно как можно быстрее начать писать первые строки собственного кода, несмотря на то что это кажется очень сложным. Можно выполнять все задания из учебников, перепечатывать примеры оттуда, после освоения – усложнять их собственными идеями. Так же можно попробовать зарегистрироваться для получения собственных проектов. Да, новичку искать и выполнять заказы будет очень сложно, но зато это будет реальный опыт, который будет не стыдно потом показать работодателю.

Помимо всего вышеперечисленного, неплохой опыт можно получить в проектах «open source». Это шанс пообщаться с реальными разработчиками, получить от них ценные советы, а также шанс быть вовлеченным в реальную работу — в подобных проектах требуются и новички. Если же принять участие не вышло, не стоит отчаиваться, там можно изучать уже чей-то готовый код и попробовать модифицировать его самостоятельно.

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