Самообучение программированию: Где в 2021 году выучить Python с нуля? Топ онлайн-курсов и школ

Содержание

Где в 2021 году выучить Python с нуля? Топ онлайн-курсов и школ

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

Содержание
Курсы с преподавателем (цена по возрастанию)Самостоятельные курсы (цена по возрастанию)

С чего начать изучение Python?

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

Курсы с преподавателем (цена по возрастанию)

Онлайн-курс Introduction Python от IT Hillel

Длительность: 16 занятий (2 занятия в неделю)
Старт: начало июня
Стоимость: $186
Технологии: PyCharm, Git

Отзывы: ⭐⭐⭐⭐⭐

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

Записаться

Профессия Python-программист от «Хекслет»

Длительность: 4-7 месяцев
Старт: любое удобное время
Стоимость: $39 в месяц или $390 в год
Технологии: Flask, Django, Ansible, PostgreSQL
Отзывы: ⭐⭐⭐⭐

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

Записаться

Основы программирования на Python от Центра Обучающих Технологий

Длительность: 4-7 месяцев
Старт: 30 мая
Стоимость: 640 BYN (от 1120 BYN индивидуально)
Технологии: SQL, PyQt5, PyCharm
Отзывы: ⭐⭐⭐⭐⭐

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

Записаться

Python для анализа данных от SkillFactory

Длительность: 2 месяца
Старт: 27 мая
Стоимость: $280 (скидка 50%)
Технологии: NumPy, Pandas
Отзывы: ⭐⭐⭐⭐⭐

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

Записаться

Дистанционный курс Python-разработчик от TeachMeSkills

Длительность: 4 месяца
Старт: 6 июля
Стоимость: 1200 BYN
Технологии: Docker, Django
Отзывы: ⭐⭐⭐⭐⭐

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

Записаться

Как стать Python-разработчиком от «Яндекс.Практикума»

Длительность: 9 месяцев (10 часов в неделю)
Старт: любое удобное время
Стоимость: 20 часов бесплатно, затем — $156/мес ($1400) или $1200 за весь курс одним платежом

Технологии: Git, Django, базы данных
Отзывы: ⭐⭐⭐⭐

За 9 месяцев учебы вы освоите Python и соберете портфолио из 6 проектов. В вашем распоряжении будут онлайн-тренажер, множество задач для самостоятельной работы и постоянная поддержка наставников.

Записаться

Самостоятельные курсы (цена по возрастанию)

Программирование на Python для начинающих

Длительность: 4 часа видео
Старт: любое удобное время
Стоимость: бесплатно

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

Получить доступ

Курсы Python от CodeCademy

Длительность: от 6 до 10 недель
Старт: любое удобное время

Стоимость: $15,99/мес
Технологии: зависит от специализации
Отзывы: ⭐⭐⭐⭐

CodeCademy предлагает несколько специализаций в зависимости от того, чем именно вы хотите заниматься:

Полное руководство по Python 3: от новичка до специалиста от Udemy

Длительность: 35 часов видео по запросу
Старт: любое удобное время
Стоимость: $18,99 (раньше $99,99)
Технологии: Jupyter Notebook, SQL, PostgreSQL
Отзывы: ⭐⭐⭐⭐⭐

Лидер продаж на Udemy. Емкий курс, покрывающий все основные функции и возможности питона. Подойдет и новичкам, и тем, кто уже имеет опыт разработки, но жаждет новых знаний.

Записаться

Специализация Python for Everybody от Coursera

Длительность: 8 месяцев (2 часа в неделю)
Старт: любое удобное время
Стоимость: 7 дней бесплатно, далее — $49/мес

Технологии: JSON, XML, DBMS, SQL
Отзывы: ⭐⭐⭐⭐⭐

Сообщают, что 39% выпускников этого курса сменили работу, 19% получили повышение. Объемная специализация научит студентов программировать на Python, работать с базами данных и визуализировать данные.

Записаться

Специализация Python 3 Programming от Coursera

Длительность: 5 месяцев (7 часов в неделю)
Старт: любое удобное время
Стоимость: 7 дней бесплатно, далее — $49/мес
Отзывы: ⭐⭐⭐⭐⭐

Глубокое погружение в Python. Вы научитесь работать с API, библиотеками и изображениями. Курсы сообщают, что 50% выпускников после сменяют работу.

Записаться

Онлайн-курсы, чтобы прокачать Python | dev.by

Python — один из самых популярных высокоуровневых языков программирования общего назначения. За счёт достаточно простого синтаксиса, гибкости и масштабируемости, а также активного глобального сообщества пользуется огромным интересом у начинающих кодеров. Богатый набор инструментов и библиотек покрывает широкий круг самых разнообразных задач от веб-разработки и анализа данных до AI и научных вычислений. Это делает Python одним из самых востребованных языков среди работодателей, его применяют практически все ведущие ИТ-компании мира. TechRadar собрал 5 лучших курсов по Python с пяти образовательных онлайн-площадок.

Содержание
1. SkillShare2. Udemy3. LinkedIn Learning4. Coursera5. edX

Зачем учить Python?

Python является одновремено и популярным, и простым в изучении языком программирования.

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

Однако, если Python для вас не первый язык программирования, то его синтаксис может показаться непривычным.

Python для создания продуктов используют такие корпорации, как Google, Dropbox, Mozilla, Facebook, Yandex, Red Hat, Microsoft, Intel и другие.

1. SkillShare

  • Для начинающих
  • Отличное введение в язык
  • Очень содержательный

На Skillshare есть несколько курсов по Python для «начинашек», но наиболее всеобъемлющим из них будет Programming in Python for Beginners. Он рассчитан на тех, кто пока полный ноль в программировании. Тьютор поможет настроить среду разработки Python на Windows, а потом расскажет об основных конструкциях языка и когда их использовать.

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

В плеере SkillShare можно регулировать скорость воспроизведения и делать пометки, но нет субтитров. На сайте есть бесплатный пробный период с возможностью взять любой курс, но потом доступ к библиотеке платформы будет стоить $8/месяц или $2/месяц при оформлении годовой подписки. Ещё у SkillShare есть мобильное приложение, а курс можно скачать целиком и смотреть в любое время в офлайне.

Хочу учиться.

2. Udemy

  • Для продолжающих
  • Подходит для программистов
  • Более 250 видеороликов
  • Разработка прикладных приложений

Udemy тоже предлагает большой выбор очень толковых курсов. Тем, кто уже немного владеет языком, отлично подойдёт The Python Mega Course: Build 10 Real World Applications. Это курс по разработке 10 мобильных, десктопных и веб-приложений на Python, реально применимых на практике — от приложений для распознавания движущихся объектов через веб-камеру и работы с базами данных до дашборда для визуализации данных.

Курс содержит 33 раздела, в которые входит более 250 роликов. Первые 8 разделов посвящены основам Python, ещё 4 — более продвинутым темам, а дальше начинается материал непосредственно по созданию 10 приложений. Перед некоторыми из них один-два раздела отведены на рассмотрение важных компонентов последующего приложения. К видеоурокам прилагаются упражнения и небольшие тесты, также можно задавать вопросы лектору. Используется редактор Visual Studio Code.

На Udemy можно заплатить за курс один раз и получить к нему пожизненный доступ. Авторы постоянно обновляют контент, так что при покупке подписки все апдейты будут доступны пользователю бесплатно. У Udemy классный плеер: можно не только менять скорость видео, но и оставлять в них закладки. Также в проигрывателе отображаются места, которые часто помещают в закладки другие студенты. Можно включать субтитры (более 10 языков), есть автоскроллящиеся скрипты видеоуроков и мобильное приложение, через которое можно скачать лекции.

Хочу учиться.

3. LinkedIn Learning

  • Для занятых
  • Быстрый
  • Хорошие объяснения
  • Введение в программирование

На этой площадке очень много курсов для профессионального развития, один из них — Advance your career with Python. Он нацелен на тех, кто ограничен по времени и хочет быстро освоить азы Python. Для работы используются его дистрибутив Anaconda и Jupyter Notebook. Автор останавливается на всех ключевых компонентах языка, уроки проходят в комфортном темпе и хорошо проиллюстрированы.

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

В плеере можно включать субтитры и смотреть скрипты видеоуроков. Подписка на LinkedIn Learning стоит $29,99/месяц или $19,99/месяц. Если покупать на год, первый месяц — бесплатно.

Хочу учиться.

4. Coursera

  • Для студентов, изучающих информатические дисциплины
  • Для совершенствования навыков Python
  • Изучение computer science
  • Скрипты и субтитры

Coursera — ещё одна широко известная онлайн-платформа. Здесь есть хороший курс Principles of Computing (в двух частях) для дальнейшего развития навыков программирования на Python от Университета Райса. Курс входит в комплекс из 7 курсов Fundamentals of Computing Specialization по изучению основ компьютерных вычислений. Уроки в них рассчитаны на несколько недель, в каждом есть несколько видеолекций, материалы для прочтения, практические упражнения, домашние задания и тесты.

Программу ведут три преподавателя CS, которые, пишет TechRadar, помогут слушателям улучшить скиллы в Python и научат мыслить, как профессионалы в данной области. Курс даёт основы принципов вычислительных процессов, программирования, математических принципов, которые нужно знать и применять для решения сложных задач, а также написания качественного кода.

В распоряжении пользователей видеоплеер с субтитрами и скриптами. Во время просмотра лекций можно делать пометки, а ещё их можно скачать в формате mp4 вместе со скриптами и субтитрами. Курсы можно проходить бесплатно, желающим получить сертификат понадобится подписка, цены на которую варьируются от $39 до $89 в месяц.

Хочу учиться.

Можно ли обучаться бесплатно на Coursera?

5. edX

  • Для data science
  • Можно проходить в своём темпе
  • Анализ данных
  • Введение в библиотеки
  • Не для начинающих

edX тоже располагает замечательной коллекцией бесплатных курсов. Например, курс Analyzing Data with Python от IBM привлечёт внимание тех, у кого уже есть кое-какой бэкграунд в программировании на Python и желание продолжить двигаться в направлении data science.

Курс вооружит слушателей всеми навыками, необходимыми для преобразования «сырых» данных в «удобоваримый» формат при помощи Python, познакомит с библиотеками для анализа данных, такими как Pandas, NumPy, SciPy и scikit-learn.

Курс включает 5 обучающих модулей, после которых идёт контрольное задание. Каждый модуль начинается с перечисления понятий, которые в них будут встречаться, далее рассмотрены библиотеки и как их использовать для той или иной цели. Проверить новые знания можно на тестах и лабораторных работах.

В видеолекциях есть субтитры и скрипты на английском. Курс рассчитан на 5 недель и потребует от 2 до 4 часов времени в неделю. Для получения безграничного доступа к курсу по истечении этого срока, а также сертификата, нужно заплатить $39.

Хочу учиться.

Где еще учить Python?

Сложности самообучения программированию и как их преодолеть

Перед вами перевод статьи

Xiang Zhou

, опубликованной на сайте

freeCodeCamp

. Если вы разработчик-самоучка и хотите преодолеть все преграды на пути к цели, добро пожаловать под кат!


«Белая книга на коричневом деревянном столе», фото Alexander Michl на Unsplash

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

Такие веб-сайты, как Code.org, Codecademy и freeCodeCamp набирают все большую популярность, а в сети появилось огромное количество курсов, в том числе и на YouTube.

