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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Курсы по Data Science 

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

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

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

Иногда лучшим способом обучения являются игр

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

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

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

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

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

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

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

Знакомство с языком программирования - это первый шаг к изучению программирования. Люди часто начинают с C, C ++, Java или Python. Я лично предпочитаю C ++ вначале, поскольку он не слишком прост (как Python) и не слишком несовершенен с точки зрения библиотек (как C).C ++ довольно быстр и имеет хорошую библиотечную поддержку - лучшее из обоих миров! Кроме того, C ++ - хороший выбор для соревновательного программирования, потому что он довольно быстр и поддерживает стандартную библиотеку шаблонов (STL). Выбор первого языка очень субъективен и зависит от ваших интересов и целей. Возможно, вас заинтересуют интерфейс, серверная часть, разработка мобильных приложений, разработка игр, наука о данных и т. Д. Если ваша главная цель - получить работу, обязательно ознакомьтесь с нашей статьей о том, какой язык программирования лучше всего подходит для получения работы. ?

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

2. Изучите структуры данных и алгоритмы

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

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

3. Запачкайте руки соревновательным программированием

После того, как вы изучите структуры данных и алгоритмы, вам следует начать решать проблемы на таких сайтах, как SPOJ, Codechef, Codeforces, Topcoder, Hackerrank, Geeksforgeeks и т. Д.Чем больше проблем решишь, тем лучше. Однако лучше решать проблемы в порядке возрастания сложности. Вы можете отсортировать проблемы в порядке убывания количества присланных решений и приступить к решению. Решив около 100 смешанных задач, вы убедитесь в своих навыках программирования.

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

4. Сделать проект

Теперь, когда вы усовершенствовали свои навыки решения проблем и программирования, пришло время создать несколько полезных приложений. Вы можете выбрать какой-нибудь популярный фреймворк для веб-разработки (Django, Flask, Ruby on Rails и т. Д.) И создать на нем проект. Создание приложения позволит вам почувствовать настоящую разработку программного обеспечения, что и делают большинство программистов.

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

5. Изучите

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

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

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

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

Это был мой подход к обучению программированию; вот как я научился программировать :) Поскольку вы читаете эту статью, я предполагаю, что вы серьезно относитесь к изучению программирования, и это хорошо! Надеюсь, вы нашли эту статью полезной. Всего наилучшего для вашего обучения! Не стесняйтесь задавать мне свои вопросы / сомнения в комментариях.

Еще читают:

,

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

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

  1. Найдите технического соучредителя.
  2. Наймите фрилансера для создания вашего приложения.
  3. Изучите программирование и создайте его самостоятельно.

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

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

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

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

Мой опыт работы с соучредителями и фрилансерами

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

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

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

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

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

Что бы вы ни делали, не пишите в Google "Сколько времени нужно, чтобы научиться программировать?" как и я.Вы будете обескуражены только теми людьми, которые ответят вроде: «Я занимаюсь программированием пять лет и все еще учусь» или «Примерно два года, если вы делаете урок в день». Это одна из главных причин, по которой я отказался от изучения программирования.

Я всегда думал: «Два года !? Я определенно найду хорошего соучредителя за это время! »

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

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

Я подробно расскажу, как я это сделал.

Учебные пособия и понимание основ

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

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

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

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

Если вы изучаете программирование для iOS, я настоятельно рекомендую Code with Chris. Это не бесплатно, но видео действительно упрощают просмотр, и он проделал отличную работу, объясняя вещи так, чтобы это было понятно для нетехнических людей.

Чем заняться на курсе

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

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

Большинство людей разочаровываются, когда сталкиваются с ошибкой, которую они считают неразрешимой.Когда вы сталкиваетесь с ошибками программирования, Stack Overflow - ваш лучший друг. Как новичок, вполне вероятно, что все, что вы используете в Google по вопросам программирования, приведет к ссылкам на этот сайт с замечательными ответами, которые будут чрезвычайно полезны для вас. Не бойтесь уточнять, когда вы гуглите проблемы, с которыми сталкиваетесь.

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

Что делать после курса

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

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

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

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

Создание вашей программы

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

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

Выпуск вашей программы

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

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

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

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

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

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

,

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

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

Зайдите в любой книжный магазин, и вы увидите, как 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 такой короткий, ремесло так долго до lerne ». Гиппократ (ок. 400 г. до н. э.) известен отрывком« ars longa, vita brevis ", которая является частью более длинной цитаты" Ars longa, vita brevis, occio praeceps, Experimentum periculosum, iudicium difficile ", что на английском языке переводится как" Life is short, [the] craft долго, возможность мимолетная, коварный эксперимент, суждение трудно." Конечно, ни одно число не может быть окончательным ответом: это не кажется разумным предположить, что все навыки (например, программирование, игра в шахматы, игра в шашки и музыка) может потребоваться одинаковое количество времени для освоения, и все люди займет ровно столько же времени. Так как Профессор К. Андерс Эрикссон сказал: «В большинстве областей замечательно, сколько времени даже самые талантливые люди нужны для достижения высочайшего уровня производительности. Число 10000 часов просто дает вам ощущение, что мы говорим годы от 10 до 20 часов в неделю, и те, кого некоторые люди считают наиболее талантливыми людьми, все еще нуждаются в достижении высочайшего уровня."

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

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

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

Лаве, Жан, Познание на практике: разум, математика и культура в повседневной жизни Life , Cambridge University Press, 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 (они также могут понравиться ученикам старшего возраста).Важный дело в том, что вы выбираете и начинаете.

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

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

Научитесь информатике

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

Наша стандартная рекомендация для этого содержания - классическая Структура и интерпретация компьютерных программ , которая доступна в Интернете бесплатно как в виде книги, так и в виде набора видеолекций MIT.Хотя эти лекции великолепны, наше видео-предложение на самом деле представляет собой лекции SICP Брайана Харви (для курса 61A в Беркли). Они более изощренны и лучше ориентированы на новых студентов, чем лекции MIT.

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

С тех пор, как это руководство было впервые опубликовано в 2016 году, один из наиболее часто задаваемых вопросов заключался в том, порекомендуем ли мы теперь записи более поздней версии 61A, преподаваемой Джоном ДеНеро, и / или соответствующей книги Составление программ , которая «в традициях SICP», но использует Python.Мы считаем, что ресурсы DeNero также прекрасны, и некоторые студенты могут в конечном итоге предпочесть их, но мы все же предлагаем лекции SICP, Scheme и Брайана Харви в качестве первого набора ресурсов, которые стоит попробовать.

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

Если вам не нравится SICP, попробуйте Composing Programs .Если это все еще не подходит, попробуйте How to Design Programs . Если кажется, что ни одно из этих действий не окупает ваши усилия, возможно, это знак того, что вам следует сосредоточиться на других темах в течение некоторого времени и вернуться к дисциплине программирования через год или два.

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

,

Смотрите также