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

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

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

Изучение основ

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

Алгоритмы

Как только ты разберёшься с изучением каких-то основ языка, пора взяться за алгоритмы. Что можно почитать по этому поводу? Есть замечательная книжка -- "Грокаем алгоритмы", написал её Адитья Бхаргава. Надо, зубодробительное имя, но в переводе издательства ПИТЕР, читается легко и просто. Издание даже иллюстрировано, так как не всегда удобно понимать некоторые вещи из текста, хочется ещё и схемы посмотреть. Я её покупал на OZON, стоила около 700 рублей. Книга даст понимание об алгоритмах, какие они бывают, там же есть классические задачки на некоторые из них. После чтения полученные знания можно проверить на практике. Для этого есть leetcode. Это классный сайт, где можно испытать свои навыки на решение тех или иных задач, много задач в тренажёре доступны бесплатно. Сами задачи предлагаются на страничке problems.

Паттерны проектирования и архитектура

Как только ты разоберёшься с алгоритмами и потренируешься с задачками на leetcode, можно пойти на ступеньку выше и ознакомиться с архитектурой, паттернами проектирования и принципами SOLID (а так же DRY и KISS), о которых я тоже готовлю материал, не пропусти. Для изучения паттернов проектирования можно почитать публикации, которые буду делать я, а так же есть онлайн проект от Refactoring Guru. Когда я пришёл в большое программирование, это была по сути моя библия и настольная книга наряду с Робертом Мартином, про которого я уже писал.

Тут стоит поизучать рынок и определиться, в каком направлении тебе хотелось бы заниматься в рамках того языка, который ты выбрал. По сути этот пункт и пункт про изучение основ можно совместить, чтобы не терять времени на изучение того, что первое время не пригодится, а в дальнейшем забудется. Определи, какие тебя интересуют вещи в программировании. Это может быть мобильная разработка, или веб-разработка, или что-то более сложное из области BIM. Тут просто целый спектр тем, которые могут занять тебя и твой пытливый ум. Затем стоит изучить технологический стек той области, в которую хочется пойти (так называемый roadmap, который каждый год публикует тот же Microsoft, например). Сообщество часто такие делает, так что можно погуглить такой вот roadmap для своей области.

Домашний проект (pet-project)

Тут уже тебе решать, будешь ты что-то делать более сложное, чем задачки с leetcode, чтобы набить руку и потом блеснуть на собеседовании, что у тебя есть свой pet-project на GitHub, который ты регулярно дорабатываешь. И он не просто может быть, а он может быть полезным для сообщества, если будет решать какие-то проблемы (от чтения файлов особого формата до отправки каких-то сообщений в бот в телеграм, у кого на что хватит фантазии). Про себя скажу, что сам я не нашёл идеи для воплощения на GitHub, да и работы хватает, чтобы потом ещё дома код писать...

Подписывайся на мой Telegram-канал, чтобы читать публикации первым

5 комментариев

Не смотря на все плюсы, программирование далеко не для всех подходит.

2
Ответить

Необходимо понять, на каком языке ты хочешь работать.

В корне неправильный подход. Язык - дело десятое. Важно понять что тебе нравится делать и чем ты хочешь заниматься. А вы предлагаете "мне нравится работать молотком - пойду-ка я в плотники".
Язык это всего лишь инструмент, не более того. И для серьезной разработки придется знать их несколько (2-3) и уметь применять в зависимости от того, как ой наиболее подходит для решения данной конкретной задачи.
Основная ошибка в разработке - натягивание совы на глобус. Когда для решения задачи применяется не тот язык, который подходит наилучшим образом, а тот, который знаешь лучше других.

Что можно почитать по этому поводу? Есть замечательная книжка — "Грокаем алгоритмы", написал её Адитья Бхаргава

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

Определи, какие тебя интересуют вещи в программировании.

Это то, что должно стоять даже не первым, а нулевым пунктом. Исходя их этого вытекает и все остальное - языки, инструменты и прочее.
И не надо идти туда, где больше платят. Идти в IT только ради денег - такое себе. на 3-5 лет хватит, а потом все, полное выгорание и деградация. Идти надо туда, где интересно. Там будет мотивация развиваться а за развитием и деньги придут.

Ответить

Кто ж такое сказал, что нужно знать обязательно 2-3? Вы знаете 2-3 иностранных языка? Для начала хватит одного, а дальше уже в зависимости от области и тех задач, которые будут стоять перед человеком.

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

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

Ответить

Кто ж такое сказал, что нужно знать обязательно 2-3? Вы знаете 2-3 иностранных языка?

Если бы я был переводчиком, то да. Знал бы 2-3 иностранных языка.

Но я разработчик. И в настоящее время для эффективного решения поставленных задач использую три языка (на считая SQL). Поскольку для реализации бизнеслогики наиболее эффективен один (в силу того, что он специально для этого придуман), для реализации взаимодействия с системными объектами на низком уровне - другой. Для работы с системными объектами на высоком уровне - третий.

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

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

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

Ответить

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

Это касается не всех областей разработки не всех специалистов. В связке так или иначе начинающий разработчик изучает несколько технологий в своём стеке, но что касается языков — ведущий всегда какой-то один. Разработчик C# не обязан что-то уметь в C++, аналогично и обратное. Плюс ко всему, используя сразу несколько языков или кучу разнообразных, специалист выше уровня Middle никогда не поднимется, нельзя знать всё, соответственно глубины знаний будет недостаточно. Но это пригодится заткнуть за пояс всяких неприятных, которые на форумах/в блогах пишут что-то, что мол "я знаю 3 языка программирования, а чего добился ты?" *звуки аплодисментов*

Подойдет для тех, кто считает, что образование не требуется

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

Ответить