Однако программирование — это не так просто. Есть определенные трудности, с которыми все мы сталкиваемся, когда учимся писать код.

1. Сколько времени нужно уделять программированию каждый день

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

Как же при этом ежедневно находить время на программирование?

Кто-то скажет: «Было бы желание, а время найдется». Все верно, спорить не буду. Но возникает другой вопрос: сколько именно нужно уделять программированию каждый день? Если мой максимум — полчаса, это считается?

Ответить можете только вы сами. Очень сложно определить время, необходимое для обучения. Некоторые полагают, что лучше меньше, но качественнее и 15 минут вполне достаточно.

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

Итак, все сводится к одному: только вы сами знаете, сколько часов в день сможете заниматься программированием так, чтобы это вошло в привычку, но не выматывало. Последнее особенно важно. Основатель freeCodeCamp Квинси Ларсон однажды сказал в своем твите:

«Дело не в том, насколько вы продвигаетесь за один день, а в том, что вы продвигаетесь ежедневно».

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

Конечно, это не универсальный рецепт, но вы получите общее представление о том, как подойти к планированию времени на изучение с умом и, что немаловажно, без фанатизма.


2. Как найти золотую середину между «почти не сдвинулся с места» и «сгорел на работе»

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

С того момента я стал напоминать себе, что не стоит истощаться и доходить до точки невозврата.

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

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

Это происходило, когда я:

  • находил проблему, которая требовала решения;
  • находил решение на форумах в сети;
  • пробовал выйти из затруднения несколькими способами, проверяя, какой из них сработает;
  • решал проблему.

Стараясь примириться с тем, что большая часть материала — это скучная запутанная информация (структуры данных, алгоритмы и т. п.), я установил правило 50/50, которым пользуюсь при самообучении.

Я трачу 50% времени на сложные задачи — изучение основ, концептов, алгоритмов и прочего. Остальные 50% остаются на мои собственные проекты, которыми я занимаюсь с удовольствием. Так я добиваюсь гармонии в своем ежедневном расписании.

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

3. Единственный способ преодолеть препятствия — любить свою работу

Банально, но верно. Если вам по душе выбранный путь, если нравится ваша работа и направление, в котором вы двигаетесь, — одобрение окружающих не нужно. Чувство удовлетворенности такого рода невозможно взять взаймы, заменить или, того хуже, симулировать.


4. Всегда возвращайтесь к программированию, когда заканчиваете с другими делами

Реальность самообучения такова: вас никак не могут оставить в покое, наедине с вашими справочниками.

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

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

Впрочем, после этого перерыва я немедленно вернулся к программированию и тут же понял, что многое забыл. Очень неприятно, открывая книгу, не знать, с какого момента продолжить обучение. Господи, неужели мне придется перечитывать все главы и делать все задания заново?

Это тот самый момент, когда нужно продержаться, выстоять. Необходимо сказать себе: «Так, первый час обучения, кажется, идет медленно и совершенно непродуктивно. Но ничего страшного, я наверстаю упущенное, выучив больше завтра».

Эту пилюлю не подсластить никак иначе — только продолжая работу, несмотря ни на что. Зайдите на форум кодеров в твиттере и пожалуйтесь, но после этого непременно возвращайтесь к программированию.

5. Мотивируйте себя любым способом

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

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

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

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

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

работы в качестве девелопера

.

Не поддавайтесь искушению рассуждать: «Я ведь учусь — этого достаточно. Я задумаюсь о поиске работы потом, когда буду готов».

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

Все перечисленные преграды вырастут на вашем пути к карьере девелопера. Встречайте их с правильным настроем: они сделают вас только сильнее и лучше.

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

Как я сам научился программировать за 8 недель / Хабр

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

самообучение программированию никогда еще не было таким простым

.

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

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

Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):

  • Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
  • Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.

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

Получение начального понимания веб-фреймворка Django (1 выходной):

  • Пройдите Django учебник.
  • Удалите весь код, который вы создали в процессе выполнения шагов из учебника.
  • Пройдите учебник еще раз, заново.

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

Во второй раз я не был так сосредоточен на новизне концепции и смог сосредоточиться на понимании того как все части взаимосвязаны.

Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):

Опять же, я хотел бы рекомендовал попробовать каждый из них и посмотреть, какой вам понравится больше. Я делаю оба, но это, наверное, перебор.

Практика построения простых веб-приложений (2 выходных дня):

  • Выполняйте упражнения из Django в примерах. Эти упражнения не так строго ведут ученика, как учебник Django, но они предлагают хороший способ, чтобы начать разрабатывать свои собственные простые веб-приложения.
Создайте свой прототип (2 выходных дня):

Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

Следующие шаги:

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

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

Оригинал: How I Taught Myself to Code in 8 Weeks

Как научиться программировать с нуля и найти первую работу. Большой 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 Кевин Чирс отлично объяснил, как нужно подходить к изучению программирования.

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

  1. Найти небольшую задачу или проект, который вам будет интересно решить. Можете попробовать создать инструмент для решения небольшой жизненной задачи или с нуля реализовать программу, которая вам кажется интересной. Такой проект мотивирует вас продолжать учиться кодить и даст возможность применить полученные знания на практике.
  2. Почитайте информацию о разных языках программирования, чтобы выбрать наиболее подходящий для вашего проекта. (См. рекомендации ниже).
  3. Найдите один качественный ресурс для новичков по этому языку и руководствуйтесь им. (Также см. ниже).
  4. Помимо этого ресурса, гуглите и задавайте вопросы.
  5. Выполните несколько оригинальных проектов на этом языке.

Вот эти вещи мы советуем не делать:

  1. Нельзя просто пассивно штудировать выбранный ресурс: делайте упражнения и домашние задания; практика – это незаменимая часть обучения программированию.
  2. Не переключайтесь без необходимости с одного языка на другой. Выберите один и придерживайтесь его, потому что главное в программировании — решать задачи, а не выучить языки. Научиться решать проблемы сложно, и этот навык можно отточить, только если постоянно тренироваться. Каждый раз, когда вы переключаетесь на другой язык, то теряете время, в которое могли бы тренироваться применять полученные знания, чтобы развить навыки решения задач.
  3. Не прекращайте учиться после того, как закончили какой-либо курс. Программирование — одна из тех областей, где всегда есть, чему учиться.

И наконец, помните, что обучение программированию — долгий и трудный процесс. Если вам тяжело, не расстраивайтесь! Это абсолютно нормально, и многие люди годами учатся и тренируются, пока не почувствуют себя достаточно компетентными, чтобы искать работу или сделать вклад в серьёзный проект. К счастью, просто начинать учиться совсем не так сложно.

Какой язык программирования стоит выучить первым?

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

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

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

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

Я хочу научиться…
  • …разрабатывать приложения для iPhone — Swift (ещё)
  • …разрабатывать приложения для Android — Java (ещё)
  • …создавать веб-сайты — JavaScript, CSS, HTML5 (ещё)
  • …писать десктопные приложения для Windows — C#
  • …создавать 2D/3D-игры — JavaScript, C# или C++ (ещё)
  • …программировать Arduino/микроконтроллеры/роботов — Си
  • …заниматься научными/математическими вычислениями или анализом данных — Julia, Python, R или Matlab
  • …заниматься автоматизацией и разработкой скриптов — многие языки (Python, Ruby, Bash, Powershell, AutoHotKey…)

Если в списке нет того, что вам нужно, поищите другие варианты на этих ресурсах:

Если вы всё ещё не можете определиться с выбором, изучайте Python. Это хороший, доступный для начинающих программистов язык с огромным сообществом и множеством библиотек, с помощью которых можно сделать практически всё что угодно, начиная созданием игр, и заканчивая автоматизацией процессов дома или на работе и анализом данных для построения веб-сайта. Постарайтесь найти обучающий ресурс, в котором разобраны ключевые принципы и основы, прежде чем погрузиться в разработку более сложных приложений. Инструкции о том, как начинать изучение любого языка, можно найти на странице reddit getting started.

Где можно найти качественные образовательные ресурсы?

Как совершенствовать навыки

Как перейти с начального уровня на средний?

Типичный вопрос, который мы получаем от многих новичков, — «что дальше?» В частности, когда они пытались проработать какие-то уроки, пособия, курсы, но в итоге всё равно не смогли заполнить пробел между пониманием, как работает оператор if или цикл for, и как именно применять то, что они изучили, чтобы создать сложные и интересные программы.

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

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

Вот несколько советов, как не сдаваться и что делать дальше.

Перейдите с пассивного обучения на активное

Вместо того, чтобы брать курсы и уроки, которые (как вы думаете) научат вас тому, чему вы хотите научиться, начните активно искать способы обучиться самостоятельно. Например, если вы понятия не имеете, как создать игру, загуглите «как написать игру на Х», где «Х» — это язык программирования, который вы собрались использовать. Если у вас всплыло сообщение об ошибке, которая вам незнакома, попробуйте загуглить её. Если вы хотите освоить машинное обучение — погуглите и найдите годную книгу, пособие или онлайн-курс.

Вам будут нередко попадаться учебные пособия, разъясняющие, что именно вам следует делать, или по крайней мере статьи, которые дадут общее представление и подсказки о том, как составить более точные поисковые запросы. Тем более, нет ничего стыдного в том, чтобы искать источники новых знаний — как раз наоборот. Все программисты, как начинающие, так и профессиональные, постоянно делают две вещи: гуглят и учатся.

Постоянно практикуйтесь

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

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

(См. также ЧаВо: Где можно найти тренировочные упражнения и идеи для проектов и ЧаВо: Я не могу придумать классную идею для проекта. Мне просто не хватает креативности? Как другие программисты ищут вдохновение?)

Научитесь декомпозировать задачу

Пытаясь справиться с крупным проектом или задачей, прийти в отчаяние можно уже от того, насколько большими и устрашающими они выглядят. Вместо того, чтобы унывать, разбивайте задачу на всё более мелкие подзадачи (это называется декомпозиция), пока каждая отдельная подзадача не начнёт казаться вполне подъёмной и осуществимой.

Допустим, вы хотите создать игру «камень-ножницы-бумага». Её можно разделить её на несколько подзадач: как получить вводные данные от пользователя, как заставить компьютер сделать случайный выбор, как определить победителя и как повторить игру (если вы хотите играть несколько раз подряд).

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

Если вы совсем не знаете, как сделать что-то (например, как заставить компьютер выбрать случайное значение), погуглите. В данном примере поиск «Х выбрать случайное значение» (где Х — используемый язык программирования) покажет несколько различных способов, которые вы сможете использовать. Иногда задачу получается разбить на множество частей без поисковика, а иногда без него не обойтись.

Так, если вы учите Java и хотите научиться писать игры, но понятия не имеете, с чего начать или как разбить задачу на составляющие, загуглите «java игры уроки». Поиск даст несколько хороших источников, которые научат вас писать игры и (обычно автоматически) разбивать процесс написания игры на подзадачи поменьше.

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

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

Больше советов смотрите в ЧаВо: Как улучшить навык реализовывать задачи/задания в программах (алгоритмическое мышление).

Будьте систематичны

Когда вы пишите и отлаживаете код, ни в коем случае не привыкайте просто пробовать сделать что-то, рассчитывая, что это случайно сработает. Будьте максимально чётки и последовательны — метод «проб и ошибок» здесь не подойдёт.

