Язык программирования сложно ли выучить
Как учиться программировать: 6 вещей, которые я понял, учась на Хекслете
Когда я только начинал изучать программирование, у меня голова была забита кучей неверных представлений о профессии программиста и о том, как и что нужно учить. Со временем я понял несколько важных вещей, которые, если б я узнал это раньше, очень сильно упростили и ускорили бы мое обучение.
Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятами-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.
Какой язык программирования изучать первым? Неважно!
Начал изучение с Java, и не жалею, после этого было легче изучать менее строгие языки, вроде JS и PHP. Минус Java в том, что, если вы живете не в милионнике, вам будет весьма сложно найти на нем работу джуниора и получается, что обучение какое-то бесцельное, ради обучения, что сильно снижает мотивацию. В то время, как изучая PHP, например, уже очень быстро можно брать какие-то первые заказы на фрилансе, устроиться на первую работу в веб-студию и т.п., т.е. начать на своем хобби зарабатывать первые деньги, что очень сильно поднимает мотивацию.
Потом я порасспрашивал некоторых знакомых (и малознакомых) программистов об их карьере, и увидел некий паттерн, которого раньше не понимал. Человек может, например, год работать с PHP, потом уйти на Java, потом плюнуть и выучить руби, стать RoR разработчиком, и в итоге заняться Node.js или Clojure. Любой нормальный программист знает несколько языков хорошо и десяток поверхностно. Поэтому не ломайте голову, не пытайтесь выбрать Самый Лучший Язык и строчить для этого тысяча первый вопрос на тостере. Просто берите любой язык и прочитайте по нему хотя бы одну книгу/пройдите курс. Попытки выбрать Самый Лучший Фреймворк из той же серии.
Про первую работу
Очень многие программисты начинают свою работу с весьма непрестижных компаний и крошечных зарплат. И это нормально. Но это сложно принять, особенно тем, кто решает «войти в айти» уже не в юном возрасте, имея семью и детей. Мифам об огромных зарплатах программистов зачастую способствуют школы программирования, которым нужно продавать свои курсы и в итоге на своих лендингах они крупным шрифтом пишут какие-то заоблачные цифры, вроде «средняя зарплата JavaScript программиста 150 000 рублей», при этом часто забывают сказать, что такую зарплату получают люди с опытом в несколько лет (или даже десяток лет), которые могут решать реальные сложные задачи, а вам после их курсов на старте светит тысяч 30 на испытательный срок, и это в Москве. А то и вообще попросят бесплатно поработать. За опыт и еду. Не нужно бояться идти на непрестижную и малооплачиваемую работу, потому что как только вы официально начнете работать программистом, даже за 20 тысяч в месяц, ваша привлекательность в глазах других работодателей и HRов сильно вырастет. На старте работу никто не мешает менять хоть каждые 3-6 месяцев, каждый раз уходя на бОльшую зарплату и более интересные задачи.
Читайте также
Учиться программировать сложно
В процессе учебы должны быть моменты когда мозг напрягается и вам кажется, что вы ничерта не понимаете. Если все получается легко и без напряга, значит вы учитесь не программировать, а повторять за диктором. Если привести грубую аналогию, вас учат не плавать, а шевелить ногами, лежа на песочке. Конечно, возможно, что вы гений и вам просто все легко дается. Чтобы реально оценить свои способности, сходите на пару-тройку собеседований по изучаемому языку программирования и попытайтесь выполнить тестовые задания, которые вам дадут.
Лично я долго (слишком долго) учился на всяких курсах из серии «посмотри на меня, делай как я». Когда начал учиться на Хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем мог раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.
Про code kata
Не нужно зубрить названия функций
Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.
Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа «100 прилагательных на тему Погода». Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.
В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.
Поэтому если вы пытаетесь стать программистом с нуля, вообще не парьтесь о том, что что-то непонятно и не ставьте на себе крест, вам должно быть очень многое непонятно! Не стесняйтесь задавать много вопросов, ну и гугл ваш лучший друг. Сперва всегда пытайтесь решить свои вопросы самостоятельно, а потом просите помощи, при этом желательно расписать, что вы уже пробовали для решения проблемы.
Почему научиться программировать не так трудно, как вы думаете, или Разрушители мифов об изучении программирования
Почему научиться программировать не так трудно, как вы думаете, или Разрушители мифов об изучении программирования
Профессии IT-индустрии считаются одними из самых сложных в освоении, поэтому часто новички, боясь сложностей, теряют интерес к изучению новых технологий. Мы решили развеять самые распространенные мифы о сложности программирования и помочь вам раз и навсегда уяснить, что научиться программировать — не трудно.
Программирование — это сложно?
Самый распространённый миф о программировании — программирование требует огромных интеллектуальных возможностей. Чтобы начать писать код, не нужно быть семи пядей во лбу: достаточно иметь мотивацию, интерес и дисциплину. Если вы открыты для нового и готовы применять приобретенные навыки на практике, то вы научитесь программировать. Поможет вам, например, интенсив «Основы программирования», который за 2 часа даст вам базовую теорию, необходимую для понимания основных современных языков программирования, и первый опыт написания программы. Но для сложных задач также может потребоваться знание из специфических отраслей.
Но у меня не очень хорошо с математикой, а её во всех вузах полно…
Следующее заблуждение заключается в том, что знание математики — предмет первой необходимости для программистов. На самом же деле для программирования достаточно знать базовые понятия из курса школьной математики. Но только на первых порах: дальнейшее усложнение задач может потребовать знания тонкостей в определенной предметной области. Например, для верстки сайтов или написания мобильных приложений вам хватит и тех простых знаний, которые вы получили в школе. Однако для Data Science и научного программирования требуются знания из статистики, теории вероятности и матанализа, которые постигнуть в одиночку уже сложнее — но и тут следует помнить, что большую часть сложных вещей уже реализовали, а вам понадобится только использовать их.
Но мне ещё / уже X лет, наверно, рано / поздно начинать?
Вопреки закоренелым стереотипам, нельзя быть слишком старым или слишком молодым для программирования. Все зависит от того, способны ли вы заставить себя учиться. Конечно, физиология будет влиять на ваши успехи, но усердие может скомпенсировать недостатки, как и тщательный подбор материалов для обучения.
А ещё я девушка…
Странно слышать, что женщинам не место в программировании, в то время, как первым программистом была женщина, Ада Лавлейс, которая составила набор инструкций для вычисления чисел Бернулли на машине Беббиджа. Конечно, женщина, желающая посвятить себя программированию, должна быть готова к усмешкам со стороны коллег-мужчин и общества в целом, мол, «не женское это дело». Но в то же время нет никаких объективных причин женщине не становиться программистом — все зависит только от ее желания.
Видел я этих ваших программистов: сидят дома за компьютерами, раз в месяц за бичпакетами в магазин выходят…
Вспомните программистов из фильмов прошлого: сутулый человек непонятного пола в очках, неопрятной одежде, ведет странный образ жизни, да еще и питается чем-попало. Это далеко от истины: программисты ничем не отличаются от специалистов в других технических отраслях в этом отношении. Сюда же можно отнести миф об асоциальности программистов: программисты часто работают в командах, а в команде навык общения с людьми необходим. А ещё в команде необходимо знание полезных инструментов, например, Git — познакомиться с ним можно, посмотрев бесплатный видеокурс «Git. Быстрый старт».
Сидеть и писать код каждый день — жутко скучно, не так ли?
Некоторые люди считают, что программирование — процесс, лишенный какого-либо творчества. Это величайшее заблуждение: код перестал быть просто набором математических операторов, и теперь к нему стали применимы понятия гибкости, надежности и простоты. Так что программирование — это не только техническая, но и творческая деятельность, для которой, однако, не нужно иметь дар свыше: программирование — такой же навык, как и занятия спортом. Чем больше занимаешься, тем выше шанс успеха.
Ладно, убедили. Но как лучше учиться?
Образовательные интернет-площадки сделали получение знаний значительно проще, но вместе с тем и исказили мировоззрения новичков. Начинающие часто думают, что после прохождения курсов по той или иной технологии они могут закончить свое обучение. Такие мысли очень опасны. При любых обстоятельствах нужно быть в курсе событий. Рынок не стоит на месте: сегодня ты востребован, завтра твои знания уже никому не нужны.
С другой стороны, убежденность в том, что университет решит все ваши проблемы, не менее ошибочна. Университет, конечно, даст вам и диплом, и базовые (часто только базовые) знания, но не факт, что после завершения обучения вы станете востребованным специалистом.
И как же быть?
К счастью, есть компромиссы. Многие университеты позволяют удалённо изучать программирование, математику и прочие необходимые программисту дисциплины на онлайн-площадках вроде Coursera и Udacity. Нельзя не отметить и Geek University, платный онлайн-университет от Mail.Ru Group, за год обучения в котором вы изучите все тонкости Android- или веб-разработки на специальных факультетах и получите не только теоретические, но и практические навыки.
Вообще онлайн-курсы программирования — относительно новое веяние, но оно уже успело стать популярным. Теперь вы стоите перед выбором курса. Но какой выбрать? Не стоит полагаться только на рекламу и советы: выберите курс с тем преподавателем, который, на ваш взгляд, хорошо объясняет материал. Попробуйте несколько вариантов. Курсов много, все они разные, для разных аудиторий: вам остается только выбрать.
Посоветуете что-то конкретное?
Например, если вам ближе веб-разработка, то стоит обратить внимание на интенсив «Основы веб-разработки». Если то, что вы узнаете, вас затянет, то вы сможете продолжить изучение этой темы, благо в Интернете очень много различных руководств, книг и курсов.
Те, кто с детства хотел разрабатывать игры, тоже найдут себе курс по душе. Для разработки игр отлично подходит язык C#, на котором написан популярный движок Unity. Начать можно с C#, а потом перейти к более плотному изучению самого движка. Однако любой вопрос лучше изучать структурированно, поэтому мы советуем обратить внимание на курс «Разработчик игр», в рамках которого вы за 4 месяца изучите все тонкости этой профессии, а потом ещё и поучаствуете в командной стажировке.
Чтобы стать гитаристом, достаточно тратить 30 минут в день? Чтобы стать спортсменом, достаточно просто поотжиматься полчаса? Нет и нет. Забудьте о том, что C# можно выучить за 15 минут, JavaScript — за 3 минуты, а HTML — за наносекунду. Если у вас есть желание сделать программирование своей профессией, не думайте, что малая отдача даст вам большой результат. Знакомьтесь с разными направлениями разработки и не бойтесь изучать что-то новое.
Как эффективно изучать языки программирования? Отвечают эксперты
Как эффективно изучать языки программирования? Отвечают эксперты
В Сети сейчас очень много обучающих курсов, статей, видео и прочих ресурсов, которые призваны помочь в изучении того или иного языка программирования, и каждый из них советует свою программу обучения. Какой алгоритм самый эффективный? Спрашиваем у экспертов.
Андрей Шестаков
разработчик DIRECTUM
Как эффективно изучить новый язык программирования? Вопрос, с которым сталкивается каждый разработчик. За 11 лет в ИТ я сам изучал 10 языков и на практике понял, какие моменты нужно учесть для лучшего освоения.
Цель первична
Просто познакомиться с новым языком программирования — цель достойная, но когда речь заходит об эффективности, необходим измеримый результат. Нужно чётко сформулировать конечную цель и ответить на вопрос: «Зачем?».
Язык может быть нужен, чтобы:
Конкретно сформулированная цель позволит достигнуть желаемого результата.
Теория и практика
Теория нужна, чтобы как можно быстрее перейти к практике!
Было бы желание, а способ изучения и материалы найдутся.
Окружение
Окружение становится турбокнопкой к эффективности.
Борис Тоботрас
руководитель Центра программных решений «Инфосистемы Джет»
Изучать синтаксис языка программирования исключительно в теории не стоит. Помню, когда я учился в 9-ом классе, когда у меня даже не было компьютера, я прочитал книгу про Algol-60 и ничего не понял. В освоении языков самое важное — практика! Поэтому на первых этапах надо изучать не синтаксис, а идиоматику — средства, которыми принято выражаться в этом языке. Надо научиться понимать, как правильно формулировать. Без этого код будут плохо понимать другие программисты, даже если синтаксис будет правильным.
Если говорить об алгоритме изучения языка, советую:
Максим Хайкин
ведущий разработчик BestDoctor
Труднее всего для новичка в программировании не заучить синтаксические правила, а научиться понимать смысл кода. Даже небольшие программы, с которых начинаются учебники и курсы, для многих сперва выглядят неделимой стеной текста. Что уж говорить о попытках внести туда какие-то изменения — чаще всего они будут заканчиваться непонятными ошибками и вызывать фрустрацию.
Поэтому начинать нужно с практики. Возьмите любое пособие по изучению иностранного языка — там почти сразу будут простые упражнения, в которых надо подставить в предложение правильное слово. Потом, когда вы поймёте, например, как работают глаголы-связки и где должно находиться подлежащее, вы будете учиться писать предложения целиком самостоятельно, а потом связывать предложения в текст. А новые слова и новые правила грамматики будут идти параллельно, начиная с наиболее часто используемых.
Аналогично стоит изучать и программирование. Ищите материалы и курсы, которые дают много практики, будь это написание кода в онлайн-редакторе или работа с учителем. Пусть эти курсы начинаются с самых простых вещей, которые можно написать в несколько строк: ввод и вывод текста, сложение и умножение чисел, операции с массивами.
При этом очень важна самостоятельная работа. Чем больше упражнений будут сопровождать ваше пособие, тем лучше. С учётом того, что вы начинаете с маленьких упражнений, вам будет сложнее допустить ошибку и проще найти и понять, как её исправить.
Через некоторое время код для вас превратится из иностранного манускрипта в понятную структуру, которая создаёт описания, сохраняет значения в памяти и производит действия тогда, когда вы этого захотите.
Сергей Комаров
директор департамента информационных решений компании РДТЕХ
Выбор оптимального варианта зависит от того, знаете ли вы какие-то другие языки программирования и есть ли у вас опыт программирования вообще. Если опыт есть, то изучение очередного языка программирования не представляется сложной задачей — достаточно посмотреть правила написания и оформления программ, а также синтаксис основных конструкций нового языка (объявление переменных, процедур/функций, циклов и т. д.) и можно сразу приступать к практике. Обычно предлагаемые в Сети курсы и материалы ориентированы именно на эту многочисленную аудиторию.
Другое дело, когда человек только начал постигать науку программирования. В этом случае предпочтение стоит отдать одному из популярных и достаточно простых языков, таких как JavaScript или Python, и найти обучающие курсы по программированию, основанные именно на этом языке. Обычно подобные курсы построены таким образом, что теория перемежается с практикой, необходимой для закрепления материала, а в конце курса предлагается самостоятельно реализовать более сложную задачу.
Несколько слов стоит сказать о практической задаче. Лучше всего пробовать решать какую-то свою актуальную задачу (например реализовать приложение для управления компонентами «Умного дома»), максимально её упростив для начала. Как показывает мой опыт, это отлично мотивирует, ведь на выходе удаётся достичь сразу двух целей: и язык/технологию новую изучить, и реализовать давнюю идею.
Михаил Бадин
программист платформы Валарм, компания «Онсек»
Как правило, специалист начинает изучать тот или иной язык программирования в двух случаях. Первый — когда он только начинает погружаться в программирование, и это первый язык для изучения. Второй — когда один или несколько языков уже освоены, и хочется развивать свои компетенции дальше. В каждом случае будет свой алгоритм действий.
Вы начинающий программист
Очень часто людям, которые только начинают свой путь в программировании, сложно освоить весь объём новой информации, который они получают из книг и видеолекций. Они не могут категоризировать весь объём поступающих данных самостоятельно. В этом случае поможет ментор: человек, который сможет скоординировать процесс обучения, обратить внимание на важные вещи, стать проводником в мир ИТ. Поэтому если у вас есть знакомый программист, который готов стать ментором, то вполне возможно изучать язык по видеолекциям и книгам, периодически консультируясь с ним. Пусть он даст вам вектор движения и будет корректировать его по мере надобности — а с самостоятельным изучением темы вы справитесь своими силами.
Если же такого знакомого нет, то лучший путь для изучения языка — офлайн- или онлайн-курсы. Во время прохождения курсов обязательно консультируйтесь с преподавателем, задавайте вопросы, даже те, которые кажутся вам глупыми, а также выполняйте все задания. Благодаря непосредственному доступу к носителю экспертизы вы очень ускоритесь в освоении языка и пройдёте наикратчайший путь от новичка до специалиста.
Вы уже знаете один или несколько языков программирования
В этом случае достаточно прочитать книгу или посмотреть видеолекции по нужному языку программирования. Проходить курсы вряд ли необходимо, так как они в подавляющем случае разработаны для начинающих программистов, и темп изучения покажется вам слишком медленным. Единственное, что нужно помнить — в каждом языке есть свой подход к написанию кода. Например, если вы изучали JavaScript, а потом захотели освоить Golang, не пытайтесь писать код на Golang, используя практики программирования на JavaScript. Лучше потратить дополнительное время для изучения best coding practices изучаемого языка, чтобы не быть «белой вороной» и не вгонять в ступор других людей, когда они увидят получившийся код.
Александр Бочкин
генеральный директор компании «Инфомаксимум»
Половина нашей команды — разработчики. И даже среди них нет единой точки зрения о том, с чего стоит начинать изучать тот или иной язык программирования. Все по-разному пришли в разработку — кто-то «играл в код» ещё в начальной школе, другой изучал сам вопреки основной профессии.
Сам я по образованию программист, много лет занимался разработкой на С++. По опыту скажу: нельзя найти универсальный и единственно правильный путь изучения программирования. Если кому-то «заходит» только практика, это не значит, что другой, прикладывая максимальные усилия, тем же путём освоит язык.
На мой взгляд, наиболее приближен к идеалу следующий алгоритм изучения языка:
И запомните одну вещь — учиться и совершенствоваться необходимо на протяжении всего своего пути. Это аксиома.
Вячеслав Жиров
исполнительный директор Астраханского технопарка FABRIKA
Если речь идёт о программисте, который уже умеет кодить и работать со сторонними библиотеками — это одно дело. Уже есть понимание механизма и нужно наращивать, что называется, «мясо» — добавлять знания новых языков к уже имеющимся. Если же речь о том, кто только учится, то не рекомендую начинать обучение с конкретных языков. Нужно учиться кодить в принципе. То есть строить алгоритмы.
Несомненно, важно изучать и теоретическую базу — это основа, и без неё невозможно научиться писать качественный код. Достаточно сильную теоретическую базу для самостоятельного изучения дают книги, курсы онлайн-академий и видео-разборы. Следует, однако, помнить, что чем раньше приступить к решению практических задач, тем продуктивнее будет идти обучение. Тут важно соблюдать баланс теоретической подкованности и практического опыта.
Как для обучения, так и для развития новых компетенций у работающих программистов отлично подходят различные практические тренажёры. Например, полезно решать задачи по олимпиадному программированию, где знания определённого языка накладываются на решение задач с использованием другого. Среди резидентов технопарка популярна площадка Timus Online Judge — крупнейший архив задач по программированию с автоматической проверяющей системой. Особенность таких тренажёров в том, что для решения задач не используются фреймворки, сторонние библиотеки и методы сортировки. Ты должен сам писать код от и до. Отлично прокачивает умение строить алгоритмы.
Весьма достойный тренажёр есть также и для SQL. В целом, для программистов олимпиадное программирование — это не только обучение, а некий вид спорта, где можно соревноваться с коллегами и самим собой, чтобы показать себе, чего ты стоишь.
Отличный вариант «прокачки» компетенций в том или ином языка — стажировка в сильной проектной группе, в IT-компании, специализирующейся на этом языке. Это самый экстремальный, но, пожалуй, самый эффективный способ быстро освоить язык программирования.
Алена Батицкая
преподаватель направления «Программирование» в Нетологии, frontend-разработчик
На вопрос, какой алгоритм самостоятельного изучения языка программирования самый правильный, нет однозначного ответа, поскольку все люди разные.
В первую очередь следует определить, сколько времени в день или в неделю вы готовы тратить на освоение нового материала. Если свободного времени достаточно, то можно самостоятельно изучать язык по разнообразным материалам — универсального ресурса, который подойдет для изучения любого языка, к сожалению нет. Параллельно нужно самостоятельно практиковаться и отрабатывать полученные знания на пет-проектах, например на сайте Codewars, где можно найти практику сразу по многим языкам.
Самые лучшие источники знаний написаны на английском языке. Даже русскоязычные разработчики пишут статьи на английском, поскольку это позволяет охватить бо́льшую аудиторию. Переводы появляются не всегда и часто запаздывают. Поэтому важно обратить внимание на свой уровень английского языка и при необходимости включить его в свой план обучения.
Также при самостоятельном изучении языка важно обращать внимание на уровень материалов. Поскольку у каждой задачи в программировании есть больше одного решения, вы можете найти разнообразные статьи на интересующую вас тему, главное не запутаться в них. Но существуют так называемые «best practice», которые позволяют избежать постоянного изобретения велосипеда. Их нужно искать более тщательно.
Если времени не так уж и много, а новое знание освоить очень хочется, то оптимальным будет поискать подходящий онлайн-курс, благо их теперь очень много. Это позволит получить концентрированный поток знаний и обратную связь от профессионалов, что сильно ускорит процесс обучения. И дополнительный бонус — вам не придётся тратить время на самостоятельный поиск хороших материалов.
Какой бы способ изучения вы не выбрали, самым важным является практика! В программировании совершенно не важно, какие курсы или учебные заведения вы окончили. На любом собеседовании вам будут задавать предельно практичные вопросы. Поэтому во время или после прохождения какого-либо курса или по ходу изучения языка самостоятельно практикуйтесь как можно больше. Если перевести соотношение теории к практике в проценты, то, на мой взгляд, оно составит примерно 20/80. Работодателю важно сразу после найма получить работоспособного программиста, а не тратить время на перевод теоретических знаний в практические навыки и умения.
Андрей Степанов
руководитель отдела интеграционных решений компании «Синимекс»
Вопрос достаточно сложный. Нельзя выбирать между теорией и практикой, должна быть гармония. Нужно учить синтаксис и понимать алгоритмы и основы. При этом без практики эти знания не имеют ценности. Нужно чередовать — прочитали некоторую часть, затем опробовали на практике. При этом, на мой взгляд, совсем не обязательно покупать платные подписки на курсы. Очень много материалов есть в открытом доступе. Большое количество интересных практических задач можно получить, задав в Google вопрос «олимпиадные задачи по программированию». На них вам придётся поискать и почитать теорию про алгоритмы, их сложность, структуры данных и прочее. При этом они дают возможность писать свой код, и потом при разборе увидеть свои ошибки и варианты решения из best practice.
Как только почувствовали уверенность — нужно браться за боевые задачи, чтобы увидеть реальный мир и реальные проблемы. Зачастую в учебнике и обучающих задачах многие сложные и интересные практические моменты пощупать не получится. Начните писать свой проект на GitHub. Ещё очень важный момент: ваш шанс на успех сильно повысит наличие ментора — более опытного друга/коллеги/наставника, который может помочь, если у вас «затык», что-то объяснить, проверить результат вашей работы и дать правильный вектор вашему развитию. Никогда не останавливайтесь на достигнутом. Удачи.
Сергей Ширкин
декан факультета Искусственного Интеллекта в онлайн-университете GeekUniversity
В изучении языка программирования вам, скорее всего, потребуется соблюдать баланс между изучением синтаксиса и применением его на практике.
Следующие шаги помогут вам сделать это правильно.
Определитесь с конечной целью
При изучении языка программирования нужно для начала хотя бы примерно представлять, что вы хотите в итоге научиться делать. К примеру, ваша цель — научиться писать игры, либо делать сайты, либо написать приложение с использованием искусственного интеллекта.
А может, вы хотите уметь делать и то, и другое, и третье? Такое тоже возможно.
Вам будет легче продолжить изучать язык программирования, если у вас будет определённая цель, даже если в будущем вы передумаете и будете применять свои знания совсем для другого.
Учите синтаксис небольшими порциями
Не нужно сразу штудировать целый учебник по программированию. Проходите теорию по небольшим пунктам.
Сразу применяйте знания на практике
К примеру, вы прочитали часть материала про работу со строками. Возможно, даже всего лишь про одну команду. Сразу же попробуйте эту команду применить на практике, самостоятельно придумав для этого небольшой пример. Если вы хотите отработать команду, с помощью которой можно сделать замену символа в строке, возьмите конкретное слово и замените там какой-либо символ.
Решайте задачи по программированию
Пройдя небольшой раздел, попробуйте порешать задачи на эту тему. В интернете много сайтов с задачами, которые можно решать онлайн и сразу увидеть результат. Например, если вы изучаете Python, вам подойдет сайт pythontutor.ru.
Переходите к созданию проектов
Проекты — это то место, где у вас получится применить навыки, отработанные на задачах.
Если работа над программным проектом происходит в реальной рабочей обстановке, то знания усваиваются с большой скоростью. Причем за первые месяцы работы программист получает больше знаний и навыков, чем за любой из последующих месяцев.
Большую роль здесь играет эффект новизны — как за счёт того, что язык программирования изучается относительно недавно, так и за счёт нового рабочего окружения.
Валерий Чеванин
руководитель отдела разработки в AWG.RU
Подход к изучению нового языка сильно зависит от предыдущего опыта программирования. Если его нет, то проще начинать с азов и учиться по книжке с уроками и заданиями. При этом важно выбирать актуальный учебник — учить древнюю версию даже не сильно обновляемого языка программирования занятие неблагодарное и бесполезное. Если есть опыт в программировании, то новый для изучения язык выбирается обычно на основе либо применимости к какой-то области (и тогда обычно всё идёт от конкретных задач — то есть, практический путь), либо на основе «хайпа». Во втором случае проще найти эксперта, который будет готов ответить на вопросы и рассказать о подводных камнях.
Алгоритм может быть следующий:
Александр Братчиков
автор программы курса «Фронтенд-разработчик» в Яндекс.Практикум
Самое сложное на старте — выбрать направление. Например, в разработке сайтов их три: фронтенд, бэкенд, фулстек. Как понять, к какому направлению больше лежит душа? В идеале — попробовать фронтенд и бэкенд, а потом определиться, что интересно изучить дальше.
Если говорить о фронтенде, то обязательные основы — HTML и CSS, нужные для вёрстки, и язык программирования JavaScript, который делает сайт интерактивным. Фронтенд-разработчику важно понимать на базовом уровне, как устроен бэкенд, поэтому нужно изучить, как происходит сборка проекта — подключение сайта к серверу и его «доставка» до пользователя.
Лучше равномерно распределить занятия во времени — тратить на обучение один-два вечера в неделю не так эффективно, как проходить небольшие уроки каждый день. Чтобы быстрее перейти к практике, на начальном этапе нужно заниматься не меньше десяти часов в неделю.
Через месяц-полтора уже получится сверстать несложный сайт, ещё через два месяца — «оживить» сайт при помощи JavaScript и адаптировать его для разных устройств.
Чтобы учиться было интереснее, придумайте себе проект (сайт) и начните его воплощать — верстать, писать код. Дело пойдёт быстрее, потому что код не будет абстрактным, перед вами будут стоять конкретные задачи, решение которых вы будете искать. В Яндекс.Практикуме мы предлагаем студентам сделать пять проектов: четыре шаблонных и одна полностью индивидуальная дипломная работа. Эти проекты они смогут сразу положить в своё портфолио.
Леонид Голиков
PR Менеджер в IT Компании Enterprise сегмента
Изучение любого языка происходит примерно одинаково, но всё же обязательные шаги примерно следующие:
Одному из разработчиков нашей команды в изучении Java когда-то очень помогла книга, которая была посвящена алгоритмам данных, но имела примеры на Java.
Ещё один вариант. Придумываете для себя простой, но интересный проект, а далее начинаете его пытаться делать, параллельно задавая вопросы в Google или StackOverflow. Там можно прояснить вопросы простого характера и найти в комментариях полезные мнения. Но тут есть и минус. Без понимания базовых концепций программирование может превратиться в «загугли решение». Некоторые девелоперы так и копируют асинхронные функции, не понимая, что такое вообще асинхронность.
Если вы уже разрабатывали на каком-то языке, то сидеть и отдельно изучать синтаксис нет смысла. Можно сразу лезть в практику и по ходу дела разбираться с особенностями нового языка.
Иван Загайнов
руководитель группы Computer Vision ABBYY
Ответ во многом зависит от языка программирования и сферы его применения.
Допустим, человек занимается научными исследованиями, и сотрудники его лаборатории в проектах используют Fortran — это одна ситуация. Другой вариант — студент, изучающий машинное обучение, который хочет писать проекты на Python. Ещё вариант: разработчик решил изучить С++, чтобы устроиться на работу в коммерческую компанию. Эти и другие ситуации требуют разного подхода и объёма прилагаемых усилий для изучения языка.
Я попытаюсь дать общие рекомендации, но в каждом случае в этот алгоритм следует вносить коррективы.
1. Найдите хорошую книгу, освещающую основной синтаксис языка, с примерами и объяснением принципов работы. От правильного выбора книги зависит многое, она сформирует ваше первоначальное «видение» языка. Разумеется, в будущем оно будет корректироваться по мере накопления вашего личного опыта работы с ним.
2. Практика. В каждом языке есть свой «Hello, world!». Пытайтесь сразу же применять полученные знания на практике, закрепляйте освоенные конструкции языка.
3. Будьте любознательными. Как только в голове возникает вопрос, ответа на который вы не знаете, — ищите его не откладывая! В интернете полно форумов и блогов, в которых разработчики обсуждают практически все нюансы языков. Ни одна книга не может охватить их все. Особенно это касается языков, имеющих богатый набор выразительных средств.
4. Изучайте основы ООП, паттерны программирования, алгоритмы и структуры данных. Посмотрите, как устроены библиотеки внутри, загляните в их код. Великолепное формальное знание языка ещё не означает, что вы будете писать элегантный и эффективный код на нём.
5. Старайтесь, чтобы ваш код увидело как можно больше коллег, чтобы как можно раньше получить фидбэк на то, как вы пишете или оформляете код. Оформление кода или code style в крупных проектах — отдельная тема, и её тоже следует изучить. Также как и процесс code review.
6. Если вам требуется глубокое понимание языка (например если вы разработчик в крупной коммерческой компании), не ограничивайте себя изучением только его одного. Посмотрите вокруг на остальное: скриптовые языки, ассемблер. Задайте себе вопрос, чем они отличаются, почему устроены иначе, какую цель преследовали авторы этих языков? Изучайте различные фреймворки, библиотеки, погрузитесь немного в теорию компиляции, разберитесь с тем, как устроен процесс «сборки» проектов в разных средах.
7. Придётся изучить английский достаточно хорошо, чтобы читать форумы разработчиков, техническую документацию. Это и в жизни пригодится.
8. В какой-то момент стоит открыть документацию, или, говоря проще, изучить «стандарт» языка. Многие привычные вещи в этот момент откроются вам с нового ракурса. Не помешает также проследить исторический путь развития языка, разобраться, что в нём менялось от одной версии стандарта к следующей.
9. Посещайте различные мероприятия, конференции, семинары. Они могут быть посвящены дальнейшему развитию языка или различным сферам его применения.
10. Помните, что нельзя «изучить» какой-то язык «от и до». Язык не монумент, он живёт и развивается, это же справедливо и в отношении естественных языков. И если язык «живой», востребованный в мире, то процесс изменений в нём со временем становится всё более интенсивным.
На этом у меня всё. Ищите свой путь, не бойтесь наступать на «грабли». Чем раньше вы их «соберёте» — тем меньше «мин» будет в проектах, которые вы после себя оставите.
Никита Неминущий
мобильный разработчик в DD Planet
На самом деле единственного верного алгоритма не существует. Каждый выбирает для себя подход, который соответствует его предыдущему опыту и уровню подготовки. Кто-то уже наработал достаточную практическую базу и хочет углубиться в изучение конкретной специализации, а кто-то только начинает свой путь в программировании и едва знаком с синтаксисом.
Тем не менее, существует довольно эффективный алгоритм, с помощью которого можно научиться программировать. Если, конечно, есть чёткое намерение и мотивация. Сводится он к следующему: человек определяется, какой язык программирования хочет изучить, покупает книгу по этому языку и начинает её осваивать. Как только в тексте встречается пример кода, обучающийся в обязательном порядке опробует его на своём компьютере, и так пока не дойдёт до конца книги. Только практика в сочетании с теорией позволяет научиться писать код. К концу прочтения человек будет знать язык программирования на приемлемом уровне.
Что касается базового образования, то при желании научиться программировать способен даже выпускник школы. Высшее образование для этого иметь не обязательно. Однако, если оно есть, процесс будет идти быстрее. Книги по программированию охватывают базовые основы, повествование продвигается от простого к сложному. Это позволяет без труда освоить материал.
Следующий важный этап — выбор специализации и последовательное её освоение. Разные языки программирования позволяют писать код под разные платформы. Так, используя Java, можно создавать серверные и мобильные решения (например для Android). C# позволяет писать практически всё: серверные, мобильные, десктопные и веб-решения. Здесь также будет эффективным самообучение по книге. Однако параллельно с этим нужно задумываться о развитии собственных навыков с точки зрения архитектуры написания кода. Изучать мануалы по паттернам проектирования и пытаться применять знания на практике. Это, пожалуй, самый простой и надёжный алгоритм.
Ещё один вариант самостоятельного обучения программированию — изучение видеокурса. Здесь имеет смысл применять тот же подход, что и при работе с книгой. Важно не просто слушать то, что говорит преподаватель, но и пытаться работать с кодом самостоятельно.
Если посвятить всё своё продуктивное время обучению, то полностью освоить язык программирования (не включая специализацию в разработке ПО) можно за один календарный месяц. Но это при условии, что человек не станет отвлекаться на постороннюю деятельность и будет практиковаться в написании кода, углубляясь в специализацию.
Напоследок отмечу, что у каждого из перечисленных мной вариантов обучения есть свои преимущества. Из книги удобнее переписывать код для дальнейшей работы с ним. Видео наглядно продемонстрирует, как ошибки и изменения в коде влияют на функциональность. Выбирать нужно тот вариант, который удобен обучающемуся.
Итак, как лучше изучать язык программирования?
Каждый эксперт рекомендует свой алгоритм, но мы выписали и объединили общие пункты: