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

Последнее время я много катался по стране, выступая с разными лекциями. И при выборе темы выступления устроители чаще всего просили: «Расскажите нашим студентам — какой язык программирования выбрать?» Так что несколько раз с этой темой я выступал, а потом и с DOU ко мне обратились с просьбой написать по этой теме статью. В общем-то вы сейчас эту статью и читаете.

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

Направления и специальности

Как вы уже понимаете, больше нет профессии «программист». Есть целая вязанка профессий, и представители одной будут с большой натяжкой считать коллегами представителей другой профессии. Например — фронтэндер и embedded разработчик.

На сегодняшний момент я могу выделить такие программистские специальности:
— Embedded разработка;
— UI разработка;
— Web-разработка;
— Mobile разработка;
— Front-End;
— Game Dev;
— Enterprise.

Можно выделить еще несколько условно-программистских специальностей — automation QA, DevOps, администрирование и т.д. Но я на них останавливаться подробнее не стану, хотя все эти специальности интересны и позволяют заработать себе на хлеб с маслом.

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

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

Итак, поехали. И начнем мы по порядку.

Embedded разработка

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

Основным используем языком там, насколько я знаю, является С++, но и асемблер, и даже языки более высокого уровня, вроде Java, там используются. Естественно это не совсем та Java, что в Enterpise. Все эти языки для данной специальности связывает именно сфера применения — специфичное железо, весьма специфичные задачи и близость к самому низкому уровню — проводам, электричеству, радиоволнам.

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

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

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

UI разработка

Имеется в виду разработка десктопных приложений — всяких там вордов и броузеров. Стоит ли рассматривать эту специальность? Скажу просто — забудьте. Ее в Украине просто нет. Ну, в заслуживающих внимания объемах. Да, кто-то что-то где-то пишет, но это настолько исчезающий рынок, что рассматривать его в качестве своего рабочего места явно не стоит.

Почему так вышло? Ну все просто — десктопное приложение недостаточно просто написать. Его надо еще продать и, самое главное, — поддерживать. Причем — поддерживать не в Украине, а там, куда вы его собираетесь продавать. То есть у вас должен быть колл-центр в какой-нибудь США со всеми этими девушками «Can I help you?» и соответствующим сервисом.

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

Web разработка

Сейчас 21-й век, и даже самой маленькой фирмочке стыдно не иметь своего сайтика. Пусть даже визитки. И потребность в этих сайтиках появилась не год назад. Поэтому на украинском рынке полно предложений на любой вкус и кошелек. Причем, предложения стартуют с каких-то уж совсем смешных сумм, типа «за 500 грн мы вам нарисуем прекрасный сайт силами одного студента-второгодника». Ну и хватает фирм, предлагающих уже вполне вменяемые решения за разумные деньги.

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

С точки зрения разработчика, в этой области все весьма просто — порог входа очень низкий (ниже, пожалуй, даже найти ничего не удастся), достаточно широкий рынок, на котором легко начинать (как я уже говорил) и есть куда расти. Хотя, справедливости ради, надо сказать, что за счет легкости входа на рынок зарплаты в этом секторе оставались и самыми низкими в индустрии.

Честно говоря, практически все так сейчас и остается. И данные ДОУ это подтверждают — PHP все так же популярен, и сдавать позиции не собирается. С другой стороны, исходя из графика желаний программистов, очень многие из веб-разработки хотят если не поменять отрасль, то сменить язык.

Индекс удовлетворенности — хотели ли бы люди, работающие на таком-то языке, начинать следующий проект на нем же

И это в общем-то тоже понятно. Годы идут, появляются новые ниши, новые подходы к разработке. Только PHP практически такой же, каким он был на рубеже веков. Разработчикам явно хочется чего-то большего. Поэтому и идет попытка заменить PHP на Ruby, Python или на что-нибудь еще более экзотическое. Как вы понимаете — веб сейчас можно делать вообще на любом языке высокого уровня — во всех есть соответствующие фреймворки.

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

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

Mobile (Android&iOS) development

Несмотря на то, что разработка под Android и под iOS ведутся на разных языках, все равно я объединил их в один пункт — сходство этих специализаций между собой гораздо больше, чем с любыми другими. Например — разработка под Android на Java гораздо ближе к разработке на iOS, чем к Enterprise разработке на той же (на самом деле нет) Java.

Итак, что мы имеем на этом сегменте? Относительно низкий порог вхождения — наваять небольшое приложение под Android/iOS в состоянии и студент у себя дома. Ничего запредельно сложного там нет, и получить опыт вполне реально. Отсутствие специалистов с 15-20 лет стажа в этой области (по понятным причинам). Огромный запрос на рынке (не иметь своего мобильного приложения уже просто стыдно практически любой фирме). И соответственно — дефицит квалифицированных кадров, и — следовательно — неуклонно растущие зарплаты.

Ну что я скажу. Если бы я сейчас начинал свой путь в профессию, я бы посмотрел только на этот сегмент и на фронт-энд. Склонности к дизайну у меня нет от слова совсем, так что выбор очевиден — занимался бы именно мобильной разработкой.

Front-End разработка

Когда-то давным-давно, в далекой-далекой... то есть, я имел в виду, несколько лет назад такой профессии вообще не существовало. Сайты делались обычными веб-мастерами (как они себя называли), веб-дизайнерами (ну, эти всегда выживут) и верстальщиками (как мы их называли).

