Как переквалифицироваться с desktop на web

Доброго времени, хабражители!

Вопрос в следующем. Около восьми лет программирую на С++ / C#, были чаще всего крупные проекты, в таких областях как GameDev, CRM-системы, Enterprise-интеграция. С web-разработкой знаком несопоставимо скромнее: основы php (набросал для себя простенький движок), использование CMS, ну и немного представляю саму кухню (что такое post, get, сессия, шаблонизаторы и т.п.).

Хочу уйти в профессиональную web-разработку. Все чаще и чаще ловлю себя на этой мысли. Хочу творить системы, изначально интегрированные в «бесконечный» океан интернета, работать с огромными потоками данных в режиме online, использовать изначальную кроссплатформенность и т.п. В общем, web — это будущее, и чувствую потребность идти в ногу с ним. Desktop, как класс, уже начинает вымирать.

Как это сделать? Основы основами, но для серьезной позиции нужно прошариться в каких-то ключевых технологиях. Если бы меня спросили аналогичное про С++, я бы сказал, к примеру: STL, BOOST. Для C# еще проще, практически все необходимое есть в самом .net (я о базовом функционале, конечно). А вот читая вакансии web, глаза разбегаются от обилия фреймворков и технологий. Особенно в мире Java (с которой, увы, не знаком вовсе). И языков тут вагон, а выбор — holywar.start().

В общем, буду признателен за советы, вдруг у кого-то есть опыт такого перехода. Осложняется все это еще тем, что есть некоторые обязательства, не позволяющие пойти на junior-вакансию с доходом в разы меньше нынешнего. Для не-junior нужен опыт. Замкнутый круг.
  • Вопрос задан
  • 9470 просмотров
Пригласить эксперта
Ответы на вопрос 10
smurov
@smurov
Не понятно кто я
Я бы на вашем месте ушел в мобильные приложения, параллельно изучая веб :)
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если у вас есть опыт работы с C# было бы логично попробовать .NET ASP MVC, думаю освоение оного проблем у вас не составит. Работа с базами — различные ORM (от стандартного Entities Manager до Hibernate и прочее). Если говорить о бэкэнде то даже не вижу смысла использовать еще что-то такое эдакое. Разве что для задач реализации REST API и прочего. Фронтенд — тут уже чуть сложнее. HTML5/CSS верстка довольно простая штука, но тут опыт нужен. Знал много верстальщиков которые хорошо знали и особенности поведения тегов и свойств, но не понимали концепции (у них разметка зачастую была привязана к оформлению страницы, а это уже плохо). Но в целом это много легче чем C++/Boost/SPL. Javascript — тут стоит владеть функциональным программированием.

Вообще, разница между программированием для десктопов и для WEB (если касаться серверной части и реализовывать на C#, PHP или Java) не сильно различается. Знать огромное количество фреймворков не обязательно, достаточно выбрать какой-то один. А потом взять другой будет все же достаточно просто.

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

Какие технологии, языки и фреймворки выбрать — решать только вам. Берите то, что по душе и то, что считаете перспективным. У любого инструмента есть свои достоинства и недостатки. Главное, все это должно быть вам интересно. Вспомните, чем вам понравился С++ / C# и выбирайте по тому же принципу, т.к. только в этом случае вам будет интересно изучать это. Если язык будет вызывать отвращение, а технология будет казаться бесперспективной, то вряд ли вы заставите себя изучить их, даже если все вокруг будут говорить, что это мейнстрим.

P.S. Извиняюсь за оффтоп, наверное по теме мало, что сказал, но поддержать хотелось. Удачи вам, в вашем начинании!
Ответ написан
@TipTop
Вариантов много, один наряднее другого:

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

2) Python популярен не только для веб-разработки, но и для обработки данных: вакансии под numpy/scipy не редкость. Приятное многообразие инструментов для входа. Можно начать с разработки под web2py — этот фреймворк специально создан для обучения программированию под веб. Пока что не очень популярен, но постепенно набирает обороты. К сожалению, IDE его не поддерживают. Если не пугает noSQL, то можно начать с Google App Engine в связке с PyCharm — быстро обучит программированию, и, главное, покажет правильный подход к администрированию приложений. После этого можно быстро и весело перейти на питоновский мейнстрим — Джангу.

3) Ruby пока не так популярен (особенно в России), но среди заказчиков весьма трендовый и популярность набирает быстрее питона. К сожалению, по нему не могу расписать подробнее — не занимался.

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

