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

Последнее время я много катался по стране, выступая с разными лекциями. И при выборе темы выступления устроители чаще всего просили: «Расскажите нашим студентам — какой язык программирования выбрать?» Так что несколько раз с этой темой я выступал, а потом и с 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 разработчик учится перемалывать информацию в таких диких количествах, что в случае потребности любой другой язык выучивается за время аналогичное времени осваивания новой библиотеки. Так как с нашей точки зрения — любой другой язык примерно ей и соответствует по сложности.

Итоги

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

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



Найкращі коментарі пропустити

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

Отмотаем на 10 лет — на дворе 2006 год. Мобильная разработка — это j2me (и поверьте, это ВООБЩЕ не та Java, которая) и PDA. iPhone появится только через год, а рынок приложений для него — еще через год, как и первый коммерческий телефон на Андроид.
В мире фронтэнда только что начало что-то случаться — вышли IE7.0 (первый апдейт за 5 лет) и FF2.0. Chrome выйдет только через 2 года. Вовсю рулит flash — только что вышел YouTube и на нем можно смотреть видео НЕ КАЧАЯ, ПРЯМО В БРАУЗЕРЕ! Это мог только flash. Еще можно было попробовать сделать ActiveX компонент или Java-апплет. Только что вышел гугловый GWT.
PHP в 2006 был и цвел, но это был совершенно другой мир. Фреймворки? Первые только-только начали появляться, мейнстрим — это что-то такое свое с «библиотеками» вроде Smarty. Скептики еще тянут мазу за Perl. Ты качаешь и читаешь мануал, ищешь текстовый редактор, и в принципе — готов написать свой первый guestbook уже к вечеру. Такой низкий порог входа, конечно, вошел в легенды, но чтобы встрять в современный PHP-проект — этого уже давным-давно недостаточно. Без знания и опыта современных фреймворков ловить совершенно нечего.
Javascript в 2006 уже давно существует, но пока что это маргинальный язык чисто «помигать кнопочками в браузере», jQuery только что появился, про него еще никто не знает, node.js появится только через три года. Самый писк — это AJAX, который умеет обновлять данные БЕЗ ПЕРЕЗАГРУЗКИ СТРАНИЦЫ! (на собеседовании был разумным вопрос про умение работать с XMLHttpRequest).
Вовсю рулят Visual Basic и C++ для декстопных/энтерпрайза. Еще очень неплохо выглядит Delphi и все помнят название компании Borland. GitHub появится через три года, пока все пользуются SVN если не CVS, а говнокод качают с Sourceforge. Stack Overflow появится через два года.

И вот прошло 10 лет. Все, как видим, поменялось. Кто сел на лошадку Java, PHP, C, C++ оказался в мейнстриме, и мог не метаться между языками, но копать вглубь, от «голых» приложений к фреймворкам. Кто подсел на Flash, Flex, GWT и прочее — вынужден был менять амплуа. Но ничего страшного, как-то я не слышал историй про спившихся флексеров или сбомжевавшихся перлистов. Все как-то сообразили вовремя и переместились в другую технологию. Идеи-то тоже эволюционировали, так что если между первым и вторым языком разница огромна, то после третьего-четвертого тебя уже тяжело чем-то удивить, а осваивать каждый следующий язык все легче.

Как сегодняшнему студенту выбрать? Да, в общем, никак. Лучше приучить себя к мысли, что в любом случае придется учить несколько языков, да и в одном языке за 5-10 лет пару раз сменится парадигма. Так что сама идея о единственно правильном выборе — не очень удачная. Через 10 лет успешны будут не столько те, кто правильно угадал сегодня, сколько те, кто не очковал пробовать и меняться, кто следил за трендами и старался быть актуальным.

Так что правильный выбор — это, конечно, английский.

Краткое резюме статьи:

Java Enterprise — это круто, высокие зарплаты, почет и уважение
Mobile Android — круто потому, что на Java
Embedded — можно программировать прошивки на андроид (см. выше)
.Net — потихоньку скатывается в говно
Game dev — работы нет и не будет
UI — забудьте
Front-End — для лохов которые не осилили Java, нужно «программировать» в Photoshop
Web — лохи делают сайтики визитки на PHP4 и экзотических Питоне/Руби, скоро их всех выгонят и наймут фронтендщиков делать лейдинги

Итоги: Java круто, все остальное говно, выбор за вами :)

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

Вот ведь засада-то с UI-разработкой! Хорошо хоть, что веб-приложения, мобайл и эмбеддед не надо продавать и поддерживать. Там-то никому не придет в голову делать колл-центр и прочие глупости.

246 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

2 замечания для статьи (было бы хорошо если б её немного изменили под данные замечания)

1) В статъе речь идет именно об украинских программистах автор несколько раз говорил что именно в Украине нет в данном направление развития, но нигде явно это не указанно. Отлично было б указать данный момент в самом начале статьи, или после фразы «В Украине с этим тупик,» дописывать «возможно на мировом рынке с этим все отлично». Еще лучше проверить ситуацию на мировом рынке и описать как обстоят с данным развитием дела там.

2) В каждом пункте стоило бы говорить в двух вариантах о ситуации: 1- это когда будешь устраиваться в Украине в какую-нибудь контору, и 2- это если у тебя есть английский и возможности расширяются в плоть до взятия заказов на фриленсе у заграничных заказчиков.
Как на меня учитывая эти 2 фактора ситуация может сильно изменятся относительно одного и того же направления развития.

Сайт называется Developers.org.UA, что как бы подразумевает Украинский сегмент. Ситуации за рубежом я не сильно знаю. поэтому зачем о не писать?

является С++, но и асемблер, и даже языки более высокого уровня, вроде Java
с каким это пор Java более высокого уровня чем С++?

B чем же она выше? Чего такого высокоуровневого нет в С++, что есть в Java?
Даже generics в Java появились намного позже, чем templates в C++.
Какие конструкции позволяет реализовать Java, за счет свого более высокого уровня, которые нельзя реализовать в С++?
Для меня уровень языка измеряется в уровне абстракции — а в этом оба языка абсолютно одинаковы.

P.S. Java даже множественное наследование не поддерживает (я про классы, если что, а не про интерфейсы, которые являются подмножеством pure abstract классов)

P.P.S. Я не отрицаю, что С++ дает свободу в более низких уровнях, но говорить что Java выше С++ нельзя. Они одного поколения языки и уровня абстракции.

