Meet speakers from Tinder, IBM, Siemens, Indeed and other QA Rockstar’s on …Testing Stage, Save $30 till 28/02
×Закрыть

Направления развития Backend разработчика

Коллеги, есть вопрос!
Достиг определенного уровня в изучении Backend разработки. PHP в частности. Собственно устроился на работу, делаю проекты. В целом получается. Есть понимание MVC, работы с базами и фронтом. Сайт самостоятельно смогу сделать, начиная от верстки (если не очень сложная). Углубляюсь в собственно программирование ООП, шаблоны. Копаюсь в линуксе и NGINX. В связи с этим и возникает вопрос, на что в дальнейшем обратить внимание, дабы быть более востребованным. Что изучать? Это понимание работы сервера? CGI скрипты? Более продвинутые базы? Вопрос не касается непосредственно языков программирования.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Всем спасибо за советы! Скажу по поводу языков программирования. Прошу ни чем не кидаться. Считаю что ЯП, в целом, все одинаковые. Главное знать как решить тот или другой вопрос. Что касается как это практически реализовать в том или ином ЯП с его ньюансами, есть гугл.

Бизнес, чтобы он там не говорил, на самом деле интересуют только следующие вопросы:
1. Сможете ли вы достойно принять большой объем трафика?
2. Сможете ли вы обеспечить сохранность данных и оперативность их изменения/доступа к ним?
3. Выживет ли ваше приложение дальше, если вы внезапно исчезнете (уволитесь, уедете и т.п.)?
4. Сможете ли вы ответить положительно на все предыдущие вопросы через год?

Третий и четвертый вопрос довольно сложные и требуют проверки вашей квалификации опытным специалистом, а вот на первые два ответить просто.

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

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

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

По базам данных кстати я бы не советовал сильно заморачиваться. Разберитесь достаточно хорошо с одной реляционной (PostgreSQL если вам интересно разбираться в тонких настройках и нужны разные специфические вещи или какую-нибудь версию MySQL, если нет). Более продвинутые базы зачастую заточены под определенные бизнес-потребности и характеризуются гордым статусом «beta» или даже «alpha», поэтому учить их заранее особого смысла нет, разве что поверхностно. Когда придет время, вы сами поймете, что нужно вашему бизнесу и тогда уже более глубоко и предметно разберетесь в вопросе.

Удачи:)

Самый востребованный вид деятельности — использовать внешние данные (предоставляемые различными внешними сервисами). Думается мне, полезно разбираться во всевозможных видах API, через которые можно «дружить» системы друг с другом. Это значит понимать архитекутуры от старой доброй архитектуры request/response реализованной во многих технологиях, до новомодных стилей вроде RESTful сервисов.

новомодных стилей вроде RESTful сервисов
Очень новомодная, аж с 2000-го года

Прошу не обижаться, но в 2000-ном вы еще в школу ходили, а в почете тогда были разве что CORBA и RPC :D

Я так понимаю вы википедию подчитали? :) ru.wikipedia.org/wiki/REST Так прочитите хотя бы целиком :) В 2000 термин только ввели. Подняли гай вокруг REST и начали более или менее применять все это добро в повседневной разработке только в последние 5-7 лет где-то. Эх, молодежь... :)

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

Подняли гай вокруг REST и начали более или менее применять все это добро в повседневной разработке только в последние 5-7 лет где-то

У вас в раиссе может и ввели REST в 2015 году
В остальных странах это давно используется, впрочем у вас так не только с REST

я думаю нада освоить еще пару концепций типа РЕСТ апи, джаваскипт/ажакс, жквори, микросервисы и копнуть в сторону паттернов и дизайна корпоративных приложений. На самом пхп сайты по прежнему есть но они очень сильно обрастают ажаксом, джквори и т.д.

PHP в частности
если хочется копать в сторону пхп, ьто я бы посоветовал наверное Laravel либо Yii + какой-нить микрофреймворк (типа Slim, Silex, и т.п.). Это если выбран пхп.
на что в дальнейшем обратить внимание, дабы быть более востребованным
думаю на функциональные языки типа Elm’а или Clojure/ClojureScript (но это скорее больше в придачу к основному языку — пхп, питону или что-там выбереш)
Углубляюсь в собственно программирование ООП, шаблоны.
думаю, что все таки стоит изучать и функциональный подход. Правда для этого пхп плохо подходит наверное.
Это понимание работы сервера?
думаю без этого для профессионального программирования под веб никак
CGI скрипты?
не знаю, насколько это актуально сейчас. Это наверное больше для перла было.
Более продвинутые базы?
Из баз данных наверное стоит учить PostgreSQL (в связке с PHP), да и с другим языком тоже PostgreSQL вполне пойдет.
Ну и монгу/редис как наиболее популярные NoSQL СУБД.
Из баз данных наверное стоит учить PostgreSQL (в связке с PHP), да и с другим языком тоже PostgreSQL вполне пойдет.

PostgreSQL + plv8 = Можно крутитить «фантастические» штуки такназываемые СУБД фреймворки.
Или же PostgreSql + PostGis — тоже жесткая штука. Mysql рядом не стоит...

Чувак на PHP пишет, а вы сходу баззвордами забросали: ML, Big data, FP, бросай пхп.. серьезно?)

Что мешает ему выдумать порох непромокаемый сменить язык?

По себе скажу. По приезду в Украину, начинал я с джуна PHP (до этого у меня была промышленная электроника и Delphi (это такой старый ЯП)). Дошел до сеньера во фрилансе. Тимлидил маленькую команду. Но сейчас понял что PHP исчерпал для меня свой ресурс, можно выучить еще какой нить фрейм, но это не приблизит меня к вычислительной инженирии. Хочется какойто инженирии.
PHP изначально не предназначен для «серьезных» проектов с точки зрении науки и инженерии .

