Иногда наши пользователи интересуются, где и как фрилансеры могут обучаться программированию. Где и какие курсы нужно пройти, чтобы начать работать программистом? Как повысить квалификацию, какие лучше почитать книги? Как учиться эффективнее — онлайн или оффлайн, в группе, индивидуально, самостоятельно?

Сегодня у нас в гостях Ярослав и Виталий — наши технические специалисты. Они с удовольствием ответят на вопросы:
Почему именно программирование?
Какие курсы помогут новичкам войти в профессию?
Какие курсы будут полезны продвинутым пользователям?
Что почитать программисту, разработчику?
Какие направления будут самыми востребованными в ближайшем году?

Итак, начали.

— Расскажите в двух словах о себе, почему выбрали программирование, сколько времени вы работаете по специальности, какие языки изучали и почему?

--------

Ярослав: Меня зовут Ярослав, мне 26, люблю читать, играть в компьютерные игры и программировать.

Занимаюсь разработкой уже очень давно, сложно вспомнить год когда это всё началось. Как мне кажется первый раз я задумался о программировании лет в 14-15. Это был 2006 год примерно, я ещё учился в школе, в то время доступный интернет был только на телефоне — на компьютере он был дорогой и родители жаловались что домашний телефон недоступен (на то время у нас был ADSL модем).

И примерно тогда я начал увлекаться мобильными браузерными играми. И в одной из них я долго не мог получить заветные ресурсы, хотя видел что многие новые игроки это получили. Тогда я начал искать информацию и узнал про баги в этой игре, и что исходный код ее можно скачать. Именно тогда я решил, что сделаю свою копию этой игры, в которой будет у меня всё. Собственно говоря, с этого и началась моя история. Я даже не знал на каком языке пишу, что такое код и как это всё работает. Но спустя пару дней я мог уже менять текст в игре, и узнал что язык на котором она написана — PHP. Спустя пару недель я уже свободно мог менять текст, не сломав при этом весь сайт.

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

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

За это время я полностью определился, что буду заниматься веб-разработкой, поэтому учил языки, которые с ней связаны. Позднее начал изучать уже те языки, которые мне нравились. Сейчас в свободное время пишу на Go.

--------250

Виталий: Всем привет! Меня зовут Виталий и я программист (аплодисменты, групповое приветствие с нотками сочувствия :D ). Если серьезнее: мне 27 лет, я женат на, собственно, жене и... работе (жена так сказала). Есть ребенок, позитивный настрой и, совсем чуть-чуть свободного времени :). В детстве увлекался радиотехникой и космической фантастикой (наследственное). Дальше сложилась дружба с паяльником и точными науками, а с началом в нашей стране «эпохи смартфонов», я понял, что разработка программного обеспечения — это мое.

Первый серьезный толчок в этом направлении дал институт (первые 2 курса по специальности «Экономическая кибернетика»). Дальше все держалось на энтузиазме и самообучении. А с 5-го курса я уже начал работать программистом.

— Какие хорошие курсы онлайн вы можете порекомендовать для новичков, которые только намереваются практиковать?

Ярослав: Есть один курс, который я рекомендую всем. Он рассчитан на новичков, но будет интересен всем. Это вводный онлайн-курс по компьютерным технологиям, который около 20 лет читают в Гарварде. Марк Цукерберг в былые времена проводил лекцию там, но тогда курс не был интересен студентам. Называется он Computer Science 50 или просто CS50, я бы рекомендовал его смотреть в оригинале и в двух вариантах: за 2015 год и любой курс, начиная с 2016 года. На данный момент самый свежий — за 2017 год.

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

Я смотрел курс на edX, но его можно спокойно найти на Youtube. Знаю точно, что есть курс за 2015 год в переводе от JavaRush.

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

Если говорить конкретно о курсах PHP и Python, то я Python учил по курсам с Coursera.

  • Курс от университета Мичиган — Programming for Everybody (Getting Started with Python).
  • И курс от университета Райса в двух частях:
  1. An Introduction to Interactive Programming in Python (Part 1);
  2. An Introduction to Interactive Programming in Python (Part 2).

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

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

Ну, а если уж кто-то любит заниматься онлайн — много позитивных отзывов слышал о курсах на https://ru.coursera.org.

— Какие курсы подойдут для продвинутых пользователей?

Ярослав: Продвинутым пользователям сложнее что-то советовать, они сами уже понимают, что они знают, а что нет. Исходя из этого ищут себе информацию.

Я больше развиваюсь в сторону PHP, так что буду советовать только этот язык. Мне очень нравится ресурс Laracasts. Вся информация на английском, но она толковая, много бесплатной. Советую купить платный доступ: на черную пятницу дается большая скидка, в прошлом году подписка на год мне обошлась в $50. Наверное, это единственные онлайн-уроки, которые я ещё иногда смотрю... Также рекомендую смотреть доклады на Youtube и учить английский, без него тяжело сейчас, тем более программисту.

