Разное

Чтобы научиться программировать нужно программировать: 5 способов быстрее научиться программировать

Содержание

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

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

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

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

1. Изучайте примеры кода

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

2. Не просто читайте примеры кода — запускайте их!

Когда вы читаете обучающее руководство или учебник, легко посмотреть на пример и сказать: «Я понял, я понял. Да, в этом есть смысл». Конечно, вы могли понять его, но вы не знаете наверняка действительно ли вы поняли его правильно. Есть лишь один способ выяснить — сделать что-то с кодом.

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

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

Теперь скомпилируйте и запустите код. Убедитесь, что он делает именно то, что должен.

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

3. Начните писать свой код как можно раньше

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

Вы можете найти источники идей в статье «Где новичку в программировании найти упражнения и идеи для проектов?»

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

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

4. Научитесь использовать отладчик

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

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

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

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

5. Ищите больше источников

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

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

На основе статьи «5 Ways To Learn Programming Faster».

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

Как научиться программировать на любом языке — руководства на Skillbox

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

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

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

Приводим два экспертных мнения насчет того, является программирование творчеством или нет. Директор центра по подбору специалистов SymbioWay Даниил Пилипенко полагает, что это зависит от задачи:

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

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

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

Десятка лидеров по версии IEEE Spectrum.ТОП-10 на основе масштабной аналитики шведского разработчика Стефана Нильсона.Самый известный рейтинг языков программирования TIOBE index за январь 2019 года.

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

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

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

Если у вас пока нет работы программиста, начинайте писать свой стартап-проект. Разумеется, из этого ничего не выйдет — в 99,99% случаев так и происходит. Зато вы получите бесценный опыт и «потрогаете» программирование своими руками.

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

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

Статистика распространенности языков по количеству вакансий на HeadHunter.

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

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

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

Изучайте блоги разработчиков — отечественные и англоязычные, — читайте статьи на «Хабре» и других ресурсах, следите за новостями фреймворка, с которым работаете.

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

Code_is_ok — open-source-инструмент для код-ревью от компании Badoo.

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

Старайтесь получать опыт, работая с самыми современными технологиями. Например, в случае с PHP нужно практиковаться на фреймворках, а не на LAMP — наборе программного обеспечения из Linux, Apache, MySQL и PHP. Первые сейчас популярны и быстро развиваются, а второе — пережиток прошлого.

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

Например, на событии выступает спикер из «Яндекса», рассказывая, что они стали хранить файлы иначе, чем раньше. Он не объяснит в деталях, что нужно делать, — лишь обозначит тезисы. Слушателям самостоятельно нужно вникнуть в тему и узнать, как реализовывать это.

Вот несколько широко известных профильных конференций для разработчиков:

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

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

— Во-первых, можно отдохнуть и поесть пиццы. Без комментариев. Во-вторых, поговорить с другими программистами, расспросить, как они работают, поудивляться. И иногда возникает “вау”-эффект: а что, так можно было? По-новому смотришь на свои решения, переосмысливаешь их. В-третьих, на конференциях выступают спикеры, рассказывают о новинках и своих подходах к решению задач. Это очень помогает, когда хотел бы изучить новую библиотеку, но нет времени. А тут тебе всё рассказали, к тому же можно задать вопросы.

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


Курс «Профессия Java-разработчик»


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


  • Живая обратная связь с преподавателями

  • Неограниченный доступ к материалам курса

  • Стажировка в компаниях-партнёрах

  • Дипломный проект от реального заказчика

  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

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

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

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

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

  1. Вы хотите помочь.
  2. Посмотреть на возможные пути оптимизации.

В Интернете есть множество ресурсов онлайн, которые помогут вам. Если нет нужной статьи или источника, есть очень полезные форумы, типа StackOverflow, где люди могут вам помочь. Это все очень здорово, конечно. Но я часто вижу, что люди просят в качестве ответа готовую программу. Отвечая на подобные вопросы, я задаю встречный вопрос: “А что вы пробовали сделать самостоятельно для решения данной задачи?”

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

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

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

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

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

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

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

Что должен знать программист без профильного образования

Эффективное самообучение в IT-сфере. Что мы делаем не так?

Перевод: Софья Лепёхина

Источник

Сколько нужно времени чтобы научиться программировать? — Хабр Q&A

