Советы по изучению языка программирования

9 шагов к освоению любого языка программирования

Перевод статьи «The 9-Step Plan For Becoming Dangerous In Any Language».

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

Люди изучают языки программирования по многим причинам. Например, когда:

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

Почему я считаю, что могу давать советы?

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

Сейчас мой путь в «языкознании» выглядит так:

Я не включаю в список родственные языки (например, TypeScript), которые тоже изучал попутно.

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

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

1. Следование принципу Парето

Формулировку возьмем из Википедии: «20% усилий дают 80% результата, а остальные 80% усилий — лишь 20% результата».

Применительно к изучению языков программирования эту формулировку можно перефразировать следующим образом: «Знание 20% языка позволит вам справиться с 80% работы, для которой этот язык вам нужен».

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

Но лично мне нравится поговорка «Jack of all trades, master of none, oftentimes better than a master of one» (приблизительно можно перевести как «специалист широкого профиля, не имеющий узкой специализации, зачастую бывает полезнее, чем узкий специалист», — прим. перев.).

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

2. Не упускайте из виду принципы программирования

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

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

3. Ознакомьтесь с документацией языка

«Если у меня будет 6 часов на то, чтобы срубить дерево, первые 4 я потрачу на заточку топора».

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

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

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

Если у вас Mac, подумайте о том, чтобы инвестировать в Dash. Это мой любимый ресурс, в частности, когда дело касается изучения нового языка. А еще там отличные интеграции с некоторыми IDE, например, с VSCode.

4. Изучите самые основы и практикуйтесь, практикуйтесь, практикуйтесь

Под «основами» я подразумеваю некоторые основные идеи, присутствующие в каждом языке:

По мере накопления опыта вы начнете видеть общие паттерны и на этом успокоитесь. А вот этого не надо! Хотя else/if и варианты switch могут быть легкими для понимания, научиться использовать их на практике с учетом всех мелких различий может быть не так просто.

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

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

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

Использование REPL

(Прим. ред. Techrocks. Из Википедии: «REPL — форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки. В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю»).

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

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

Онлайн-ресурсы для практики в алгоритмах

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

5. Как можно раньше учитесь тестировать свой код и тестируйте его почаще

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

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

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

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

6. Изучите, как в вашем языке работает менеджмент пакетов

Bundler, Cargo, Yarn, NPM, Cocoapods, PipEnv, NuGet, Gradle, Hex. Что у них общего? Все это — инструменты, играющие ключевую роль в управлении пакетами в экосистемах разных языков программирования.

Если вам приходилось пользоваться хоть одним из них, вы должны понимать, насколько это важно.

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

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

7. Поищите Awesome-репозитории на GitHub, связанные с вашим языком

Оригинальный репозиторий awesome — это невероятный ресурс для поиска связанных репозиториев для отдельных языков и технологий. Раздел Programming Languages — настоящая сокровищница со ссылками на потрясающие ресурсы по языку.

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

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

8. Практика. Build your own X

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

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

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

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

Создайте инструмент командной строки

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

Среди созданных мной CLI-инструментов были:

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

Создайте веб-сервер

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

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

9. Научитесь чтению файлов и записи в файлы

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

Эпилог

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

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

Источник

5 советов для быстрого изучения языка программирования

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

Заложите мощный фундамент

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

Читайте и учите больше

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

Практикуйтесь как можно чаще

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

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

Обменивайтесь опытом

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

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

Экспериментируйте, программируйте с удовольствием!

Если вы увлечены программированием, то знаете, насколько это интересное, увлекательное и даже веселое занятие. Вы творческий человек, которому в качестве мольберта и кисти дан компьютер и язык программирования. И пусть набор символов кому-то может показаться безликим и скучным. Мы ведь с вами знаем, что это не так.Учите ЯП и программируйте с воодушевлением и в отличном настроении. Старайтесь делать все возможное, чтобы ваша программа работала безукоризненно, с каждым днем становилась все лучше, и вы совершенствовались вместе с ней!

Советы по изучению языка программирования. Смотреть фото Советы по изучению языка программирования. Смотреть картинку Советы по изучению языка программирования. Картинка про Советы по изучению языка программирования. Фото Советы по изучению языка программирования
Картина Богданова-Бельского «Устный счёт. В народной школе С. А.Рачинского». Wikimedia Commons, public domain.

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

Заложите мощный фундамент

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

Читайте и учите больше

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

Практикуйтесь как можно чаще

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

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

Обменивайтесь опытом

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

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

Экспериментируйте, программируйте с удовольствием!

Если вы увлечены программированием, то знаете, насколько это интересное, увлекательное и даже веселое занятие. Вы творческий человек, которому в качестве мольберта и кисти дан компьютер и язык программирования. И пусть набор символов кому-то может показаться безликим и скучным. Мы ведь с вами знаем, что это не так.Учите ЯП и программируйте с воодушевлением и в отличном настроении. Старайтесь делать все возможное, чтобы ваша программа работала безукоризненно, с каждым днем становилась все лучше, и вы совершенствовались вместе с ней!

Источник

С чего самостоятельно начать обучение программированию: этапы освоения профессии и советы новичкам

История о том, как стать программистом с нуля

Советы по изучению языка программирования. Смотреть фото Советы по изучению языка программирования. Смотреть картинку Советы по изучению языка программирования. Картинка про Советы по изучению языка программирования. Фото Советы по изучению языка программирования

Здравствуйте, уважаемые читатели!

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

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

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

Кто такой программист

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

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

Программисты обладают такими качествами, как:

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

Что нужно знать и уметь

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

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

И это лишь часть того, что должен уметь делать программист.

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

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

Язык – это просто инструмент для решения бизнес-задач. Поэтому новичку надо определиться с тем, как решать задачу, разбить это решение на этапы, оптимизировать процесс, чтобы не тратить время и ресурсы впустую.

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

И напоследок научиться работать с базой данных.

Подбор направления

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

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

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

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

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

Выбрать направление деятельности можно среди доступных профессий:

И это только часть должностей, которые может занимать программист.

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

Выбор языка программирования

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

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

Если же отталкиваться от направления, то надо знать, что веб-разработчик пользуется C++, Python, Java. Системный программист – Assembler, C, C++, Python. Администратор базы данных – SQL.

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

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

Если к этому времени специалист еще не приступал к изучению фреймворков, структур и баз данных, то сейчас эти знания просто необходимы. Не надо бросаться на все сразу, лучше выбрать что-то из основного: Git, SQL, HTML, CSS, XML, JSP, Maven, Spring, ORM, REST, MySQL, PostgreSQL.

Самообразование

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

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

Онлайн-курсы

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

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

Предлагаю ознакомиться со следующими обучающими программами:

Составление резюме и портфолио

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

Лучше выбирать иностранные биржи, особенно если есть знания английского языка. Там и заказов больше, и доход выше. Подойдут, например, Upwork и YouTeam. Если говорить о русскоязычных биржах, то популярны Kwork, FL.ru и Freelance.ru.

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

А дальше можно уже перейти на специализированные сайты с вакансиями только для программистов, например, We Work Remotely и Хабр Карьера. А можно поискать работу на таких ресурсах, как hh.ru или SuperJob.ru.

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

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

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

Советы новичкам

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

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

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

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

Узнайте больше об архитектуре компьютера.

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

Заключение

Подведем итоги. Чтобы начать обучение программированию, надо следовать поэтапно. Сделайте следующее:

И в качестве общих советов:

Источник

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

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