Заранее прошу прошения за нубство и очередной тысячный вопрос(на свой лад) о многострадальном выборе пути новичка в 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), тем самым трата времени необходима более эффективная и относительно фундаментальная.
ЯП практически присмотрел, еще "по узнаваю" и по сравниваю, позже отпишу в посте вопроса в заключение темы. Конечно, это будет не единственный, но первый язык программирования, на который потрачу достаточное время. К тому же, часто наталкиваюсь на мнение из сети, что хорошо зная один язык/технологию(суть, принцип), другие осваиваются относительно быстро, и приходит понимание о программирование в целом.
Возможно моя ситуация не универсальная в целом, да и не смею претендовать. лишь понимаю и осознаю что нет времени на энтузиазм. Но это лишь мое представление о возрасте и программировании как о кардинальной смене деятельности в жизни. Возможно кто-то в схожей ситуации решается на другой путь в нем, что открывает более широкий взгляд изначально, и даже совершает некоторые "открытия" для себя, сообществ и не только. И возможно я просто бука. И ориентируясь лишь на свое видение, со временем пойму, да и на Тостере буду спрашивать уже о профессиональном.
Спасибо всем что не оставили без внимания, и предоставили информацию по широкому кругу, исходя из индивидуального опыта и мнения каждого.
Написано только что
Проект пока только уровня - Регион. Мое участие конечно минимально, Параллельно все равно приходиться штудировать базу, делать "бложик", не теряя времени, как советовали выше до вас) В общем, в любом случае дело сдвинулось, возможно и не идеально для начинающего.
А как же Великая и ужасная (технология) 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 решения целесообразно только в крайних случаях (например, когда в компании есть лишние денежки; шутка).
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.