Ну скажем используя clang как фроненд для llvm можно тоже компилировать С++ в IL который будет исполнятся только после JIT на llvm. И что? Наличие или отсуствие прослойки — это особенности платформы, но никакого отношения к языку она не имеет. Ни С++, ни Java программист могут не заморачиваться этими подробностями до определенного момента.
На С++ используя библиотеки можно тоже не стучаться к системе напрямую, а использовать другие библиотеки, написанные скажем на С, как и Java использует JNI.
И повторю вопрос, учитывая вышенаписанное, что такого более высокоуровневого предоставляет Java, чего нельзя делать в С++?

В статье не отражена еще одна интересная вещь, связання с веб-дев. А именно, что backend/web-services разработка по своей природе более фундаментальная чем client side (архитектура, массштабирование, высоконагруженность и прочие красивые слова..). И здесь на первом этапе достаточно важен выбора языка (-ов), чтобы развивающийся специалист не терял свою актуальность и востребованность, да и просто нашел «свою» нишу. С фронтом же проще, на данном этапе истории важно хорошо изучить лишь javascript, а остальное детали (туева хуча client side решений, библитоек и фреймверков).

Вредная статья. Web — это все что клиент-сервер, это делится на фронтенд и бекенд стеки. Это php/python/ruby/javascript и еще туча языков. Это Google, Facebook, Yandex и... сами допишите. Нехилые у них «сайтики», правда? Пожалуйста, услыште обществнность и прекратите вводить студентов в заблуждение своей сборной солянкой из направлений разработки (отраслей), специализаций (бекенд/фронтенд) и конкретных языков, что есть три разных плоскости.

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

UI разработка это совсем другое. «изолированной» UI разработки не существует , она всегда часть какого-то продукта — коробочного или в составе ентрепрайз или веб приложения.
а то что автор имел в виду — подразумевается видимо разработка «коробочного» ПО.
рынок этот не так уж мал, хотя последнее время теряет позиции из-за повальной моды на SaaS/PaaS.

учите математику и английский.
гребаной императивщины вы еще успеете нахвататься.

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

Я бы не называл эти направления условными. В Германии постоянный спрос на QA и DevOps. Да, Java часто нужны, но и .NET тоже. А JavaScript, NodeJs, PHP — это самые популярные языки в Европе. Ruby намного реже, хотя тоже нужны. И порог вхождения для JavaScript на самом деле намного выше, чем может показаться. И хоть скрипты на JavaScript можно начать кодить на следующий день после прочтении нескольких глав самоучителя, это совершенно не значит, что такому специалисту светит успешная IT карьера.

Сравнение Java и .NET
Mobile: в мобайле .NET почти не присуствует
Enterprise/server side development: паритет между Java и .NET
Desktop: на десктопе джавы нет, даже Приватбанк похоронил клиентскую Джаву. Между тем, разработка на .NET под Win это практически 90% существующих десктопных приложений. На С++ пишутся в основном библиотеки.

А smartgit, и IDE-ки от Jetbrains не на java написаны ?

Ага, еще и netbeans, будь он не ладен. Глючней и тормозней приложения еще не видел, java она такая :)

Это вы еще JDeveloper не видели. Нетбинс по сравнению с ним — просто лапочка

Дело не IDE, дело в идеологии Java. На Win-десктопе приложения на Java выглядят настолько нелепо, как какой-либо зеленый инопланетянин в киевском «Фуршете».

а как же Eclipse еще забыли. Еще бывают попадаются RIP Software написанные на java

И есть еще гребаный Лотус. Более глючной программы не встречал.

Думаю с приобретением Xamarin Майкрософтом, ситуация в мобильном сегменте ощутимо поменяется

Думаю с применением SWIFT на андроид устройствах, потребность в Xamarin отпадет как такова.

SWIFT еще надо обрасти экосистемой на Android и завоевать популярность.
Сейчас это язык исключительно для мобильной разработки исключительно под устройства Apple (которая скорее всего не особо будет вкладываться в развитие фреймворков и библиотек под Android).
Поэтому конкурировать с C# SWIFTу будет очень проблематично.

Это ваши личные предположения или вы видели результаты исследований ?

А на что перешел ПРиват?

Про продукты MS — есть статистика? у моей компании определенное направление, и все наши (поверьте, ОЧЕНЬ многочисленные партнеры пользуются продуктами MS), соответственно и разработка у них (либо для них) ведется на .NET. Я даже был немного удивлен изначально.
p.s. понятно, что это связано с тем, что MS предоставляет ОЧЕНЬ многое из коробки. Просто так категорично «убили» .NET, аж странно.

так категорично «убили» .NET, аж странно.
Ничего странного, типичное когнитивное искажение =) ru.wikipedia.org/wiki/Склонность_к_подтверждению

Кстати, в Испании достаточно распространен в государственных и муниципальных учреждениях.

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

Отмотаем на 10 лет — на дворе 2006 год. Мобильная разработка — это j2me (и поверьте, это ВООБЩЕ не та Java, которая) и PDA. iPhone появится только через год, а рынок приложений для него — еще через год, как и первый коммерческий телефон на Андроид.
В мире фронтэнда только что начало что-то случаться — вышли IE7.0 (первый апдейт за 5 лет) и FF2.0. Chrome выйдет только через 2 года. Вовсю рулит flash — только что вышел YouTube и на нем можно смотреть видео НЕ КАЧАЯ, ПРЯМО В БРАУЗЕРЕ! Это мог только flash. Еще можно было попробовать сделать ActiveX компонент или Java-апплет. Только что вышел гугловый GWT.
PHP в 2006 был и цвел, но это был совершенно другой мир. Фреймворки? Первые только-только начали появляться, мейнстрим — это что-то такое свое с «библиотеками» вроде Smarty. Скептики еще тянут мазу за Perl. Ты качаешь и читаешь мануал, ищешь текстовый редактор, и в принципе — готов написать свой первый guestbook уже к вечеру. Такой низкий порог входа, конечно, вошел в легенды, но чтобы встрять в современный PHP-проект — этого уже давным-давно недостаточно. Без знания и опыта современных фреймворков ловить совершенно нечего.
Javascript в 2006 уже давно существует, но пока что это маргинальный язык чисто «помигать кнопочками в браузере», jQuery только что появился, про него еще никто не знает, node.js появится только через три года. Самый писк — это AJAX, который умеет обновлять данные БЕЗ ПЕРЕЗАГРУЗКИ СТРАНИЦЫ! (на собеседовании был разумным вопрос про умение работать с XMLHttpRequest).
Вовсю рулят Visual Basic и C++ для декстопных/энтерпрайза. Еще очень неплохо выглядит Delphi и все помнят название компании Borland. GitHub появится через три года, пока все пользуются SVN если не CVS, а говнокод качают с Sourceforge. Stack Overflow появится через два года.