4) iOS — основное направление в отрасли мобильной разработки. Самый пухлый рынок и самый большой спрос на приложения. Некоторые умудряются впаривать по 50-100К рублей простые поделки предпринимателям, желающим приложений для айфона или айпада. Только разрабатывать придется под OS X.

5) Windows Phone — до сих пор наполовину полный/пустой стакан: сложно определиться взлетит или нет. Я считаю, что MS договорится с самыми крупными игроками (это они умеют очень хорошо), а потом и остальные подтянутся. Особенно интересен игрострой и интеграция с xbox live. Средний уровень приложений весьма невысок, поэтому есть возможность стать звездой и дальше работать по звездным расценкам.
Ответ написан
Комментировать
AxisPod
@AxisPod
Ну как сказать, все зависит от целей, естественно сразу в верха будет сложно попасть, C++ в плане разработок не особо перспективен, какие-то вещи на нем делаются, но этим занимаются в основном только очень крупные компании, которые ищут специалистов с опытом. C# как сказано выше дает ASP.NET, WCF и т.д.

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

В общем ищите компанию, которая работает с php, устраивайтесь на годик и за этот год подтянете все что необходимо и идите дальше и выше.
Ответ написан
pletinsky
@pletinsky
Разница между разработкой десктопных приложений и приложений под веб на практике очень велика.
Там нужно совсем другое мышление. Там другие науки (верстка, адаптивность, кроссбраузерность, скриптовые языки, которые труднее тестировать, протоколы веб сервисов и др.). Распространены другие архитектурные принципы (распределенные приложения, API, Rest сервисы и др.).

Если вы раньше разрабатывали коробочные решения, то вы в любом случае при переходе упадете на несколько позиций вниз (даже если и не джуниор девелопер). Это по факту. Работодатель конечно может вас на приличной позиции держать. Но если вы не будете это понимать и не найдете себе ментора, то горе тем, кто будет поддерживать ваши решения.
Ответ написан
Комментировать
amarox
@amarox
У меня похожая была ситуация, но несколько проще. Я с дельфи переходил на веб, но у меня тогда еще была возможность для juinor вакансии.
В Вашем варианте вижу только один путь: Пока работаете на основной работе выполнить параллельно несколько веб проектов. Будет и себе опыт и что показать работодателю.
Ответ написан
kyberorg
@kyberorg
Я сейчас работаю в Web-разработке.

Могу сказать что, на мой взгляд, сейчас наиболее активно развиваются два направления:
1) web: верстка и прочие фронтенд задачи, бекенд.
2) программирование под мобильные устройства: Android (Java), iPhone (Objective C) и Windows Phone.

Сам веб я бы разделил на три ветки (наиболее типичные наборы технологий):
1) PHP+JS+MySQL
2) ASP: C# ASP.NET и M$ SQL
3) JavaEE: Java, Hibernate (или аналог), Oracle

В вебе чаще всего требуют сразу и всего: верстка div'ами, PHP, JS, MySQL.
Хотя хорошие компании обычно ищут людей под определенную часть, например, PHP-прогер на бекенд.

Какая специфика в разработке под мобильные устройства пока сказать не смогу, ибо не работал там.
Хотя сильно хочу со временем уйти в Java for Android, больно классно там все организовано.

Удачи Вам в переходе!

P.S. На самом деле Core Java на 90% похожа на C#. Это сильно упрощает задачу перехода между ними.
Ответ написан
int03e
@int03e
Ну если не вдаваться в .NET, то тут выбор относительно мал: PHP/Python/Ruby. В PHP у вас уже есть небольшой опыт, но попробуйте что-то сделать с нормальным фреймворком (к примеру Yii). В плане питона — попробуйте джанго, в плане руби — рельсы. Остановитесь на том, что будет приятнее, ведь это самое главное. А работы достаточно в любой сфере. Не стоит ударяться с головой в один язык, не попробовав остальные.
Ответ написан
Комментировать
ks_ks
@ks_ks
Я бы проголосовал за эзотерику — разбирайтесь с Clojure(1, 2).

На ближайшую пятилетку, я думаю, эта штука ещё себя проявит.

Это диалект Lisp'а, который исполняется в JVM.

Если Google-очки выпустятся на платформе андроид, и ресурсов в обозримом будущем
на любых девайсах, где есть android(коих большинство) мы увидим кратно больше,
что скорее всего и случится, то эта штука позволит разрабатывать
продукты — быстрее, чем это делают Jav'исты.

+ как бонус, после изучения Clojure появится легкость в тонкой настройке Emacs'а, с его Emacs lisp'ом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы