Может быть вопрос уже не раз поднимался, но хотелось бы услышать совет или просто чужое мнение.
Я программист, опыт около десяти лет (не считая учебы), начинал с системного программирования под винду, постепенно скатился в сайтостроение во фрилансе.
На данный момент уже устал заниматься сайтами и хотелось бы выбрать для себя направление дальнейшего развития.
Хотелось бы выбрать стек технологий, который бы подходил под такие условия:
1) Возможность работать удаленно (живу в небольшом городе, переезд не планирую, так как быт уже полностью обустроен)
2) Востребованность и полнота самой технологии/стека технологий, чтобы можно было создавать некие продукты под заказ командой (как перспектива развития себя в этой области) (например углубление чисто во frontend в итоге не позволит создать коммерческий продукт, плюс привык мыслить более глобально и интересна архитектура приложений в целом, ну и плюс отпечаток веба, где знание чисто php ничего в итоге не даст).
3) Перспектива самой области (под этим имею в виду, что например, если это разработка под десктоп, то нужна ли она сейчас и если да, то какие технологии (Qt, .NET WPF или другое)? Если под мобильные устройства, то что именно), чтобы можно было заняться погружением в эти технологии и не оказаться через пару лет никому не нужным. Это может быть даже не чисто программирование, а например что-то связанное, например CRM, ERP или что-то другое. Хотелось бы стать именно специалистом пусть даже и в узкой, но востребованной области.
4) Каждый гигант индустрии создает и продвигает что-то свое: майкрософт, оракл, гугл имеют свое видение на одно и то же и идет постоянна борьба за рынок, поэтому это тоже отдельный пункт для выбора, от которого зависит, например, тот же язык программирования или сфера использования (конечные пользователи, небольшие компании или корпорации), а порой и сама перспектива технологии.
На PHP+HTML+JS (и связанных MySQL, CSS и различных фреймворки для PHP и JS) делал проекты разного уровня сложности, но во фрилансе как правило нет интересных предложений. За весь период работы также делал приложения на MFC (C++), .NET Windows Forms (C#), ASP.NET MVC (C#), на Qt под одну специфичную аппаратную платформу, плюс в последнее время для себя изучил программирование под андроид и делал небольшие приложения для себя.
Несмотря на интерес к Qt не вижу большого спроса на него и отсутствие поддержки больших корпораций. C# и стек технологий от майкрософта интересен, но что именно востребовано или будет востребовано мне непонятно, спектр их технологий сильно расширился за последние десять лет, не стоит забывать про задержку развития продуктов для тех же мобильных устройств и вопрос с перспективой десктопа. Андроид конечно интересен, но тягаться на рынке с сотней тысяч приложений и писать сотое по счету "то же самое приложение, но от другого автора" как мне кажется, уже не то время. В последнее время знать все уже физически невозможно, так как в каждой области появилось столько нюансов, что нужно выбирать что-то одно и углубляться в нем.
Хотелось бы услышать ваше мнение и составить для себя шорт лист интересных и перспективных направлений дальнейшего развития.
Советую обратить внимание на Ruby on Rails.
Из плюсов по сравнению с .NET:
Удовольствие от программирования
Отзывчивое и активное комьюнити
Когда вы работаете с проектом на RoR скорей всего ваш продукт будут любить те люди, для которых вы пишите. Когда пишите энтерпрайз на .NET скорей всего ваш код будут ненавидеть офисные клерки.
Множество удалённых вакансий
Из минусов:
Нет сертификации по технологиям, отсюда разброс зарплат, т.к. оценка вашего уровня подготовки субъективна
Меньшее количество вакансий
Подробнее о минусах.
Насчёт сертификатов и стандартов, есть просто хорошие курсы по рельсам, выпускники которых котируются на рынке. Но вообще сертификация это не rails way...
Если рассматривать вакансии именно удалённые, то количество не так уж и отличается.
Входной уровень в технологию выше чем PHP, но ниже чем .NET
Но не стоит обманываться кажущейся простотой, рельсы держатся на огромном количестве соглашений, понимание которых ведёт к прокачке. И, конечно, синтаксис Ruby требует привычки.
Возьмем логически: крупных игроков на рынке стандартов - много, а производителей CPU/GPU ? Intel, nVidia, .. ?
По платформам - решаете сами. Я бы сразу учился делать под *nix-ы.
В итоге: обработка крупных массивов данных под Linux на API ядра CPU/GPU и BigData/DataMining/системы предсказания и аналитики.
Любой РЕАКТИВНЫЙ сервис с API с такими знаниями - уже сделать не проблема.
А что еще надо сейчас?)
BigData, DistributedComputing. И не языки, а протоколы
AMPQ, STOMP, MQTT - для сообщения
PAXOS, RAFT - для согласования
ApacheThrift, GoogleProtocolBuffers - для взаимодействия
ну и старый добрый OSI стек - для транспорта. Может быть так?
BigData, DistributedComputing - прокомментируйте пожалуйста по этим областям, что конкретно и в какой последовательности изучать, что более востребовано будет через 1 год и через 10 лет, что сейчас актуально и высокооплачиваемо :)
globuzer: изучать на мой взгляд следует протоколы(скажем перечисленные) потому, что они надолго. А за прогрессом инструментов не угнаться. Необходимо знать основные подходы(скажем MapReduce, шардинг и репликация данных. MessagePassing и RemoteProcedureCall кода. ОчередиРабот и диспетчирование этих очередей. LoadBalancing). Если все же говорить об инструментах, то знать зачем нужны и как работают memcached, Apache Hadoop, Apache ZooKeeper - это пожалуй необходимый минимум в области.