- Начинал с Object Pascal и заняло около 3 месяцев, чтобы начать писать свои первые десктоп приложения. Через 2 года отдал предпочтение PHP и web разработке, т.к. быстрее можно творить и быстрее получать обратную связь.
- Рекомендую python, т.к. все сложности спрятаны под капотом и остается только решать стоящие перед программистом задачи. Почитать: Лутц М. "Изучаем Python, 4-е издание"
- Я бы не тратил время на офлайн курсы. Единственный плюс - мотивация, т.к. надо ножками дойти и послушать лекцию, а потом еще и практику успешно пройти, да экзамен сдать
- Да, эффективно. Но нужно понимать, что на этих курсах вы узнаете как устроен молоток и изучите пару примеров, как наносить удары по гвоздям. Пример хороший онлайн школы https://www.codecademy.com/
- Читать:
https://habrahabr.ru/ + https://toster.ru/
https://stackoverflow.com/
Чтобы я рекомендовал будущему программисту
1. Мотивация
Порог вхождение в программирование высок и чтобы преодолеть его, нужно запастись немалым терпением.
Примерный набор знаний web-программиста на языке PHP: html, css, javascript, linux, http, nginx, php-fpm, vcs, sql, php, composer, psr, phpdoc, oop, phpunit, etc
Из этого всего язык программирования только php.
Пусть это будут даже деньги, но мотивация должна быть. Без нее велика вероятность бросить.
2. Изучить фундамент
Один из лучших путей достижения этой цели - cs50 от Гарварда
https://www.edx.org/course/introduction-computer-science-harvardx-cs50x (eng)
https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5 - на русском
Курс также добавит мотивации изучать программирование
3. Выбрать язык
Какие задачи вы хотите решать? Программировать микроконтроллеры? Делать сайты? Писать десктопные приложения? Мобильные? Разрабатывать игры?
В интернете легко найти информацию, какой язык для чего подходит.
С конкретным языком, возможно, облегчит выбор два сайта (eng):
https://learnxinyminutes.com/
http://hyperpolyglot.org/
На них вы наглядно увидите, что из себя на практике представляет тот или иной язык программирования.
4. Выбрать онлайн курс, книгу, школу. Не важно как, но нужно заложить теоретические знания выбранного языка.
5. Практика. Много практики
К примеру, ее можно найти на этих сайтах (eng) в интересной игровой форме:
https://www.codingame.com/
https://www.codewars.com/
https://checkio.org/
https://www.kaggle.com/
6. Для общего развития прочитать классику:
- Эндрю Хант, Дэвид Томас "Программист-прагматик. Путь от подмастерья к мастеру"
- Мартин Р. "Чистый код. Создание, анализ и рефакторинг"
- М. Фаулер "Рефакторинг. Улучшение существующего кода"
- Эрик Фримен, Элизабет Фримен, Кэтти Сьерра, Берт Бейтс "Паттерны проектирования"
7. Всегда учиться
Удачи
Надо просто начать общаться и общаться как можно чаще. Важно меньше, но постоянно, чем много, но редко.
Что этому может подсобить:
https://ororo.tv/ru/channels - ресурс адаптирован для просмотра на английском: есть субтитры, отличная подборка видео и тд
https://ru.forvo.com/languages/en/ - прекрасный ресурс, где можно узнать как произносят те или иные слова иностранцы
https://www.italki.com/ - практиковаться с иностранцами. Можно найти и за 600р/час. Или вовсе бесплатно, если опонент хочет изучить русский, а у вас есть время в этом ему помочь.
На практике понял, что общение с русскими преподавателями в академической обстановке создает иллюзию знаний. В жизни все иначе. Вы приезжаете в Лондон и понимаете, что ничего не понимаете. Хотя ваш преподаватель и книги, по которым вы учитесь, утверждают что ваш уровен достаточен для путешествий.
Еще добавлю, что абстрактно учить английский сложно. Английский всего лишь инструмент. Лучше это делать для чего-то. К примеру, прочитать любимую книгу в оригинале.