И вот прошло 10 лет. Все, как видим, поменялось. Кто сел на лошадку Java, PHP, C, C++ оказался в мейнстриме, и мог не метаться между языками, но копать вглубь, от «голых» приложений к фреймворкам. Кто подсел на Flash, Flex, GWT и прочее — вынужден был менять амплуа. Но ничего страшного, как-то я не слышал историй про спившихся флексеров или сбомжевавшихся перлистов. Все как-то сообразили вовремя и переместились в другую технологию. Идеи-то тоже эволюционировали, так что если между первым и вторым языком разница огромна, то после третьего-четвертого тебя уже тяжело чем-то удивить, а осваивать каждый следующий язык все легче.

Как сегодняшнему студенту выбрать? Да, в общем, никак. Лучше приучить себя к мысли, что в любом случае придется учить несколько языков, да и в одном языке за 5-10 лет пару раз сменится парадигма. Так что сама идея о единственно правильном выборе — не очень удачная. Через 10 лет успешны будут не столько те, кто правильно угадал сегодня, сколько те, кто не очковал пробовать и меняться, кто следил за трендами и старался быть актуальным.

Так что правильный выбор — это, конечно, английский.

Всплакнул, вспоминая, как было раньше...

В конце «мифического человеко-месяца» Брукс всплакнул, как было раньше, и что теперь он уже не успевает следить за геометрической прогрессией развития средств разработки ПО. Это была первая редакция книги, выпущенная в 1975-м...

Великолепный комментарий, огромное спасибо. Я думаю, он украсит мою статью :) И я буду его цитировать во время лекций

На английском, разумеется. Я менеджер.

ОК. А до этого? Или у вас нет технического background?

Как бы да, но не совсем. Видел в 2006-м забористейший rich ui на javascript, в системе для инвестбанкиров. Правда, испытывали этого монстра в тестовом режиме, был он тяжеленный и еле ворочался, и клиенты в массе своей предпочитали все же консервативное win32—приложение.

Как бы не совсем, но да.
Palm Pilot вышел в 1997 году — на 13 лет раньше iPad. Но именно iPad по сути создал рынок планшетов. Nokia вообще изобрела саму идею смартфона и выпустила свой первый communicator в 1996 году, за 11 лет до iPhone, но именно iPhone сделал индустрию смартфонов такой, какой мы знаем.
Есть серьезная разница между прототипами и ранними моделям и тем, что называется mass adoption. С технологиями, в принципе, такая же история. Между первыми релизами и массовым успехом проходят годы, иногда десятилетия. Javascript существует c 1995, но по-настоящему массовой технологией стал относительно недавно, а теперь так вообще вовсю считается кандидатом на основной язык веба — всего-то 20 лет понадобилось.
И выбирать вот такие языки/технологии, страшно модные и жутко современные — это очень большой риск, они часто не выдерживают проверки временем.

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

Интересная попытка совместить Пять миров от Joel Spolsky

Но ИМХО — незачет не только ввиду указанных другими ляпов.

1. А потому что миры (предметных областей) и инструментариев в виде экосистем ЯП — несовместимы. Они находятся на разных уровнях абстракций. примерно как проект здания и структура кирпича.

Утрирую и сужаю, чтобы не формализировать:
Вот есть «банковское ПО»
Когда его писали на COBOLе — нужно было учить COBOL.
Сейчас его пишут на Java — нужно учить Java.
Разве из этого следует что мир «банковского ПО» это мир Java? ;)

2. ИТ технологии не стоят на месте как и все остальные. Про средства автоматизации этапов разработки ПО не буду.
А вот про то что в некоторых мирах все чаще применяются законченные продукты, а не позаказные — упомяну

Вот как вы думаете — почему джунов на .NET и Java не берут?
Порог входа высок?

Не без этого, но вообще-то это вторая причина.
А первая — а писать в мирах где сейчас .NET и Java — нужно все меньше, и меньше.
Труд программиста — масштабируем (см. у Талеба в «Черном лебеде»)

и результат труда одних программистов — становится выгодней применять, чем других.

кстати, а когда джуном на C++ стало сложно устроиться? и разве С++ умер?

Итого, quick & dirty analyse для молодых — учите то где вас, молодых берут. Там где вас не берут не порог входа высокий — а вообще программисты будут нужны все меньше. и мидлов брать перестанут, и начнут увольнять.
вторым ориентиром можно взять — насколько формализована деятельность в предметной области (подсказка — в веб — очень плохо формализована)
третьим — в том мире куда корпорации вваливают деньги — программировать в итоге будет какой-нить «IBM Watson», а людям останутся — «сайты пиццерий»
серьезней про это Почему умение программировать не спасёт вашу работу

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

программировать в итоге будет какой-нить «IBM Watson»

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

Так как программирование — это перевод неструктурированного потока данных от заказчика в абстракции знаний и архитектуру ПО.
Если этот заказчик инженер, и задача инженерная — то очень даже структурированного.

И верификацию и валидацию этого потока в состоянии провести «какой-нить „IBM Watson“»

Ну так если заказчик инженер и даст четкую диаграмму классов в UML, то можно и сейчас для кодинга набрать индусов за 300$ в месяц. Вот только сперва заказчику нужно заплатить инженеру, которые нарисует UML-диаграмму.

В общем ваши рассуждения о

«IBM Watson»
не имеют смысла до тех пор пока не будет создан 3D-принтер, который по словесному описанию (не по чертежу или описанию 3D-модели на внутреннем языке) сможет напечатать изделие, которое нужно заказчику. Это намного проще программы.
будет создан 3D-принтер, который по словесному описанию сможет напечатать изделие,
Почитайте на эту тему , про подобное устройство -коротенький фант. рассказ Роберта Шекли «Необходимая вещь», вам понравится:))

www.serann.ru/...neobkhodimaya-veshch-9601