Задрачиваю сейчас С++. machine learning, ANN, CNN. Но смотрю какие требования для «мидлов», и понимаю что мне C++(мой любимый язык) светит только в моих личных стартапах.

И еще я понял что скорее всего будет так:
JAVA фриланс — для заработка на хлеб.
C++ - чтобы душа радовалась :)

Задрачиваю сейчас С++. machine learning

Для последнего же совсем необязательно C++. По-моему, для этого направления Python (scikit-learn) и Java (Mahout, SparkML) даже более в ходу, чем «плюсы»

Да. ML фреймворки в основном написаны на Python. Но например TensorFlow он отчасти написан на С. Отчасти на питоне. А OpenCV полностью на С++.

А OpenCV полностью на С++

что не мешает ему иметь биндинги для Питона )

Большинство людей в ML не пишут новые OpenCV или TensorFlow, а используют готовые библиотеки для решения прикладных задач. А для использования OpenCV или TensorFlow знать C++ особо и не нужно.

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

А, іще: найбільша помилка, яку можна зробити, це обмежитися одним фреймворком/стеком технологій. Drupal Developer, Symfony Senior, Laravel Engineer, Angular Architect, Ruby on Rails Guru. Це може дати плюшки на короткій дистанції, але рано чи пізно ваш фреймворк загнеться і ваші знання тонкощів будуть потрібні виключно на легасі проектах, і то виключно до того моменту, як все перепишуть з нуля.

В ідеалі взагалі не обмежуватися навіть мовою програмування, а радше зосереджуватися на техніках і загальних підходах, які однакові всюди, від джаваскрипта до ерлангу. Але це вже, звісно, трохи важче.

У вашого підходу є й інший бік — пробігтися по «всьому» і бути не вище мідла у всьому цьому.

Знаю по собі, вирішив що таки треба вибрати щось «своє», щоб бути там сеньйором, а далі вже по ситуції/бажанню дивитись...

Кожен тут буде топити за свій напрям. Правда ж у тому, що всі вони практично однакові і по грошах, починаючи з певного етапу, не відрізняються. Тут радше треба дивитися, що справді пре.

Дістав пих, хочеться чогось швидшого — свіч на Го, Пітон або Ноду. Хочеться серйозніших проектів — тоді ентерпрайз в стилі симфоні і ко. Як дуже припече — свіч на джаву і занурення в хардкорний ентерпрайз.

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

Якщо прога дістала в принципі — свіч в менеджмент. Якщо дістав легасі код — хард дайв в стартап. Словом, пофіг чим займатися, головне щоб перло.

Ще є варіант поставити собі за ціль роботу в ААА+ компанії: Гугл, Фейсбук, Амазон. Подивитися, що вони хочуть, що питають на співбесідах, і копати в тому напрямку. Ці знання точно не завадять: якщо щось юзають монстри — значить колись пригодиться і вам :)

З.І. А всі ті патерни, шаблони, вивчені назубок рівні мережі і інший треш потрібні виключно до інтерв’ю. Якщо будете користуватися — запам’ятаєте і так. Не будете — ну і нафіг треба :)

Ооо! Почалось — кожен хвалить своє болото =). Вам краще так не казати

Вопрос не касается непосредственно языков программирования.

Як це ви собі уявляєте? Очікуєте на ДОУ експертних порад «яка парадигма бекенд-програмування краща»?

Таки мова програмування має значення. Хочете знати про перспективні тренди — вивчайте ринок праці, причому не завадить проглянути і на США, і на Європу.

PHP для синхронных задач. Выбери что-то для асинхронных, какую-либо очередь и решение для воркера. Лично мой выбор RabbitMQ и Node.js

Да, про ноду думал.

Для асинхронных в php можно попробовать реакт, который reactphp.org

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

1) Код сырой
2) Комьюнити не развивает проект github.com/...react/graphs/contributors
3) Затраты на железо в разы больше чем у более легковесных решений

Никита, сорри за тупой вопрос, а существует ли возможность самостоятельно прокачать хайлоад ?)
RabbitMQ Node.js это конечно хорошо, но что делать после того как прочитал мануалы и написал первые хэллоуворды ? Хочется вкатиться в эту среду, но не знаю возможно ли начать самостоятельно. Как-то эмулировать нагрузку с помощью нагрузочных тулзов или создавать таблицы в базе со 100500 миллионов записей и делать выборки, или же это возможно только на реальных проектах ? Или где найти ментора по этому делу ?)

Привет, Максим.
Во-первых, хайлоад это архитектурные и софтверные решения задач в которых с нагрузкой не справляется железо. Во-вторых, бизнес хочет сотрудников и с практическим опытом, и теоритеческой подготовкой. Теоричетскую подготовку вы почем проходили? Я обычно рекомендую http://highload.guide и www.youtube.com/.../UCd9I8ZkgoR1d7GeSj_wi_LQ
В третьих, в my.ciklum вы легко найдете мой скайп. Можете обращаться за советами напрямую.

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

Big Data, Cloud, Machine Learning или старые говно-проекты но за кучу денег.
Но все же для начала было бы неплохо определится куда хотите попасть, например найти продвинутую вакансию и прокачать те навыки, которых не хватает. Как можно углубляться в ООП не представляю, простите ))

Не стоит углубляться в ООП, эта парадигма имеет фкндаментальные проблемы и медленно но уверенно теряет популярность.
Не стоит углубляться в PHP (почему? вы еще спрашиваете почему?)
Учите ФП

PHP для старта самое то. В дальнейшем посмотрим.

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

Спасибо. Занятная книженция...

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