Во время написания кода остановитесь на минуту и составьте на листе бумаги приблизительные план действий. Попробуйте нарисовать какие-то схемы или набросать что-то вроде псевдокода. Если вам придётся изменить свой план (что вы, скорее всего, и сделаете), подумайте, для чего вам нужно это изменение и каким будет ваш новый план действий. (Этот этап планирования — также подходящая возможность, чтобы потренироваться декомпозировать задачи!)

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

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

Не делайте что попало, пока что-нибудь не сработает — будьте последовательны.

Не расстраивайтесь, если приходится исправлять баги или гуглить

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

Отладка (и трудности!) — неотъемлемая часть программирования. Если получится, постарайтесь не отчаиваться и не злиться. Отнеситесь к этому как к занимательному квесту или головоломке.

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

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

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

Не бойтесь попросить помощи

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

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

Всё же сначала постарайтесь сделать всё возможное (декомпозировать задачу, отладить код, погуглить и т.д.) и хорошо продумайте ваш пост. Как и любая другая субкультура, среди программистов есть свои негласные правила и порядки. Одна из ключевых вещей — вопрос должен быть доходчиво описан (даже если это что-то элементарное).

Больше информации читайте в руководстве о том, как задавать вопросы на reddit.

Пройдите более интенсивный вводный курс

Этот пункт касается только тех, кто лишь поверхностно знакомился с программированием на вводных курсах вроде тех, что предлагает CodeCademy. Подобные сайты дают отличное представление о том, что такое программирование, и обучают некоторым основам, но могут быть почти бесполезны, если вы хотите продвинуться на средний уровень.

Железное правило: если вводные курсы по программированию, которые вы проходили, не вызвали у вас особых трудностей или не содержали заданий, упражнений и мини-проектов, вам нужно поискать более требовательные курсы. Постоянная практика (и трудности!) — неотъемлемая часть учебного процесса.

Ещё больше подходов, рекомендаций и советов о том, как осуществить этот прорыв, читайте в следующих постах:

Где можно найти тренировочные упражнения и идеи для проектов?

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

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

Здесь список простых клонов 49 игр, которые можно повторить.

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

Этот ресурс позволяет активно учиться, решая головоломки разной сложности на Python. Здесь также есть обучающие видео. Акцент сделан на программировании на Python.

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

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

  • утилиты командной строки (ls, wget, curl и т.д.)
  • текстовый редактор
  • IDE
  • программу для просмотра изображений
  • пакет офисных приложений (например, Microsoft Office или Libreoffice)
  • язык программирования (интерпретатор или компилятор)
  • веб-браузер
  • базу данных (реляционную или нереляционную)
  • веб-сервер
  • систему управления версиями

Если хотите сделать что-то потруднее, но с детальным объяснением, попробуйте реализовать одну из программ 500 Lines or Less — это open source-книга, в которой пошагово описано, как создавать относительно сложные программы, занимающие не более чем 500 строчек кода (3D-моделлеры, статистические анализаторы и т.д.). В нагрузку попробуйте реализовать эти программы на другом языке, адаптируйте их под немного другую задачу или добавьте им новые интересные возможности. Исходный код книги содержит полные реализации каждой включённой в неё программы.

Что касается тренировочных упражнений, вот некоторые хорошие сайты/ресурсы для старта:

  • На reddit:
    • /r/dailyprogrammer — сабреддит с ежедневными трудностями программирования
    • /r/ProgrammingPrompts — небольшие простые проекты
    • /r/tinycode — сабреддит о том, как писать маленький код с большими возможностями
    • /r/programmingchallenges — сабреддит, посвящённый трудностям программирования (который не мешало бы оживить)
    • /r/programbattles — новый сабреддит, аналогичный /r/photoshopbattles, где пользователи соревнуются в решении задачек на написание кода
  • Общие упражнения:
    • Finxter — более 300 головоломок на Python, чтобы проверить и потренировать быстрое понимание кода.
    • Project Euler — предлагает около 500 математических задач (например, по теории чисел, простым числам, системам счисления), которые возможно решить с помощью программ (на любом языке).
    • CodeAbbey — более 200 задач по программированию, начиная с самых простых. Позволяет учиться на решениях других разработчиков.
    • Rosalind — аналогичный Project Euler сайт, который содержит более 200 задач по программированию, связанных (немного) с биоинформатикой.
    • CodeByMath — более 100 небольших задач по математическому программированию.
    • Codingbat.com — упражнения на Java и Python для новичков и программистов более продвинутого уровня.
    • codegolf.stackexchange.com — сайт, где можно постить и обсуждать вопросы по программированию.
    • Ruby Quiz — ряд заданий, в которых нужно создать небольшие программы разной степени сложности. Все решения пишутся на Ruby, но подсказки работают для любых языков, поэтому вы сможете использовать любой другой язык программирования, если справитесь без эталонного решения, в которое можно было бы подсмотреть.
    • OCS Prep Work — подготовительная работа для студентов компьютерных курсов в Омахе. В будущем она превратится в полноценную книгу, но сейчас это просто компиляция тренировочных задач. — Эндрю Эк.
    • UVA Online Judge — собрание сотен задач из конкурсов по программированию с системой онлайн-проверки решений.
    • TopCoder — содержит алгоритмические задачи, накопленные за годы соревнований, доступных на нескольких популярных языках. Также проводит онлайн-соревнования по программированию несколько раз в месяц.
    • CodeForces — аналогичен TopCoder, но даёт больше заданий на соревнованиях и имеет мало отличительных функций, включая «виртуальные конкурсы».
    • Timus — аналогичен UVA, предлагает задачи со многих прошедших соревнований (мирового и регионального масштаба).
    • SPOJ — аналогичный UVA ресурс с широчайшим выбором языков программирования для разработки решений.
    • CodeForces — содержит алгоритмические задачи, накопленные за годы соревнований, доступных на нескольких популярных языках.
    • USACO — содержит алгоритмические задачи вместе с руководствами.
  • По языкам:
    • Для Prolog, Lisp и схожих языков смотрите P-99 и L-99 — в подборках по 99 задач, которые помогут повысить уровень владения языками.
    • Python Challenge — объединяет загадки и вопросы по программированию, которые помогут продвинуться на новые ступени.
    • 4Clojure — подборка упражнений по программированию специально для Clojure — диалекта Lisp.

Как улучшить навык реализовывать задачи/задания в программах (алгоритмическое мышление)?

Это один из самых часто задаваемых вопросов.

Обычно ответ такой: пишите как можно больше программ.

Однако, есть простое упражнение, которое поможет вам улучшить этот навык:

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

Как бы глупо это упражнение ни звучало, оно работает. Схема была испробована на множестве студентов и позволила достичь значительного прогресса.

Я не могу придумать классную идею для проекта. Мне просто не хватает креативности? Как другие программисты ищут вдохновение?

Для начала, вот очень меткая цитата Чака Клоуза о том, что вдохновение нельзя просто ждать:

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

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

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

И всё же, вот несколько идей и приёмов, как придумать свой проект:

Попробуйте заново реализовать существующий проект. Как музыканты начинают с того, что делают каверы на чужие песни, для начала можете переписать программы, созданные другими людьми. Например, часто выбирают аркадные 2D-игры, такие как «Pong» или «Космические захватчики»: они вполне под силу новичкам и многому их научат. В этом ЧаВо есть ссылки на ещё больше идей для проектов.

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

Присмотритесь к вещам, которые вас раздражают. Если в вашей жизни есть что-то монотонное или что вы не любите делать, спросите себя, нельзя ли это действие автоматизировать. Чтобы получить представление о том, что можно автоматизировать с помощью компьютера, зайдите на Automate the Boring Stuff. Это руководство для Python, но все описанные в нём вещи можно сделать на любом языке программирования. Или попробуйте загуглить «как автоматизировать дом», чтобы найти больше прикладных решений.

Где можно найти примеры хорошего кода и проектов для обучения?

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

Загляните в раздел Коллекций на GitHub. Здесь размещён курируемый список массы популярных и интересных open source-программ от библиотек и игр до музыки, журналистики и анализа данных. Он хорошо отражает, какого рода вещи можно делать с помощью кода. Исходный код находится в публичном доступе, и вы можете скачать эти проекты и сами посидеть над ними.

Посмотрите также серию бесплатных электронных книг The Architecture of Open Source Programs, в которых более детально разобрана структура популярных open source-программ. Хорошим отправной точкой может стать последняя книга серии «500 lines or less», так как программы в ней достаточно малы, чтобы вы точно могли выполнить их/с ними справиться самостоятельно и использовать в качестве стартовой площадки для запуска своего проекта.

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

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

What every computer science major should know — Matt Might (Что нужно знать каждому студенту, изучающему информатику — Мэтт Майт)

Даёт высококачественный обзор различных областей и причин, почему они ценны. Также содержит список материалов к прочтению.

Open source computer science degree — Open Source Society (Открытая программа по информатике от Open Source-сообщества)

Предлагает последовательный учебный план со ссылками на курсы — преимущественно Coursera — в каждой теме.

Teach yourself CS (Как самостоятельно изучить информатику)

Аналог предыдущего ресурса с тем исключением, что рекомендует как книги, так и видеолекции. Более продвинутые рекомендуемые источники связаны с системами (например, операционными системами, базами данных…)

A Self-Learning, Modern Computer Science Curriculum (Современная программа по информатике для самостоятельного изучения)

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

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

Как начать крупный проект и не забросить его?

Во-первых, досконально разберитесь в сути задачи.

Часто на этом этапе помогает Rubber Duck Debugging. Объясняя задачу или идею кому-то (или чему-то) другому, кто о ней ничего не знает или ничего в ней не понимает, человек сам более глубоко вникает в неё: ведь ему приходится размышлять над задачей значительно больше, и это приводит к её лучшему пониманию.

Во-вторых, не бросайтесь сразу же к компьютеру!

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

Это приведёт нас к следующему.

Помните кое-что, когда работаете над крупным проектом в одиночку:

Всё в мире состоит из более мелких частей.

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

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

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

Как только вы дойдёте до этого момента, начинайте программировать. Напишите одну небольшую часть и протестируйте. Напишите следующую, протестируйте и т.д.

Не задумывайтесь о финальной, полной картине — это будет вас угнетать. Беритесь за одну отдельную часть за раз.

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

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

Как не забросить проект?

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

  • Подготовьте детальное описание проекта, так называемую «функциональную спецификацию проекта».
  • Обсудите эту функциональную спецификацию проекта с воображаемым клиентом (то есть объясните её любому неодушевлённому предмету или кому-то, кто готов вас выслушать).
  • Подкорректируйте функциональную спецификацию проекта: вернитесь к предыдущему шагу и повторяйте, пока не будете довольны.
  • Составьте план реализации проекта с жёстким (и реалистичным) конечным сроком.
  • Соблюдайте пункт выше (потому что иначе воображаемый клиент мог бы потребовать немалую комиссию за просрочку)
Ещё несколько советов:
  • Для начала полностью забудьте о коде и взгляните на программу полностью с точки зрения пользователя.
  • Составьте список желаемых функций, которые программа должна выполнять.
  • Составьте список функций, которыми программа не будет обладать (Так вы сможете избежать соблазна добавить кучу «классных» и совершенно ненужных «улучшений». В основном, именно потому, что программы становится слишком раздутыми, разработчики бросают их через несколько недель.)
  • Сделайте несколько набросков экрана, который будет видеть пользователь, и как он будет с ним взаимодействовать. Это не должны быть точные прототипы — они, скорее, помогут представить, что будет изменяться на экране пользователя при переходе на другую страницу. Эти зарисовки помогут вам не забыть что-то важное.
  • Научитесь использовать git и заведите аккаунт на GitHub. Здесь можно получить хорошую поддержку и попросить оценку коду. (Игнорируйте комментарии по поводу стиля кода: 99% из них — бесполезные споры.)