О чем, о однотипных задачах. Как раз работа программиста отлично копируема, даже с небольшими изменениями. Это доказывает существование платформ интернет магазинов, за которую вместе с хостингом нужно платить 50$ в год. Вот 50$ заплатил и ты уже владелец нового Амазона! Или все таки нет?

Это доказывает существование платформ интернет магазинов, за которую вместе с хостингом нужно платить 50$ в год.
это где такое?

Обычно заказчик с деньгами именно это и хочет:

«зделай пиздато»
Основная проблема — это вытянуть из него то что он хочет, а потом убедить что он именно этого хотел. Так что пока не будет создан ИИ — выбирающий правильное решение из неточных и противоречащих самих себе данных, то профессия программиста будет востребована еще больше. Просто потому что программист — это человек который знает — что может компьютер и что может хотеть заказчик. А программировать — это как умение читать и писать. Гарри Поттер от Роулинг то один такой успешный, между тем 95% британцев умеют читать и писать.

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

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

причем визуально.
Если создавать визуально правильно- это тоже крайне непросто:)

1)Анализ бизнес-требований и сайтов конкурентов, постановка идеи, разбивка на задачи.
2)Проектирование, разработка персонажей, сценарии взаимодействия, требования к интерфейсам
3) Построение скетча и прототипа
4)Выбор дизайна, типографики, визуальных слоев, иерархии, шрифтов и пр. , построение мокапов
5)непосредственно визуальная верстка, подключение плагинов
6)SEO- оптимизация
И это все очень плохо формализуется! потому что на субъективных факторах основано!
И машина еще оччень долго этого не сможет делать, до изобретения ИИ, так уж точно))

Именно об этом я и намекал!

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

то есть, парадокс получается — скалисты с хаскелистами лишатся работы раньше чем презренные ими «вебщики»
:)

Сейчас будет новая волна переноса библиотек и алгоритмов на client-side web. Ну тоесть web-терминалы обзаводятся богатым функционалом вместо обработки всех данных на мейнфрейме(сервере). Так что работа будет всегда и даже почти одна и та же.

Но все равно предложения Интернет-магазина за 100$ вполне присуствуют
eshop.org.ua/...nternet-magazin-bazovyiy

Какой магазин, такие у них потом и продажи и продвижение будут)
Наплодят 100500 инкубаторских , однотипных магазинов..
И опять таки -такой даже магазин за 100$ машина не сделает сама, ибо не умеет выбирать.

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

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

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

Это инженерная работа, предлагать решения, а не работа пользователя, или каких-то там абстрактных специалистов «по требованиям». Потому, что для предложения варианта решения, надо не только знать и понимать решаемую проблему. Для выбора решения — надо еще и понимать возможности и ограничения. А это — инженерная прерогатива.
Инженерная деятельность, ошибки, и риски gaperton.livejournal.com/49165.html

Просто потому что программист — это человек который знает — что может компьютер и что может хотеть заказчик.
Каков процент таких программистов, по вашему? и сколько стоит такой программист? и какова его производительность? и какова погрешность его оценок, и стоимость их исправления?
А программировать — это как умение читать и писать.
+
95% британцев умеют читать и писать.
потому что — грамотных не стало больше. просто неграмотные научились читать (О. Уайльд)

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

В общем мы спорим о том что кодеров станет меньше, так как рутинные операции возьмет на себя IDE. Ну так будущее уже наступило, та же VS 2013 и отлично сама отступы в коде расставляет и показывает варнинги на неиспользуемых переменных и мусорного кода и интерфейс мышкой позволяет рисовать и даже позволяет посмотреть переменные в точке, где произошел экзепшен и выход за границы массива. А XAML вообще позволяет натянуть любой дизайн на программу.

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

нет, я говорил не о кодерах.

загляните наконец в гугл
валидация ПО
верификация ПО

ага еще и архитектура ПО и модель данных и прочее. Для этого требуется все равно человек.

Работа программиста станет проще, но программистов потребуется больше, так как большая часть всей человеческой деятельности без программных дополнений будет немыслима.

ага еще и архитектура ПО и модель данных и прочее.
какой процент программистов этим занимается?
Для этого требуется все равно человек.
кто вам сказал что логарифмическая линейка — вечна?
Работа программиста станет проще, но программистов потребуется больше,
речь была о конкретных видах, специализациях программистов.

и о влиянии на потребность в разных видах от степени формализации предметной области.

то можно и сейчас для кодинга набрать индусов за 300$ в месяц
можно.

а потом спутник заглючит.

или более бытово — партию стиральных машин придется отзывать.

час простоя эл-магазина — тоже ведь убыток.

не имеют смысла до тех пор пока не будет создан 3D-принтер
а он то при чем к валидации и верификации ПО???
сможет напечатать изделие, которое нужно заказчику.
заказчику нужно бортовое ПО, например. какой принтер его напечает?

Или ПО для управления инфраструктурой клауда. Какой такой 3D принтер его напечатает?

Вы точно программист, если не знаете что ПО — это НЕматериальный объект а информационный?

заказчику нужно бортовое ПО, например. какое принтер его напечает?

Я говорю о более простом. О том что

«IBM Watson»
не способен напечатать обычную чашку по описанию заказчика. Между тем любой рабочий это делает за 10 минут на гончарном круге. О каком ПО можно говорить.
можно.
а потом спутник заглючит.

Вы сами себе противоречите. Я говорю что программисты были «не нужны» с создания Cobol. Прошло 55 лет и потребность в них только увеличилась. Так что, экстраполируя, на ближайшие 55 лет программисты будут завалены работой, возможно на других языках программирования, чем указаны в статье.

А робота, который будет водить автомобиль или кричать «Свободная касса» создать намного проще, чем робота, который сам, без участия человека, создаст сайт визитку, которая устроит заказчика.

Вы сами себе противоречите.
это конечно, это как всегда :D

какие еще чашки? вы гончар что-ли?

Так я и говорю что количество программистов даже возрастет, так как требоваться станет намного больше. Так как 3d -модель для 3d-принтера должен будет разработать человек, которую нужно заплатить. И программу для разработки 3d-моделей тоже должен будет разработать другой человек, как и всякие плагины.

Те же станки на ликвидировали класс рабочих, наоборот, рабочих стало намного больше после НТР.

Так как 3d -модель для 3d-принтера должен будет разработать человек
мышкой в 3Ds Max

Или в SolidWorks

при чем тут программисты?

