Как обучиться программированию

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

«Нет ничего невозможного», — говорит Дмитрий, iOS-разработчик компании SFERA. Навыки написания программ может приобрести любой желающий в любом возрасте. Главное — мотивация и упорный труд».

Мы побеседовали с Дмитрием о том, как стать квалифицированным программистом и какие перспективы есть у этой профессии.

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

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

2. Какие источники для изучения использовать?

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

Следующие книги помогут вам в освоении профессии:

  • «Паттерны проектирования», Эрик Фримен, Элизабет Фримен;
  • «Чистый код», Роберт Мартин;
  • «Совершенный код. Мастер-класс», Стив Макконнелл;
  • «Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон;
  • «Искусство программирования» (все тома), Дональд Кнут;
  • «Сколько стоит программный проект», Стив Макконнелл.

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

3. Как выбрать язык программирования?

После освоения основ переходите к языкам Pascal и С++. Далее из множества языков выберите тот, который подойдет под ваши цели и задачи. Создание кодов начинайте с самых простых команд. Затем напишите те программы, которые облегчат выполнение определенных задач в будущем. Занимаясь по 2–3 часа в день, вы сможете начать писать уже через 2–3 месяца. И не переходите на следующий уровень, не разобравшись досконально с каждой мелочью.

4. Как наработать опыт?

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

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

Для развития на любом уровне полезно взаимодействовать с другими специалистами и делиться опытом. Сейчас во многих странах, например, в Китае, Вьетнаме, Таиланде, создаются профессиональные сообщества разработчиков. В Белоруссии выросла своя «силиконовая долина». Специфика работы программистов не накладывает никаких территориальных ограничений для сотрудничества. Поэтому единомышленников можно найти во всех уголках мира.

На этих ресурсах вы сможете обмениваться опытом с коллегами:

5. Будут ли востребованы разработчики в будущем?

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

В российском IT-проекте SFERA успешно взаимодействуют как профессионалы, так и начинающие специалисты. Они создают уникальную платформу, которая объединяет десятки мобильных приложений. А цель ее разработки — развитие пользователей и экономия их времени.

Чтобы узнать больше о масштабном IT-стартапе SFERA, подписывайтесь на наши страницы в социальных сетях:

{ "author_name": "Sfera project", "author_type": "self", "tags": [], "comments": 26, "likes": 6, "favorites": 55, "is_advertisement": false, "subsite_label": "hr", "id": 179838, "is_wide": false, "is_ugc": true, "date": "Mon, 23 Nov 2020 10:42:59 +0300", "is_special": false }
0
26 комментариев
Популярные
По порядку
Написать комментарий...
11

Глупости какие-то. Так квалифицированным программистом не стать никогда. То же самое, что и учиться в онлайн-школе типа GB или SB.

1) С чего начать изучать программирование?
С программирования. Других вариантов здесь быть не может. Берём простейший код, который понятен будет построчно, изучаем, к чему приводит каждая строчка, пишем что-то своё. После самые простейшие задачи решаем кодом. Не получается – гуглим. Не находится конкретный вопрос – ищем конкретное решение. Это как ГДЗ в школе: если воспользовались, будьте добры для начала разобраться в решении, а не просто переписывать. Просто так в программисты не идут. Придумайте задачу, которая должна быть решена при помощи кода: автоматизация рутины, программа, приложение, бот. По мере разрастания функциями и возможностями, будут появляться новые знания. Да, многое будет непонятно в начале (например, нашли функцию для работы с сетью, но всё, что смогли там сделать – вписать свой URL и параметры, – это замечательно, уже разобрались и в такой мелочи), но постепенно будете возвращаться к своему коду, будете встречать каждый раз в разных вариациях какие-то конструкции, тогда потихоньку начнёте вникать в их суть по мере усложнения требований к своей разработке. Даже если понимаете, как работает функция, но не можете запомнить её – а зачем? Главное, что в будущем будете знать, какая функция нужна, и где её искать. Чем чаще её использовать – тем быстрее она запомнится. Математика нужна, но какая именно? Обычно достаточно математики 6 класса. Так что если в школе было всё до этого момента хорошо – то не о чем переживать. Математическое мышление – это уже другая сторона, здесь нужно по мере прочтения задачи представлять ход её решения, хотя бы пошаговый, без чисел. Тут уж сами, просто нужно больше решать задач, в которых много действий, и одно выходит из другого. Ещё может понадобиться координатное мышление, чтобы не теряться в многомерных массивах – для этого нужно чертить графики, координатные точки и т.п., это 7 класс, алгебра.

2) Какие источники для изучения использовать?
Интернет. Всё. Никаких книг. Книги по программированию – это как минимум прошлое. Чтобы понимать программирование, писать красивый код, нужно писать код и смотреть на код других. Красивый код = понятный, масштабируемый и универсальный код. Всё, что написано в книгах – это от помешанных гиков для помешанных гиков, адекватным программистам там не место. Я серьёзно. Назовите мне компанию, которая использует ПАТТЕРНЫ ПРОГРАММИРОВАНИЯ. Да, знать это желательно, но необязательно, ничего не потеряете. Так или иначе, это всё равно придёт с опытом, рано или поздно.

3) Как выбрать язык программирования?
"Pascal, C++" – отличный разброс. Я, как и многие другие, начинал с Pascal; кто-то начинал с C++; кто-то с Python; кто-то с Basic. Каждый язык хорош в своей области. Хотите писать макросы для офиса – берём Basic; создавать десктопные программы максимально быстро с красивыми формами – берём Pascal и оттуда идём в Delphi (это тот же язык); хотите контролировать каждый байт памяти и иметь низкоуровневый контролируемый доступ к железу – C++ (это игровые движки, очень нативный код (максимально совместимый с железом)), на котором можно писать быстрейшие приложения, очень мощный, но очень сложный для начинающего. Python – для быстрых прототипов (часто используется в спортивном программировании, хакатонах), но очень медленный и очень зависимый от многих факторов и навыков программиста, здесь нужна внимательность. Как выбрать язык – вечный вопрос. Я не знаю. Наверное, под задачи, которые необходимо выполнить. Ведь есть же ещё веб-программирование и даже визуальное программирование.

4) Как наработать опыт?
Разрабатывать проекты, писать код, улучшать код, общаться на форумах, отвечая на вопросы, участвуя в обсуждениях, изучая неизвестные вопросы. На работу берут новичков реже, чем комета Галлея снова пролетает мимо нас. В нормальные студии разработки не будут брать новичков, потому что это затратно по деньгам и времени, его ещё нужно обучать, чтобы он разобрался с внутренними спецификациями разработки, следить за ним. Какие-нибудь компании офисные наймут, может, но программирования там не увидите. Но никогда не нужно сдаваться, вдруг повезёт. habr – туда же, к литературе; StackOverflow – будет попадаться в гугле чаще, чем видите себя в зеркале.

5) Будут ли востребованы разработчики в будущем?
Такие, как интервьюируемый – скорее всего нет. Разработчик, программист – это не про код, это про умение изучить и влиться в незнакомую область за минимум времени; это про умение найти максимально эффективное решение вне зависимости от имеющихся инструментов; это про тех, кто знает, что написать одну строчку в день – это нормально.

Ответить
–3

Вы знаете, Дмитрий, является Менеджером Проекта и ведущим специалистом по IOS. Работал преподавателем в университете. Наверное стоит прислушаться к такому уровню специалиста. 

Ответить
4

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

Ответить
1

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

Ответить
2

Я бы не стал слушать совета, человека рекомендующего Кормана и Кнута на широкую аудиторию, по причине академичности этих авторов  и их книг. Человек, который так делает, или не читал этих книг или ему просто все равно, что будет с теми, кто последует его совету.

Ответить
1

В Кнуте и Кормене описанные решения и базовые принципы построения решений которые используют для ответа в интернете (полностью прочитал эти книги).
Более того, там описанны базовые структуры данных и их применения (например, кто знает на чем написан словарь в cpp и насколько быстро выполняется вставка, какие есть альтернативы)(другой пример, как работает unordered_map и как устроено хеширование) . 
Так что, говоря что "плохо слушать человека который рекомендует эти книги" ты сам показываешь что не знаешь никаких основ, и в программировании ты только мимолетом.
Итог: изучение советую начать с того, чтобы понять как устроена динамическая и статическая память, затем изучить алгоритмы и структуры данных (по вышеупомянутым книгам + Гасфилд - работа со строками очень популярно). После всего этого, можно прийти в любой язык программирования и полностью понимать. 
P. S. Можешь изучать английский язык просто практикуясь, но только захочешь сделать что то свое - получится каша. А можешь изучать структурированно, по книжкам - сможешь творить правильные вещи

Ответить
2

 ты сам показываешь что не знаешь никаких основ

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

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

В Кнуте вобще листинги на специально придуманном псевдоязыке MIX, похожим на ассемблер. Я писал на ассемблере под микроконтроллеры, изучал x86 ассемлер, писал на ассемблере под промышленные контроллеры Step7 в универе. Я бы не посоветовал бы никому без подготовки изучать современное программирование по книге, с примерами на ассемблере. Тем более потом почему-то идет совет про паскаль и плюсы, хотя если уж человек прочитал Кнута, и разобрался с листингами, я думаю ему похер уже будет, что там у него Swift или Rust или PHP, голова  у него явно работает в нужную сторону. Надо ранжировать книги по уровню сложности. К Кнуту или Кормену, человек сам должен приходить, этим только людей отпугивать на начальном этапе. 

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

