Я за свою жизнь привык делать всю работу сам и ни на кого не полагаться. Сам первый раз устанавливал винду, сам изучал все нюансы её настройки, программы и проч.
Сейчас вот решил подучить для собственных нужд PHP, но по ходу дела понял, что вполне мог бы работать web-программистом.
Первоначально конечно поставил Open-Server и все скрипты тестировал на нём (Apache+MySQL). Однако я никогда не любил сборки, и потому решил, что хорошо бы самостоятельно поставить Apache, потом на него PHP, ну и MySQL тоже установить standalone.
С MySQL проблем не возникло. Но вот с Apache возникла куча вопросов. В поисках мануала по установке наткнулся на статью на Хабре, где человек подробно описал процесс установки всего перечисленного на Windows 8. Самое интересное, что пост бешено заминусовали с криками, что всем этим должен заниматься не программист, а сисадмин, и вообще программисту лезть в серверные дела негоже.
Вот я теперь думаю - так ли это? Но как можно писать серверные скрипты, когда не знаешь принципа работы сервера, и что где у него лежит, откуда он настройки подхватывает и т. д.? А ведь разобраться в этом, не поставив его с нуля, полностью невозможно.
Так что назревает вопрос. Должен ли тру веб-программист, бэк-эндщик (PHP, ASP.NET, Node.js - неважно) уметь следующее:
1. Компилировать исходный код пакетов - например, Апача того же. Честно признаюсь - 10 лет за компом, а что с исходниками делать - не знаю. Может быть стоит научиться?
2. Поднимать сервер MySQL, Apache, nginx, настраивать их, ставить модули.
3. Уметь ставить и работать под ОС Linux. Сам всё еще сижу на винде, так как в принципе работать пока можно, а на изучение Unix уйдут не одни сутки.
Обязан ли я всё это уметь, если действительно захочу стать специалистом?
Посторонним В.: А сколько времени надо чтобы поднять L.A.M.P. с нуля? по моим прикидкам можно за выходные уложиться. Сам пробовал, правда давно очень. =) Зато потом знать будете с какой стороны к этому хозяйству хоть подходить надо.
с одной стороны, чем шире кругозор, тем лучше. с другой стороны, в сутках 24 часа + знания устаревают быстро. поэтому ответ такой: развиваемся максимально в том направлении, которое в ближайшее время имеет практическое применение, а в свободное время (которого почти не должно быть) изучаем нечто принципиально иное для разминки мозга и свежих идей в своей области.
P.S. вот пример для размышления: человечество стонет от нищеты, болезней, неграмотности, а мировой бюджет игровой комп. индустрии сопоставим с суммарными расходами на медицину, образование, космос. аналогично и мы в рамках своей жизни
В целом стратегия правильная, да. Но в данном случае возникают сомнения. С одной стороны всё вышеперечисленное мне нужно знать для "душевного спокойствия" и уверенность, с другой стороны я сомневаюсь, стоит ли оно потраченного времени.
Посторонним В.: это "русский" бес (так лично я называю такое состояние). где-то у кого из психологов читал, что если есть выбор из двух вариантов, то какой бы вариант не выбрали, начинаются сомнения (всегда!) в пользу второго варианта. выбираем второй вариант, начинается нервозность с первым. самое главное: эти сомнения отнимают энергию, батарейка садится - и в итоге вообще ничего не сделано (если в запой не ушли). не зря у самураев было правило: принимать решение в течение 7 вдохов - и дальше не сомневаться.
Владимир Боруткин: если вы не заметили, вопрос был не о том как, а о том есть ли смысл заниматься этим глубже, чем умение повторить по мануалам из интернета.
Должен ли тру веб-программист, бэк-эндщик (PHP, ASP.NET, Node.js - неважно) уметь следующее:
Моё имхо.
0. Уметь сносить винду к чертовой матери и устанавливать Linux
1. Умение установки чего-либо из исходников необязательно. Все, что нужно, есть в репозиториях.
2. Этот пункт обязателен. Добавьте сюда PostgreSQL и OpenSSH. Устанавливать и настраивать вы все это обязаны уметь.
3. См. пункт 0.
Мне кажется, что веб-программист (как и любой другой) должен иметь в запасе парочку других ЯП.
Например, PHP'ку неплохо бы уметь писать hello world на C++ / Java / .NET.
За C++ автоматом потянутся знания о компиляции, системах сборки и т.д.
За Java потянутся знания о серверах приложений (tomcat, wildfly).
Эти знания фундаментальные. Написав свой велосипед на плюсах (например веб-сервер для показа баннеров), вы будете лучше понимать PHP и средства оптимизации / архитектуры и т.д.
Java вас научит ООП, аннотациям и прочему "сахару".
От этих знаний будет легко перейти и к администрированию Linux'а и к пониманию внутренностей Apache Http (например, работа с неблокирующими сокетами).
Ну а вообще, если говорить о Apache Http, то у PHP есть функционал, предоставляемый HTTP сервером - это точно нужно знать.
И да, по моим наблюдениям на рынке востребованы два типа специалистов:
1. Умеет все и сразу. Сайт с нуля / на CMS, систему учета на Qt, сервер поднять.
2. Знает узкую область и ничего больше. Но знает свою область на 6 с плюсом. Например, проектирует БД Oracle.
Естественно, никто не запрещает слишком много знать. Вопрос, скорее, в позиционировании и целях разработчика. Кто-то себя позиционирует как IT-специалиста, а кто-то как PL/SQL-программиста. И у того и у другого есть будущее. Для первого - CTO, для второго - инженер БД. А вот удел абстрактного "веб-мастера" - это интернет-магазин среднего качества на популярной CMS.
devpreview: да, это всё замечательно, но у меня на один php пока ушло четыре месяца, и еще столько же нужно чтоб иметь право называть себя начмнающим разрабом. А вы еще три языка предлагаете выучи
Туралъ: php исполняется на сервере и поэтому напрямую к "веб" не относится, а яваскрипт - это единственный язык, который выполняется на всех платформах и браузерах - на клиенте.
использовать не принципиально только если планируется писать исключительно статичные страницы.
Так что назревает вопрос. Должен ли тру веб-программист, бэк-эндщик (PHP, ASP.NET, Node.js - неважно) уметь следующее:
1. Компилировать исходный код пакетов - например, Апача того же. Честно признаюсь - 10 лет за компом, а что с исходниками делать - не знаю. Может быть стоит научиться?
2. Поднимать сервер MySQL, Apache, nginx, настраивать их, ставить модули.
3. Уметь ставить и работать под ОС Linux. Сам всё еще сижу на винде, так как в принципе работать пока можно, а на изучение Unix уйдут не одни сутки.
нет. это работа для системного администратора.
на продакшене вам никто ничего делать не позволит делать самому.
На сколько знаю, во фрилансе не редко заказчики хотят чтобы им на VPS, или ещё где, сам веб-разработчик поднял сайтик и всё работало. Никто не захочет отдельно нанимать системных админитраторов для небольших проектов.
1. Компилировать исходный код пакетов - например, Апача того же. Честно признаюсь - 10 лет за компом, а что с исходниками делать - не знаю. Может быть стоит научиться?
2. Поднимать сервер MySQL, Apache, nginx, настраивать их, ставить модули.
3. Уметь ставить и работать под ОС Linux. Сам всё еще сижу на винде, так как в принципе работать пока можно, а на изучение Unix уйдут не одни сутки.
Если работа не в компании, а дома на удалёнке, то:
Нет.
Да.
Да. Вообще ставить такое ПО на винду - если время девать некуда, а также из мазохизма.
Главное уметь адекватно оценивать свои возможности и отвечать за свои слова («сказал-сделал»). А всё остальное - тонкости.
Если есть желание стать веб-программистом, то нет смысла начинать с изучения работы сис. админа.
Нужно начинать как уже писали выше с основ: HTML5, CSS3, JavaScript.
Если интересен back-end, то читай офф. доки на php.net например.
А на счёт установки и настройки софта для веб-сервера под Windows - это не имеет смысла. Все (нормальные) веб-сервера крутятся под *nix (в основном на FreeBSD, CentOS и Debian). Под Windows сборка XAMPP не плоха.
По мне как все зависит от самого. Если самому интересно, то бери, учись и ставь. Т.е. нету такого стандарта что веб программист не должен заниматься этим. И наверное если ты это будешь уметь, то это будет только плюсом. И для начало просто поставь Ubuntu(Linux) и глянь его.