Но постепенно JavaScript становился все навороченнее, AJAX поднял голову — и все, вуаля. На клиенте стало крутиться достаточно много кода. А потом пошло вообще страшное — синтетические языки, которые компилировались в JavaScript, навороченные фреймворки и много-много всякого другого.

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

Но тут есть один нюанс: потребность в дизайне и качественной верстке — никуда не делась. И выполнять ее приходится практически всегда именно специалисту по Front-end. Так что вы должны быть готовы к тому, что Photoshop будет таким же частым вашим инструментом, как и любимая IDE. Ну все просто — кто-то же должен это делать. И никого ближе к дизайну просто нет.

Game dev

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

Во-первых, в Украине не так уж много гем-девовских контор. Да и все они достаточно мелкие. Так что суммарно рынок работы для гем-дева — очень небольшой. Это конечно, если не брать социалки. Там-то рынок существенно побольше, но я бы не стал даже сравнивать со всеми вышеперечисленными. Работы откровенно мало, и не видно, чтобы ее стало сильно больше

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

И наконец — зарплата. Ну скажем так — зарплата не такая уж и плохая. Но. Обратно пропорциональная интересности и пафосности работы. Чем интереснее проект — тем больше на нее охотников. Тем меньше зарплата — это рынок, детка.

В общем, если вам ужасно хочется с друзьями в гараже наваять свой World of Warcraft — то ваяйте. Это весело, и чему-то даже научитесь. Например, отношениям внутри коллектива. Но рассчитывать стать профессиональным гейм-девом и хорошо на этом заработать — ну, шансов больше, чем хорошо зарабатывать на футболе. Хоть это хлеб.

Enterprise разработка

Сначала о том, что это такое. Речь идет о разработке программ (вернее, интегрированных систем управления предприятием) для крупных и гигантских компаний (по-английски, Enterprise). То есть все эти программы объединяют несколько общих черт:
— Чудовищная сложность предметной области. Достаточно сказать, что даже теоретически одному человеку невозможно понять, как всё работает даже в одном Enterprise предприятии. Для понимания необходимо иметь целый штат людей, которые понимают все (каждый — свой кусочек);
— Огромные объемы данных. Терабайтные базы, гигабайтные файлы передаваемых данных — это все про Enterprise. Сейчас уже считается, что никакого отдельного направления BigData нет. Все эти подходы применимы к большинству Enterprise разработок;
— Большое количество legacy (т.е. устаревших, но все еще находящихся в использовании) систем, с которыми, тем не менее, надо интегрироваться и, самое страшное, — поддерживать, то есть — исправлять и расширять;
— Огромное количество внешних интеграций с другими системами. В среднем каждый Enterprise проект интегрируется минимум с 3-5 другими системами;
— Высокие требования к отказоустойчивости и сохранению транзакций. Что и не удивительно — такая транзакция вполне может нести данные о многомиллионной сделке;
— Высокая стоимость внесения любых изменений — так как каждое изменение вполне может влиять не только на саму систему (то есть ее надо полномасштабно тестировать), но и на все смежные системы (то есть и их тоже надо тестировать).
— Крайне консервативное отношение к используемым системам и фреймворкам. В enterprise вы практически не встретите софта, разработанного позднее, чем 5 лет назад.

На сегодняшний момент существует ровно две платформы для Enterprise — .Net и J2EE (Enterprise Java). В общем-то, обе платформы чувствуют себя достаточно неплохо, но вследствие того, что большие корпорации предпочитают использовать у себя сервера на Unix-like (правда, вы удивились?), а на них работает (по настоящему работает, то есть работает давно и успешно) только J2EE. Соответственно, в данный момент можно говорить, что Enterprise = Java. Для .Net остаются достаточно небольшой сегмент компаний, которые завязаны на обращение с продуктами Microsoft. Ну и на сегодняшний момент заметно некоторое спадание интереса к этой платформе.

Итак, что можно сказать про специальность .Net разработчика:
— Одни из самых высоких на рынке зарплат. Выше только у Java;
— Более низкий, чем у Java, порог вхождения, особенно, если человек что-то уже писал в продуктах Microsoft;
— Практически полное отсутствие альтернатив в выборе средств разработки. И все они (внезапно) от Microsoft. Шучу, конечно, но тенденция видна — если в Java у вас всегда вязанка доступных фреймворков, то в .Net у вас практически всегда один путь. Это очень облегчает разработку, хоть и лишает гибкости;
— Перспективы — непонятные. Я был уверен несколько лет назад, что .Net будет жить долго и счастливо. Сейчас такой уверенности поубавилось. Графики с ДОУ вам в пиллюстрацию.

Ну и про Java Enterprise разработку:
— Самые высокие на рынке зарплаты;
— Самый высокий на рынке порог входа;
— Самые сложные задачи, самый большой спектр саб-специализаций;
— Самая большая на рынке востребованность.

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

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

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

Итоги

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

Похожие статьи:
Flexbox разработан для оптимизации раскладки элементов, в отличие от float. Он облегчает выравнивание элементов по горизонтали...
Естонський виробник робототехніки та автономних систем Milrem Robotics серед іншого виготовляє гусеничні безпілотні платформи...
Чтобы узнать, можно ли профессионально развиваться, работая много лет на одном месте, не скучно ли это, какие есть плюсы...
Как известно, в конце этого месяца состоится анонс двух новых смартфонов Google Nexus. Устройства будут выполнены двумя...
Президент України Володимир Зеленський обурився бронюванням 1,5 мільйона осіб, уряд до 15 листопада 2024 року...
Яндекс.Метрика