Распространённые страхи и опасения

Я уже слишком стар для программирования?

Нет, учиться программировать и, возможно, строить карьеру в разработке можно в любом возрасте.

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

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

Есть что-то другое, чему мне сначала нужно научиться?

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

Вот единственные действительно необходимые условия:

  • Вы должны уметь печатать (если только вы не используете язык на основе подхода «drag-and-drop» вроде Scratch).
  • У вас должен быть компьютер.
  • Вы должны уметь самостоятельно гуглить/искать ответы на вопросы.

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

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

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

Нужно ли мне хорошо знать математику?

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

Например, в некоторых направлениях программирования действительно необходимы уверенные математические навыки. В 2D и 3D-играх часто используются векторы, матрицы и линейная алгебра; в интеллектуальном анализе данных и машинном обучении — многие понятия статистики; а справляться с алгоритмическими сложностями легче, если хорошо владеть алгеброй и элементарными вычислительными навыками.

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

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

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

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

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

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

Я много гуглю или не знаю, как делать что-то, когда только собираюсь начать. Это плохо?

Нет. Вот ветка, в которой эта тема рассмотрена с разных сторон. Есть много других, аналогичных этой.

Программировать сложно?

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

Программирование схоже с большинством навыков в том, что гораздо затруднительнее перейти с начального уровня на более продвинутый. В продолжение примера с боулингом: если вы захотите участвовать в соревнованиях, вам придётся потратить годы, чтобы отточить навык. То же самое верно и для программирования: вам придётся потратить какое-то время (то есть много времени), пытаясь понять, почему эта дурацкая программа не работает, хотя вы всё уже три раза перепроверили. Вам придётся читать книги, сидеть на занятиях и обсуждать их с другими людьми. Вы выучите сленг программистов. Вы выберете специализацию, чтобы более основательно изучить ряд узких областей. Всё это задействует основы программирования, но новыми способами и в новых сочетаниях. Искать решения задач будет тяжело. Часами разбираться с одной задачей будет тяжело. Это нормально, потому что если вы получаете от этого удовольствие и если у вас есть мотивация, трудности не будут казаться такими трудными, и вы справитесь с ними.

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

Вопросы про обучение

Что значит «знать язык» или «уметь программировать»?

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

Я только что начал учить язык Х. Стоит ли мне начинать учить язык Y?

Особенно когда вы начинаете учиться программировать, лучше учить один язык и на какое-то время остановиться на нём. Даже если отдельная проблемная область использует конкретный язык, которым вы пока не владеете, сначала научитесь программировать. А разобравшись с основами (управление потоком, обработка ошибок, ввод/вывод, имплементация алгоритмов, структуры данных и т.д.), можете начинать думать о том, чтобы взять следующий язык.

Стоит ли учить более одного языка программирования одновременно?

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

Это плохо, что у новичков иногда возникают проблемы с задачами и упражнениями?

Это плохо, что новички иногда падают с велосипеда, когда учатся кататься? Это плохо, что новички иногда не могут удержаться на воде, когда учатся плавать? Это плохо что новички иногда не попадают в ноты, когда учатся играть на инструменте? Это плохо, что новичкам иногда приходится выбрасывать сгоревший обед?

Конечно, нет!

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

Неудача — важная часть обучения. Очень важно знать, как не надо делать. Неудача — это просто приобретённый опыт.

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

Как найти/поддерживать мотивацию, чтобы учиться программировать?

Зайдите на /r/GetMotivated/ и /r/GetDisciplined.

Мы часто думаем: «если бы у меня было достаточно мотивации… тогда я мог бы…», хотя именно действие поддерживает мотивацию. Сначала идёт действие, потом — мотивация. Найдите небольшие конкретные программы, которые хотели бы создать. Избавьтесь от всего, что вас отвлекает. Установите расширения для браузера, блокирующие сайты вроде Reddit, Facebook и Twitter. На минуту представьте, насколько здорово будет ощущать, что вы стали более компетентным программистом.

Вот несколько свежих веток по теме:

С чего мне начать Х?

