Главная страница » Программирование с чего начинать

Программирование с чего начинать

  • автор:

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

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

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

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

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

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

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

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

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

Программирование — с чего начать?

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

Какой язык изучать начинающим программистам.

Опять это вопрос.

Многие советуют для начала изучение простых высокоуровневых языков типа Visual basic и pascal. В интернете можно без труда найти среду разработки под эти языки с встроенным компилятором. Для изучения программирования на языке Visual basic можете установить VisualStudio. Программа универсальна и в дальнейшем пригодится для освоения более сложных языков. Все языки программирования одинаковы в логике своей работы. Поняв логику одного языка, ты сможешь писать программы на любом другом. Главная же сложность, с которой тебе придется столкнуться — это синтаксис. Например, в более серьезных языках после каждой команды необходимо ставить точку с запятой. Таких особенностей очень много, но работая с определенным языком вникнуть в его синтаксис и привыкнуть не составит труда.

Выбор цели.

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

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

Низкоуровневое программирование.

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

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

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

Рынок переполнен специалистами и сквозь огромную конкуренцию прорваться просто невозможно. У меня тоже были такие мысли, когда я уже нашел первую работу. Меня это очень бесило до тех пор, пока я не увидел, какое большое количество людей боится сложностей, связанных с обучением. ОЧЕНЬ много новичков забрасывают курсы или свое личное обучение по многим причинам. Я общаюсь с людьми из этой сферы и могу уверенно сказать, что очень часто слышна цитата «Мы не можем найти хорошего разработчика». Учитывая то, что последние 3 года реклама курсов звучит из каждого утюга, потребности в специалистах вообще не должно быть, но она есть) Также аргумент против мифа о перенасыщении рынка -это то, что сама сфера развивается очень быстро, появляются новые компании, появляются рабочие места.

Обучиться профессии в IT очень сложно. На это можно сказать и да, и нет. Курсы, которые говорят: «ПОСЛЕ ПОЛУГОДА КУРСОВ ГАРАНТИЯ ТРУДОУСТРОЙСТВА» лгут, никто не будет искать вам работу) Суть в том, что обучение любой новой профессии, с которой ранее вы не были знакомы, будет тяжелым, но это только сначала. Информации, которую надо будет выучить, действительно много, но с каждым месяцем обучения будет становиться все проще и проще. А когда найдется первая работа с хорошим тимлидом, который будет указывать на ошибки прямо в проекте, вы получите буст в скорости обучения который сложно осознать.

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

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

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

Что из себя представляет разработка? Для людей которые совсем не представляют, что делает программист на работе, постараюсь объяснить простыми словами. Есть проект, например какой-то сайт. Пусть будет ВК. У ВК есть группа людей, которые разбираются в том, какие новые функциональности хотят видеть пользователи. Они заметили, что многим не нравится слушать голосовые сообщения. Было решено добавить возможность распознавания речи, чтобы пользователь нажал кнопку и увидел текст голосового сообщения. Дальше эта идея подробно расписывается на бумаге: как и что должно работать. После этого в игру вступают дизайнеры. Это ребята которые по описанию фичи рисуют то как она будет выглядеть на сайте. И вот на следующем этапе начинают работу разработчики. У них на рабочих ноутбуках есть самая обычная папка, в которой лежит много текстовых файлов. Вот в этих текстовых файлах находится код на разных языках программирования. Задача разработчика добавить в нужные места такой код, чтобы все выглядело и работало согласно дизайнам и описанию фичи. Если все работает, дальше работу программистов проверяют тестировщики, и, если все хорошо, отправляют пользователю.

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

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

Количество вакансий (Статья на тему). Тут все понятно. Больше вакансий — больше работы.

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

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

С чего начать изучение? Дальше я буду рассказывать обо всем на примере JavaScript, просто по той причине, что я прошёл этот путь. На этот вопрос, как и на другие, уже нашли ответ. Существуют так называемые дорожные карты. Гуглятся по запросу «JS дорожная карта» можно много на них смотреть, но в них есть кое-что общее. Это большие блоки JavaScript, HTML, CSS. Эти 3 вещи основа которую надо знать обязательно. Подробнее про каждый из этих трех языков мы поговорим в будущем, но если хочется с чего-то начать, можно открыть YouTube и вбивать уроки по каждому языку в том порядке, в котором они написаны выше. Также я преступно поздно узнал о такой классной штуке как матрица компетенции программиста (Хороший пример матрицы к которой я иногда обращаюсь). Сильно запариваться по поводу того, что вы чего-то не понимаете из этих тем, не стоит, поскольку разные должности требуют разных знаний, но посмотрев на неё можно примерно понять область знаний которые стоит подтянуть.

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

САМОЕ важное, что должен уметь делать программист — правильно формулировать вопрос в Гугл. В работе приходится обращаться к гуглу почти каждый день, во время обучения нужно гуглить целый день.

youtube.com — Главный друг человека, который только начал обучение. Вбиваете например «JavaScript уроки» и вам попадается пара-тройка плейлистов с названиями наподобие «JavaScript с нуля». Найдите того, кто объясняет понятнее, и смотрите его. Если что-то не поняли в объяснении, сформулируйте запрос в Гугл и ищите до тех пор, пока не сможете объяснить своими словами. Это идеальный вариант.

habr.com, medium.com и прочие сайты со статьями — Скорее всего вам будут часто попадаться на сайты со статьями. Иногда они будут на английском, это нормально, пугаться не стоит. Переводите в переводчике, делайте все как там написано, и все будет работать. Если не работает — формулируете вопрос и пишите в поисковой строке гугла.

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

learn.javascript.ru — Замечательный учебник по JS который охватывает весь синтаксис. В конце каждого урока есть задание и решение к нему с объяснением.

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

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

По выделенным темам искать обучающие видео в YouTube, статьи в интернете, электронные учебники или курсы.

Я бы посоветовал долго не штудировать синтаксис на маленьких задачках и поставить перед собой цель сделать стандартный «Список дел». Обычное приложение которое может создавать, отображать, изменять и удалять текстовые заметки. Такие приложения называют CRUD приложениями (Create Read Update Delete) и очень часто их дают в качестве тестового задания на позиции джуна. В процессе его создания вы изучите синтаксис языка, столкнетесь с кучей проблем и будете искать их решение в гугле. Никто не мешает поискать гайды в YouTube «Как сделать список дел на JavaScript» к примеру. Делаете все как на видео, набираетесь опыта. Далее к этому приложению можно будет прикрутить базу данных, написать для него сервер и, если вам хочется запариться, развернуть в интернете, чтобы кто-то мог зайти туда по ссылке.

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

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

План изучения программирования сосредоточенный на проблемах новичков | Часть 0 ⁠ ⁠

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

Поскольку подразумевается серия постов(примерно 10-12), чтобы текст не был слишком большим, буду ссылаться на прошлые посты, лежащие здесь или на моем на канале — https://t.me/tobeprog (там же будут выходить посты дополняющие и раскрывающие план). Если будет подобная ссылка, то сразу будет краткое изложение сути материала на другой ее стороне.

Зачем нужен очередной план изучения программирования?

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

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

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

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

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

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

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

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

И как же это исправить?

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

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

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

Примерный план

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

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

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

2 этап. CS и теория, тут важно уточнить, теория в данном случае, не просто общие познания, это именно подъем на другой уровень самого практического навыка. Необходимость, особенно после Python(на этом этапе от него ненадолго отступим), он отлично решает проблему первого этапа, но при этом обладает рядом существенных недостатков. Если упростить — на нем можно писать откровенно плохой код. И ‘теоретическое’ дополнение должно решить эту проблему.

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

3 этап. Может показаться, что если уже есть понимание самого процесса, наложена практика с теорией, то цель достигнута. Это так, но все же стоит это все объединить, закрыв какие то непонятные моменты. Снова возвращаемся к Python, но уже с несколько другим, более глубоким взглядом.

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

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

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