Учитесь кодировать: мудрость и инструменты для путешествия

Опубликовано: 2022-03-11

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

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

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

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

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

Путешествие в рай для программистов начинается с одного шага.

Что ожидать

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

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

Изучение программирования не легко.

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

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

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

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

1. Выберите пункт назначения: выберите язык, любой язык

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

В любом случае, если вы точно не знаете, чем хотите заниматься в долгосрочной перспективе, я рекомендую рассмотреть только пять языков, которые обеспечивают баланс между легкостью обучения, универсальностью получаемых знаний и изобилием долгосрочной работы. перспективы: Ruby , JavaScript , Python , C и Java .

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

Интерпретируемые языки

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

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

Язык Плюсы Минусы Обычно используется для
Рубин
  • Чрезвычайно гибкий синтаксис.
  • Легко начать работу.
  • Высокий спрос способствует хорошо оплачиваемой работе.
  • Гибкость может скрыть большую часть основных процессов.
  • Низкая производительность делает его неподходящим для высокопроизводительных приложений.
  • Веб-концы. См. Ruby on Rails.
JavaScript
  • Единственный вариант для программного обеспечения в браузере.
  • Критично для каждого современного веб-сайта.
  • Чрезвычайно высокий спрос означает обилие хорошо оплачиваемых рабочих мест.
  • Сложный синтаксис иногда может сбивать с толку.
  • Более сложный, чем Ruby или Python для начинающих.
  • Веб-интерфейсы. См. React, Angular, Ember, jQuery и другие.
  • Веб-серверы. См. Node.js.
Питон
  • Элегантный, минималистичный синтаксис ввода текста нравится практикам.
  • Легко начать работу.
  • Низкая производительность означает, что он плохо подходит для высокопроизводительных приложений.
  • Плохая масштабируемость. Дизайн языка создает проблемы в больших приложениях.
  • Веб-концы. Смотри Джанго.
  • Научные исследования и ученые. См. SciPy.

Компилируемые языки

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

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

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

Язык Плюсы Минусы Обычно используется для
С
  • Может обеспечить лучшую производительность, чем любой другой «язык программирования высокого уровня».
  • Научит вас больше всего о том, как работает компьютер.
  • Наверное, самый сложный в освоении из этого списка.
  • Операционные системы.
  • Высококлассные видеоигры.
  • Встроенные системы.
  • Робототехника и искусственный интеллект.
Джава
  • Самый широко используемый язык в целом.
  • Строгая типизация заставляет мыслить ясно и эффективно.
  • Сложный синтаксис может быть громоздким для чтения и работы.
  • Многие считают его старомодным, монолитным и находящимся на грани упадка.
  • Крупномасштабные корпоративные приложения.
  • Веб-разработка.
  • Android-разработка.

HTML и CSS: не языки программирования

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

2. Начните с малого

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

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

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

3. Будьте терпеливы

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

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

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

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

4. Практика Практика Практика

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

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

Ресурсы

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

Эти инструменты и ресурсы помогут вам научиться программировать.

Структурированное обучение

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

Формальная университетская степень

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

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

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

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

Учебные курсы

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

Учебные курсы обычно включают от 8 до 12 недель интенсивного обучения и стоят около 10 000 долларов США. Они охватывают большой объем материала за короткий промежуток времени, в течение которого вам придется пожертвовать большинством других занятий. Но они обещают подготовить вас к реальной разработке программного обеспечения и ускорить путь к карьере программиста. Многие буткемпы завершаются карьерными днями или иным образом пытаются устроить вас на оплачиваемую работу вскоре после выпуска.

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

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

Полуструктурированное обучение

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

Итак, вы хотите быть программистом, не так ли? Эти советы и инструменты помогут вам начать работу.
Твитнуть

Массовые открытые онлайн-курсы (МООК)

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

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

  • Курсера
  • EdX
  • Удасити

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

Учебные веб-сайты с пошаговыми инструкциями

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

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

  • Академия Кана
  • Удеми
  • Кодакадемия
  • Код Мстители
  • Школа кода
  • Дом на дереве
  • Линда
  • множественное число

Это всего лишь краткий список, так что поищите и посмотрите, что еще есть!

Неструктурированное обучение

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

Веб-сайты для дрели

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

  • Exercism.io
  • CheckiO
  • CodeChef
  • CodeEval
  • Кодовые войны
  • Кодилити
  • ХакерРанг

Ролики

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

  • MIT OpenCourseWare
  • Серия лекций Стэнфордского университета

Книги

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

В заключение

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

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

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