Смогу ли я самостоятельно изучить программирование до такого уровня чтобы устроиться на работу?(книги, видео уроки, гугл)
Да (Я сам такой же. Изучаю программирование уже года 2.5 (последний год конкретно, до этого так), но так и программировать качественно сам до сих пор не умею, т.е. именно писать свой source code, кот. был бы приемлем на профессиональном уровне, хотя и изучал и Swift, и Java, и даже C++, и Python. Копировать чужие программки и код — это не программирование, a обучение и дрочилка.
Сколько времени это займет?
В зависимости от сферы в какой хотите работать
(Для клЕпания сайтов — front end: недолго, для создания своих AI движков: очень долго)
Я лично, например, решил сконцентрироваться сейчас только на Python. По сути, если научиться капитально программировать (опять же, именно программировать(!), то после любой язык прогрраммирования (а для начальных прогеров синтакс) дается очень легко, т.к. понимаешь а) структурирование, б) архитектуру решения задач и в) собственно построение этого решения.
Я начинал с изучения со Swift’а для создания приложений на Iphone. С одной стороны рад, что начал с более сложного языка (а Swift — это intermediate язык по сложности), с другой нет, т.к. это было не программирование, а попытка копипастить откуда можно, чтобы что то работало, т.е. попытка сшить из носовых платков штаны, собственно, по сравнению с брюками нормальными от пиджака, также получались разноцветные шаровары, да еще и на соплях, да еще и если получались..
С чего лучше начать?
Начните с языка Python, самый легкий. Если есть английский:
1. «Learn to Program with Python» by Irv Kalb
2. www.udemy.com курсы Jose Podilla — рекомендую почти все
3. найдите сайт фоксфорд с лекциями по подготовке к ЕГЭ Тимофея Хирьянова, а потом для закрепления пройдите и все его курсы для 1 курса МФТИ (все есть на youtube)

Обязательно ли идти в универ?
Нет. По сути, если взяться конкретно за это (т.е. заниматься с 8 утра до 8 вечера, 6 дней в неделю, где то полгода-год), то можно закончить всю университетскую программу самому. Если еще есть хороший наставник, кот. подсказывает то за полгода точно можно даже хакером стать. Я все учил сам, что значительно и увеличило время изучения, так как иногда приходилось делать круги.
20 лет не поздно?
Да хоть в 60, если мозги работают. Самое главное желание.

PS От Себя.
По сути, программирование — это 3 этапа
а) структурирование, т.е. разбивка задачи на транзакции, для чего нужна логика, усидчивость и немного мозгов, т.е. само программирование здесь почти нулевое (больше нужно даже problem solving skills, но это уже отдельных навык, связанный с след. пунктом)
б) перевод затем всего этого структурирования в математический язык и алгоритмы,
т.е. знание алгоритмов, структур данных, паттернов итд итп всяких intermediate и advanced программных штук — что начинающий поймет после изучения базового синтаксиса, а также что не мало важно хороший уровень математики (матан, дискретка, линейная алгебра — 3 в особенности, ну и далее статистика, итд итп, т.е. по специализации)
c) и затем перевод это все в синтаксис, язык программирования, что со знанием базы уже становится очень просто

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

10 способов научиться программировать самостоятельно, с чего начать программировать

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

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

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

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

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

Язык, с которого стоит начать, зависит от причины изучения. (К примеру, если вы хотите создать приложение под iOS, вам лучше начать с изучения Swift). Если вы со всей серьёзностью отнеслись к намерению программировать, можно начать с языка C. Хотя выбрав Python, вам будет проще влиться в струю программирования. 

Пройдите курс Специализация Python от Coursera, стоимость $49 в месяц.


8. Начните с малого… и будьте терпеливы

Независимо от выбора языка или метода обучения, вам следует начать с самого начала. Когда Дэвид Сински (David Sinsky) научился программировать за восемь недель, он, к примеру, потратил одни выходные на изучение основ Python, а другие — на Django. Взяв учебник, он удалял написанный код и снова проходил обучающий материал с нуля. Начните с основ и будьте терпеливы к себе. Взяв первый проект в программировании, разделите его на несколько этапов. И если один из способов обучения вам не подходит, не опускайте руки — попробуйте другой.

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

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


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

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

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

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

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

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

Смотрите подборки книг по Python и Java на Литрес


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

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

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

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

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

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




Разумные советы для начинающих программистов — Разработка на vc.ru

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

30 541

просмотров

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

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

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

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

Непрерывное обучение

Каждый программист должен постоянно отслеживать технологические тенденции в мире IT: новые библиотеки, как, например, ReactJS в 2013 году, веб-приложения, такие как SPA, PWA и так далее.

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

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

Это как с желанием похудеть. Вы же не начинаете с марафона, чтобы добиться желаемого. Вместо этого можно начать с 15 минутной пробежки каждый день. Так же и с программированием, не надо учиться сутками напролет. Занимайтесь хотя бы по часу, но каждый день!

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

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

Теории и Концепции

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

Там я изучил основы Python на Codecademy и C в CS50. Так вот, я считаю: нужно просто начать. Выберите один язык программирования и начните с основ (переменные, циклы, структуры данных и т. д.).

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

Introduction to Algorithms про алгоритмы. Понимание алгоритмов и как они работают — это самое важное, что вы должны узнать, начиная изучать программирование. Вот еще парочка хороших книг: Introduction to Algorithm by CLRS and Algorithms by Robert Sedwick.

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

Практика, практика, практика

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

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

По моему примеру вы можете начать с Codecademy.

Другой классный сайт Hacker Rank. Большой выбор языков программирования, интересные упражнения и тестирования.

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

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

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

Создание проектов

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

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

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

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

Начинайте с простых целей и проектов и определите основные шаги для их достижения.

Забудьте про перфекционизм.

Покупайте и читайте книги по программированию.

Проходите курсы.

Читайте блоги, смотрите видео, посвященные программированию.

Практикуйтесь, много-много практикуйтесь.

Еще больше полезных рекомендаций 🙂