Иногда что-то интересное проводит Дмитрий Елисеев. У него курсы всегда платные, но взамен у вас есть возможность задать вопросы в прямом эфире, принимать участие в обсуждении, что напоминает онлайн-уроки. Только готовьтесь к тому, что будете недосыпать: обычно вебинары затягиваются допоздна. Также, после завершения онлайн-курса, его можно купить по скидке.

Виталий: Больше всего мне понравился https://laracasts.com/ — много, интересно, легко усваивается.

Рекомендую заглянуть.

— Какие книги, блоги или форумы для развития вы можете порекомендовать?

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

С блогами сложнее — очень редко выходят новые публикации от интересных мне программистов, им проще написать в Twitter. Так что я рекомендую подписываться на интересных вам людей в Twitter, но парочку блогов предложу:

  • Matt Stauffer Blog — англоязычный блог, особенно будет полезен Laravel-разработчикам.
  • Laravel News Blog — ещё один англоязычный блог, в основном о Laravel.
  • Блог Александра Макарова — для тех, кто не знает, автор блога — разработчик Yii фреймворка. Сейчас этот блог похож больше на новостную ленту Александра, но иногда есть полезная информация.
  • Блог Дмитрия Елисеева — информативный блог для разработчиков на Yii; иногда автор блога запускает курсы, но они платные, об этом я уже говорил.
  • Блог Белякова Юрия — был хороший блог кода-то, сейчас заброшен, но зайти и посмотреть интересную информацию для себя можно.

Ещё хотел бы порекомендовать пару Youtube-каналов, на которых можно найти полезную информацию:

  • CS50 — есть видео лекций не только основного курса CS50, но и дополнительных, которые в основном курсе не показываются.
  • fwdays — на канал выкладывают доклады с конференций fwdays, всё это рассортировано по плейлистам, что очень удобно.
  • Технострим Mail.Ru Group — наверное мой самый любимый канал: здесь много докладов, курсов, интервью с разработчиками крупных проектов.
  • Компьютерные науки — канал создан Академией Яндекса, часто выкладывают новые доклады. Мне он нравится, но судя по активности — канал не особо популярен.
  • Съесть Собаку — выкладывают доклады с харьковских встреч, очень часто вижу там полезную информацию.
    Также есть ресурсы, о которых знают, как мне кажется, почти все программисты:
  • DOU — сообщество программистов Украины, так что для программистов из других стран полезной информации будет меньше, но найти что-то можно.
  • Хабрахабр — просто уйма полезной информации каждый день, успевай только читать.
  • StackExchange — ресурс в формате вопрос/ответ, которым пользуются множество людей.
  • И самый популярный для разработчиков — это, конечно же, StackOverflow, но на самом деле тематик очень много.

И под конец выделю несколько новостных порталов, на которых можно найти что-то интересное:

Кстати, ещё можно послушать подкасты «Пятиминутка PHP».
Также рекомендую вступить в пару сообществ в Telegram. К примеру, я остановился на одном PHP сообществе — https://t.me/prophp7. В нём есть люди, которые очень хорошо разбираются в этом языке и могут помочь советом. Там много новичков, и это тоже хорошо.

Виталий: Рекомендую такие книги:

  • Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin).
  • Head First Design Patterns (Bert Bates, Kathy Sierra, Eric Freeman, Elisabeth Robson).
  • Refactoring. Improving the Design of Existing Code (Martin Fowler).
  • Software Architecture in Practice (Rick Kazman, Paul Clements, Len Bass).

Блоги, форумы:

Там много полезного можно почерпнуть.

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

Ярослав: Постараюсь выделить 3 языка, на которые, как мне кажется, стоит обратить внимание в ближайшем году:

  • JavaScript. Будет всё так же в тренде, и пока альтернатив ему в вебе я не вижу, тем более, есть NodeJS, а это дает еще больше возможностей для данного языка.
  • Swift. Язык используется для разработки приложений для Mac OS и iOS.
  • Go. Он кажется очень интересным и перспективным языком, лично для меня он стал заменой Python.

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

Виталий: Data science, AI, Blockchain, Cybersecurity.

— Ну и напоследок: что вы можете пожелать нашим читателям, заказчикам, фрилансерам?

Ярослав: Желаю всем меньше арбитражей, заказчикам — больше адекватных исполнителей, фрилансерам — больше адекватных заказчиков. И берегите нервы — пользуйтесь сейфом.

Виталий: Ясных мыслей и сильной мотивации во всем.

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

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