А робота, который будет водить автомобиль или кричать «Свободная касса» создать намного проще, чем робота, который сам, без участия человека, создаст сайт визитку, которая устроит заказчика.
Так и я вам об этом пишу -о чем собственно спор?)
Вот есть «банковское ПО»
Когда его писали на COBOLе — нужно было учить COBOL.
Сейчас его пишут на Java — нужно учить Java.
к слову, многие западные Core Banking по-прежнему на COBOL-е/Fortran-е

точнее их «ядро»
а уже новые модули к нему — на Java

третьим — в том мире куда корпорации вваливают деньги — программировать в итоге будет какой-нить «IBM Watson», а людям останутся — «сайты пиццерий»
Вы правда серьезно думаете, что нынешнему поколению студентов стоит об этом волноваться?)

Когда я начал читать статью, я подумал: Хм, а кто такой «Dev leader»?
Когда дочитал до опуса про web, понял: это человек, который обо всём что-то слышал и готов написать об этом статью и прочесть лекцию.

вот так и создалось привратное понимание о дев лидах...

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

У вас просто каша в голове, о чём я явно вам и говорю. Фронт без бека, вместо бека какой-то отдельный веб с какими-то «сайтиками», где не совсем понятно каким боком php, разработка для десктопа почему-то названа UI разработкой, хотя UI — это «user interface» и это часть как десктопного приложения, так и «сайтика», но не направление в программировании. В общем, или вы абсолютно не умеете выражать свои мысли, или дилетант. В обоих случаях написание статей — не для вас.

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

Чтобы оценить вкус еды — не нужно быть поваром.

Хм, вы будете отрицать, что лучше вообще не писать и не учить, чем учить неправильно и вводить в заблуждение?)

Итак, на чем же остановиться? Выбор за вами. Но я бы советовал выбирать...
русский нецензурный, и идти в манагеры :8)

Якщо людина питає яку мову вчити, то часто суттєвим фактором є не практичне застосування мови, а те, наскільки просто написати цикл фор і вайл, і наскільки велика ймовірність, що людина кине навчання до першого хеллоу ворлд (наприклад, на С++ доведеться вивчити інклюд, мейн, стдаут і ще може щось забув).

Так що я б радив щось якомога простіше — типу пітону, де можна стартувати консоль і написати «print ’hello world’». А коли цикл фор засвоєно, то можна і вчити складніші речі на іншій мові.

Синтаксические конструкции везде примерно одинаковые, не?

имхо их два основных варианта. Школа С и Школа Паскаль.

APL, Forth, LISP, Ocaml випадають. Сі і паскаль — той самий алгол

наприклад, на С++ доведеться вивчити інклюд, мейн, стдаут і ще може щось забув
Людині, яка знаходиться на рівні hello world, не обов’язково це вивчати. На першому занятті або у статті для новачків можна просто сказати «не звертайте уваги на ці строки, ми повернемось до них пізніше».

Ну, я не согласен, извините. В большинстве случаев освоить язык программирования — вообще не проблема. Если проблема — то это вообще не для этого человека профессия. Людей (по моей практике) больше интересует каким языком СТОИТ заниматься.

Перспективы — непонятные. Я был уверен несколько лет назад, что .Net будет жить долго и счастливо. Сейчас такой уверенности поубавилось.
Ну почему все так плохо с .Net ?!

Краткое резюме статьи:

Java Enterprise — это круто, высокие зарплаты, почет и уважение
Mobile Android — круто потому, что на Java
Embedded — можно программировать прошивки на андроид (см. выше)
.Net — потихоньку скатывается в говно
Game dev — работы нет и не будет
UI — забудьте
Front-End — для лохов которые не осилили Java, нужно «программировать» в Photoshop
Web — лохи делают сайтики визитки на PHP4 и экзотических Питоне/Руби, скоро их всех выгонят и наймут фронтендщиков делать лейдинги

Итоги: Java круто, все остальное говно, выбор за вами :)

зря вы так, сейчас набегут JavaScript программисты и расскажут, что вы неправы и скоро все будет JavaScript

Почему же? Чем больше людей не уделяют внимание яваскрипту, тем больше у меня работы :)

Вот поэтому я радусь, что автор не советует идти в веб разработку ( бек енд). PHP — отстой, ничего интересного нету, вакансий скоро не будет, всё будет на js, php девелоперам ловить нечего :). Лучше — джаваскрипт учить, правильно :)))

P.S. В голову пришла мысль, что PHP закидывают какахами сами же PHP разработчики, чтобы не перегревать свою нишу желающими вайтивайти :)

Но это, в основном, потому что в Javascript есть подстрока Java.

Понабегите на меня JavaScript разработчики! Ищу команду для мобайл слотов

В чем разница для конечного пользователя написан мобильный апп на джаваскриптном ionic или Java?

У вас плохое мнение о нас

Это отнюдь не так, а как раз наоборот, очень хорошее.

Угадал основной язык автора, не заглядывая в Линкедин )

Ну а что еще может вам сказать джава девелопер?

Спасибо, вы интересно просуммировали :) Ну я не совсем это имел в виду, но получилось классно

Вообще, как мне кажется, довольно близко к правде.

iOS пропустили) что то не пойму куда по вашему списку засунуть его исходя из статьи)

Про геймдев там какой-то бред написан.

Если есть front-end разработка то где тогда backend? Или это входит в раздел Webчика? Или автор в разделе Веба подразумевал джумлу-вордпресс?
Ну про то что пыха такая же как и в начале 2000х промолчу)

А вообще входить нужно с той технологии на которую есть спрос. А дальше если мозги уже будущее покажет что и куда.

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

Вот ведь засада-то с UI-разработкой! Хорошо хоть, что веб-приложения, мобайл и эмбеддед не надо продавать и поддерживать. Там-то никому не придет в голову делать колл-центр и прочие глупости.

Про Haskell писать уже не модно?

и шо, много вакансий на хаскеле?

Меньше, чем на PHP.

Только PHP практически такой же, каким он был на рубеже веков
Я даже не буду это комментировать, видимо для автора PHP такой же как и в 2000м.

Лучше вообще ничего не пишите, чем подобные комментарии, не позорьтесь.

Плюсую, о PHP в последнее время слышно как никогда много :)

C++ — основной язык в Embedded? Сміявсь.

Ой да ладна. Он туда идеально подходит. Embedded проекты недостаточно громоздкие чтоб C++ показал свою уродскую сущность, но недостаточно маленькие, чтоб на плюсах было где развернуться. Хотя может подтянутся умные дядьки и расскажут насколько там stl и boost применим.

