Верстка -> Frontend -> Full Stack developer — какой оптимальный путь развития?
Подскажите, пожалуйста, цепочку базовых технологий/знаний, без которых успешное развитие в Full Stack разработчика невозможно. И что вообще должен уметь Full Stack.
Верстку уже исчерпал для себя, всякие svg-анимации и подобные фичи интересуют, но не настолько, чтобы посвящать им все свое время. Использовать JS чисто для написания плагинов для фронтенда не особо интересует, потому и хочу развиваться в сторону бекенда.
С PHP не работал, знаю лишь примитивы. С JS работал, но пока недостаточно углубленно. Есть огромный интерес к таким вещам как BackboneJS, Angular и т.п., но в то же время интересны и PHP-фреймворки в духе Symphony. Но так как не было полноценного опыта работы с бекендом, немного теряюсь в том, за что хвататься.
П.с.: возможно вопрос слишком размытым получился, но надеюсь, его суть хотя бы понятна :). Заранее спасибо за ответы.
Максим Гатилин: не считаю свою верстку достаточно хорошей, чтобы показывать на всяких тостерах и стаковерфлоу.
И Вы, видимо, не так поняли слово "исчерпал" :) Я имел ввиду то, что чистая верстка уже не вдохновляет так как раньше.
что бы быть full stack вы должны понимать что происходит на каждом уровне вашего приложения. от кнопочек которые вы верстаете, до того как обрабатываются запросы на сервере, в плодь до взаимодействия с базой данных через все прослойки.
Вне зависимости от выбранного языка или фреймворка, принципы остаются примерно те же. С Symfony мы можем говорить о гексагональной архитектуре, луковой архитектуре, data mapper и т.д. С nodejs мы тоже можем обо всем этом говорить но там не особо развиты идеи data mapper (на данный момент). Приходится жить с active record или dbal. Ну и опять же управление зависимостями в js и в php по разному организованы, хотя суть (dependency inversion) остается той же.
Единственный совет дам - не распыляйтесь. Старайтесь не переключаться между фронтэндом и бэкэндом слишком часто, это уменьшит скорость обучения. Большая часть знаний в принципе спокойно мигрирует из одной сферы в другую, так что не переживайте.
Помимо серверных языков, нужно знать еще и SQL и логику работы с базами данных, соответственно, нужно выбрать и СУБД для изучения.
Помимо фреймворков на php, если Вы не владеете никаким серверным языком, можно поглядеть еще на другие технологии (кроме php + MySQL), например, Python + Django + PostgreSQL, C# + ASP.MVC + MSSQL и т.д.
На дворе 2015 год. Какое ещё php?
Можно сразу брать node.js - вот вам и бэкэнд. Да, JS нужно будет подтянуть со всех сторон(фронт и бэкэнд) и получится full-stack.
Вряд ли он умрет... Сам по себе он конечно не айс язык, но как платформа для сервер-сайда - очень даже! Да и экосистема вокруг него сильная: взять хотя бы прекрасные IDE, которые, кстати, могут работать с интерпретатором по сети (например vagrant), чем js ide похвастаться не могут (привет связочка webstorm-nodejs!), язык начинает более строго относится к типизации и аннотациям, да и движок становится всё лучше год от года, а это позволяет строить более крутые серверные системы... В общем-то язык и его окружение берут всё самое лучшее из других языков и продуктов (взгляните хотя бы на симфонию или доктрину, ничего не напоминает? :) Пусть это и субъективное мнение (моё), но работать в экосистеме php проще и удобней и не так долбануто, как в nodejs :)
Я не буду спорить о том, на сколько сильно nodejs подвинет остальные экосистемы на серверах, но это будет ощутимо и даже чувствуется уже сейчас... Но когда все поймут, что простота и удобство - важней - перейдут на Java ^_^
Владимир Балин: Без юмора. Я на полном серьезе. Охота "попробовать" бэкенд - узнать что как работает и как устроено. Выбрать мне PHP как серверный язык для лучшего понимания работы сервера или лучше смотреть в сторону Node.js?
Я бы вам советовал начать с PHP, потом, если захотите, перейдете на ноду, ведь работая на web - JS точно не забудешь :)
Говорят, что настоящие программисты пишут программы не на языке, а с применением языка. Отсюда можно сделать важный вывод: знать язык важно, но также не менее важно знать паттерны проектирования, думать объектно-ориентированно, книжечку мистера Фаулера далеко не убирать, да и вообще, стремиться практиковать все самое хорошее (это я про лучшие практики).
Если вы меня еще захотите спросить про путь, который надо проделать, что бы нормально вникнуть в разработку с применением PHP, то я могу посоветовать вам сначала изучить сам язык (естественно), а далее заняться symfony2. Ибо симфония всасывает все самое хорошее, то, о чем я выше говорил и это будет интересно, я вам гарантирую. А дальше у вас будет много чего учить, так как симфония - это набор компонент, а их, поверьте, крайне много...
svilkov87: а какая разница? PHP и так каждый раз умирает после выполнения ;) Кто-то будет и дальше использовать по инерции. Мыши кололись, но продолжали есть кактус.
Igor Belka: уже давно есть более адекватные технологии, чем php. Но суть не в этом. Суть в том, зачем брать что-то ещё, когда можно всё сделать на JS? Я вчера видел человека, который зачем-то встраивал в js-скрипт php код... Когда можно было всё сделать на js. Это уже php головного мозга какое-то.
bagerman: начнёте с php, потом придётся долго переучиваться от плохого.
ZoomLS: Я бы на вашем месте не советовал JS как язык для сервера... Нужно хорошо понимать что делаешь, что бы программировать на ноде. JS имеет крайне хреновую интроспекцию кода, в отличие от PHP и Java, поэтому, все ide надрываются, когда пытаются понять у какого метода откуда ноги растут :) поэтому, код получается не "мэйнтайнабл" и поддерживать его может тока создатель... Не спорю, есть хорошо написанные скрипты, где все понятно, но когда он попадает в мешанину других библиотек и скриптов, то это перестает иметь значение...
artemt: Вот для фронта только JS, для сервера - лучше с JS не начинать (мое субъективное мнение основанное на опыте)... Поэтому и говорю, что на сервере лучше что-то, на чем можно написать ЛЕГКО ПОНЯТНЫЕ программы ^_^ конечно, на ноде можно что угодно написать, но думаю со мной все согласны, что JS - не очень-та и простой, когда надо разбираться в чужом коде, чего не сказать про PHP (и это я говорю про хорошо написанный код, понятно, что набыдлокодить можно на любом языке)
Тогда не надо говорить про фуллстек, вот я к чему. А сказать, я специализируюсь, на бэкенд. Обе стороны потребуют со временем глубокого изучения, пусть в каких-то рамках. И JavaScript всё-равно прокачивать придётся.
Вам нужен ментор, можете мне написать.
Хочу развиваться в торону бекенда, но хочу Backbone/Angular/React ? Тут надо, конечно, определиться, и насчет ваших представлений о том, чем занимается fullstack.
P.S. Спрос на фуллстек резко возрастает, когда кризис, и надо очень жестко экономить на зарплатах)
Богдан Духевич: https://www.google.com.ua/search?q=fullstack&gws_rd=cr,ssl&ei=44fxVbj2FabqyQO-1biIAw
Человеку, задающему вопросы, ответы на которые находятся в Google менее чем за 5 минут - нечего делать в программировании. В любой компании долго таких "пициалистов", которые не способны быстро и самостоятельно искать ответы на глупые вопросы, долго не терпят
palchik: тут вопрос не чем занимается fullstack а чем занимается fullstack по версии Елизавета Борисова . Мне если честно тоже интересно узнать.
@Elizavetta
Я всегда был против курсов, ибо... ну как бы они бесполезны, это при мерно то же что и читать книжки по матиации. Хочется делать и бэкэнд и фронтэнд - делайте.
Так же есть сомнения в том что вы можете предложить автору вопроса.
Сергей Протько: Богдан Духевич: речь не о моем мнении, а о мнении работодателя, который выкладывает вакансию fullstack. В среднем подразумевается именно экономия. А по мнению Елизаветы Борисовой fullstack в рамках одного проекта не нужен.
Сергей Протько: какие вопросы по поводу обучения? В чем сомнения? Это не курсы от компании, которая занимается только курсами, это просто менторство по разработке, и просто информация о требованиях компаний.
Fullstack же не явление, созданное рынком. Это то, куда развивается сама веб-разработка, хоть и не все с этим согласны.
Мне не интересны требования компаний, движение в эту сторону интересует чисто в качестве самозравития и самореализации.
Есть Freelance Fullstack и Corporate Fullstack. Последний — как раз явление, созданное рынком в стремлении экономить на зарплатах, и заниматься им не рекомендуется.
Есть Freelance Fullstack и Corporate Fullstack. Последний — как раз явление, созданное рынком в стремлении экономить на зарплатах, и заниматься им не рекомендуется.
o_O в чем их разница и почему второе не рекомендуется?
Freelance Fullstack — возникает из необходимости оперативно решать небольшие задачи мелкого и среднего бизнеса, например создание сайта с каталогом продукции.
Corporate Fullstack — появляется, когда в компании увольняются/сокращаются сотрудники, а их обязанности перераспределяются на коллег.
Я занимаюсь последним. На данный момент в мои обязанности входит SQL разработка (включая некоторую экзотику как SQL Reporting Services), бэкенд (C#, JScript, Entity Framework, XML/XSLT), фронтенд (ванила JavaScript, jQuery, ExtJS, вёрстка HTTL/CSS). Впереди маячат Node.js и Angular.
Не рекомендуется заниматься, потому что сложно поддерживать компетенции на высоком уровне. Я сейчас не уверен, что сходу пройду собеседование на должность ведущего программиста C# (основной профессиональный профиль). Но усиленно работаю над этим :)