Как попасть в backend-разработку?
===================================

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

Пару слов о себе. Мне уже под 30, всю жизнь я занимался сетями и телекоммуникациями. По большей части это были теоретические изыскания, в результате чего имею ктн в этой области. В определенный момент захотелось сменить академическую карьеру на работу с реальными проблемами, причём в качестве разработчика. Опыт программирования есть, хоть и небольшой. Для решения своих задач я в большинстве случаев использую Python, изредка C/C++ и R/Shiny.   

В итоге: хорошее понимание того, как работают сети, опыт работы с сетевым железом (Linux-based, Cisco), и немного с SDN понимание архитектуры сетевых решений в т.ч. IoT и т.п., неплохие навыки Python 2 (Numpy/Scipy, gRPC, protobuf, MQTT, начал учить Django). Английский – практически свободно.  

После небольшлого изучения рынка, наиболее интересным и достижимым мне показался сегмент серверной backend-разработки, в особенности высоконагруженных систем (все-таки тяготею к алгоритмическим проблемам). Однако, судя по требованиям в вакансиях, я не дотягиваю даже до уровня джуниора...  
* Кто виноват понятно, а вот что делать? Как стартовать в моем положении? Куда податься?
* Насколько критично знание фреймворков при устройстве на работу, насколько глубоко, и какие обязательны?
* Существуют ли альтернативы web-backend'у, позволяющие не терять накопленный опыт в сетях (разработка каких-либо сетевых сервисов и т.п.)?

  
  

З.Ы. Дело происходит в Санкт-Петербурге. 

 У вас хорошая база. Я бы посоветовал написать небольшое приложение на Django с использованием методологий TDD и Gitflow, например, микроблог - пользователи, сообщения, подписка. И выложите код на github, чтобы показывать работодателям. Интерфейс можно сделать просто на bootstrap. Потом ищите проект на фрилансе или в офис, где в команду требуется джуниор на бекенд и начинайте решать поставленные задачи, смотрите как работают другие. Изучайте теорию и функциональное программирование. Так от простого к сложному дорастете до сеньора и высоких нагрузок. 

 Я Вам советую пройти курсы по html, css, js пригодиться в работе или нет, не известно, но плюсик будет в резюме что есть представление о фронтенде, лучше изучить еще jquery, так как он используется очень во многих конторах. Далее читайте доки по django и пишите тестовое приложение которое там представлена. Ваш опыт плюс эти знания сделают из вас уверенного джуниора, а может даже выше. Основная проблема это конечно зп, ищите условия допустим на подработку, если деньги не главное то можете устроится джуниором, прикладывая усилия за год можно вырасти очень прилично. Конечно это руководство к действию, можно не заниматься фронтендом но тогда и шансы ниже, да и стремиться надо я думаю Full-stack.   

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

ссылки: <https://htmlacademy.ru/> <https://www.codecademy.com> <https://www.codeschool.com/> [www.wisdomweb.ru](http://www.wisdomweb.ru/) [htmlbook.ru](http://htmlbook.ru/)  
  

Ну и желаю удачи) 

 > Кто виноват понятно, а вот что делать? Как стартовать в моем положении? Куда податься?  

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

> Насколько критично знание фреймворков при устройстве на работу, насколько глубоко, и какие обязательны?  

Ну вот таки доучите Django, раз начали. Конечно от совсем начинающего этого требовать не должны, но такие вакансии будут называться "стажер". Если вы доучите, то будете Junior-ом.  
  

> Существуют ли альтернативы web-backend'у, позволяющие не терять накопленный опыт в сетях (разработка каких-либо сетевых сервисов и т.п.)?  

На мой вкус и ваши требования идеальная альтернатива такая: <https://moikrug.ru/vacancies/1000014166> . Еще интереснее вакансии в совсем крупных фирмах, например у Близзов - там часто требуются именно сетевые программисты для разработки большого числа нагруженных сервисов, которые у них есть. Например, [вот](http://eu.blizzard.com/en-gb/company/careers/posting.html?id=15000LY), прям по вашему описанию (protobuf, wireshark), но на такие позиции конечно нужен конкретный опыт, потому что берут лучших. Возможно стоит подтянуть и C++ в пару к Питону - раз вы работаете с сетями, то низкоуровневых вещей бояться не должны) 

> Кто виноват понятно, а вот что делать? Как стартовать в моем положении?

  

Стартовать в PHP что бы понять с чем работает большинство, поверхностно Apache, Nginx. Да можно в сисадминистрирование податься тогда nginx глубоко и тюнинг серверов, ОСи Debian CentOS, панели управления.  

> Насколько критично знание фреймворков при устройстве на работу, насколько глубоко, и какие обязательны?

  

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

> Существуют ли альтернативы web-backend'у, позволяющие не терять накопленный опыт в сетях (разработка каких-либо сетевых сервисов и т.п.)?

  

Пишите свой софт для управления сетями, сбора статистики, анализа обработки, т.е. решайте проблемы которые в этой области ещё не закрыты. 

[dtony](http://toster.ru/user/dtony): То что Вы до сих пор не нашли работу это не умение ее искать. Как бы Вам сказать. Научить фреймворку можно! Научить писать качественный код, тоже можно! А вот научить думать головой и пользоваться этим инструментом на всю катушку - это уже ой как сложно!!!  
  

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

> Насколько критично знание фреймворков при устройстве на работу

  

не критично, но архитектуру MVC нужо понимать, это основа бекенда и всех фреймворков этой стороны 

 А если что-нибудь такое? [spb.hh.ru/vacancy/14585280](http://spb.hh.ru/vacancy/14585280) 

 Почитайте про Erlang. Самое то. 

 Присмотритесь к Golang. Может есть смысл начать с devops?