Редкий девайс сегодня в себе гигагерцовый проц и мегабайты ОЗУ не таит, потому много ембеддед проектов сейчас на линуксе, вот там С++ частый гость (в юзерспейсе). Но С используется всетаки чаще.

Master Yoda? :)

When nine hundred years old you reach, look as good you will not. Return of the Jedi

спать когда хочу, комменты пишу, бывает иногда

Как бы да, но как бы нет. Можно гуй на Qt + C++ писать, и называть себя эмбеддером, но по факту быть обычным разработчиком под Qt. Все-таки эмбеддед это когда бизнес-логика знает что у тебя на плате два юарта и iic шина.

эмбеддед очень широкое понятие, но даже магнитола в машине уже работает под линуксом. Любой роутер, модем.... На любой борде у вас есть те-же уарты, spi, i2c, прерывания и тд и тп. Супермега интерфейс на Qt еще надо как-то отрисовать на этом чудесном eink дисплеи.

Писать под линукс и писать под bare-metal это немного разный класс задач.

Но порой под bare-metal писать бывает легче, чем под Linux. Тот же STM32 с его Firmware Library — просто сказка.

Да, но когда вы пишите под bare-metal, то у вас в голове всякие регистры, юарты, порты и тд. А когда вы пишите под линукс, то вы мыслите немного другими категориями, поскольку про регистры до вас уже кто-то подумал.

Нормально отрабатывающие прерывания я бы более не трогал с их регистрами, юартами и портами. Main-loop тоже, до поры до времени.
А вот в Linux порой приходится исправлять косяки, которые вызваны эволюцией приложения, да и всего проекта в целом. А они могут быть настолько уникальны, что любой врач позавидовал бы такой практике. Примеров уйма.

Соглашусь. Только с ассемблера на Си пересели :-) Кстати, в статье упущен момент, что в Embedded, в отличие от остальных направлений, с удаленкой не все так просто, так как в подавляющем количестве работ, девайс, на который пишется прошивка и производится отладка, должен быть если не на столе, то рядом. Особенно когда это система жесткого реального времени, взаимодействующая с кучей датчиков и т.д. Поэтому для Украины это направление, к сожалению, малоактуально.

ой, да ладно. Все виденные мной эмбедед девелоперы (Люксофт и ИнтроПро) держали ан столе свои девайсы. По моему, именно такая работа и востребована достаточно сильно. А удаленки в Энтерпрайз например вообще практически нет. по причине необходимости переносить знания максимально быстро и эффективно

Ага, поэтому у ИнтроПро вакансии эмбедера и отсутствует ) Наверное не могут найти спецов из-за высокой востребованности, отчаялись и сняли объявы.
Если сравнить количество вакансий эмбедеров и остальных, то дай бог будет 0,1%. Ну и смысл туда идти? Внутреннее производство почти стоит, а электронные блоки туда-сюда через границы, таможни, почты особенно не повозишь.

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

Знатный холиварчик начали! Он бы для пятницы очень хорошо подошел бы.

Ну, вообще-то я не холивар начинал :) Я просто читал много раз эту лекцию перед студентами. А тут Валентина услышала и попросила оформить в виде статьи для ДОУ. Я ее вообще-то для передачи всяким родственникам и друзьям написал, а не для программеров. Вы и так все это знаете. Просто просуммировал

Лекции судя по стилю изложения для младшей дошкольной группы :)

в основном для студентов. Им это важно

какой вы милый человек. Да, умудрялся говорить ртом. Я вообще им всегда говорю. Если интересно — посмотрите видео на моем канале YouTube

А чего только у меня в голове Front-end и клиент это разные понятия? У всех комментаторов которые пытаются убедить что фронтендеров много наверно вообще понятия нет о том что такое современный фронтенд. Или Node.js уже не входит в стек фронта? Современный фронтендер это среда разработки + система сборки + деплой + администрирование отдельного сервера(ов) + непосредственно сам клиент. Все то, что может сделать .NET или PHP уже давно (правда давно) можно сделать на Javascript.

Насколько я знаю node это js вынесенный за рамки браузера. А написать на нем можно хоть варкрафт. Поэтому не понимаю почему он в стеке фронта.

Потому что фронтенд это не то же самое, что клиент. Почему у вас фронтенд это только браузер вот что непонятно. Да и браузеры бывают разные. Например Slack или Atom.io — это все тоже про фронтенд и браузеры.

Всё, что выполняется на клиенте — frontend; всё, что выполняется на сервере — backend.

Node.js — сервер, это бэкенд.
Ну и знание javascript не делает из вас backend девелопера.

есть сервера которые выполняют роль фронта, где есть некий апп сервер — который бекенд, и есть сервер который общается с ним, он же фронтенд

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

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

классический пример — бекенд на C++/Джава и фронт на пыхе.

просто большинство людей понимают фронт как ЮаЙ, в целом если мы говорим об СПА, то это действительно чистый фронт.

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

в оригинале это про слои системы, а систему можно рассматривать по разному

Я видел бэкенд на пыхе и фронт на C#

Вариации разные могут быть, у меня сча на одном проекте и бек и фронт джава

Та часть с которой работает пользователь — это client side. Понятие front-end чем код работающий в браузере.

Front end — это абстракция, которая предоставляет пользовательский интерфейс.
То есть по сути это понятие еще меньше, чем клиент)
Потому что если, брать веб, например..контролеры Ангуляра хоть и выполняются на клиенте, но строго говоря -это бэкенд.)

Значит у нас разное понимание этих терминов.

И какое у вас понимание?
В чем я не прав?

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

С чего это? Вам так захотелось?

Node.js — сервер, это бэкенд.
Ви тут забули що значна (якщо не майже вся) частина інструментів для фронтенду запускається за допомогою node.js...

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

Или Node.js уже не входит в стек фронта
А разве JS-дев со знанием ноды не переходит из FE в full-stack автоматически?

Вообще не автоматически, базы данных еще никто не отменил. Фронтенд это о представлении данных, а бекенд об обработке данных и интерфесе запросов. Я не верю в фулстек как таковой. Ну разве что для сайта хомячка.

Почему?
А если это backend-дев, пришедший в браузерный код «сзади»?

Не надо «сзади» подходить! о_0
Лучше так:
cs633330.vk.me/...134/277e8/yJQweMJKz40.jpg

бекенд об обработке данных и интерфесе запросов
тоже не совсем так -современный толстый клиент делает тоже многое из этого

Смотря что он на ноде пишет.
Если только автоматизирует сборку клиентского кода (модуль-бандлинг, цсс пре/пост-процессоры, тесты, вот это всё) — то нет, не переходит.

Если пишет логику серверсайда — то переходит.

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

Я би сказав що це (розробка веб-сервісів/бекенду) найактуальніша зараз ніша серед усіх представленних, а автор про них забув. Зате не забув проспівати діфірамби ентерпрайзу :)

Хм. Возможно вы правы. Но я объединил все это в понятие «веб-разработка»

Только по моему тема стати не в Важности того или иного языка и направления, а в том, в какую из сфер проще попасть)

Ну как по мне и тут промах. Порог входа на том же PHP, Ruby заметно ниже, чем на Java (особенно если речь идет об Ентерпрайсе), Objective-C, Swift.

Ну и jobs.dou.ua смотрим каких вакансий открыто больше. И какой конкурс на одну вакансию. Тут как бы фронтенд уже не сахар. И с мобайлом новичкам туговато будет.

В Embedded Pure C, по-моему, более распространён, чем C++. Этот язык традиционно чуть ли не дословно компилируется в команды процессора и при этом относительно кроссплатформен.

Даже не это. Pure C исключает саму созможность завалить необслуживаемую систему щедро развернутым эксепшеном или криво написанным темплейтом.

Вы серьезно? scanf() на необслуживаемой железяке?

Это очень слабенький агрумент. Обычно сишники хваляться что они ацки умные, пишут правильные программы, который всегда работают правильно. Но только непонятно, почему эти самые люди, которые пишут правильные программы, которые всегда работают без ошибок, не могут освоить примитивы языка (С++), а изобретают эти самые примитивы, используя методы, которые читабельность, разрывают просто на мелкие куски, при этом не получая очевидных приростов производительности, либо экономии места.

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

Вот только где взять плюсовиков, которые понимают что делают?

Ну почему не писали. Писали. Поэтому и насмотрелись, как бородатые детишки всю каку вычитанную у Александреску тянули в код.

Где :) С точки зрения канонического С++ все было чудесно и вероятно работало бы на PC. А вот на коробке с 265 МБ все падало после 30-40 часов аптайма.

1. Да влияет.
2. На С пары *alloc() - free() в целом отследить легче.
3. Сама плюсовая парадигма требует постоянного создания-удаления объектов. Перевоспитать человека обученного в таком стиле на работу со статическими объектами черезвычайно сложно.
(Я знавал человека, который писал на Джаве в С-подобном стиле, но он был настоящим ассом.)

Интересуемся термином «раскрутка стека», а также объектами которые компилятор создает неявно.
Нет, вопрос не в утечке памяти ( хотя и это тоже). Вопрос в ее фрагментации и запросах на память, которые создаются без ведома программиста.
Я сказал все и даже больше, дискуссию прекращаю.

(Я знавал человека, который писал на Джаве в С-подобном стиле, но он был настоящим ассом.)

То есть автоматическим управлением памяти он совсем не пользовался? А это возможно в Java?

Курча... Господа, я честно не хотел здесь холивара...
«Ребят, можно я уже пойду?» ©

Если держать объекты постоянно в области видимости. Да код там был очень специфичный.

А, это еще не жесть — у меня в первом коде под андроид новые объекты вообще не создавались,все методы в мейн, без параметров, переменные — глобальные статичные)

не обязательно ассом — достаточно просто знать другой подход. Или не знать: я первый проект под Андроид написал в си-подобном стиле — с ООП тогда только начинал разбирался. Потом подразобрался (включая исходники открытых jvm), многие знания породили многие горести)))

Зависит от знания нюансов. В С++ их на порядок больше.

Вообще, мне кажется, первым делом надо учить программирование как такое. Все равно на каком языке. Лучше С++, Java, Phyton и понять основную логику работы языков. Понять реализацию основных алгоритмов. Разобраться хотя бы чуть чуть в ООП и потом уже искать специализацию. Сам язык не важен.

чисто верстальщики совсем чтоль уже не актуальны?

Только ЗП у них не сильно привлекательны

В целом поменьше, да, но смотря где и какого качества работу делают, вы смотрели статистику upwork’a ?

Для ЗП верстальщика одного качества мало. Еще очень важна производительность. Конечно можно смотреть на отдельные примеры и видеть удивительные вещи, но средняя температура по палате говорит, что верстка — не самое денежное занятие.

Чисто верстальщик вполне может (и обязан) развиваться, лучше всего (для него самого) в сторону frontend dev, потому что это его ниша. А выучить последний css\html — это не такой уж и большой объем информации. Сейчас чистого верстальщика можно обозвать front junoir-ом.

По количеству вакансий я не вижу огромного спроса на рынке Android Developerов.

На данном этапе развития технологий — мой ответ на вопрос какой язык выбрать для работы будет таков:

Мне кажется порог входа самый низкий во Front-End
Front-end имеет четко ограниченую базу знаний, за счет достаточной гранулярности самих тем достаточно просто дается новичкам на старте, сразу видно результаты своего труда.
Front-end самый прозрачный, можно посмотреть реализацию чего только захочешь.
Разработка во Front-end постоянно эволюционирует — JQuery, Bootstrap, Angular, React.. становясь все удобней, и убирая рутину.
Front-end не имеет нагроможденной бизнес-логики + не обязательно иметь математический бекграунд для начала работы, в целом для свитчеров из других специальностей будет проще.
Зарплаты во Front-end в среднем такие же как и в других направлениях, за исключением возможно чисто верстки.
Js не ограничевается только браузером, так же может быть и серверным, есть даже экзотика как микроконтроллеры на js.
Судя по статистике Джина, то dou.ua/...s/djinni-rating-mar-2016 найти работу junior’у Front-end’а достаточно реально.

Стек технологий для фронтэнда не так так уж и прост, как кажется многим. Начинающие фронтэндщики по количеству желающих войти в айти скоро догонят тестировщиков. Многочисленные IT-курсы с подменой понятий верстки и фронтэнда делают свое дело.

Согласен, но я думаю вы как рекрутер не писали enterprise на Java или .NET’e , чтобы сравнивать :) И я написал что мой ответ только для текущего времени, возможно через пол года-год все измениться, и рынок перенасытится, но пока-что так.