Хорошие сайты, статьи и видео:

freeCodeCamp классный сайт, посвященный веб разработке и JavaScript. Совершенно бесплатно!

Udemy CodeSchool Khan Academy очень похожи между собой, но на Udemy есть платные курсы, на Khan Academy всё бесплатно, на CodeSchool есть как бесплатные, так и платные курсы.

Влоги и YouTube каналы

Fun Fun Function канал Маттиаса Петтер Йоханссона. Раньше он рассказывал только о JavaScript, но в последнее время говорит о разработке в целом. Мне очень нравится, как он ведет свой канал.

Mayuko канал посвящен iOS разработке.

CS Dojo много информации об алгоритмах, структурах данных. Канал ведет инженер -программист из компании Google.

Joma Tech самый смешной и интересный канал из всех. Джонатан Ма-специалист по данным в Facebook. Он рассказывает о жизни программиста, дает дельные советы, основанные на его опыте.

Надеюсь, эта статья была полезной!

Пожалуйста, не учитесь программировать — TechCrunch

Базель Фараг — инженер iOS (думает). Помимо процессоров GPU, роботов и искусственного интеллекта, Базель любит изучать информатику, астрономию и философию. Когда-то его называли «Дафт-Панком людей» — фраза, значение которой ускользает от него по сей день, но он уверен, что это комплимент.

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

Если вы регулярно обращаете внимание на культурные махинации Кремниевой долины, вы, несомненно, слышали о движении «Учитесь кодировать». Политики, некоммерческие организации, такие как Code.org, и даже бывший мэр Нью-Йорка Майкл Блумберг проповедовали то, что они считают необходимым навыком для завтрашней рабочей силы.

В этом может быть доля правды, тем более что потребность Соединенных Штатов в инженерах не собирается снижаться.

Но картина сложнее.

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

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

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

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

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

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

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

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

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

Вы должны спросить себя: «А у вас он вообще есть?» и «Можете ли вы применить принцип Фейнмана и объяснить его так, чтобы другие могли вас понять?»

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

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

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

Он стал чемпионом.

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

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

Технологии в этой отрасли меняются быстрыми темпами.

Всего несколько лет назад я использовал Objective-C; теперь я кодирую почти полностью на Swift.Прямо сейчас на вакансию претендуют разработчики iOS, которые никогда не писали ни строчки на Objective-C. Swift проще в освоении, безопаснее, он использует современные парадигмы разработки и элегантен, чего никогда не было в Objective-C. Тот факт, что новые разработчики никогда не столкнутся с недостатками Objective-C, — это замечательно, но он игнорирует реальность профессии.

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

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

Что происходит с человеком, который всю ночь и день изучал Objective-C, но ужаснулся объявлению Swift на WWDC 2014? Продолжают ли они кодировать на том языке, который быстро становится языком меньшего выбора, или они начнут заново? Если вам около двадцати с небольшим лет, это может не вызвать затруднений, но если вы заботитесь о семье — с счетами, которые нужно оплачивать, и ртами, которые нужно кормить, — задача становится титанической.

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

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

Действительно.

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

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

Именно настойчивость позволяет мне оставаться в этой области.

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

Привратники везде. Они выпускники Лиги плюща, которые верят, что задают вопросы типа: «Как вы инвертируете двоичное дерево?» — лучший способ оценить чьи-то технические способности. Это одержимые тестами руководители проектов (признание: у меня несколько досок) и невежественные менеджеры по персоналу, которые перечисляют в объявлениях о вакансиях такие требования, как «Требуется 5 лет опыта программирования на Swift» (подсказка: выпуск Swift = 2014).Эти люди, к лучшему или к худшему, стоят между вами и достойной работой.

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

Заключительные мысли

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

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

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

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

«Я хочу изучать программирование, но не знаю, с чего начать» | автор: Programm.r

Цель этой статьи — сделать обучение программированию доступным для всех.

Меня как наставника постоянно спрашивают:

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

«Какой язык программирования наиболее востребован для работы?»

«Какой язык программирования самый популярный?»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • «Имеет ли я смысл в этой теме?»
  • «Была ли новая терминология? Если да, было ли дано формальное определение для каждого нового термина? »
  • «Были ли какие-то новые навыки? Я понимаю, как каждый новый навык используется в приложении? Могу ли я продемонстрировать свое понимание этого навыка, решая практические задачи? »
  • «Смогу ли я завтра вспомнить то, что я только что узнал? А на следующий день? Если нет, как мне сохранить это в памяти? »

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

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

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

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

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

Вы можете изучить логику высказываний из этого учебного пособия YouTube: «Основные концепции логики высказываний».

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

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

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

Если вы предпочитаете учиться по книге, я рекомендую следующее: Начни с Java.

Если вы ищете видеоурок, я рекомендую посмотреть видео №1–19, 31–33, 88 и 93 в обучающем видео Дерека Банаса по Java на YouTube: обучающее видео по Java.

Первое видео в руководстве YouTube направит вас на загрузку компьютерной программы под названием Eclipse .Eclipse — это интегрированная среда разработки ( IDE ). Вы можете думать о IDE как о причудливом термине для текстового редактора, созданного для программистов. Это просто компьютерное приложение, которое предоставляет текстовый редактор для программирования, а также другие инструменты для запуска ваших программ. Вот ссылка на видео Дерека Банаса на YouTube о том, как загрузить Eclipse: Установить Eclipse для Java.

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

Структура данных — это способ организации данных в памяти.

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

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

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

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

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

Вот лучший бесплатный видеоурок для начала изучения Android: Udacity-Android Development for Beginners.

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

Однако, если вы готовы потратить деньги на выдающуюся книгу, я настоятельно рекомендую следующее: Head First Android Development: A Brain-Friendly Guide.В этой книге представлены подробные объяснения и полезные наглядные пособия, которые действительно помогут вам изучить основные концепции Android. В каждой главе представлен пример приложения. Все подробно объясняется с помощью понятных каждому слов и диаграмм.

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

Существует множество образовательных сайтов, на которых вы можете найти учебники по программированию.Некоторые из моих любимых — Codecademy, Udemy, Udacity, Team Treehouse и Khan Academy.

Лучшие способы научиться кодировать

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

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

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

Что такое кодирование?

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

Последний найденный купон Udacity:

Выбор проверенного персонала

ЭКСКЛЮЗИВНО: СКИДКА 65%

На курсах Udacity

Начните свою весну с новыми навыками — поторопитесь и выберите курс Udacity своей мечты с огромной скидкой 65%! Этот эксклюзивный код купона Udacity активен в течение ограниченного времени.

Срок годности: 11.06.2021

Использовано 2948 человек

Осталось всего 37

×

ЭКСКЛЮЗИВНО: СКИДКА 65%

На курсах Udacity

Начните весну с новыми навыками — поторопитесь и выберите свой курс Dream Udacity с огромной скидкой 65%! Этот эксклюзивный код купона Udacity активен в течение ограниченного времени.

Идите и покупайте со скидкой!

REDEEM DEAL

Дата истечения срока: 11.06.2021

2948 Пользователей

Только 37 Осталось

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

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

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

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

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

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

Самые популярные результаты

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

Зачем мне учиться кодировать?

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

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрим:

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

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

Шаг 2. Выберите правильные языки

Для разных типов программирования требуются разные навыки.Например, если вы хотите научиться кодировать веб-сайт, вам следует изучить такие языки, как HTML , CSS , Java и JavaScript .

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

Ява

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

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

Если вы хотите изучить Java как один из первых языков программирования, я бы порекомендовал курс Java Nanodegree от Udacity .

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

Питон

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

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

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

Рубин

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

Если у вас есть планы стать веб-разработчиком, я бы порекомендовал изучить хотя бы основ Ruby .Таким образом, вы будете знакомы с языком, даже если вам не придется работать с ним напрямую. Начните с курса Learn Ruby on Rails , который посвящен тому, что такое Ruby on Rails и как он используется в веб-разработке.

Твердость

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

Если вы хотите войти в захватывающий новый мир блокчейнов и смарт-контрактов, я бы порекомендовал начать с курса Space Doggos Interactive Solidity или курса Ultimate Learn Solidity .

HTML

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

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

CSS

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

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

JavaScript

JavaScript — еще один язык, который достаточно универсален и чрезвычайно широко распространен — во многом как Java и Python.

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

Если вы хотите стать достойным веб-разработчиком переднего или заднего плана, мы рекомендуем изучить JavaScript. Откройте для себя основы с помощью такого курса, как Introduction to JavaScript course или Interactive JavaScript Tutorial, , а затем переходите на более сложный курс , когда вы освоите основы языка.

Шаг 3. Выберите правильные ресурсы, которые помогут вам изучить

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

Некоторые из них включают:

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

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

Бонус

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

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

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

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

Шаг 4. Загрузите редактор кода

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

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

Шаг 5. Практикуйтесь в написании программ

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

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

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

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

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

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

Шаг 7. Взломайте чужой код

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

Найдите где-нибудь программу или файл кода — GitHub — отличное место для начала — и откройте его в своем редакторе кода .

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

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

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

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

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

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

Самые популярные результаты

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

Последние подсказки

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

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

Напомним, если вы хотите начать учиться программировать, вам следует:

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

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

Оставьте свой честный отзыв

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

Как научиться программированию? [Руководство для начинающих]

Введение

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

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

Как научиться кодировать

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

Изучение основ программирования

Первый и самый важный шаг — выбрать язык для изучения. Рекомендуется начать с Python, поскольку он прост, как и английский, и настолько прост в освоении, что вы можете ознакомиться с одним из лучших руководств по Python и приступить к работе. Но вы можете выбрать тот язык, который вам интересен, а также исходя из проекта, который вы хотели бы развивать в будущем. Поэтому, если вы планируете разработать мобильное приложение, вы можете начать с Java или Kotlin для Android и Swift для iOS, а если вы хотите создать веб-сайт, для начала предлагается Javascript.Для профессии в области науки о данных языки AI и ML, Python и R.

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

1. Через интерактивные веб-сайты

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

2. С помощью видеоуроков

Если вы человек, которому нравится подробное изучение с пошаговыми инструкциями, то мы рекомендуем вам зарегистрироваться в любом онлайн-руководстве по программированию, которое с самого начала научит вас устанавливать и загружать необходимую среду IDE для основных концепций языка, а в конце Capstone Project, чтобы проверить свои навыки программирования. Некоторые учебные пособия и курсы также предлагают сертификаты, которые могут помочь вам позже, когда вы будете искать работу. Мы рекомендуем Pluralsight и Lynda для поиска руководств для начинающих по предпочитаемому языку.Вы также можете ознакомиться с некоторыми популярными учебниками на Hackr.io.

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

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

  • Типы данных
  • Переменные
  • Функции
  • Массив или списки
  • Если операторы
  • Условные петли
  • Классы и предметы
  • Обработка исключений
  • Деревья, карты и многое другое.

Создайте свой первый проект

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

Самый большой вопрос, который возникает на этом этапе:

Как выбрать проект?

Именно здесь большинство людей застревают на этапе принятия решения, так что же строить? Решение простое. Давайте посмотрим на это ниже:

1. Выберите то, что вас интересует

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

2. Начните с простого

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

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

3. Создайте что-нибудь полезное для себя и сообщества

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

Несколько идей для начала

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

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

Чувствуете, что застряли?

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

1. Научитесь правильно определять ошибку в Google

Это важный шаг, который вы должны освоить. Поиск и просмотр ошибок в вашем коде поможет вам исправить ваш код в течение нескольких минут, но, с другой стороны, если вы не владеете этим навыком, это будет похоже на погружение в водоворот кода без карты. Совет, которым я хотел бы здесь поделиться, заключается в том, что перед поиском в Google заключите ошибку, сгенерированную вашим компилятором, в двойные кавычки («»). Таким образом, Google будет специально указывать на ошибку как на одно и то же предложение, и это даст очень точный отфильтрованный результат.

2. Популярные сайты, которые помогут вам

Сайты

, такие как Stack-Overflow и Reddit, возглавляют здесь чарты, чтобы направлять разработчиков по всему миру своим кодом. Это полноценное сообщество разработчиков со всех сторон, которые приходят помогать друг другу в своих проектах. На публикацию здесь своих сомнений может уйти даже 2-3 недели, но это того стоит, хотя вы, возможно, уже найдете решение своей ошибки, поскольку многие люди могли сталкиваться с той же ошибкой раньше.Также предлагается ответить на некоторые вопросы, которые могут помочь другим, и таким образом вы также будете учиться.

3. События и встречи

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

Устройтесь на работу или стажировку

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

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

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

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

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

Заключение

На этом мы подошли к концу руководства по обучению программированию. Я надеюсь, что после прочтения этой статьи вас попросят научиться программировать и начать писать код для вашего первого проекта. Мы в Hackr.io составили список лучших курсов практически для всех языков программирования, которые вы, возможно, захотите изучить. Так что готовьтесь и начните свой путь к тому, чтобы стать разработчиком. У вас есть другие советы, которыми вы хотели бы поделиться с другими участниками сообщества программистов? Дайте нам знать.Удачного кодирования!

Еще читают:

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

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

Потом я начал работать под руководством маркетолога с кодировкой. Знание HTML, CSS, JavaScript и jQuery было бесценным: разработчики были гораздо более заинтересованы в работе с ней, чем с кем-либо другим в маркетинговой команде, ее босс всегда приходил к ней с техническими вопросами, и, что самое главное , она могла делать такие вещи, как создание интерактивных графиков или добавление анимации к сообщениям в блогах.

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

1. Это сделает вас более самодостаточным

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

Но если вы умеете программировать, вам не нужно ждать помощи: вы, возможно, сможете сделать это сами.

«Я могу создавать целевые страницы для маркетинговых кампаний, не полагаясь на дизайнера или инженера», — говорит Тайлер Мур, директор по маркетингу App Press. «Я в основном работал с техническими стартапами и SaaS-компаниями, и возможность быстрого выполнения итераций значительно упростила отправку новых кампаний или начало чего-то, что я могу передать настоящему дизайнеру или инженеру для доработки»

Джессика Элль, руководящая цифровым маркетингом в Forest Giant, использует свои навыки программирования для улучшения SEO сайта и внесения быстрых изменений в дизайн.«Не обязательно знать HTML и CSS, но это очень полезно, — говорит она.

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

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

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

2. Он научит вас думать

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

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

«Программирование заставило меня начать с плана, выявить потенциальные проблемные области, а также выявлять и устранять неисправности, а также устранять неисправности, — говорит Хизер Стегнер, старший директор по коммуникациям American Wood Council. «Это логический образ мышления, который я смог применить при разработке медиа-стратегии столь же успешно, как и при попытке выяснить, почему Internet Explorer не сотрудничает.”

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

3. Это улучшит ваши навыки общения и совместной работы

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

«Намного проще общаться с инженерами, дизайнерами и менеджерами по продуктам», — говорит веб-продюсер Кейтлин Коуэн, теперь, когда она прослушала курс Front-End веб-разработки General Assembly на полставки. «Я смог дать хорошо продуманную обратную связь по поводу разработки функций и мог провести дополнительные исследования, когда дело доходило до сортировки ошибок.”

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