Ответить
0

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

Ответить
0

Про какую базу идёт речь? Язык ассемблера – это работа с инструкциями для конкретной архитектуры процессора, здесь не поможет ни база, о которой явно идёт речь (типа "я знаю принципы ООП" и т.п.), ни увлечение кодингом, потому что это очень специфическая область, напрямую связанная со знанием внутреннего устройства работы процессора. Этим нужно заниматься сознательно. Если я знаю C++, мне несложно будет разобраться в C-подобных языках, но я ничего не пойму на asm, мне придётся изучать целое направление, и мне точно не поможет моё знание stl или типа того. "Формошлёп на iOS" – это очень точно, потому что ничего сложного в программировании 2D–приложений нет, какие бы функции это приложение ни предоставляло.

Ответить
1

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

Ответить
0

Апелляция к авторитету против фактов, хм, к чему бы прислушаться

Ответить
0

Актуальны ли эти советы, если есть желание стать iOS/macOS разработчиком?

Ответить
1

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

Ответить
0

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

Ответить
0

ну, может это не так и плохо, что забросит. Ибо разраб - не пальцем деланный "ссыкун", простите:) 

Ответить
0

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

Ответить
0

Что Вы имеете в виду?

Ответить
0

Поскольку пятнашку трублю в подразделении по аналитике собранных вручную данных, понимая, что так жить нельзя, то принял приглашение на бесплатный онлайн семинар по аналитике, из которого вынес, что без Пайтона и эскюэля, как аналитик я буду никакой в горизонте 3 года, хотя считаюсь икспертом-практиком по решению и устранению боли руководства. 
Поскольку жизнь заставляет влиться в кодирование алгоритмов, то ищу лёгкое вхождение в этот мир, при этом не волоча в Экселе, а сразу впрыгнуть на неубиваемый хотя бы  в горизонте 3 лет поезд, - язык программирования, чтобы не платить в шарагах за обучение, а дома и на работе начать допиливать корпоративную 1С, доступ в роли разработчика к которой выцарапал по итогам проекта акселерации цифровой трансформации. 
Роман! Не смотря на вышеприведенных мой словесный понос, подскажите, что в первую очередь должен сделать упоротый чайник типа меня, чтобы начать какое-то программирование формализованного мной рабочего процесса, не учтенного разработчиками? И надо ли касаться к экселю?   Вот

Ответить
0

Про эксель всё равно непонятно. Если вопрос в том, нужно ли дата-аналитику эксель – я не знаю, потому что я в этой области не разбираюсь, для меня она сложная. Программисты 1С будут нужны как никто в нашей стране. Насколько я понимаю, язык не такой сложный. Про горизонты сказать не могу. Вообще плохо выбирать язык, оглядываясь на рынок. Программирование – это постоянный огонь. Если его нет, то будь у тебя даже должность от 100к в программировании, очень скоро наступит выгорание. Этим нужно жить, это должно быть хобби, тогда и по случаю можно в любую область влиться, при этом огонь всё ещё будет гореть. Лучше узнавать об интересуемом направлении из видео с нормальными разработчиками, таких полно.

Ответить
0

Роман! Благодарю, что нашли время на ответ. Здесь в столбе тоже появились подсказки.
И от души приношу сорри: за вклинивание "когда большие пацаны речь толкуют", - зуб даю - этот материал положил началу входа к вам, к профи нематериального!

Ответить
0

Поддерживаю

Ответить
2

"Качественные коды" - дальше не стал читать.

Ответить
1

Занятно, что у вас в рекомендациях Кормен и Кнут, соседствуют рядом с попсой вроде Clean code Мартина. Если что вот так выглядит страница из Кормена и Кнута

Ответить
1

Как программист Дмитрий может и неплохой, но советчик нулевой. Какой нафиг паскаль в 2020 году? Алё? С++ для новичка? Математика, Дональд Кнут... это всё для тех кто с 1 курса универа в айтишники пошел.

Если это читает жаждущий стать программистом:

1) не ссать
2) начинаем с языка scratch и курсов CS50 на ютубе
3) javarush. Если дошел до 12 уровня и не слился - потенциал есть.
4) параллельно проходим hexlet начиная с базовых курсов
5) потом практика на выбранном языке на hackerrank
6) по дороге станет ясно где и в каком порядке добывать информацию

Удачи!

Ответить
1

А у Дмитрия есть фамилия?

Не серьёзно это как то, я настроился на серьёзный лад. А там безликий Дмитрий ...эх😒.

Ответить
0

Ещё одни инфобизнесмены. Полюбила молодежь лёгкие денежки на курсах.

Ответить

Комментарии

null