Рынок уже насыщается. Многие из тех, кто не смог зайти через QA, активно учат фронтэнд, как новый тренд. Несложно предугадать перегревание рынка фронтэнда через полгода-год. Как на мой взгляд, самый простой сейчас путь — это QA Automation (под простотой понимается соотношение спроса, предложения и сложности входа в технологию).

Правильно делают — нужно ковать пока гарячо. Кроме локального рынка смотрите еще на мировые тренды. Можно работать и на upwork’e. По отзывам самих QA-автоматизаторов эта работа насыщена рутиной и ты работаешь в режимах — либо много не сложных задач либо мало но сложных, это не всем нравится.

IT не то, что было 5-7 лет назад. Сейчас нельзя за месяц-два выучить какую-то технологию и найти работу. Проблема большинства вайтивходителей в том, что они видят актуальный тренд и начинают активно готовиться (учиться), чтобы по нему влиться в сообщество любителей сыров по 500. Степень их готовности достигает максимума как раз к моменту перегревания и спада тренда в минус. Потом они ловят новый тренд и начинают все с начала. Так можно всю жизнь входить в айти.

Тренды трендами, мне мне кажется какое-бы напавление из пятерки лидеров не выбрать, при желании можно найти работу.

Конечно можно. Вопрос только в сложности, в величине порога входа. Из-за чего многие желающие остаются за бортом.

Вы согласны со мной что во Front-end проще попасть ? Я же писал об относительной сложности а не абсолютной.

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

Это по опыту рекрутинга вы судите по количеству офферов или по каким критериям ?

Комплексно сужу и по процессу рекрутинга и по мнению разработчиков

да и верстка, по сути не программирование.

А что вы подразумеваете под программированием ? Если уже придираться к словам то программирование это формирование набора инструкций для некой виртуальной машины. Примером такой машины может быть машина тьюринга, хотя математический аппарат для этого разработали еще пару веков назад. Сейчас программирование разделилось условно на два лагеря — декларативное(функциональное) и императивное. Верстку можно назвать функциональным программированием отображения потока вывода для виртуальной машины браузер. Погуглив я подтердил свою гипотезу, ru.wikipedia.org/...ративное_программирование

Полностью согласен верстальщик и даже javascript coder =/= frontend.

да, согласен... многие пройдя курс htmlacademy начинают считать себя фронтенд и ломятся....

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

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

нужно входить через то, к чему «душа лежит», если будешь учить то, что тебе не нравится, не станешь хорошим специалистом

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

Жаль это большинство -человек должен заниматься тем, что получается лучше всего..

Выбор между жить в нищете или заниматься не тем, что нравиться падает как правило на второе, особенно, если у человека есть семья.

5-7 лет назад был 2009й год, когда куча разработчиков наложили в штаны, поскольку их проекты висели на волоске, куча компаний закрылось, на улицу выгоняли людей из лидеров рынка целыми проектами, понятие «лавочка» перестало существовать, если тебя уволили, то тебя уволили. Короче это было очень стремное время, когда внезапно появилось куча опытного народа, с которым можно неплохо так торговаться по зарплате, а на людей без опыта, не смотри вот просто совсем.

Но в 2011-м да, стало сильно лучше, тут спорить не буду.

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

если в нем разбираться нормально, то нифига он не простой. Верстка, да не сложно. 100500 фреймворков, причем сегодня один рулит завтра другой или даже не так, комплекс технологий, например: webpack, babel, react сейчас, что будет завтра неизвестно. Все нужно знать и держать в уме, быть готовым учить новое. Дальше... само программирование тоже не сахар. Прототипы вместо классов. Асинхронное программирование. Промисы, колбеки, дефферед — для новичка офигеть как понятно.

Вы в чем-то кроме front-end’a разбираетесь ?

Я новичок. Я пишу с точки зрения новичка.Параллельно учу фронтенд и PHP. В PHP понимание приходит намного быстрее и понятно почти все. Но например асинхронное программирование мне взрывает мозг.

В любом серверном языке есть асинхронное программирование и 100500 фреймворков тоже + если говорим об энтерпрайзе то это еще и огромная предментая область.

А я и не говорю, что серверное программирование легко и особенно на энтерпрайз уровне. Но для джуна (ИМХО) порог входа ниже. МВЦ + БД учится достаточно просто. Плюс фреймворки меняются не так часто как на фронте.

Шо правда а расскажите мне про асинхронность на Java:) только без костылей и фреймворков.

Не пишу на java, не скажу ) Но думаю как-то это должно быть сделано.

как-то это должно быть сделано
как-то это должно быть
как-то

не в курсе.
последний раз когда любопытствовал о реализации Callback, чтоб передавать код как параметр вызова, у меня чуть глаза не вытекли.
боюсь рисковать теперь.
PS я не из тех, кто кричит «Джава ацтой». Просто некоторые концепции, похоже, натягиваются с трудом. Большим.

Да есть сейчас и Future и Promise ... но еще просто важно учитывать на чем оно крутиться будет (e.g. Tomcat or Netty) + Execution model фрэймворка .... есть асинхронность и писать можно ...

не «код передается» а, простым языком, ссылку на подпрограмму — которая никуда не перемещается при этом, подпрограммой и остается, даже на уровне jvm афаик. Сложно въехать в искусственно созданные сущности, не всегда удачно созданные, это да — сам через это прошел. Но всегда можно перевести понятным языком...

конечно, ничто никуда не перемещается.
когда я говорю «передать переменную как параметры вызова функции», я не имею в виду, что в одном месте память освободится и данные будут перемещены в другую область. а вы?

асинхронное программирование мне взрывает мозг
Сишники, наверное, очень громко посмеялись бы.
Мне кажется порог входа самый низкий во Front-End
Лучше бы, с такой же легкостью и выходили. Многие до сих пор кодят «как на жквери», хотя от них требуется углубленное знание Angular

Если они до сих пор кодят, значит это кому-то до сих пор нужно.

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

Согласен с вами, но не всегда заказчик/PM/? понимает, что технический долог (technical debt) сложного интерфейса, написанного на JQuery на средней и долгой дистанции больше тормозит проект, чем переход на современные MVVM/MVC/V фреймворки

Просто у индустрии еще нет накопленного массива опыта, чтобы понимать, что и

современные MVVM/MVC/V фреймворки
несут в себе точно такой же долг...

Підписатись на коментарі