Заранее прошу прошения за нубство и очередной тысячный вопрос(на свой лад) о многострадальном выборе пути новичка в WEB-разработке.
Разработчики(серверные и не только) сайтов, сервисов и других проектов во всемирной паутине, пожалуйста позвольте узнать ваше мнение о последних тенденциях в плане web-разработки, относительно PHP. Вопросы ниже.
1. Даст ли изучение PHP больше пользы, понимания работы WEBа и разработки в нем, чем к примеру, Django, Ruby? (Node.js, на сколько я понял, пока инструмент специфический).
2. Предпочитается ли PHP сегодня, и будет ли предпочтителен на будущее для разработок не мелких сайтов, а сложных проектов, учитывая его развитие(наверное)?
3. Что я, или многое ли, упущу в плане проф. развития, если не буду изучать PHP, а перейду сразу на другие серверные языки, а возможно и, - Основы программ.- основы С - JS - Динамические Django/Ruby -ASP .NET(С# -Go - далее? Не будет ли проблем с удаленной работой(фултайм) и муки совести, что возможно поддался общему малообоснованному негативному фону относительно PHP, и пропустил его?
Из-за отсутствия пока знаний и опыта хотелось бы выбрать более менее фундаментальный и в тот же момент востребованный путь в плане развития в современной разработке под WEB. Если конечно существует близкий к универсальному путь.
Конечно хочется понимать больше парадигм технологий и конструкций, но позже, все не освоить за раз, для меня по крайней мере. Но буду тянуться к этому.
Спасибо ребята за мнение кто откликнется. Лет мне за 30, меняю профессию, и было бы здорово эффективнее потратить время на освоение профессии и скорого начала работы.
UPD
Ребята Спасибо всем за комментарии и пояснения, очень помогли, внесли ясность в мои предыдущие мутные суждения. На основе ваших слов пошел читать на Тостере и внешние источники уже с другим подходом. И думаю необходимо вынести сложившиеся мысли.
Что касается PHP, понял что при его выборе, особенно как первого ЯП, необходим изначально правильный подход при работе с ним, стараясь на ранних этапах понять где он точно не помощник, его особенности, что позволит в будущем комфортно перерасти из мелких к созданию крупных проектов на нем, не став на этом этапе(круп. проет.) одним из ненавистников языка, из-за проявившихся сюрпризов при столкновении предыдущего багажа скиллов, или хуже того неправильного подхода, с high load.
Узнал о технологиях помогающих PHP создавать и держать нагруженные проекты(memcached, php-fpm, др). Но ведь наверное на этапе крупных проектов уже приходит понимание и интерес применить что-то другое, может современное, и возможно уже освоенное к этому времени. Уже проще с опытом навязать клиенту определенную технологию, архитектуру отличную от PHP и не только, которая более применима к ситуации.
Ясно стало одно, что не смотря на то что технологии в Web-разработке развились и продолжают развиваться, принеся когда то вездесущий JS, с его многочисленными современными фреймворками, появившиеся "новые" языки и подходы к хранению и обработке данных, главным для новичка остается начать понимать на практике смысл и суть того как все работает и устроено в Web-разработке, на каком либо одном более менее объемлющем, с компромиссом востребованности и доступности для новичка языке/стэке который рассчитан на создание как малых так и крупных проектов не сильно при этом "меняющийся" в процессе. - Для начала.
Вроде как теперь необходимо ответственно подойти к выбору этого самого первого ЯП/стэка. Но думаю что это не будет PHP, потому как способы позволяющие на нем создавать высоко нагруженные проекты, это скорее всего вынужденная необходимость старых проектов, нагрузка на которые со временем выросла. И сегодня PHP это хороший инструмент для небольших проектов/скриптов и другого чего я пока не знаю, в силу поверхностных знаний.
Логичным для себя все же посчитал "пробежаться" по основам железа и программирования через собственный подобранный список литературы(ниже), потому как ноль в Comp. Sc. что хоть минимально поможет держать в уме не один подход и чуть более широкий взгляд, не зависимо какой путь развития в Web будет выбран в ближайшее время. Ну и собственно найти и изучить один ЯП с ООП или современн. минимальный стэк технологий, на которых пишутся как малые так и крупные проекты. Что думаю даст не столь стрессовое развитие в начале, перед дальнейшим полным погружением в отрасль. В любом случае рад прояснению.
В процессе поглядывал еще и на Big Data с Enterprise, но это скорее недобрый знак.
Ну и список по основам, не обязательно, просто для полноты:
1. Э. Таненбаум(Архитектура комп.);
2. Ч. Петцольд(Код. Тайн. язык инф.);
3. С. Макконелл(Соверш. код);
4. Х. Абельсон/Д. Д. Сассман(SICP);
5. Б. У. Керниган/Д. М. Ритчи(Язык программирования Си);
6. В. Подбельский/С. Фомин(Программирование на языке Си)
Рад что нашел данный сервис, где можно не отстать от развития технологий, и где так быстро отвечают по всем темам. Спасибо еще раз за помощь.
Update Ограничив для себя примерно круг интересов - web и в последующем возможно финансы, др, взялся до корней изучать Python/django. Позже или параллельно JS конечно(от ситуации). И в будущем возможно - C#)
Библиотек у Python куча как оказалось, предоставляющих ему множества возможностей и др., чего раньше видимо не хватало и ограничивало его.
С php я бы себя ограничил не только в плане возможностей, но и столкнувшись с проблемами его использования в будущем, да и "время терять не хочется". С учетом того что есть основная работа(доход), есть смысл в изучении "других" технологий.
Все же у каждого наверное все индивидуально. Мне программирование, пока, "необходимо для личного" пользования, ориентировочно стремление к удаленке. Ну а возможность всегда сваять свой проект, проецируя на текущую или др. деятельности, и т.п. - это вообще здорово, если конечно случай представиться... Стараюсь конечно пока ограничиться какими либо реальными практичными примерами использования знаний в программировании(будущ).
Учителей я надеюсь всегда "найти" здесь и не только.. В выборе инструментария помогли советы опытных людей из комментариев и не только, о том для чего именно выбирается этот самый инструментарий и то что необходимо углубиться в изучение технологии. Спасибо!
UPDATE 7 мая: Задав однажды вопрос, получив множество разных полезных мнений, начав получать уже какой-то опыт, параллельно изучая долгосрочные и финансовые тенденции в IT(программирование), все же пришел к "основам" - Java или C#, помимо Python.
Осваиваю Java. Python отложил в сторону как дополнительный инструмент. Пусть и приходится с джавой мучиться в первое время, но все же фундамент для моей конкретной натуры. Кто-то и через PHP, JavaScript с Нодой сразу становится профессионалом Web, так как душа лежит ко всему модному и быстро меняющемуся))).
Я же все пока скатываюсь в "унылый" Enterprise, мотивация - деньги, навыки. Но, деньги и навыки для реализации конкретных дальнейших жизненных целей. В общем, четкая цель своеобразная, которая не позволяет появляться в моей голове мыслям "а зачем мне все это нужно", стереотипам и прочему подобному от лукавого про программирование))). Ну а дальше, возможно и жизни без этого уже не смогу себе представлять, уже затягивает, учитывая дальнейшие долгосрочные цели(каждый может придти к своим). Такой подход проверен на примерах из собственной жизни, по другому себе не умею прививать сильной и долгосрочной мотивации. Драйв и эксперименты это наверно еще до 30 лет))), мне сейчас пока не до них))). Хотя постоянно натыкаюсь на топики в сети, где взрослые люди с нереальным воодушевлением открывали для себя web-технологии и не важно с каких инструментов они начинали(php, базы данных, др.), уходя из своих предыдущих профессиональных сфер.
C# также в среднем "равноценен" Java по всем параметрам, говорят удобнее только в плющках, и перейти по необходимости можно будет в кратчайшие сроки, если только конечно понадобиться. Но Java, все же кажеться основее основ(плюшки потом). К тому же из нее вроде растет Scala(функциональное программирование).
Грызу материал по Java, практикую. Может получиться со временем напроситься в какой нибудь опенсорс, если из дома потяну конечно, деваться не куда если джуном не будут брать долгое время. Много советов встречаю не тратить время на создание своего первого учебного проекта/сайта, а сразу в опенсорс для более реального опыта. Хотя проект запилить более практичный - тоже интересно сильно. В текущем python-проекте пока больше подглядывал за Pytonистами(первоначальная самонадеянность), и многое оставалось за кадром о программировании. С Java должно все встать на свои места, пусть и с некоторою болью в начале.
P.S. В бизнес логику, Enterprise еще тянет по причине малого в нем участия html, js и т.п. Пока нет желания связываться. Хотя с noda все же видимо теснее стать придется, время покажет.
UPDATE МАЙ 2016: Вместимость этого поста не позволяет разместить здесь последнюю информацию о себе, о своем продвижении в Java. Потому добавил комментарий ниже, с пометкой "update 2016:" от 13 мая 2016 года, где вся информация.
И да, здесь я описал список книг выше. Но ментор по Java которого я нашел в процессе, сразу попросил откинуть 5 из 6, и оставить лишь Код, Петцольда, и добавить к ней Философию Java. Первая(и то опциоанально) для ознакомления с принципами работы компьютеров и кодированием, вторая непосредственно по Java. Остальные было сказано - лишний груз, который излишен, если есть желание стать разработчиком Java.
Прошу прощения что не сообщил об этом ранее, и кого-то мог своим дилетантством на тот момент привести к изучению излишней литературы, потере времени и тп. И так, новости в комментарии по постом.
Какие крупные проекты, какой high-load, какой memcached, какой Таненбаум? О чем вы вообще говорите? Вы хотя бы один простой блог сделали на PHP? Кто вас допустит-то до больших проектов?
PHP вам с головой хватит на ближайшие годы (если вообще не на всю карьеру). Да первый год вы просто будете разбираться в том, как вообще работает веб. Сделайте 10 блогов, 20 магазинов, пару SaaS-приложений, выучите самые продвинутые фреймворки, напишите свой, изучите архитектуры и дизайн паттерны... работы — непочатый край без всяких хай-лоадов. Чтобы пробежать марафон, сначала нужно научиться пробегать 1 километр.
Хватит готовиться, начните делать. Чтобы написать "<? echo 'Hello, World!'; ?>" не нужно изучать принципы работы процессора, не нужно изучать особенности работы C-компиляторов. Возьмите одну (ОДНУ!) книгу по последней версии PHP и сделайте хотя бы один сайт.
Jeiwan: Спасибо за наставление и ориентир в каком направление в целом эффективнее двигаться, очень ценно для меня. Особенно относительно того, что на любом распространенном и широком инструменте можно спокойно развиваться годы, не беспокоясь что его мгновенно сможет заменить что-то другое. Подтверждаете слова ребят из комментариев. Спасибо, дополнительно обнадежили.
Инструмент все же пока еще выбираю, исходя из некоторых критериев - собственно "серьезности" самого инструмента, широты его использования и перспектив.Чтобы устранить все сомнения в выборе технологии на пути, и во время, становления. Тем самым обеспечив себе фанатичный подход в освоении ЯП/стэк, в каждую свою свободную минуту, без отвлечения на постороннее. Все обусловлено возрастом(за 30), тем самым трата времени необходима более эффективная и относительно фундаментальная.
ЯП практически присмотрел, еще "по узнаваю" и по сравниваю, позже отпишу в посте вопроса в заключение темы. Конечно, это будет не единственный, но первый язык программирования, на который потрачу достаточное время. К тому же, часто наталкиваюсь на мнение из сети, что хорошо зная один язык/технологию(суть, принцип), другие осваиваются относительно быстро, и приходит понимание о программирование в целом.
Возможно моя ситуация не универсальная в целом, да и не смею претендовать. лишь понимаю и осознаю что нет времени на энтузиазм. Но это лишь мое представление о возрасте и программировании как о кардинальной смене деятельности в жизни. Возможно кто-то в схожей ситуации решается на другой путь в нем, что открывает более широкий взгляд изначально, и даже совершает некоторые "открытия" для себя, сообществ и не только. И возможно я просто бука. И ориентируясь лишь на свое видение, со временем пойму, да и на Тостере буду спрашивать уже о профессиональном.
Спасибо всем что не оставили без внимания, и предоставили информацию по широкому кругу, исходя из индивидуального опыта и мнения каждого.
Написано только что
Проект пока только уровня - Регион. Мое участие конечно минимально, Параллельно все равно приходиться штудировать базу, делать "бложик", не теряя времени, как советовали выше до вас) В общем, в любом случае дело сдвинулось, возможно и не идеально для начинающего.
1. Даст ли изучение PHP больше пользы, понимания работы WEBа и разработки в нем, чем к примеру, Django, Ruby?
Если ваша цель - понять принципы вэба в кратчайшие сроки - php вполне для этого ок, но только этого языка МАЛО, web имеет и frontend сторону. *Django - это того, не язык.
2. Предпочитается ли PHP сегодня, и будет ли предпочтителен на будущее для разработок не мелких сайтов, а сложных проектов, учитывая его развитие(наверное)?
Facebook, VKontakte - это маленькие проекты?))
3. Что я, или многое ли, упущу в плане проф. развития, если не буду изучать PHP, а перейду сразу на другие серверные языки, а возможно и, - Основы программ.- основы С - JS - Динамические Django/Ruby - далее?
Не мешайте в одну кучу компилируемый язык общего назначения (С), событийный скриптовый язык (JS), фреймворк (Django) и скриптовый язык (Ruby)). Они предназначены для разных задач.
Не будет ли проблем с удаленной работой(фултайм) и муки совести, что возможно поддался общему негативному фону относительно PHP, и пропустил его?
Все зависит от вас. Если вы станете отличным спецом RoR, или NodeJS, или Django - проблем с поиском работы не будет.
Дело в том, что хотя и php-шников много, хороших специалистов найти очень не просто. Банально на собеседовании на синьйора спрашиваешь: в каких ситуациях стоит использовать "AR, в каких Repository", или "какие негативные последствия могут быть при использовании FK в high load проекте", а в ответ тишина. Куча народу считает себя гуру JS, а когда спрашиваешь что-то, что не делает jQuery(библиотека) - полное непонимание.
Резюмируя выше сказанное: php-не центр всея web, это интсрумент и он подходит под вполне конкретные задачи, под кучу других задач он не подходит. Вы можете спокойно зарабатывать на хлеб с маслом в web разработке не зная при этом php. Вам всего то нужно стать хорошим специалистом своего дела.
Спасибо за ответы и пояснения. Картина стала яснее.
Да, скинул технологии в кучу, языки и фреймворки. Старался ужаться.
"Не мешайте в одну кучу компилируемый язык общего назначения (С), событийный скриптовый язык (JS), фреймворк (Django) и скриптовый язык (Ruby)). Они предназначены для разных задач"
В многих источниках советуют начать изучения мира программирования с основ, потому выбрал для себя литературу и некоторую последовательность, а в WEBe, как я понял, предпочтительно знать несколько технологий. Оттого и кажется что смешал не смешиваемое.
1. Э. Таненбаум(Архитектура комп.);
2. Ч. Петцольд(Код. Тайн. язык инф.);
3. С. Макконелл(Соверш. код);
4. Х. Абельсон/Д. Д. Сассман(SICP);
5. Б. У. Керниган/Д. М. Ритчи(Язык программирования Си);
6. В. Подбельский/С. Фомин(Программирование на языке Си)
Возможно это не лучший подход для WEBа? Столько мнений. Да и с заделом хотел что ли.
Для чисто WEB: самая основа основ это HTTP и принцыпы работы сети, HTML, CSS. Без этих технологий будь вы хоть гуру Erlang - путь в web будет закрыт.
На счет литературы - я бы на вашем месте начал с С, что бы иметь представление о том, каково оно в реальности, потом уже книги по архитектуре и конструированию.
index0h: вы правы о web-технологиях. По поводу последовательности С или архитектура, просто хотел вначале понять суть работы железок, и как на него ложиться программирование в целом.
AlbertUfa: задвиньте эту стопку книг в далекий-далекий ящик :) До этих книг ещё нужно дорасти. Найдите самую новую книгу по PHP (желательно на английском языке, так как материал новее и качественнее) и вперед: делать-делать-делать! От одной книги "для начинающих" вы сейчас получите больше пользы, чем от этой стопки.
В сфере веб-разработки всё очень быстро развивается. Пока вы будете эти книги читать, сменится не одно поколение хипстеров :)
Алексей Да все просто, для многих проблема решить следующую задачу: есть сайт БЕЗ jQuery, нужно С ПОМОЩЬЮ jQuery нажать на какую либо кнопку на этом сайте.
А я вот бы на вашем месте (смена профессии и тп) не стал бы отказываться от php. Почему вас сразу несет в highload? 90% проектов сети не хайлоад и не стоит зацикливаться на этом. Прочитав кучу правильных книжек вы не станете правильно писать, вот в чем суть, у вас будет такая каша в голове (а в таком возрасте очень тяжело себя будет заставить и часто будут опускаться руки), только практикой вы сможете выработать правильные навыки.
А вы думаете практику сразу где-то в хайлоад будете проходить? Сомневаюсь. До хайлоада должен быть целый "хайлоад" маленьких проектов, пхп вам позволит видеть минусы и плюсы, в лополнение оно простит вам ошибки вашей начальной "безграмотности". В пхп (как в прочим и других яп) есть прекрасный фреймворки (например yii, laravel) которые помогут вам понять патерны, архитектуру и научат более менее писать правильно (эти знания в принцие универсальны для всех яп).
и не нужно выбирать один язык, вам рано или поздно придется учить еще и еще, важно базу правильно себе заложить. Ну а дальше стоит все таки смотреть в асинхронную разработку (чтото типа nod.js)
Поймите что вы не сможете стать универсальным доктором который лечит только левый глаз, правый тоже надо будет лечить.
Ну и если нет готовой вакансии под которую вы затачиваетесь пхп отличный способ оттачивать свои знания на фрилансе (много и дешево) начние с него, поймайте азы потом как понравится питон, руби и тп
ps: если вдруг все таки не пхп, посмотрите на руби, но не забывайте про асинхронную разработку, очень понадобиться в дальнейшем. А вообще действовать надо маленькими шагами: почитал сделал, а не почитал-почитал-почитал. а потом сделал^3, иначе второй раз будете перечитывать
А как же Великая и ужасная (технология) ASP .NET? Почему нет в списке? ;-)
Не имеет значения, какой язык программирования будет освоен, главное сделать это хорошо, понять принципы работы. В последующем можно будет изучить любой другой язык или технологию, точнее придется изучать в основном синтаксис и некоторые особенности, но в целом все современные языки имеют больше общего, чем различий.
Я бы рекомендовал сделать акцент на ООП. PHP может быть объектно-ориентированным, но может и не быть, если лень или недостаточно знаний.
Если говорить об ASP .NET, то тут без ООП не обойтись. Хочешь не хочешь, придется работать с объектами/классами и прочими сопутствующими вещами.
ASP .NET позволяет программировать на Visual Basic .NET и C#. Изучив один из этих языков можно будет создавать приложения для Windows и Windows Phone, всякие библиотеки и компоненты. В общем, много чего можно будет делать.
Сложные и большие проекты делать в ASP .NET проще, чем на PHP (мне доводилось работать и с тем и другим). Раньше у PHP было преимущество в доступности и дешевизне. Сейчас такого преимущества нет. Технология .NET за поседение годы стала доступней. Сервера и хостинг под Windows по стоимости не уступает Linux. Основная среда разработки под .NET - Visual Studio потихоньку становится совсем бесплатной, былые ограничения постепенно уходят в историю, хотя даже с ограничениями многое можно реализовывать гораздо быстрее и проще.
Проще - это не значит, что все будет совсем просто. Придется приложить определенные усилия и потратить уйму времени на изучение. Но оно того стоит.
Спасибо за конкретику относительно ООП. Из-за поверхносных знаний не предполагал что php может быть разным(не о плохом коде).
Вы правы, я непростительно забыл вписать ASP .NET(С#), но он у меня крепко на уровне подсознания, как и др. достойные технологии))) и будет ожидать своего часа изучения. Спасибо за конкретику и пояснения из опыта, есть о чем подумать, к тому же в свете последних тенденций от Майкрософт. (впишу для других и в пост)
Александр Аксентьев: вот тоже думаю, пора уже требовать зарплату с Microsoft :)
Используют многие. Я когда-то активно использовал PHP, и даже было дело, с Perl работал, и у меня до сих пор остались старые авторские проекты, которые мне лень переделывать под .NET, но очень хочется :) Так вот, за последние годы проектов под ASP .NET стало заметно больше. Надобность в PHP со временем попросту отпала, сейчас я уже стал забывать этот язык.
Единственное что мне не нравится в .NET, это поощрение "лени" (обилие средств для визуальной разработки) и генерации низкокачественного автокода, который способен тормознуть даже мощный сервер. Но в тоже время, это позволяет достаточно быстро создавать и разворачивать сложные проекты, даже начинающим разработчикам, даже и не разработчикам, но и простым смертным :) Последнее иллюзорно обесценивает разработку, и понятно, что нравится это не может, мне в том числе. То что после такой разработки придется небольшой парк серверов содержать, а людям вроде меня выражаться нецензурно и переделывать все это безобразие – это уже мелочи (это касается создания больших проектов, с мелкими все проще оптимизировать и переделать при необходимости). Если делать все по-человечески, то можно получить неплохое соотношение качества, производительности и скорости решения задач. Так что при изучении .NET я бы рекомендовал делать все руками, и меньше использовать средства визуального проектирования.
Кстати, как .NET-разработчику мне частенько приходится сталкиваться с Node.js и Ruby, в малых дозах :)
Александр Аксентьев: по серверам, как минимум: однообразие и визуальность интерфейса (из коробки); достаточная совместимости разных версий ОС, с миграцией меньше возни (система ведь по сути одна, в отличие от nix-ов); проще сопровождать, клиент/заказчик это может делать самостоятельно. Одним словом, комфорт. Больше времени остается на всякие глупости :)
Для .NET - Windows роднее, это тоже вопрос комфорта. Эх, сколько я намучился с PHP под Windows :)
Алексей Немиро: Зачем на сервере интерфейс. Совместимость чего с разными версиями ОС? Не надо разрабатывать под виндой, тогда и мигрировать не придется и мучиться с PHP под win. Пускай вин сервер остается для офисов с локалкой и AD.
Александр Аксентьев: интерфейс для комфорта, базовых навыков общения с компьютером достаточно, чтобы поддерживать сервер под Windows :-) Разбраковывать и размещать проекты на PHP, как я говорил, лучше под *nix-ами, а для .NET - под Windows. Это вопрос комфорта, минимизации гемора.
И ничто не запрещает комбинировать (но не смешивать) технологии и максимально эффективно использовать сильные особенности каждой из них. Из Windows взять простоту и удобство, из Linux малое потребление ресурсов и производительность. Комбинируя, можно получить неплохой результат по цене, качеству и скорости реализации. Не вижу никаких причин ограничиваться в этом. Если у меня для какого-то проекта подобное будет целесообразно, то вполне можно реализовать. К слову, мысли использовать СУБД под *nix меня периодически посещают, но пока удается отбивать свободные байты у SQL Server :)
Алексей Немиро: Спасибо большое за практичные советы с пояснениями относительно разобраться в .NET "руками", и про Ruby с Node.js (что точно пригодятся). - Сэкономит время.
Александр Аксентьев: Вы, возможно, удивитесь, но не каждая компания может себе позволить Linux сервер)))) Это те самые компании, которые тратят большие деньги на продукты Microsoft, IBM, SAP, Oracle. Как web сервер windows ведет себя не плохо. Очень легко настраивается, управляется и контролируется. Отличная альтернатива Linux, особенно, когда Linux - непозволительная роскошь. А ASP.NET -замечательная платформа, ничем не уступающая другим технологиям.
Разумеется, применять Windows решения целесообразно только в крайних случаях (например, когда в компании есть лишние денежки; шутка).
PHP не советую. Мало проектов где используются фреймворки. PHP это в основном разработка в рамках какой нибудь CMS(в России в основном Битрикс), т.е. придется копаться в недрах CMS а это не самое приятное занятие и платят мало.
Если хочется программировать, то на мой взгляд лучше C#(ASP.NET MVC) или Java, или Python.
В случае с C# и Java работу найти очень легко.
С PHP тоже легко найти работу, но не факт, что она вам понравится.
Я например изучил PHP, но у нас в регионе в основном вакансии по Битрикс, пошел посмотреть что такое Битрикс, сейчас понял что не мое — учу Java, но деньги появились.
На мой взгляд самый главный недостаток PHP - возможность смешивать логику и представление. К сожалению многие программисты пользуются этим и получается некрасиво.
Самая большая разница в Вебе это не PHP - другой язык программирования, а front-end back-end. Так например большинство back-endщиков не любят верстать, большинство front-endов особо не интересуются базами данных.
Возможно вам больше понравится верстка и front-end, поэтому желательно сначала посмотреть что это такое, т.к. стать специалистом по фронт-энду можно гораздо быстрее.
Спасибо и вам за развернутый ответ основанный на опыте - очень важно. Начал понимать благодаря вам и другим откликнувшимся ребятам, что возможно логично не начинать c php из-за возможного риска неправильно начать им пользоваться, со всеми вытекающими последствиями.
По поводу клиент или сервер - больше интересен второй. Думаю придется шаблонизаторами пользоваться(верстка), в силу отсутствия большого интереса к верстке, и не хотелось бы терять время, занимаясь back-end.
Антон Тихомиров: Facebook - часто говорят что поддерживать большой проект на PHP сложно, жалеют о своём выборе, сделали свой движок PHP - hhvm , ВКонтакте - сделали свой движок PHP - kPHP, который переводит PHP в С++ не используют ООП - думаю итак понятно каково писать без ООП, ebay - Java
asd111: На самом деле у eBay на Java написан непосредственно магазин, все остальное - все-равно чистый PHP. Это да, у лицокниги тоже свой двиг для PHP (Hip-Hop PHP). Да, спорить не буду, PHP хорош, с юникодом уже давно работать умеет, собирают уже даже десктопные приложения на нем (!), однако много приходиться дописывать ручками. Практически каждый программер, который работает на нем больше 5 лет имеет свой Фреймворк для себя, или даже CMS для разработки проектов на нем. А остальные пользуются наработками их фирмЫ-работодателя, оставшиеся от прошлых программеров) Просто HP заточен именно для веб-разработки, особенно сейчас, когда вообще все технологии уходят в веб и облака - он особенно актуален. Да и что-то я вообще не видел сетевых проектов, написанных не на PHP, и даже ни одной CMS (хотя есть одна такая на Java, Моцарт вроде называется, но она и то лет пять как умерла), ни на плюсах, даже на Питоне... А ведь все возможности для этого есть, eBay же написали. Значит можно... Дак ведь нет... Просто PHP уж больно для этого хорош... Особенно начиная с пятого.
По поводу легко найти работу на .NET и Java это походу про Москву. В регионах небольших ничего вы не найдете, а если и есть то требуется опыт сеньора и выше. А вот по php куча работы как и вы и говорите. Я так понимаю в регионах нет востребованности в .NET только из за того что это дорого для бизнеса.
PHP идеален для начала:
1) легко найти практическое применение, т.к все, кроме крупных компаний (которые, в основном и ругают PHP) используют именно его. Туда, где ругают PHP без 3-5 летнего практического опыта не возьмут.
2) на PHP можно писать без ООП и зарабатывать, решая бизнес-задачи (ООП это жутко непонятная, граничащая с бредом, концепция пока нет реального опыта больших или командных проектов).
Судя по вакансиям этого года, то кроме PHP стоит учить node.js. Он почему-то всем нужен. Про Python с Ruby уже кричат не так сильно.
Из списка книг по Си стоит оставить только Кернигана и Ричи ибо классика и дает хорошее понимание, что и как происходит в этот мире.
Но в PHP почти ничего из этого не понадобится (кроме синтаксиса и того самого хорошего понимания), т.к. PHP изначально это высокоуровневая обертка над Си библиотеками, задуманная специально, чтобы Си не был нужен со своими сложностями.
p.s. Я проходил путь смены профессии 6 лет назад (тоже в 30) с менеджера по продажам.
Формально сменить профессию не сложно, имея резюме на hh, например, под названием "менеджер по продажам". Создаем его копию и называем "вебмастер", "HTML-верстальщик" или кем вы хотите стать. Нужно посмотреть, какие есть вакансии и назвать свое резюме так, как называют это работодатели.
Конечно в резюме надо добавить релевантного опыта и знаний (или просто ключевых слов). И HTML хорошее ключевое слово, HTML знает любой продавец, ибо это азбука.
Я стал вебмастером в одном рекламном агентстве, где делал кучи лендингов. Тогда это не было еще модно и лендинги были простыми. Но их было много и как-то само собой начал учиться PHP (купилась книжка и читалась по дороге с/на работу) для автоматизации и упрощения поддержки всего хозяйства.
Автоматизация и упрощение работы (себя и других) это то, что мне всегда нравилось. На всех предыдущих своих работах я делал что-то в этой сфере.
Будучи продавцом в розничном магазине компьютерной техники я писал программу (в MacroHTML на диалекте M), которая по данных продаж 1С Предприятия рассчитывала бонусы, которые наобещало руководство за продажу определенных товаров.
Потом, когда стал отвечать направление мобильных телефонов, написал программу для печати ценников (на Rapid-Q, диалекте Бейсика), потому что стандартные ценники из 1С не содержали нужную покупателям информацию о функциях аппаратов.
Доработал туже программу для печати ценников на основе приходных накладных в другой конторе, где 1С печатать ценники не умела вообще.
Позднее ту же программу доработал для печати бэджей для iCamp 2008 (это неконференция, может кто-то был и помнит) на 500+ участников.
На другой работе помог своему начальнику сделать брошюру для важного ... министра, написав программу, которая эту брошюру генерирует в HTML из дампа MySQL.
Суть...
я решал всякие конкретные бизнес-задачи с помощью программирования еще будучи продавцом, проявляя инициативу. Потому задачи на написание программ, понятно, продавцу никто поставить не мог. Не другие продавцы уж точно.
Можно было использовать любые технологии, всем было на них по фиг. Люди видели только конечный результат. В бизнесе мало кому интересно, на чем написан ваш код.
Надеюсь, не слишком подробно написал :)
Если на интересующие вас вопросы не ответил, задайте их явно.
Мне по работе приходится тесно контактировать с разработчиками разного профиля и языков. И знаете, что я понял? РНР хорош. Да, его недолюбливают за разные грехи, в основном - отсутствие типизации, наличие огромной базы плохого кода (и соответствующего контингента) и разные непривычные для тру-кодеров подходы к программированию. Но какая разница, если благодаря всему этому на нём надо сделать гораздо меньше телодвижений для решения повседневных насущных задач? Я писал и хайлоад на РНР, и всё отлично работало, особенно в совокупности с грамотно настроенным веб-сервером и грамотно написанными хранимками и запросами. Тут мы плавно переходим к сфере применимости. Очевидно, что сложная логика для БД должна быть написана в БД. Очевидно, что если вам нужна (действительно нужна) многопоточность, то РНР не подходит. Понятно, что это не работает в низкоуровневой разработке и других подобных вещах... В общем, следуйте элементарной логике и будет вам счастье.
Ну а что касается проф.развития... А что для вас проф. развитие? на хабре была отличная статья, прям вот любому программисту распечатать и повесить на стеночку. Проф.развитие - это умение быстро и качественно решать задачи бизнеса и получать за это хорошие деньги. А на РНР это всё делать легко, потому что большой спрос, и сам РНР простой и удобный.
На вашем месте, я начинал бы придумывать некий проект, нашел инвестора и нанял бы программиста)
В жизни вам это ничем сильно не поможет, если вы не сможете стать просто Асом. А работать в мелких проектах и получать свои 30-150 000р в мес. не ахти )
Спасибо за ваше мнение. Стать предпринимателем это конечно здорово...
Согласен, мало интересна перспектива работы на малых проектах. Но не ввязавшись в дело не пойму, стану асом или нет. Потому стараюсь заранее исключить области где я себя не смогу видеть через ближайшие 3-5 лет и более, в силу перспектив, возраста, др. Отсюда, рассматриваю более фундаментальные вещи, и становление Аасом.
Вам нужно определится , что вы хотите изучить и под что писать код. PHP это серверный ЯП, на нем можно хорошо зарабатывать но нужно быть профи как и в любом другом языке.
Если совершенно 0 в программировании, лучше не начинайте с пхп иначе будете его также обсирать как и толпы других людей. В пхп легкий порог входа, но столкнувшись однажды с серьезным проектом, вы поймете, что ваш код запутанный кривой, работает неверно, где именно работает не верно тоже не понять, испортите себе репутацию перед заказчиками, ваш код попадет сюда govnokod.ru, а вы станете очередным троллем ненавидящем ПХП.
И тут выресовывается основной минус, язык не строг и не припятствует написанию говнокода на нем. Для меня это не минус, сам язык достаточно хороший и для отведенных ему задач вполне подходит, но прежде чем его учить, я рекомендую ознакомится с архитектурным построением проектов, паттернами проектирования, анализом и рефакторингом кода, а лучше прежде изучить другой язык, например питон или Java или любой другой объектно-ориентированный яп.
Станислав: Спасибо. Вот это и стоит на второй стороне весов для меня, начать со "строгих" языков. Потому и рассматриваю путь от основ, Си и т.п.
Так с Python/Django можно начать учиться? Не столкнусь с тем, что подавляющее большинство работодателей будут с недоумением узнавать что я не имею представления о PHP, зная при этом Django, Ruby, Java или С#(одно из них)?
Возможно ли найти работу(зарабатывать) в web без PHP в начале, зная лишь один из вышеперечисленных языков/фреймворков? Ну а в свободное время освоить PHP. И потребуется ли он вообще тогда? Встречал что некоторые предпочли уйти от него познакомившись с другими технологиями.
AlbertUfa: Попробуйте питон или java для изучения. Начинать с Java это сложный путь, поэтому тут решайте сами) Большинству работодателей важно чтобы вы знали тот язык по которой вы пришли устраиваться на работу, а не PHP. Учить или нет в дальнейшем PHP будет зависеть от вас и ваших потребностей. PHP удобен для одиночки или небольшой команды, можно поднимать с применением различных фреймворков, достаточно в короткие сроки средние проекты, много различных cms и разных написанных скриптов на пхп, поэтому туда часто на доработку/разработку плагинов, требуются пхп разработчики. На самом деле если вы будете действительно профи в чем-то (даже если это будет не такой популярный язык напр: Erlang или Go), на хлеб с икрой (чёрной) вы заработаете. Посмотрите код на Java,Python,Ruby,C# да тот же PHP - Посмотрите синтаксис и куда душа больше ляжет, то и учите))
П.С: У меня есть знакомые которые начав с ПХП, сейчас работают и пишут красивый код и получают нормально, но как показывает статистика таких очень мало :)
Update (май 2016):
Всем привет. Хотел сообщить в посте о последних новостях о себе. Но вместимость поста/вопроса ограниченна 10000 знаков. Потому оставлю информацию здесь в комментариях.
Уже подзабыл что данный вопрос связан не только с PHP, но и говорил о Java. C тех пор я плотно занимаюсь освоением Java технологии. По ка еще не ходил на собеседования в своем городе(Уфа). Так как еще считаю незаконченным свое самообучение, но к чему уже близок относительно(делаю проекты), которое описываю на одном интернет ресурсе связанном с достижениями целей, по этой ссылке . Искал для поддержания само мотивации где бы выкладывать процесс самостоятельного обучения разработке на Java. Так и был выбран вышеотмеченный сервис, где я в течении нескольких месяцев описываю свой прогресс и все что связано с целью. Помимо этого подключил изучение английского. Одновременно конечно сложно в моем случае их достигать - английский и программирование, и я их осваиваю по очереди, если это так можно назвать. Здесь всего не описать - много будет. Не реклама сервиса, думал о ЖЖ. Но функционал другого вроде как показался более подходящим, на нем я и остановился. В общем по ссылке все что со мной произошло и происходит в процессе освоения Java.
Инструмент не имеет значения. Главное — уметь решать им задачи. Если бы на ассемблере можно было успешно создавать веб-приложения, то на нём бы их и создавали.
Свои плюсы и минусы есть и у ПХП, и у Питона, и у Руби, и у Go, и у вообще всего. В любом языке программирования можно найти людей, которые скажут, что этот язык полное говно, и даже приведут вполне весомые аргументы. Также можно найти людей, которые скажут, что это идеальный язык, и тоже приведут аргументы. Ну и что с того? Какой толк о того, что говорят другие?
Попробуйте всё, на что хватит времени, и выберете то, что ВАМ больше всего понравится. Ведь это именно ВАМ в будущем целыми днями писать на этом языке код. Если вы решили серьезно этим заниматься, то потратите на это не один год. А зачем тратить время на нелюбимую деятельность?
ПС Те, кто советуют ему начать "с основ", с C и Java, — вы сошли с ума :)
А вот мне пхп нравится. Легкий для понимания, низкий порог входа. Работу найти можно даже толковому джуну. Язык развивается, ооп поддерживает.
А на счет того, что многие любят сказать, что пхп говно, то на любом языке можно писать как хорошо так и плохо. У каждого есть свои скелеты в шкафу, которые стыдно, да и не нужно показывать.
Zveroboy8: Рад, и несколько завидую вашему интересу к технологии. В обновление к вопросу описал свои мысли относительно PHP как первого языка. Спасибо вам.
Немного не понимаю когда коллеги говорят о плохом коде. Вы же не собираетесь изобретать свой велосипед. Не, хотите плохого кода используйте фреймворки. Благо PHP- язык очень зрелый и на нем появилось очень много хороших фреймворков- Yii2, Symfony, Laravel. На мой взгляд удобнее чем даже Ruby on Rails (ROR). В ROR когда я его изучал не было Query Builder, не было Debug Toolbar.
Не обязательно связываться с Битриксом, заказчику зачастую все равно на чем будет работать его сайт, и Вы можете предложить ему свое решение, самое главное для заказчика, что бы это решало бизнес задачи и было удобно пользоваться.
Проблема как раз таки в том что Битрикс реализует большинство решений бизнеса и нанимать писать проект с нуля даже на фреймворке становиться невыгодно. В битрикс очень уш большое количество решений всевозможных. Пилить эти модули к фреймфорку голому- долго ,дорого, не целесообразно. Были претензии к битриксу что он медленный но вразумительных аргументов вспомнить не могу.