Для развития на любом уровне полезно взаимодействовать с другими специалистами и делиться опытом. Сейчас во многих странах, например, в Китае, Вьетнаме, Таиланде, создаются профессиональные сообщества разработчиков. В Белоруссии выросла своя «силиконовая долина». Специфика работы программистов не накладывает никаких территориальных ограничений для сотрудничества. Поэтому единомышленников можно найти во всех уголках мира.
Глупости какие-то. Так квалифицированным программистом не стать никогда. То же самое, что и учиться в онлайн-школе типа GB или SB.
1) С чего начать изучать программирование?
С программирования. Других вариантов здесь быть не может. Берём простейший код, который понятен будет построчно, изучаем, к чему приводит каждая строчка, пишем что-то своё. После самые простейшие задачи решаем кодом. Не получается – гуглим. Не находится конкретный вопрос – ищем конкретное решение. Это как ГДЗ в школе: если воспользовались, будьте добры для начала разобраться в решении, а не просто переписывать. Просто так в программисты не идут. Придумайте задачу, которая должна быть решена при помощи кода: автоматизация рутины, программа, приложение, бот. По мере разрастания функциями и возможностями, будут появляться новые знания. Да, многое будет непонятно в начале (например, нашли функцию для работы с сетью, но всё, что смогли там сделать – вписать свой URL и параметры, – это замечательно, уже разобрались и в такой мелочи), но постепенно будете возвращаться к своему коду, будете встречать каждый раз в разных вариациях какие-то конструкции, тогда потихоньку начнёте вникать в их суть по мере усложнения требований к своей разработке. Даже если понимаете, как работает функция, но не можете запомнить её – а зачем? Главное, что в будущем будете знать, какая функция нужна, и где её искать. Чем чаще её использовать – тем быстрее она запомнится. Математика нужна, но какая именно? Обычно достаточно математики 6 класса. Так что если в школе было всё до этого момента хорошо – то не о чем переживать. Математическое мышление – это уже другая сторона, здесь нужно по мере прочтения задачи представлять ход её решения, хотя бы пошаговый, без чисел. Тут уж сами, просто нужно больше решать задач, в которых много действий, и одно выходит из другого. Ещё может понадобиться координатное мышление, чтобы не теряться в многомерных массивах – для этого нужно чертить графики, координатные точки и т.п., это 7 класс, алгебра.
2) Какие источники для изучения использовать?
Интернет. Всё. Никаких книг. Книги по программированию – это как минимум прошлое. Чтобы понимать программирование, писать красивый код, нужно писать код и смотреть на код других. Красивый код = понятный, масштабируемый и универсальный код. Всё, что написано в книгах – это от помешанных гиков для помешанных гиков, адекватным программистам там не место. Я серьёзно. Назовите мне компанию, которая использует ПАТТЕРНЫ ПРОГРАММИРОВАНИЯ. Да, знать это желательно, но необязательно, ничего не потеряете. Так или иначе, это всё равно придёт с опытом, рано или поздно.
3) Как выбрать язык программирования?
"Pascal, C++" – отличный разброс. Я, как и многие другие, начинал с Pascal; кто-то начинал с C++; кто-то с Python; кто-то с Basic. Каждый язык хорош в своей области. Хотите писать макросы для офиса – берём Basic; создавать десктопные программы максимально быстро с красивыми формами – берём Pascal и оттуда идём в Delphi (это тот же язык); хотите контролировать каждый байт памяти и иметь низкоуровневый контролируемый доступ к железу – C++ (это игровые движки, очень нативный код (максимально совместимый с железом)), на котором можно писать быстрейшие приложения, очень мощный, но очень сложный для начинающего. Python – для быстрых прототипов (часто используется в спортивном программировании, хакатонах), но очень медленный и очень зависимый от многих факторов и навыков программиста, здесь нужна внимательность. Как выбрать язык – вечный вопрос. Я не знаю. Наверное, под задачи, которые необходимо выполнить. Ведь есть же ещё веб-программирование и даже визуальное программирование.
4) Как наработать опыт?
Разрабатывать проекты, писать код, улучшать код, общаться на форумах, отвечая на вопросы, участвуя в обсуждениях, изучая неизвестные вопросы. На работу берут новичков реже, чем комета Галлея снова пролетает мимо нас. В нормальные студии разработки не будут брать новичков, потому что это затратно по деньгам и времени, его ещё нужно обучать, чтобы он разобрался с внутренними спецификациями разработки, следить за ним. Какие-нибудь компании офисные наймут, может, но программирования там не увидите. Но никогда не нужно сдаваться, вдруг повезёт. habr – туда же, к литературе; StackOverflow – будет попадаться в гугле чаще, чем видите себя в зеркале.
5) Будут ли востребованы разработчики в будущем?
Такие, как интервьюируемый – скорее всего нет. Разработчик, программист – это не про код, это про умение изучить и влиться в незнакомую область за минимум времени; это про умение найти максимально эффективное решение вне зависимости от имеющихся инструментов; это про тех, кто знает, что написать одну строчку в день – это нормально.
Вы знаете, Дмитрий, является Менеджером Проекта и ведущим специалистом по IOS. Работал преподавателем в университете. Наверное стоит прислушаться к такому уровню специалиста.
Актуальны ли эти советы, если есть желание стать iOS/macOS разработчиком?
Не во всем с Вами согласен, но Ваши советы помогут стать программистом, а вот Дима своими советами устраняет потенциальных конкурентов, ибо если человек, ничего не знающий о программировании и сможет дойти до Кнута, то на этом этапе он эту идею забросит навсегда.
Роман, благодарю, что разжевал по-блочно и на пальцАх разрулит противоречия, поскольку минут 5 назад пришло понимание нужности освоения программирования на языках, отличающихся от рекомендованных Пайтона и эскюэля на одном из бесплатных вебинарах, посещение которых продиктованы внешними вызовами на переход от ручной рутины бизнес-процессов к какой-либо автоматике, исключающее вариабельность в принятии решения, ежечасно нервирующее при добавлении ценности в промежуточный продукт.
И, последнее, а Ексель она точно нужна?
Поддерживаю
"Качественные коды" - дальше не стал читать.