С чего начать делать видеоигры?

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

  • Unity (C#): подходит для мобильных, десктопных, браузерных/онлайн и консольных 2D и 3D-игр
  • Construct2 (JavaScript): для мобильных, десктопных и браузерных/онлайн 2D-игр
  • Pygame (Python): движок для десктопных 2D-игр
  • LÖVE (LUA): подходит для десктопных 2D-игр

Всегда помните, что ваша цель — разрабатывать игры, а не движки! Так что не нужно заново изобретать велосипед.

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

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

Обязательно загляните в ЧаВо /r/gamedev, почитайте вводное руководство на /r/gamedev и поищите более старые ветки на /r/gamedev и /r/learnprogramming.

С чего начать делать веб-сайты/веб-приложения/веб-разработку?

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

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

Больше информации можно найти в ЧаВо /r/webdev. Вот ещё один список онлайн-курсов, пособий и ресурсов для начинающих.

С чего начать делать мобильные приложения/приложения для Android/приложения для iOS/приложения для Windows Phone?

Для каждого типа смартфонов понадобится выучить разные языки программирования.

  • Приложения для Android пишутся преимущественно на Java — больше информации читайте в ЧаВо /r/androiddev.
  • Приложения для iOS пишутся на Objective-C или Swift — больше информации ищите на боковой панели /r/iosprogramming и в их вики (на GitHub).
  • Приложения для Windows Phone пишут на C#, Visual Basic или Javascript — больше информации ищите на боковой панели /r/WPDev.

Вы также можете создать приложения, которые будут запускаться на всех трёх крупнейших платформах, с помощью технологий Phonegap и Titanium — приложения пишутся один раз с использованием HTML, CSS и Javascript, а запускаются на любой платформе.

Больше информации ищите в списке ресурсов по разработке мобильных приложений. Вот одна старая ветка на эту тему: http://redd.it/352f09.

Однако не забывайте, что многие, если не все из указанных инструментов рассчитаны на тех, кто уже имеет предыдущий опыт в программировании. Если вы прежде никогда не занимались разработкой, может быть, вам лучше начать с изучения языка, по которому есть больше ресурсов специально для новичков. Когда вы приобретёте некоторый опыт и усвоите лежащие в основе программирования принципы, то вам станет намного проще учить новые языки и начинать изучение мобильной разработки. Раздел «С чего мне начать?» в нашем ЧаВо содержит больше информации о том, с чего нужно начинать.

Как автоматизировать что угодно?

Для Windows есть пара специальных языков программирования, такие как Autohotkey and AutoIt.

Другая подходящая кросс-платформенная альтернатива — это Python. Automate the Boring Stuff with Python (Как автоматизировать рутину с помощью Python) — потрясающий образовательный ресурс.

Если вы хотите автоматизировать MS-Office, используйте встроенный язык программирования Visual Basic for Applications (VBA). Сабреддит /r/vba посвящён программированию на VBA.

Какие лучшие…

/u/thekodols сделал подборку из более чем 150 вопросов и ответов в стиле «какие лучшие» в этом посте, который охватывает различные языки, инструменты и темы.

Терминология и словарь

В чём разница между информатикой (computer science, CS), компьютерной инженерией (computer engineering, CE), программной инженерией (software engineering, SE), программированием и кодированием?

Информатика/компьютерная инженерия/программная инженерия vs. программирование/кодирование

Понятия информатика, компьютерная инженерия, программная инженерия, программирование и кодирование взаимосвязаны, но между ними есть тонкое различие, из-за чего новичкам сложно разграничить их.

Первое отличие, о котором вам следует понимать, это отличие между первыми тремя терминами и программированием/кодированием. Информатика, компьютерная инженерия и программная инженерия — это научные дисциплины. Сказать «я изучаю информатику» — то же самое, что сказать «я изучаю химию» или «я изучаю литературу». В противоположность этому программирование и написание кода — это виды активности, то есть их нужно делать. Образно говоря, изучение этих трёх дисциплин можно сравнить с изучением теории музыки, а программирование и кодирование подобно обучению игре на конкретном музыкальном инструменте.

Теоретически, можно выучить одно и не учиться другому, но ваши знания будут гораздо богаче, если вы освоите и то, и другое.

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

Информатика vs. компьютерная инженерия vs. программная инженерия

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

Более детальный обзор смотрите здесь: http://www.reddit.com/r/learnprogramming/comments/2k569h/eli5_computer_science_vs_software_engineering_vs/.

Программирование vs. кодирование

И наконец, остались программирование и кодирование. Разница между этими понятиями очень невелика, и многие используют их как синонимы. В целом термин «программирование» имеет более положительный оттенок, чем «кодирование». Если вы говорите «я программист», это подразумевает определённый уровень профессионализма и свидетельствует о том, что вы можете не только писать код, но и глубоко владеете основами и теорией, умеете общаться с клиентами, работать в команде и т.д.

Напротив, если вы говорите «я кодер», то подчёркиваете, что занимаетесь исключительно разработкой кода, и в меньшей степени — остальными вещами.

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

С чём разница между Cи, C++, Objective-C и C#?

Cи, C++, Objective-C и C# — это не вариации одного и того же языка.

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

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

Objective-C — это строгое надмножество языка Си, поэтому любой рабочий код на Си также является рабочим кодом Objective-C. Этот язык далеко не так распространён, как Си или С++, и сегодня в основном используется в разработке для платформ OS X и iOS от Apple.

C# не основан на Си ни в каком техническом плане. С# — это язык программирования общего назначения, созданный Microsoft и подобный Java. Он компилируется в промежуточную форму, которая запускается на виртуальной машине (CLR), в отличие от предыдущих трёх языков, которые компилируются в нативный машинный код. И хотя С# заимствует элементы синтаксиса из Си и С++ (как и Java), технически он с этими языками не связан.

В чём разница между Java и JavaScript?

Java и JavaScript связаны в той же степени, в которой связаны крем и крем-брюле.

Аналогично предыдущему вопросу, с технической точки зрения Java и JavaScript никак не связаны. У них есть некоторые общие черты в синтаксисе, так как предком обоих был Си, но не более. В Википедии есть хорошее объяснение, откуда взялось это сходство в названиях: https://ru.wikipedia.org/wiki/JavaScript#JavaScript_%D0%B8_Java.

Инструменты и управление версиями

Что такое управление версиями/контроль версий? Стоит ли мне его использовать?

Система управления версиями (Version Control System, VCS) — это инструмент, который отслеживает изменения в коде и даёт такие полезные возможности, как исправлять ошибки и просматривать, что в нём изменялось с течением времени. Современные распределённые системы также позволяют легко работать над одним и тем же кодом с другими программистами. И да, вам определённо стоит использовать систему управления версиями!

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

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

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

Хорошее и краткое руководство по Mercurial — здесь.

На странице reddit с инструментами есть ссылки на сайты, где можно скачать обе системы.

Что такое IDE? Стоит ли мне её использовать?

IDE (или интегрированная среда разработки) — это приложение графического интерфейса пользователя, обычно включающее текстовый редактор с автодополнением кода и подсветкой синтаксиса, некоторые функции управления проектами, компилятор или интерпретатор (настраиваемый или встроенный) и другие замечательные функции, которые упрощают написание, запуск и тестирование кода. Как вариант, можно вручную делать то, что IDE сделает за вас автоматически. Но для этого программисту придётся использовать отдельные инструменты и иметь более глубокое знание процесса разработки.

Для новичков есть аргументы в пользу обоих методов разработки:

  • Если вы используете IDE, вам не нужно много знать о процессе разработки, использовать интерфейс командной строки и настраивать эти инструменты, чтобы они корректно работали вместе; IDE предлагает быстрый способ начать создавать код и даже может написать часть кода за вас!
  • С другой стороны, при работе из командной строки вам не нужно подстраиваться под образ мысли автора IDE, а так как вам открыта большая часть процесса разработки, вам удастся лучше познакомиться с процессом создания ПО.

Выбор IDE или отдельных инструментов — обычно вопрос личного предпочтения (если, конечно, ваш начальник/вуз не требует использовать определённую среду разработки). Если вы никогда раньше не использовали IDE, скачайте какую-нибудь из самых популярных и повозитесь с ней. Если вы никогда не пользовались Vim или не компилировали код из командной строки, то попробуйте — может, вам понравится. Список часто используемых IDE и небольших по весу тестовых редакторов можно найти в разделе инструментов программирования.

Компьютеры и операционные системы

Какую операционную систему мне следует использовать?

Частый вопрос, который возникает у многих новичков, — какую из операционных систем им лучше использовать: Windows, Mac или Linux.

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

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

Из этого правила есть два основных исключения:

  • Если вы хотите заниматься разработкой для Windows, покупайте компьютер на Windows.
  • Если вы хотите заниматься разработкой для Mac или iOS, покупайте Mac.

Есть несколько хороших возможностей запуска кода на C# на других платформах, но некоторые инструменты Microsoft и .NET преимущественно ориентированы на Windows.

Хотя вы сможете разрабатывать приложения для Mac и iOS на любом компьютере, вам придётся использовать Xcode на машине Mac, чтобы скомпилировать и загрузить ваше приложение в App Store.

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

Какой компьютер/ноутбук мне следует купить?

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

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

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

  • центральный процессор Intel i5 (3.0+ ГГц)
  • оперативная память 4+ Гбайт
  • жёсткий диск 200+ Гбайт
  • (опционально) твердотельный накопитель

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

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

  • Чем шире экран, тем меньше время работы от батареи (но чем меньшую вы настроите яркость, тем больше будет её ресурс)
  • Чем меньше экран, тем меньше на нём будет помещаться и тем чаще вам придётся переключаться между окнами/рабочими столами. В идеале на нём должны удобно для работы размещаться два окна.
  • Чем шире ноутбук, тем он тяжелее и тем тяжелее носить его с собой.

Стоит также продумать, как вы планируете использовать ноутбук. Будет ли весь день просто стоять на столе, или вы собираетесь носить его с собой, или отправитесь с ним в поход?

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

Дополнительную информацию и более подробную помощь можно найти в следующих сабреддитах — в них предложены более индивидуализированные советы:

Также тщательно взвесьте покупку хромбуков: вам придётся или настраивать их, или использовать онлайн-редакторы и IDE, а также понадобится постоянный доступ с интернет. Больше информации читайте по ссылкам:

Ещё лучше нужно подумать, стоит ли в качестве своего главного инструмента для программирования использовать планшеты или смартфоны. Хотя с некоторыми усилиями программировать на планшетах или смартфонах вполне реально, разработка ПО почти всегда ведётся на компьютерах или ноутбуках при помощи клавиатуры.

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

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

Если вас больше интересует машинное обучение или обработка естественного языка, имейте в виду, что можно арендовать машины с графическими процессорами в облаке с помощью сервисов вроде Web Services (AWS) или Google Compute Engine (GCE) по относительно низким ценам.

Карьера и работа

Можно ли заработать много денег на программировании?

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

Можно ли получить работу в программировании, не имея диплома по информатике? Или вообще без высшего образования?

Да и да.

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

Более развёрнутые ответы на различные вопросы по поводу карьеры можно получить, задав их в /r/cscareerquestions.

Как войти в эту отрасль и получить стартовую должность?

В этом сабреддите этот вопрос немного не по адресу: вопросы на тему карьеры лучше задавать в /r/cscareerquestions и искать на их исчерпывающей вики-странице.

Но в общем, ответы большинства людей сводятся к следующему:

  • Создайте убедительное портфолио оригинальных проектов, которое можно показать потенциальным рекрутерам и приложить к резюме. Это могут быть ваши школьные проекты, самостоятельные сторонние проекты, проекты из кружков в школе и университете, исследовательские или волонтёрские проекты, или проекты, сделанные во время практики или на предыдущих работах и т.д. Мощное портфолио показывает работодателям, что вы умеете успешно применять языки программирования, библиотеки и технологии для решения проблем, и даёт им возможность более точно оценить уровень ваших навыков.
  • Сначала лучше искать стажировку, а не полноценную работу. На стажировку проще попасть, а оплачиваются они обычно достойно.
  • Вам обязательно нужно хорошее понимание структур данных и алгоритмов. Большинство собеседований, особенно на стартовые должности, включают задания по кодированию — на веб-сайте или вживую, на белой доске.

Намного более подробную информацию и советы читайте в вики /r/cscareerquestions.

Что делать дальше?

Больше не новичок

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

Программирование — лишь инструмент

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

Как улучшить навыки программирования

Многие люди, занимающиеся программированием, начинают бояться, что им недостаточно знаний. Поэтому многие стремятся усовершенствовать свои навыки. Но на данном этапе есть только один способ сделать это — практиковаться. Существует много сайтов и источников для тренировки, например, /r/dailyprogrammer, CodeWars, HackerRank, Project Euler и многие другие.

Разное

Как обучить программированию ребёнка?

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

Scratch — просто потрясающий инструмент для детей 8-16 лет, разработанный Массачусетским технологическим институтом. Он запускается через браузер без установки дополнительного ПО.

Также можете заглянуть на /r/ProgrammingForKids — сабреддит посвящён именно этому вопросу. Ресурсов множество.

Как делать вклад в open source-проекты?

Участвуйте в проектах группы /r/learnprogramming на GitHub! Её создал jfredett специально для размещения проектов, с помощью которых начинающие программисты смогут освоить отрытую разработку, взаимодействуя с опытными программистами и менторами.

Группа сформирована недавно, несколько людей занимаются её продвижением.

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

Вот несколько старых веток на тему работы с open source-проектами.

У меня вопрос по Си/Python/другому языку.

Поищите ваш вопрос в наших вики по конкретному языку:

Там нет моего вопроса. Что мне делать?

Посмотрите краткое руководство reddit по устранению неисправностей для начинающих и страницу ЧаВо используемого вами языка — возможно, ответ на ваш вопрос находится на одной из страниц. Если нет — можете постить!

Поищите ваш вопрос в наших вики по конкретному языку:

Вопросы, связанные с карьерой, также смотрите в /r/cscareerquestions.

Да, мой вопрос есть в ЧаВо, но я хочу получить ответ от реального человека.

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

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

Как редактировать вики /r/learnprogramming (включая эти ЧаВо)?

Мы приветствуем ваш вклад, но чтобы получить право редактирования, вам нужен аккаунт, зарегистрированный не менее 30 дней назад и коммент-карма не менее 200 в данном сабреддите (не в целом на reddit). Как только эти условия будут выполнены, в заголовке вики появится кнопка «редактировать». Если вам не хватает времени или кармы, просто создайте обычный пост на тему с текстом, который хотите добавить: если он будет хорошего качества, кто-то из тех, кто может редактировать, почти наверняка опубликует его за вас.



Обучение программированию — всё по этой теме для программистов

Учимся разрабатывать на Golang. Урок 10: многопоточность, примитивы синхронизации

Видео с подробным объяснением примитивов синхронизации в языке Golang и примерами их использования.

Учимся разрабатывать на Golang. Урок 9: многопоточность, горутины и каналы

Это видео познакомит вас с горутинами и каналами в Golang. Вы научитесь работать с многопоточными приложениями.

Как программировать с детства и создавать большие проекты уже в школе? Юный программист ответил на вопросы из комментариев

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

Учимся разрабатывать на Golang. Урок 8: тестирование с помощью стандартной библиотеки

В языке Golang есть стандартная библиотека для тестирования. В этом видео мы научимся с ней работать.

Q/A-тред: задавайте вопросы и отвечайте на вопросы других пользователей

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

Изучение Golang в 2021 году: почему это просто, интересно и выгодно

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

Учимся разрабатывать на Golang. Урок 7: работа с ошибками и интерфейс Reader

Автор раскрывает особенности работы с ошибками в Golang, а также рассказывает про интерфейс Reader, который позволяет прочитать поток байтов.

Учимся разрабатывать на Golang. Урок 6: интерфейсы

Автор видео помогает разобраться с одной из самых больших и часто непонятных тем в Golang — интерфейсами. Подробное объяснение с примерами.

Учимся разрабатывать на Golang. Урок 5: функции и методы

Пятая серия видеокурса, посвящённого основам Golang. Автор помогает разобраться с функциями, замыканием, методами структур и указателями.

Как создавать первые большие проекты уже в школе? Чему учат в Яндекс.Лицее? Школьник-программист ответит на ваши вопросы из комментариев

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

Учимся разрабатывать на Golang. Урок 4: итератор for range и структура map

Продолжаем изучать основы Golang. На этот раз автор рассказывает и показывает на примерах работу итератора for range и структуру map.

Видео: Необычный Python. Паттерны, продолжение. Урок 5

В пятом уроке видеокурса автор продолжает рассказывать о паттернах и показывает реальные примеры их использования.

Реально ли стать программистом за 3 месяца? Возьмут ли на работу после обучения в буткемпе? Эксперт ответит на ваши вопросы из комментариев

CEO и наставник онлайн-буткемпа по программированию Turing Bootcamp Роман Гордеев расскажет всё об обучении в формате буткемпа и перспективах выпускников.

Учимся разрабатывать на Golang. Урок 3: указатели, структуры, массивы и слайсы

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

Видео: Необычный Python. Интерфейсы и паттерны. Урок 4

В очередном видео автор рассматривает интерфейсы и паттерны Python. Подробное объяснение и демонстрация реальных примеров.

Как стать разработчиком с нуля

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

Видео: Необычный Python. Полиморфизм, инкапсуляция и перегрузка методов. Урок 3

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

Учимся разрабатывать на Golang. Урок 2: циклы, ветвления, оператор defer

Второй урок по основам языка из курса по разработке на Golang, цель которого — создать полноценное приложение с API, бизнес-логикой и базой данных.

Учимся разрабатывать на Golang. Урок 1: основы языка, первое приложение и веб-сервер в 3 строки

Этот видеокурс сделает изучение Golang более практическим. В первом уроке вы познакомитесь с основами языка и начнёте разрабатывать приложение.

Видео: Необычный Python. Циклы, классы и декораторы. Урок 2

Продолжение серии уроков, которые помогут создать первое приложение на Python. Во второй части — знакомство с циклами, классами и декораторами.

Видео: основы Python и разработка первого приложения с помощью FastAPI. Урок 1

Автор объясняет основы Python, различия функционального программирования и ООП, а также показывает, как разработать приложение c помощью FastAPI.

Как детей обучают работе с Python

Сегодня мы живем в мире, где дети могут научиться программированию в самом раннем возрасте. Кодинг пригодится им на протяжении всей жизни: в детстве он развивает логическое мышление, а с возрастом…

Как заработать на программировании: делитесь кодом и знаниями

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

9 мобильных приложений для изучения программирования

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

Программирование для детей: 10 обучающих приложений

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

Как найти действительно хороший курс по разработке: 8 шагов на пути к правильному выбору

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

Я застрял! — 5 советов как выйти из ступора и начать программировать

Начать программировать может быть сложно, потому что мозгу нужно перестроиться от объектов реального мира к абстракциям. Рассказываем что с этим делать.

Как не бросить обучение программированию – 7 проверенных способов

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

10 программистов-самоучек, ставших преуспевающими разработчиками | by Дмитрий ПереводIT | NOP::Nuances of Programming

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

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

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

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

Лексис Хансон окончила колледж по направлению “Бизнес и финансы”. В дальнейшем она стала преуспевающим аккаунт-менеджером, но при этом чувствовала, что эта работа не даёт ей полностью раскрыть себя. Её склонность к критическому мышлению, логике и числам порождала в ней тягу к созданию чего-либо, к разработке.

В связи с этим она решила записаться на мастер-класс RailsBridge, где получила истинное наслаждение от каждой проведённой там минуты. Вскоре после этого один знакомый инженер-разработчик порекомендовал Лексис некоторые хорошие обучающие ресурсы, что окончательно разожгло в ней огонь. Когда она уже достигла стадии поиска работы, то сначала встретила несколько отказов. Тем не менее она сохраняла упорство и в конце концов оказалась перед выбором между тремя хорошими предложениями: одно из компании FAANG, второе от стартапа и последнее от компании, в которой она уже работала.

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

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

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

Бостон был для неё возможностью начать всё с нуля, учитывая то, кем она хотела бы стать. Предпосылки к этому возникли, когда она пообщалась со знакомым человеком, который закончил университет в Хьюстоне, получив степень в биологии, но в итоге нашёл себя в разработке ПО для iOS. Он прошёл обучающий курс и получил работу разработчика iOS, не имея в этой области соответствующей степени. Этот пример вдохновил Ненну, и она погрузилась в самообучение. Её врождённое любопытство, а также страсть к самообразованию и технологии в итоге привели её в O’Reilly Media в качестве разработчика, где она занялась внедрением инноваций в их обучающую онлайн-платформу.

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

Джейсон Ванг — из семьи иммигрантов, прибывших в Америку на поиски лучшей жизни. Он поступил в университет на сестринское дело, затем переквалифицировался в международный бизнес, после чего на третьем году обучения решил бросить учёбу. Переехав в Сиэтл, он несколько лет перебивался случайными заработками и размышлял о решительном переходе в индустрию IT. Благодаря поддержке родителей и воодушевлению со стороны друзей, летом 2018 он принял решение “всё или ничего”.

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

Он отлично освоил алгоритмы и структуры данных, не переставал писать код, изучал сетевые ресурсы, старался всё делать профессионально, проводил время на форуме программистов и никогда не утрачивал веру в себя.

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

Так продолжалось, пока он случайно не попал на занятие по компьютерной науке, где он осознал, что должен посвятить себя обучению и в итоге решил забросить это приложение. С течением времени он сбалансировал своё поведение и стал относиться к обучению более серьёзно. Позднее он уже получал удовольствие от программирования и в итоге начал карьеру в качестве разработчика ПО.

Он начал фокусироваться на процессе, а не на конечном результате, создал прочное основание, стал завсегдатаем Stack OverFlow, организовал среду, позволявшую совмещать ему учёбу и работу, а также поддерживал связь с людьми через Meetup.com

Джонатан был типичным подростком, вынужденным к моменту окончания школы сделать один из важнейших выборов в жизни — что именно он хочет изучать в колледже. Он решил поступить на “Обеспечение поставок и логистику”, но спустя два года обучения, Джонатан был обеспокоен чувством неудовлетворённости, которое стал считать чем-то обыденным для студента.

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

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

“Дайте мне шесть часов, чтобы срубить дерево, и я потрачу первые четыре на заточку топора.” — Авраам Линкольн.

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

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

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

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

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

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

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

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

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

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

Спустя два года она стала инженером ПО и возглавила связи с разработчиками в компании Oikos.

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

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

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

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

Самое важное для разработчика-самоучки:

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

Будьте инициативны

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

Продолжайте учиться

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

Создайте прочное основание

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

Ставьте цели и придерживайтесь их

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

Интернет

Использование интернета может оказать существенное влияние на достижение успеха. Никогда нельзя предугадать, насколько окружающие могут помочь, а люди в IT среде зачастую очень к этому расположены. Возьмите пример с Джейсона: познакомьтесь с как можно большим числом профессионалов. Ходите на семинары, пишите сообщения людям на разных платформах, посещайте технологические факультеты и не стесняйтесь обращаться к преподавателям и студентам, которых там встречаете. Можете даже ставить цели по знакомству с определённым числом людей каждую неделю. Возьмите с собой записную книжку, задавайте вопросы и записывайте ответы. Эти люди либо уже находятся там, где хотите оказаться вы, либо идут с вами по одному пути, поэтому учитесь у них.

Будьте настойчивы

Если бы все программисты сдавались при возникновении сложностей, то в мире бы их вообще не было. Если вы легко сдаётесь перед лицом проблем, то никогда не сможете достичь успеха. Вспомним Лексис. Когда она начала искать работу, то несколько раз получала отказ. Тем не менее она продолжала упорствовать и в итоге получила аж три хороших предложения на должность инженера: одно от компании FAANG, второе от стартапа и третье от компании, где уже была трудоустроена.

Верьте в себя

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

Будьте деятельны и не переставайте писать код

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

Возьмите пример с разработчиков, о которых прочитали. Пусть их истории успеха служат для вас мотивацией и напоминанием о том, что раз смогли они, значит сможете и вы. Подумайте, сможете ли вы применить какую-либо из их стратегий в своей жизни? Возможно, одна из этих историй зародила в вас идею, которую вы захотите применить в своём случае? Если так, то стоит приступать к действию!

Читайте также:

Читайте нас в телеграмме, vk и Яндекс.Дзен

Руководство разработчика-самоучки по программированию

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

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

К счастью, есть альтернатива, которую выбрали многие известные разработчики программного обеспечения: путь самоучки.При обучении программированию вы учитесь по собственному расписанию, используя бесплатные или платные онлайн / офлайн ресурсы.

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

Прежде чем мы начнем, вы должны знать, что эта статья изначально была моим докладом на сессии Developers In Vogue MTB.Я решил превратить его в статью для большей доступности после получения хороших отзывов.

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

Итак, с чего начать?

При обучении программированию вы должны пройти пять этапов:

  1. Выберите нишу.
  2. Найдите структурированные учебные ресурсы для своей ниши.
  3. Узнать.
  4. Постройте что-нибудь, что угодно!
  5. Сеть.

Давайте рассмотрим каждый этап более подробно.

Выберите нишу

« Если вы хотите добиться успеха, ограничьте себя.

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

Разработка программного обеспечения очень разнообразна и может принимать разные формы. Начните с обзора того, что включает в себя программирование и разработка программного обеспечения в целом.

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

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

  • Чего вы надеетесь достичь, изучая код? Вы хотите зарабатывать деньги на фрилансе, получить хорошую работу или реализовать идею стартапа?
  • Какие системы вы хотите построить? Веб (внешний или внутренний), мобильный (Android или iOS), настольный, встроенный, аналитика данных и т. Д.

Это не означает, что вы не можете опробовать новые области или экспериментировать позже в своей карьере, но начните с одной.

Найдите структурированные учебные ресурсы для своей ниши

Поздравляем, вы выбрали нишу среди всех возможных вариантов.

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

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

  • Какие языки и технологии используются в этой области? Составьте список того минимума, который вам нужно выучить для достижения своей цели из предыдущего шага.Здесь упор делается на минимум просто потому, что вам не нужно ждать, чтобы изучить все в выбранной вами области, прежде чем сделать первый шаг к своей цели. Вы будете ждать очень долго.
  • Какие инструменты вам нужны? Узнайте, какие инструменты вам нужно изучить. Редактор кода? Какое-то программное обеспечение? Идите и установите их.
  • Каков порядок обучения? Большинство полей требуют, чтобы вы сначала изучили один инструмент / язык, а затем другой. Не забывайте всегда начинать с основ и двигаться дальше.

Если у вас есть дополнительные вопросы относительно конкретной ниши, вы можете использовать Twitter или Facebook, чтобы найти людей, которые активны в выбранной вами нише. Напишите им сообщение и сразу расскажите, чем они могут вам помочь. Вы будете удивлены, насколько люди в техническом сообществе готовы помочь.

Для Twitter: вот ветка, в которой перечислены активные люди в различных технических областях в Twitter, за которыми вы можете следить и готовы ответить на вопросы, связанные с их областью, от Hacksultan.

В конце этой статьи вы найдете список отличных бесплатных учебных ресурсов.

Learn

«Если вы погонитесь за двумя кроликами, вы не поймаете ни одного».

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

Будьте последовательны

Первое, что нужно сделать, — это выделить время на обучение.Установите определенное время каждый день в своем распорядке дня, в течение которого вы будете учиться и относиться к этому эгоистично.

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

Ставьте цели

Кроме того, для эффективного обучения вы должны ставить еженедельные цели, чтобы вы могли нести ответственность.

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

Что вы хотите знать или уметь делать в конце месяца? Как вы структурируете свое обучение в неделю, чтобы достичь этого? Запиши это.

Оставайтесь сосредоточенными

Также важно не забывать сосредоточиться на изложенном вами плане обучения и выбранном вами учебном ресурсе.

В технической сфере всегда есть блестящий новый объект — что-то новое, чему можно научиться.Не увлекайтесь и не расстраивайтесь, поэтому вам понадобится много внимания. Одно завершенное руководство лучше, чем 10 учебных пособий.

Построй что-нибудь! Что-нибудь.

«Разница между вами и теми, у кого есть талант, — это практика; ее очень много».

Как начинающий разработчик, легко застрять в обучающей зоне или «обучающем аду». Многие люди застревают в этом и слишком долго остаются новичками. Здесь вы смотрите учебник за учебником, даже не пачкая руки.

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

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

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

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

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

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

Сеть

Сеть означает просто учиться публично и выставлять себя на всеобщее обозрение. Вы мало выиграете, если будете изолированным. Итак, как вы там себя выставите?

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

Вот список некоторых глобальных сообществ удаленных технологий, к которым может присоединиться Боладжи Айодеджи. Также ищите местные сообщества в вашем городе.

Продай себя

Возможность больше не доходит до самых квалифицированных — она ​​переходит к наиболее квалифицированным.

Продажа себя означает говорить о себе и о том, чем вы сейчас занимаетесь.Это даст вам больше информации и может открыть для вас множество возможностей.

Создайте учетную запись GitHub и введите туда код. Создайте аккаунт в Twitter и расскажите о том, что вы изучаете или строите.

Задавайте вопросы

Задавайте интересные вопросы — это еще один способ наладить контакты и представиться другим людям. На самом деле нет ничего постыдного в том, чтобы задавать вопросы.

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

Совет: При обращении к вам лучше всего отправить несколько заранее подготовленных вопросов, а не просто «Привет» и попросить их время.

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

Пример сообщения может быть:

« Здравствуйте, меня зовут <вставьте имя здесь>, надеюсь, у вас все в порядке. Я уже давно смотрю ваш контент и вижу, что вы разбираетесь в <вставьте поле здесь>. Я пытался понять <вставьте здесь проблему>. Я пробовал <вставить подходы, которые вы использовали, чтобы попытаться решить вашу проблему> Не могли бы вы помочь <вставить то, что вам нужно>. Спасибо.

Заключение

Я надеюсь, что эта статья внесла некоторую ясность в ваш путь к изучению кода для новичков.

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

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

А теперь иди и будь отличным!

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

Front end Web Development:

UX Design:

Back end Web Development:

Android Development:

iOS Development:

Data Science:

Cloud & DevOps

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

Веб-разработка

Наука о данных

Дизайн пользовательского интерфейса / пользовательского интерфейса

Разработка под Android

Если вам это понравилось, загляните в мой блог и подпишитесь на меня в Twitter мне DM.

3 распространенных ошибки программистов-самоучек, которые вы, возможно, делаете — Книги по кодексу

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

Как «гибридный» программист-самоучка, который посещал уроки информатики, но не получил степени CS, я с каждым днем ​​становлюсь все ближе к командному самообучению, особенно сейчас.

Рекламные ссылки В одном осеннем семестре я проходил курс математики в местном общественном колледже. Этот класс был лишь одним из бесконечной череды курсов математики и физики, которые учитывались для получения степени CS. Когда я работал на полную ставку, мои ночи и выходные были истощены.Я не занимался программированием, чтобы не отставать от основных классов CS.

Безнадежно, я чувствовал, что конца не видно. Я подумал про себя: «» Когда я смогу получить эту степень, чтобы сосредоточиться на тех навыках, которые имеют значение? Я уже работал веб-разработчиком и в настоящее время занимаюсь программным обеспечением, но я хотел перейти на следующий уровень в своей карьере. Это длилось вечно, и я не заботился о себе — не находил способности готовить для себя или заниматься спортом.

При такой скорости я смотрел на годы работы. И не было финиша — не было момента знать, когда я успешно добрался до .

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

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

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

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

Программист-самоучка говорит:

[D] Не забывайте, что некоторые из самых успешных людей в мире — программисты-самоучки. Стив Возняк, основатель Apple, программист-самоучка. То же самое и с Маргарет Гамильтон, получившей президентскую медаль свободы за свою работу над космическими миссиями НАСА «Аполлон»; Дэвид Карп, основатель Tumblr; Джек Дорси, основатель Twitter; и Кевин Систром, основатель Instagram.

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

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

10 программистов-самоучек, которые стали разработчиками на полную ставку | Анжелика Дитцель

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

Будьте изобретательны

Помните, что практически все, что вы хотите узнать, можно найти в Интернете. Ключ к тому, чтобы стать отличным разработчиком, — это способность решать проблемы и находить ответы самостоятельно. Как и Антон , он находил ресурсы в Интернете и обучался самостоятельно, не тратя ни копейки! Воспользуйтесь этими бесплатными образовательными ресурсами.

Никогда не прекращайте учиться

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

Создайте прочный фундамент

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

Ставьте цели и придерживайтесь их

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

Сеть

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

Будьте настойчивы

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

Верьте в себя

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

Действуйте и никогда не прекращайте кодировать

Когда вы начнете изучать основы программирования и получите необходимую основу, используйте полученные знания и создайте несколько проектов. Не слишком увлекайтесь изучением всего, что вы можете сразу, применяйте полученные знания на практике. Лучший способ учиться — практиковать себя. Как и Джойс , она применила то, чему научилась, и построила множество проектов, чтобы закрепить свои навыки.

Почему вам следует стать программистом-самоучкой?

Возможно, вы слышали о Джек Дорси (Twitter) , Марк Цукерберг (Facebook) , Кевин Систром (Instagram) и многих других.Да, это одни из лучших программистов и технических энтузиастов, которые в настоящее время правят миром. Но задумывались ли вы когда-нибудь о том, что сделало их такими успешными и опытными в мире программирования? Нет, это не высшее образование, не какой-либо конкретный курс или какой-либо сертификат, но это их решение следовать по пути Самоучитель по программированию вместе с большим трудом, мотивацией и терпением, которые привели их к совершенству!

Теперь возникает вопрос — Кто такой программист-самоучка? Хорошо, давайте проясним здесь.Быть программистом-самоучкой не означает не ходить в школу или не следовать ни за одним инструктором, это просто означает, что когда вы не ждете, пока кто-то возьмет на себя инициативу от вашего имени и приготовится преуспеть в программировании навыки любым способом — будь то учебные курсы, книги, видео, дискуссии и т. д., тогда вы на пути к тому, чтобы стать программистом-самоучкой. Путь программиста-самоучки длится не несколько дней или месяцев, но требует большого терпения и преданности делу.Однако этот упорный труд и терпение вознаграждают вас множеством преимуществ, некоторые из которых перечислены ниже:

  • Программирование-самоучка поможет вам стать экспертом в решении проблем, поскольку вы сталкиваетесь с множеством препятствий на этом пути.
  • Это поможет вам лучше понять, как все работает, потому что вы разобрались в этом самостоятельно.
  • В этом процессе вы узнаете различные алгоритмы и методологии, которые вы не найдете ни в одной школе или курсе.
  • Помимо программирования, он помогает вам развить другие связанные навыки, такие как тестирование, развертывание проектов и т. Д.

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

Исследуй, исследуй и исследуй!

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


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

Войдите в мир программирования!

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

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

Учимся на практике

Итак, после прочтения всех этих книг, просмотра видео, посещения лекций и т. Д. Можете ли вы считать себя программистом? Большое нет! Даже если вы прочитаете тысячи книг и посмотрите бесчисленное количество руководств, но не примените это, вы ничего не знаете.Итак, что вам нужно сделать, так это реализовать все те концепции программирования, которые вы изучили. Вы можете сделать то же самое, установив интегрированную среду разработки (IDE) , такую ​​как PyCharm , Eclipse , Netbeans и т. Д. В вашей системе в соответствии с вашим языком программирования. Вы можете начать его с создания базовых программ, таких как замена чисел на , факториальная программа , серия Фибоначчи и т. Д., А затем перейти на более высокий уровень.

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

Кроме того, когда вы много практикуетесь, вы знакомитесь с синтаксисом языка программирования, что весьма полезно.

Стройте логику и решайте проблемы!

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

Когда вы начинаете строить логику самостоятельно, вы более убедительно понимаете, как все работает и почему что-то не работает (И это одна из лучших черт программиста-самоучки!) .Чтобы еще больше улучшить свои навыки решения проблем, вы также можете выбрать соревновательное программирование. Существует множество платформ, на которых вы можете практиковаться в конкурентном программировании, таких как GeeksforGeeks , TopCoder и т. Д.

Build Projects

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

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

После всего вышеперечисленного одно лучшее, что вы, должно быть, узнали о программировании с самообучением, — это то, что вы не ограничены никакими препятствиями, будь то ограничение по времени, конкретная учебная программа или что-то еще. Вы можете нырять, тем глубже вы хотите погрузиться в мир программирования, ведь никто вас не остановит! Да, в этом путешествии по программированию-самоучке вы много раз терпите неудачу, и вам придется вложить много тяжелой работы и усилий в этот процесс.Но цель этого путешествия непревзойденна! Помните одну вещь: какой бы путь вы ни выбрали: программирование-самообучение или любую степень / курс, успех всегда зависит от упорного труда, и если вы сделаете все возможное, вы обязательно добьетесь успеха.


Программист-самоучка: полное руководство по профессиональному программированию 1, Althoff, Cory, eBook

«Я всегда держу несколько экземпляров The Self-Taught Programmer , чтобы дать всем, кто приходит ко мне за советом по вопросам карьеры.»

Робин Абрамс , член правления, HCL Technologies, FactSet Research, Lattice Semiconductor и Sierra Wireless


» Хотите научиться профессионально программировать? Следуйте совету Кори ».

Дэвид Филлипс , соучредитель, Hackbright Academy


« Я невероятно впечатлен этой книгой ».

Джоанн Бьюкенен , старший научный сотрудник Института мозга Аллена Наука


«Обучение программированию приобретает все большее значение в финансах.Книга Альтхоффа научила меня навыкам, которые необходимы мне, чтобы оставаться конкурентоспособным ».

Дерек Шефер , старший финансовый менеджер, Чарльз Шваб


« Программист-самоучка было приятно читать — то, о чем я никогда не думал Я бы сказал о технической книге ».

Мелинда Сакс , бывший писатель, редактор, San Jose Mercury News


« Одна из лучших книг по дизайну программного обеспечения всех времен »

— BookAuthority

Я потратил год на написание Программиста-самоучки .Это был захватывающий и полезный опыт. Я относился к своей книге как к программному проекту. Закончив его писать, я создал программу, которая выбирала все примеры кода из книги и выполняла их на Python, чтобы убедиться, что все 300+ примеров работают правильно. Затем я написал программу для добавления номеров строк и цвета в каждый пример кода. Наконец, я попросил группу из 200 новых программистов «бета-версию» прочитать книгу, чтобы определить плохо объясненные концепции и найти любые ошибки, которые пропустила моя программа.

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


Надеюсь, вы научитесь читать мою книгу так же много, как я ее писал. Удачи в программировании!

Ваши первые несколько шагов как программист-самоучка


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


Я не удачливый или одаренный разработчик, работающий в компании из списка Fortune 500, а обычный человек, который безумно любит решать проблемы и программировать.

Почему это имеет какое-то значение? Я лично считаю, что если вы в конечном итоге будете заниматься любимым делом, все будет происходить более естественно, и вы ХОТИТЕ добиться прогресса, необходимого для достижения успеха.

Сегодня исполняется 50 дней моего обучения программированию без формального опыта.

За это время мне удалось получить твердое представление об адаптивном веб-дизайне, а также об алгоритмах и структурах данных JavaScript, охватив более 400 модулей и получив сертификаты для обоих.

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

Вы также можете сделать это, потому что ВЫ хотите, потому что вы хотите.

Это будет непросто

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

Нет ничего хуже, чем люди говорят: «О, это? Это просто!» а затем вы начинаете задаваться вопросом, не годны ли вы для этого только потому, что сравниваете себя с кем-то, кто находится на другом уровне опыта, имеет другое образование и учится иначе, чем вы.

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

Никто и никогда не говорил, что программирование будет простым. Это не так. Как только вы это примете, вы можете начать направлять свою энергию туда, где это действительно важно; себе .

Просто продолжать

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

«Мотивация непостоянна и мимолетна.Он не может существовать как единственная причина для достижения чего-то ».

И знаете что? Они были абсолютно правы!

Фразы из печенья с предсказанием на красивом фоне не станут причиной того, что вы в чем-то преуспеете. ВЫ , ваше время, ваши усилия и ваша чистая преданность тому, что вы любите; THAT станет причиной вашего успеха!

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

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

Ставьте себе цели

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

Это также способ оглянуться на свой собственный прогресс, потому что, когда я начал это путешествие, я ничего не знал о веб-разработке, и менее чем за месяц я построил свой первый проект, фронт и бэкэнд, используя только навыки Я приобрел в то время благодаря бесплатным источникам информации, таким как freeCodeCamp.

Будь честен с собой

Итак, с учетом сказанного спросите себя; почему ты это делаешь? Вы должны быть в этом на 100% для себя.Это должно быть то, чем вы хотите заниматься, потому что вам это нравится, а не потому, что вы должны это делать.

Будьте предельно честны с самим собой, объясняя, почему вы это делаете. Если вы пытаетесь по неправильным причинам, вы сделаете это в тысячу раз труднее, чем нужно; страсть нельзя научить или заработать.

Если вы делаете это, потому что вам это нравится, потому что вы взволнованы этим и что вы можете достичь с помощью навыков, которые вы получите от этого, то вы уже на полпути к достижению успеха!

Присоединяйтесь к приветливому сообществу

Но, конечно, просто быть возбужденным или наслаждаться чем-то может быть недостаточно, поскольку мы все в какой-то момент сталкиваемся с одной или двумя стенами, а в программировании вы можете столкнуться с несколькими стенами в день!

Вот почему это отличная идея — принять вызов или присоединиться к приветливым сообществам, таким как # 100DaysOfCode, #CodeNewbie или #WizardsInTech, которые являются одними из самых активных и дружелюбных, с которыми я сталкивался в Твиттере.

Просто добавьте к своему сообщению один или несколько хэштегов сообщества, и вы уже являетесь его частью!

Не бойтесь ошибаться

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

Если вы не делаете ошибок и не анализируете, что пошло не так и как вы можете улучшить, то как вы на самом деле учитесь?

Я считаю, что делать ошибки — это важная часть обучения, и если вы их не делаете, что ж! повезло тебе!

Применяйте то, что вы узнали

Старайтесь не просто читать книги, смотреть учебные пособия и т. Д.На самом деле СТРОЙТЕ что-нибудь из того, что вы узнали! Вы читали раздел «Hello World»?

Отличный материал! Теперь сделайте перерыв и сделайте это в небольшой папке проекта, которую вы храните!

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

Не спеши

Одновременно; не испытывайте давления, заставляя переходить от текущего раздела, которым вы заняты, если вы не совсем понимаете его.

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

Вы никогда не знаете, когда вам понадобится эта информация, поэтому не стесняйтесь принимать ее и строить вокруг нее. Если вам нужно время, сделайте это; вы не соревнуетесь ни с кем, вы делаете это за себя.

Не зацикливайтесь на стандартах

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

Но знаете что? Все, что я когда-либо делал, это наполняло мое путешествие до сих пор ненужным беспокойством и помещало меня в пространство, где я продолжал сомневаться в себе, будучи «слишком напуганным», чтобы совершить «ошибку» из-за страха перед тем, что могут подумать другие, или из-за страха сделать. Что-то не так».

Помните, что я говорил ранее об ошибках?

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

Помните, зачем вы это делаете

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

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

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

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

Знай, когда двигаться дальше

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

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

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

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

Строить вещи

Стройте проекты на НИЧЕГО, просто создавайте их! Подумайте о том, что вы хотели бы построить, независимо от того, было это сделано раньше или нет; это для ВАС, больше ни для кого.

Лучший способ учиться — строить проекты.

Почему?

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

Что-то не работает должным образом? Вам нужно будет выяснить, почему. Нет никаких ярлыков, никаких читов; только вы и ваша способность решить проблему наилучшим из возможных способов.

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

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

Это на 100% вы, никаких уловок, никаких поисков «мотивации», только вы, добивайтесь работы и, как следствие, гордитесь этим. Что не любить?

Google Вещи

Используйте Google столько раз, сколько вам нужно! Большинство ресурсов, которые вы в конечном итоге просматриваете, могут оказаться расплывчатыми, поэтому вам нужно понять образ мыслей о поиске в Google.

Используйте ключевые слова, чтобы указать, что вам нужно, а не целые предложения. И используйте такие ресурсы, как W3Schools, MDN Web Docs и Stack Overflow, чтобы получить действительно полезную информацию.

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

Не сравнивайте себя

Никогда не сравнивайте себя с другими! Скорее всего, это причина номер один, по которой люди разочаровываются и в конечном итоге сдаются!

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

Стой!

Это не соревнование. Ты все еще пытаешься учиться, помнишь? Все учатся в разном темпе, и это вполне приемлемо!

Я прошел всю учебную программу по веб-дизайну freeCodeCamp, рассчитанную на 300 часов работы, всего за 10 дней, но при этом я потратил более 20 дней на учебную программу JavaScript, тогда как другие сделали это за 10 или меньше дней…

Я лучше или хуже всех? Нет! Я преуспеваю в том, что понимаю от природы, и борюсь с тем, чего не понимаю.

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

Вы получили это

Не ищите подтверждения ни у кого, кроме себя. Верьте в себя, сделайте это для себя. Нет никаких ограничений. Все достижимо. Единственное, что может вас остановить, — это вы. А теперь иди и живи своей мечтой!


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

Я также ежедневно транслирую свое путешествие по кодированию на twitch.tv/DeadmanoDoesCode , поэтому, если вы хотите зайти и посмотреть, с чем я работаю, поделитесь советом, задайте любые вопросы или просто просто чат, тогда добро пожаловать!

Некоторые полезные ссылки

Идеи приложений от florinpop17.
Куинси Ларсон не научится просто кодировать .

Учебный курс

против самообучения: полное руководство

Автор Liz Eggleston

Последнее обновление 28 декабря 2020 г.

После того, как вы приняли решение научиться программировать, будет ли курс обучения кодированию вашим единственным выходом? Некоторые из самых успешных стартапов были основаны программистами-самоучками, включая Instagram и Tumblr. Так зачем вам тратить десятки тысяч на учебный курс по программированию, если вы можете научиться самостоятельно? Чтобы узнать это, мы получили советы от участников учебных курсов, программистов-самоучок и основателей учебных курсов.Вот 6 вещей, которые следует учитывать при принятии решения, стоит ли вам учиться программировать или посещать учебный курс.

Ваш опыт программирования имеет значение

Это зависит от вашего опыта и опыта программирования. Если у вас есть [уже] большой опыт (диплом по информатике, предыдущая работа и т. Д.), Но вы просто не знаете конкретных языков, возможно, вы сможете подобрать его самостоятельно. — Кен Мазаика, Mentor @ theFirehoseProject, через Quora

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

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

Обязательная программа обучения

Чем больше вы узнаете, тем больше понимаете, чего НЕ ЗНАЕТЕ. Если вы начинаете ничего не зная, практически невозможно создать свой собственный учебный план или знать, с чего начать. — Шазам Фельдбро, выпускник Нью-Йоркской академии кода и дизайна, через Quora

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

Эрик Уайз, основатель Software Craftsmanship Guild, пишет,

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

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

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

Знай свой собственный стиль обучения

Насколько вы мотивированы и дисциплинированы? Можете ли вы привлечь к себе ответственность? Проведите честную самооценку, прежде чем решите, что самообучение вам подходит. Фабиан Тот из Learning Fuze честно описывает свою попытку (и неудачу) научиться играть на фортепиано, а также успехи, которые он испытал, беря уроки у опытного профессионала.Хотя это и не невозможно, требуется невероятная самодисциплина, чтобы научиться новому навыку.

Фактически, исследование Калифорнийского университета в Лос-Анджелесе показало, что большинство людей неправильно понимают, как они учатся, что снижает их способность учить себя. Dev Bootcamp и основатель CodeUnion Джесси Фармер делится через Quora, что как программист-самоучка он мог относиться к этому опыту: «Только когда я учился самостоятельно в течение нескольких лет , я смог оглянуться назад и Посмотрите, как я был безнадежно сбит с толку месяцами напролет.”

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

Сколько времени (и денег) вы можете себе позволить?

Обычно это занимает от шести до 12 месяцев на полную ставку. Оглядываясь назад, я думаю, что если бы у меня было время для этого, когда я был полностью занят в другом месте, я думаю, это было бы бесполезно. — Крис Сансонг, программист-самоучка, через Mashable

С простой точки зрения, гораздо более целесообразно научиться программировать, прежде чем тратить тысячи долларов на учебный курс по программированию, независимо от того, работаете вы или безработный.Но если вы можете удвоить или утроить свою текущую зарплату, стоит ли это того? Рассмотрим следующий сценарий от выпускника App Academy на Quora:

Допущения:

Маршрут учебного лагеря: Предположим, 3 месяца + 1 месяц поиска работы. 15 тысяч долларов из кармана и 4 месяца безработицы. В начале 5-го месяца вы начинаете получать почтовый налог ~ 5000 долларов в месяц, плюс-минус немного.

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

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

Если идея уплаты 10–15 тысяч вперед кажется невозможной, подумайте о App Academy, Telegraph Academy и других учебных курсах по программированию, предлагающих стипендии и варианты отсрочки платежа.

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

Сети студентов и выпускников — плюс

Что касается знаний, я бы сказал, что вы можете сами найти всю информацию в эту эпоху Интернета. Однако есть еще несколько советов и навыков, которым вы можете не научиться, пока не научитесь у инструкторов и одноклассников.В связях и возможностях так много ценности, о которой я не мог бы узнать. — Джейсон Лю, Академия наук о данных Нью-Йорка, из отчета о курсе

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

Наличие поблизости других людей поможет вам в трудные времена. Иногда чувствуешь себя истощенным. Ваши коллеги будут вдохновлять вас двигаться вперед. Иногда вы не можете запустить свой код. Вы, сверстники, поможете вам в поисках ошибок. Иногда вы просто чувствуете себя глупо и не можете стать программистом. Ваши сверстники будут чувствовать то же самое, и вместе вы будете подбадривать друг друга.То, что вас поддерживают другие, имеет огромное значение. Когда ты в этой комнате в окружении всех этих решительных людей, энергия потрясающая. — Джо Авербух, выпускник App Academy, через Quora

Если у вас еще нет коллег-программистов и работы, ожидающей вас, преимущества буткемпинга бесценны.

Ставьте цели перед началом работы

На мой взгляд, если у вас много времени, но ограничены средства, вам следует посмотреть, как далеко вы можете продвинуться самостоятельно.Если вы хотите внести значимые изменения в разумные сроки, я бы посоветовал вам принять участие в структурированной программе с наставничеством, которая также помогает в подготовке к работе. — Коллин Мизони, разработчик учебных программ @ Bloc, через Quora

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

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

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

Ресурсы

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

  • Codecademy — специализированная учебная программа и упражнения на основе проектов по HTML, CSS, JavaScript, Python, Ruby и многим другим, и все это бесплатно!
  • Codebuddies.org — познакомьтесь с друзьями, получите помощь и начните парное программирование
  • Платформа алгоритмов Coding Dojo — проверьте свои навыки самообучения или подготовьтесь к собеседованию на семинаре по техническому кодированию на этой платформе, посвященной обучению алгоритмов (использует только JavaScript)
  • Учебная программа Epicodus онлайн — Хотите узнать, насколько далеко вы можете продвинуться в одиночку? Базирующийся в Портленде учебный лагерь Epicodus разместил всю свою учебную программу в Интернете бесплатно.
Об авторе

Лиз является соучредителем Course Report, наиболее полного ресурса для студентов, изучающих учебные курсы по программированию. Ее исследования цитировались в The New York Times, Wall Street Journal, TechCrunch и других. Она любит завтракать тако и проводить время, знакомясь с выпускниками и основателями буткемпов со всего мира. Ознакомьтесь с отчетом о Лиз и Курсе в Twitter, Quora и YouTube!

Пожалуйста, включите JavaScript, чтобы просматривать комментарии от Disqus.
Оставить комментарий

Добавить комментарий

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