4. Это может поднять вашу карьеру на новые высоты

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

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

Арьяна Джексон, менеджер по маркетингу, говорит, что программирование помогло ей значительно расширить ее роль с тех пор, как она начала работать три года назад в Eboxlab, компании по поддержке ИТ.«Моя должность была« графический дизайнер », и это все, чем я занималась», — объясняет она. «Научившись программировать, я начал настраивать HTML и CSS веб-сайтов наших клиентов. Теперь кодирование — значительная часть моей работы ». Кроме того, благодаря навыкам Джексон Eboxlab не нужно нанимать другого разработчика, что делает ее еще более ценной для компании.

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

Так чего же вы ждете? Вы можете прямо сейчас погрузиться в код с помощью бесплатной программы Dash от General Assembly, которая дает вам небольшие назначения HTML, CSS и Javascript и позволяет вам видеть эффекты вашего кода, когда вы его пишете.

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

Фотография женщины, кодирующая код, любезно предоставлена ​​Кристианом Петерсен-Клаузен / Getty Images.

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

Почему все так спешат?

Зайдите в любой книжный магазин, и вы увидите, как Teach Yourself Java
за 24 часа
вместе с бесконечными вариациями, предлагающими научить C,
SQL, Ruby, алгоритмы и т. Д. За несколько дней или часов.Расширенный поиск Amazon по запросу [название: научить,
себя, часов, с: 2000 и нашел 512 таких книг. Из первой десятки девять книг по программированию (вторая — по бухгалтерскому учету). Аналогичные результаты дает замена «учи себя» на «учись» или «часов» на «дни».

Вывод таков: либо люди очень спешат учиться
о программировании, или о том, что программирование как-то невероятно проще
узнать больше всего на свете.
Felleisen et al.
отдают дань этой тенденции в своей книге How to Design Programs , когда они говорят
«Плохое программирование — это просто. Идиотов можно выучить за 21 день ,
даже если это манекенов ». Комикс Abtruse Goose тоже получил свое.

Давайте проанализируем, что такое заголовок Научитесь C ++ за 24 часа
может означать:

  • Научитесь: За 24 часа у вас не будет времени написать несколько
    значимых программ и извлекайте уроки из своих успехов и неудач с
    их. У вас не будет времени работать с опытным программистом и
    понять, каково жить в среде C ++.Короче, ты
    не успеет многому научиться. Таким образом, книга может говорить только о
    поверхностное знакомство, а не глубокое понимание. Как сказал Александр Поуп,
    небольшое обучение — опасная вещь.
  • C ++: Через 24 часа вы сможете изучить синтаксис
    C ++ (если вы уже знаете другой язык), но вы не могли
    узнать много о том, как использовать язык. Короче говоря, если бы вы были, скажем,
    Базовый программист, вы можете научиться писать программы в стиле
    Базовый с использованием синтаксиса C ++, но вы не могли узнать, что такое C ++
    на самом деле хорошо (и плохо) для.Так в чем смысл? Алан
    Перлис однажды сказал: «Язык, который не влияет на то, как вы
    думать о программировании, знать не стоит «. Один из возможных моментов:
    что вам нужно немного изучить C ++ (или, что более вероятно, что-то
    например, JavaScript или обработка), потому что вам нужно взаимодействовать с
    существующий инструмент для выполнения конкретной задачи. Но тогда ты не
    обучение программированию; вы учитесь выполнять эту задачу.
  • за 24 часа: К сожалению, этого недостаточно, так как следующий
    раздел показывает.

Научитесь программированию за десять лет

Исследователи (Блум
(1985), Брайан и Хартер (1899), Хейс
(1989), Simmon & Chase (1973)) показали это
требуется около десяти лет, чтобы развить опыт в любом из множества
зоны, в том числе шахматы, музыкальная композиция, телеграф
работа, рисование, игра на фортепиано, плавание, теннис и исследования в
нейропсихология и топология. Ключ совещательный
практика: не просто делать это снова и снова, а бросать вызов самому себе
с задачей, которая выходит за рамки ваших текущих возможностей, попробуй ее,
анализировать вашу производительность во время и после выполнения и исправлять
никаких ошибок.Потом повторить. И повторить еще раз. Кажется, нет
настоящие ярлыки: даже Моцарт, который в 4 года был музыкальным вундеркиндом, взял
Еще 13 лет до того, как он начал создавать музыку мирового уровня. В
другой жанр, Битлз, казалось, ворвались на сцену с
череда хитов №1 и появление на шоу Эда Салливана в 1964 году.
Но с тех пор они играли в маленьких клубах в Ливерпуле и Гамбурге.
1957 г., и, хотя на раннем этапе они приобрели массовую популярность, их первая великая
критический успех, Sgt. Peppers , выпущен в 1967 году.

Малькольм
Гладуэлл популяризировал эту идею, хотя он концентрируется на 10 000 часов, а не на 10 годах.
Анри Картье-Брессон (1908-2004) использовал другую метрику: «Ваши первые 10 000 фотографий — ваши худшие». (Он не
ожидайте, что с цифровыми фотоаппаратами некоторые люди смогут достичь этой отметки за неделю.)
Истинный опыт может занять всю жизнь:
Сэмюэл Джонсон (1709–1784) сказал: «Превосходство в любом отделе может быть
достигается только трудом всей жизни; его нельзя покупать в
меньшая цена ». И Чосер (1340-1400) жаловался:« Lyf такой короткий, ремесло
так долго, чтобы Лерне.«Гиппократ (ок. 400 г. до н.э.) известен отрывком« ars longa,
vita brevis «, которая является частью более длинной цитаты» Ars longa, vita
brevis, occio praeceps, Experimentum periculosum, iudicium
difficile «, что на английском языке переводится как» Life is short, [the] craft
долго, возможность мимолетная, коварный эксперимент, суждение
трудный.»

Конечно, ни одно число не может быть окончательным ответом: это не кажется разумным.
предположить, что все навыки (например, программирование, игра в шахматы, игра в шашки и музыка)
может потребоваться одинаковое количество времени для освоения, и все люди
займет ровно столько же времени.В виде
Проф.
К. Андерс Эрикссон сказал: «В большинстве областей замечательно, сколько времени даже самые
талантливые люди нужны для достижения высочайшего уровня производительности. Число в 10 000 часов просто дает вам ощущение, что мы говорим годы от 10 до 20 часов в неделю, и те, кого некоторые считают наиболее талантливыми людьми, все еще нуждаются в достижении высочайшего уровня «.

Итак, вы хотите быть программистом

Вот мой рецепт успеха в программировании:

  • Захватите программированием и займитесь им, потому что это весело.Убеждаться
    что это достаточно весело, так что вы будете готовы потратить свои десять лет / 10 000 часов.
  • Программа . Лучший вид обучения — это обучение
    при выполнении. Говоря более технически, «максимальный уровень
    производительность для физических лиц в данной области не достигается
    автоматически в зависимости от расширенного опыта, но уровень
    производительность может быть увеличена даже очень опытными людьми, поскольку
    результат целенаправленных усилий по улучшению »(стр. 366)
    и «для наиболее эффективного обучения требуется четко сформулированная задача с
    соответствующий уровень сложности для конкретного человека,
    информативная обратная связь и возможности для повторения и исправления
    ошибок.»(стр. 20-21) Книга г.
    Познание на практике: разум, математика и культура в повседневной жизни
    Life
    — интересный
    ссылка на эту точку зрения.
  • Поговорите с другими программистами; читайте другие программы. Это важнее
    чем любая книга или учебный курс.
  • Если хотите, проучитесь четыре года в колледже (или больше в колледже
    Высшая школа). Это даст вам доступ к некоторым вакансиям, требующим
    учетные данные, и это даст вам более глубокое понимание области,
    но если вам не нравится школа, вы можете (с некоторой самоотдачей) получить
    подобный опыт самостоятельно или на работе.В любом случае книжное обучение само по себе не
    быть достаточным. «Компьютерное образование не может сделать никого экспертом.
    программист больше, чем изучение кистей и пигментов может сделать
    кто-то искусный художник «, — говорит Эрик Рэймонд, автор книги The New
    Хакерский словарь
    . Один из лучших программистов, которых я когда-либо нанял, имел
    только высшая школа; он создал много отличного программного обеспечения, имеет свою собственную группу новостей и сделал достаточно опционов на акции, чтобы купить собственный ночной клуб.
  • Работа над проектами с другими программистами.Будь лучшим программистом
    по некоторым проектам; быть худшим для других. Когда ты лучший,
    вы можете проверить свои способности руководить проектом и вдохновлять
    другие с вашим видением. Когда ты хуже всех, ты узнаешь, что за
    мастера делают, и вы узнаете, что им не нравится делать (потому что они
    заставить вас сделать это за них).
  • Работа над проектами после других программистов.
    Понять программу, написанную кем-то другим. Посмотри, что нужно, чтобы
    понять и исправить это, когда оригинальные программисты не
    вокруг.Подумайте, как разрабатывать свои программы, чтобы упростить
    тех, кто будет их поддерживать после вас.
  • Выучите как минимум полдюжины языков программирования . Включите один
    язык, который подчеркивает абстракции классов (например, Java или C ++), тот, который
    подчеркивает функциональную абстракцию (например, Lisp, ML или Haskell), один
    который поддерживает синтаксическую абстракцию (например, Lisp), один
    который поддерживает декларативные спецификации (например, Prolog или C ++
    шаблоны) и
    тот, который подчеркивает параллелизм (например, Clojure или Go).
  • Помните, что в «информатике» есть « компьютер ». Знать
    сколько времени требуется вашему компьютеру, чтобы выполнить инструкцию, получить
    слово из памяти (с пропуском кэша и без него), считывание последовательных слов с диска и поиск нового места на диске. (Ответы здесь.)
  • Займитесь языком
    стандартизация усилий. Это может быть комитет ANSI C ++ или
    может решить, будет ли ваш локальный стиль кодирования иметь 2 или 4 пробела
    уровни отступов.В любом случае вы узнаете, что другие люди
    как в языке, насколько глубоко они это чувствуют, и, возможно, даже немного
    о том, почему они так себя чувствуют.
  • Имейте здравый смысл, чтобы прекратить усилия по стандартизации языка как
    как можно быстрее.

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

Фред Брукс, в своем эссе No Silver Bullet
определила план из трех частей для поиска отличных
разработчики программного обеспечения:

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

Это предполагает, что некоторые люди уже обладают качествами, необходимыми для
быть отличным дизайнером; задача состоит в том, чтобы как следует их уговорить. Алан
Перлис выразился более лаконично: «Каждого можно научить лепить:
Микеланджело пришлось бы научить, как этого не делать. Так и с
великие программисты ». Перлис говорит, что у великих есть
внутреннее качество, выходящее за рамки их обучения. Но при чем здесь
качество взято? Это врожденное? Или они развивают это через
усердие? Как Огюст Гюсто (вымышленный повар в
Ratatouille ) говорит: «Готовить может любой, но только бесстрашный.
может быть здорово.»Я думаю об этом больше как о готовности посвятить большой
часть жизни на совещательную практику. Но может быть
бесстрашный — способ резюмировать это. Или, как критик Гюсто,
Антон Эго говорит: «Не каждый может стать великим художником, но великим
художник может прийти откуда угодно «.

Так что покупайте книгу по Java / Ruby / Javascript / PHP; ты будешь
наверное, получу от этого какую-то пользу. Но ты не изменишь свою жизнь, или
ваш реальный общий опыт программиста за 24 часа или 21 день.
Как насчет того, чтобы упорно работать над постоянным совершенствованием в течение 24 месяцев?
Что ж, теперь вы кое-чего начинаете…


Список литературы

Блум, Бенджамин (ред.) Развитие талантов у молодежи , Баллантайн, 1985.

Брукс, Фред, No Silver Bullets , IEEE Computer, vol. 20, нет. 4, 1987, с. 10-19.

Брайан, W.L. & Хартер, Н. «Исследования по телеграфному языку:
Приобретение иерархии привычек. Обзор психологии ,
1899, 8, 345-375

Хейс, Джон Р., Полное решение проблем Лоуренс Эрлбаум, 1989.

Чейз, Уильям Г. и Саймон, Герберт А.
«Восприятие в шахматах»
Когнитивная психология , 1973, 4, 55-81.

Лаве, Жан, Познание на практике: разум, математика и культура в повседневной жизни
Жизнь
, издательство Кембриджского университета, 1988.


Ответы

Приблизительное время для различных операций на типичном ПК:

выполнить типичную инструкцию 1/1000000000 с = 1 наносекунда
выборка из кэш-памяти L1 0.5 наносекунд
неверное предсказание перехода 5 наносекунд
выборка из кэш-памяти L2 7 наносек
Блокировка / разблокировка Mutex 25 наносекунд
выборка из основной памяти 100 наносек
отправить 2 Кбайт по сети 1 Гбит / с 20000 наносекунд
последовательное чтение 1 МБ из памяти 250 000 наносекунд
выборка из нового места на диске (поиск) 8000000 наносек
последовательное чтение 1 МБ с диска 20000000 наносекунд
отправить пакет из США в Европу и обратно 150 миллисекунд = 150 000 000 наносек

Приложение: выбор языка

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

  • Используйте своих друзей . На вопрос «какая операционная система должна
    Я использую Windows, Unix или Mac? «, Я обычно отвечаю:» использовать что угодно
    ваши друзья используют «. Вы получаете преимущество, извлекая уроки из своего
    друзья компенсируют любую внутреннюю разницу между ОС или
    между языками программирования. Также подумайте о своих будущих друзьях:
    сообщество программистов, частью которого вы станете, если вы
    Продолжать. Есть ли у выбранного вами языка большое растущее сообщество?
    или маленький умирающий? Есть ли книги, веб-сайты и интернет-форумы
    получить ответы от? Вам нравятся люди на этих форумах?

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

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

Учитывая эти критерии, мои рекомендации по первому программированию
язык будет Python или
Схема .
Другой вариант — Javascript, не потому, что он идеально подходит для начинающих,
но потому что для этого есть так много онлайн-руководств, таких как
Учебник Ханской академии.
Но твой
обстоятельства могут отличаться, и есть и другие хорошие варианты. Если твой
возраст является однозначным числом, вы можете предпочесть
Алиса или писк
или Blockly (они также могут понравиться учащимся старшего возраста).Важный
дело в том, что вы выбираете и начинаете.


Приложение: книги и другие ресурсы

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

Почему каждый должен учиться кодировать

Нельзя отрицать, что сейчас технологии доминируют в огромном количестве различных отраслей. Быть компьютерной неграмотностью больше не повредит в мире работы.А «научиться программировать» сейчас кажется модным словом. И все, от Билла Гейтса до Обамы, призывают молодых людей попробовать.

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

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

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

Это открывает другие возможности трудоустройства

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

Кодирование выделит ваше заявление о приеме на работу

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

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

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

Это может привести к внештатной работе

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

Программирование может позволить вам заниматься увлеченными проектами

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

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

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

Кодирование улучшает навыки межличностного общения

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

Опытный кодер может укрепить уверенность

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *