Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

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

ОбразованиеТехнологии+3
Ivan Shyla
  ·   · 69,2 K
Первый
Программист  · 20 июн 2015

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

Общая идея состоит в том, что вам нужно попробовать программировать и выучить хотя бы один язык, попрактиковаться, овладеть минимальным набором навыков, которыми обладает хотя бы младший (иногда их называют junior) программист. Где-то в этой точке у вас будет минимальное представление о программировании и о вашем желании продолжать двигаться в ту или иную область. Например, начать получать опыт коммерческой разработки. Это может быть либо фриланс (отличный вариант для тех, кто меняет работу, и не хочет уходить со старой, бросаясь в омут с головой), либо, если есть такая возможность попасть на оплачиваемую-неоплачиваемую стажировку (будет она оплачиваться или нет, зависит от того, достаточно ли у вас навыков и на каком они уровне, а также от того, в каком состоянии находится ИТ-рынок в вашем городе).

Начинать я бы советовал с языка Python. Это довольно популярный язык общего назначения. На нем пишут и серверную часть сайтов, его используют в академических исследованиях и этот язык в целом неплохо для прототипирования. Он хорош лаконичностью и простотой своего синтаксиса (по сравнению с другими ЯП - языками программирования). Несмотря на такую простоту, его активно используют в больших ит-конторах: в Яндексе, в Рамблере, в Мэйл.ру, в Гугл, в Яху и многих других.

Что читать по питону? Если у вас неплохой английский, то можно начать с Learn Python The Hardway. Она хороша тем, что рассчитана на совсем новичков - там описаны основные идеи: что такое интерпретатор, функции, переменные, в чем суть ООП, что такое юнит-тестирование, и как вообще происходит обработка запроса в веб-приложении. Это даст вам больше уверенности в продвижении дальше - не только благодаря теории, но и благодаря тому, что в книге много упражнений для закрепления теории. Не смущайтесь, если задания покажутся нудными - лучше проработать основы и набить руку (в как школе - на простых уравнениях), чтобы потом не задумываться о простых вещах.

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

Попробуйте написать простейший веб-блог. Для этого вам пригодятся хотя бы минимальные знания того, что такое базы данных (БД), как они устроены и умение работать хотя бы с одной. Если их совсем мало или нет - вам поможет книга Мартин Грабер - Понимание SQL. После нее у вас не будет особых трудностей в изучении MyQL и PostgreSQL - две довольно популярных СУБД (системы управления БД). Еще вам будут полезны навыки верстки - в сети полно разных курсов, как платных, так и бесплатных. Достаточно будет минимальных, чтобы создать несколько страничек, откуда создавать и редактировать пост в блоге, выводить список статей, и так далее. По мере появления аппетита (если он начнет появляться) расширяйте идею и добавляйте новые функции - категории, комментарии, скрытые посты, регистрация в блоге, и так далее.

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

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

После этих этапов вы уже будете иметь начальные навыки python, mysql/postgresql, минимальные навыки верстки (в целом для веб-разработчика полезным был бы еще и javascript). С таким набором у вас уже есть неплохие шансы найти оплачиваемую стажировку - иными словами, начать работать младшим программистом.

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

PHP имеет дурную репутацию языка с очень низким порогом входа, который прививает плохие привычки в программировании. Но это порождает долгие холивары среди программистов, поэтому нужно помнить, что это всего лишь мнение. Зато php очень распространен, почти в любом городе есть вакансии на нем. Обратной стороной этого является то, что у вас много конкурентов и не самая высокая зарплата (в среднем, программисты на python и ruby получают чуть больше). На php были написаны Facebook, Вконтакте, Badoo и другие сервисы.

Ruby стал популярен сравнительно недавно. У него хорошее и активное сообщество, которому много курсов. Часто его используют в связке с Ruby on Rails - это фреймворк, также как и Django, только для руби.

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

Java, как было сказано выше, язык довольно популярный и хорошо оплачиваемый. Она используется в банках, для разработки различного корпоративного ПО, она используется для программирования на Android, она используется и как веб-серверная часть некоторых больших сайтов. По Java все хвалят "thinking in java". Кажется, на русский книга тоже переводилась. Чем актуальней вы найдете переиздание, тем лучше.

Си активно используется в программировании микроконтроллеров и встроенных систем. На нем также пишут приложения для десктопов в целом. И часто переписывают критичные в плане быстродействия части своих приложений. Если интересно - вы можете купить какие-то электронные конструкторы типа Arduino (хотя полно и их аналогов, ардуино просто были одними из первых и наиболее популярных), и поиграться с ними - помигать светодиодами, подключить к ним датчики температуры и другие, подключить железку к компьютеру и передавать на компьютер данные, как-то обрабатывать эти данные. А может быть, вы захотите потом эти данные показывать на комьютере, в веб-браузере? А может быть, вам захочется потом написать к этому и мобильное приложение? Кто знает. Вы найдете много хороших идей по теме "Умный дом". Как на специальных форумах, так и на Хабрахарбе - habr.ru. По Си очень полезны Керниган и Ричи. "Язык С".

Еще есть Objective-C и Swift - оба языка для программирования в экосфере продуктов Apple: iOS, MacOS. Первый постарше и посложнее в плане синтаксиса, второй - более новый, похож по синтаксису на Python. Чтобы писать под Apple, вам понадобится макбук. Проблемой обоих языков является то, что на русском языке по ним информации в разы меньше, чем по Java, Си или Питону.

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

Вполне возможно, что вы не захотите тратить много времени на обучение по книгам. Тогда вы можете пойти на курсы обучения программированию - такие есть и в сети - что-то типа видеокурсов. Есть курсы офлайн - когда вы приходите из занимаетесь с преподавателем в группе. Это дороже, но быстрее. Из хороших курсов вспоминается hexlet.io - там не так много, хотя вводный курс в Java и Ruby есть. Еще вспомнил курсы "Специалист" - specialist.ru . Несмотря на не выглядящий современным сайт, на фоне остальных курсов эти, на мой взгляд, неплохи. У них есть как онлайн обучение, так и офлайн.

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

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

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

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

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

Полезно также будет узнать про системы контроля версий (VCS). Достаточно и git (по моим наблюдениям, он чуть более распространен), но hg тоже полезен.

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

Держите в голове идею, что в программировании нельзя один раз выучиться и все. Вам придется постоянно обновлять свои знания, потому что IT - это быстроразвивающаяся отрасль. Иногда для того, чтобы держать себя в тонусе, достаточно просто читать книги и новости, а иногда полезно сделать свой pet-project (еще их называют side project) - просто для себя. Такие проекты особенно хорошо и интересно делать, чтобы решить какую-то вашу собственную задачу.

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

Помните, что упорство и практика - два самых важных инструмента. Сразу после головы, конечно же. :)

В общем, удачи!

1 эксперт согласен

Лучший ответ на этот вопрос!

Образовательная платформа Хекслет  · 22 апр 2022  · ru.hexlet.io
Начинать обучение стоит с формирования цели, которую вы хотите достичь с помощью программирования. Типа "изучить программирование, чтобы устроиться программистом и начать зарабатывать этим деньги". Зачем нужно? Достаточно... Читать далее
Помогаем новичкам освоить профессию веб-разработчикаПерейти на ru.hexlet.io/webinars
Product manager  · 20 июн 2015

В самом начале пройдите несколько курсов на codecademy.com - это поместит вас в контекст и развлечет :)

Курсы по программированию разных университетов можно найти и на coursera.org (некоторые даже дают сертификат).

Первый
Магистр  · 20 июн 2015
Если вам интересно "веб" программирование,тогда лучше всего с JavaScript,параллельно рекомендую сделать выбор между Python и Ruby.В современном мире все основано на JavaScript,и с какого языка бы вы не начали,в конечном итоге... Читать далее
учитель информатики  · 24 июн 2015

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

1 эксперт не согласен
Паскаль сейчас в университета не дают, исключая очень слабые и один, в котором поддерживают Pascal abc. Везде дают... Читать дальше
Программист  · 19 июн 2015
Обучаться программированию в любом возрасте надо с написания подпрограмм (т.н. макросов) для Excel. Эти макросы пишутся на языке VBA. Именно эта среда и язык! И вот почему: 1. Простота. Первую программу вы сможете написать уже... Читать далее
2 эксперта не согласны

Visual Basic? Серьезно? Это смешно

Специалист по информационным технологиям, окончил...  · 14 июл 2021
Начните с азов. Твëрдо усвоенный материал всегда будет пользоваться спросом. Параллельно смотрите книги и статьи в интернете, например, тут есть конспект авторитетного учебника Макконелла по стилю кодирования: http://samlib.ru/a... Читать далее
3 эксперта не согласны
Автор спросил с чего начать обучение программированию и Вы посоветовали начать с книги о методике написания кода... Читать дальше

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

3 эксперта не согласны
Бизнес тренинги однозначно да, но курсы нет. Попробуйте записаться на нормальный курс. Если денег нет, пройдите... Читать дальше
Возраст не влияет на обучение программированию (: А выбор языка зависит только от личный предпочтений, я начала с Python - он простой и пригоден для любых задач, практически. На Яндекс.Практикум, например, есть несколько разных... Читать далее
1 эксперт согласен
фронтенд разработчик  · 19 нояб 2019
Для начала, погуглите и почитайте про то, что в целом из себя представляют разные области программирования: веб, аналитика, биг дата, игровая отрасль и тд, выберите то, что показалось наиболее интересным и по способностям вам... Читать далее