{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Вопрос читателям: какой язык программирования легче всего выучить с нуля? Статьи редакции

Мы постоянно пишем, что в ближайшем будущем из-за автоматизации люди начнут терять работу. По мнению исследователей из Оксфордского университета, в зоне риска находится примерно половина рабочих мест в США.

А компания Foxconn — крупнейший в Китае производитель электроники — планирует автоматизировать 30% рабочих мест на своих фабриках до 2020 года.

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

Я сам несколько раз начинал и бросал: вроде хочешь выучить какой-нибудь язык, но понятия не имеешь, что тебе это даст в итоге и что можно сделать с его помощью. Однажды я спросил своего друга: «Вот ты хорошо пишешь на Java. Расскажи, для каких случаев подходит, например, Python?»

Поскольку я не разработчик, для меня этот вопрос звучит так же естественно как: «Вот ты — столяр. Можешь делать крутые штуки из дерева. А что может сделать фрезеровщик?»

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

Не то чтобы я переживал, что искусственный интеллект заменит журналистов (хотя прецеденты уже существуют), но мне до сих пор любопытно: в чем сильные и слабые стороны Java? Objective-C? Ruby? Python?

Заодно расскажите, какой язык программирования вы начали учить первым?

  • Сколько времени это у вас заняло?
  • Какой язык вы порекомендуете выучить человеку без математического образования?
  • Его лучше учить самому или в специальной школе?
  • Какие школы существуют в Москве и в Санкт-Петербурге? Есть ли похожие школы в регионах?
  • Эффективно ли учить язык с помощью Udemy, Coursera, Udacity или других онлайн-курсов?
  • Какие сайты, блоги или книги вам помогали?
0
107 комментариев
Написать комментарий...
Денис Кулагин

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

1. Умение пользоваться молотком, отвёрткой, шпателем и т.д. Это уровень языка программирования, но в нём это будут умения загрузить файл, принять пакет по сети, вывести сообщение в лог или отсортировать массив. Базовый уровень, необходимый всем программистам. Это то, чему обычно учат в онлайн-курсах или в курсах освоения ЯП за три месяца.

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

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

2. Умение сделать ремонт в квартире. Здесь уже появляется бизнес-задача. Заказчик (в случае программиста этого уровня — техлид) приходит и ставит небольшую, но комплексную задачу. На этом уровне уже понадобится самому сообразить, как использовать базовые умения, чтобы прийти к поставленной цели.

Пример этого уровня — веб-программисты в небольших компаниях. Задачи несложные, нагрузка умеренная, но нужно всё делать аккуратно и в срок. Конкуренция опять же большая, риск автоматизации высок, но работа есть. Этому можно научиться на курсах (вы же будете делать итоговый проект!), но уже требуется вложить инициативу и попробовать что-нибудь сделать самому. С этого уровня начинает иметь значение опыт.

3. Умение построить дом. Каждый следующий уровень подразумевает освоение предыдущих. На этой ступени вам уже придётся продумывать архитектурные вещи, проектировать фундамент, перекрытия и учитывать сопротивление материалов. Базовая задача — чтобы дом не рухнул при постройке. Задача максимум — чтобы в нём было комфортно и безопасно жить.

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

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

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

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

Перейти на этот уровень можно только освоив предыдущие ступеньки и только через практику и опыт. Интуиция не нарабатывается через чтение книг и просмотр видео.

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

Здесь уже громадный практический опыт и мощная профессиональная интуиция играют решающую роль.

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

Практика создаёт каркас для знаний замысловатой формы, который мы называем опытом. Без этого никакой инженерный навык не представляет ценности в реальном мире.

Удачи!

Ответить
Развернуть ветку
Юрин Иван

Все прям по полочкам! Все так и есть

Ответить
Развернуть ветку
104 комментария
Раскрывать всегда