Что должен уметь веб-программист?
===================================

 Я за свою жизнь привык делать всю работу сам и ни на кого не полагаться. Сам первый раз устанавливал винду, сам изучал все нюансы её настройки, программы и проч.  

Сейчас вот решил подучить для собственных нужд 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 уйдут не одни сутки.  
  

Обязан ли я всё это уметь, если действительно захочу стать специалистом? 

 с одной стороны, чем шире кругозор, тем лучше. с другой стороны, в сутках 24 часа + знания устаревают быстро. поэтому ответ такой: развиваемся максимально в том направлении, которое в ближайшее время имеет практическое применение, а в свободное время (которого почти не должно быть) изучаем нечто принципиально иное для разминки мозга и свежих идей в своей области.  

P.S. вот пример для размышления: человечество стонет от нищеты, болезней, неграмотности, а мировой бюджет **игровой** комп. индустрии сопоставим с суммарными расходами на медицину, образование, космос. аналогично и мы в рамках своей жизни 

 Гуглить 

>  Должен ли тру веб-программист, бэк-эндщик (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 сервером - это точно нужно знать. 

 знать  
* HTTP
* HTML
* CSS
* Javascipt

  

остальное в зависимости от заданий, языка и используемого стека технологий 

> Так что назревает вопрос. Должен ли тру веб-программист, бэк-эндщик (PHP, ASP.NET, Node.js - неважно) уметь следующее:  
>   
> 
> 1. Компилировать исходный код пакетов - например, Апача того же. Честно признаюсь - 10 лет за компом, а что с исходниками делать - не знаю. Может быть стоит научиться?  
> 
> 2. Поднимать сервер MySQL, Apache, nginx, настраивать их, ставить модули.  
> 
> 3. Уметь ставить и работать под ОС Linux. Сам всё еще сижу на винде, так как в принципе работать пока можно, а на изучение Unix уйдут не одни сутки.  
> 

  

нет. это работа для системного администратора.  

на продакшене вам никто ничего делать не позволит делать самому. 

>   
> 
> 1. Компилировать исходный код пакетов - например, Апача того же. Честно признаюсь - 10 лет за компом, а что с исходниками делать - не знаю. Может быть стоит научиться?  
> 
> 2. Поднимать сервер MySQL, Apache, nginx, настраивать их, ставить модули.  
> 
> 3. Уметь ставить и работать под ОС Linux. Сам всё еще сижу на винде, так как в принципе работать пока можно, а на изучение Unix уйдут не одни сутки.  
> 

  

Если работа не в компании, а дома на удалёнке, то:  
1. Нет.
2. Да.
3. Да. Вообще ставить такое ПО на винду - если время девать некуда, а также из мазохизма.

 

 Я думаю что нужно начинать с математики. Потом SICP. 

 Главное уметь адекватно оценивать свои возможности и отвечать за свои слова («сказал-сделал»). А всё остальное - тонкости.  

Если есть желание стать веб-программистом, то нет смысла начинать с изучения работы сис. админа.  

Если интересен back-end, то читай офф. доки на php.net например.  

А на счёт установки и настройки софта для веб-сервера под Windows - это не имеет смысла. Все (нормальные) веб-сервера крутятся под *nix (в основном на FreeBSD, CentOS и Debian). Под Windows сборка XAMPP не плоха. 

 По мне как все зависит от самого. Если самому интересно, то бери, учись и ставь. Т.е. нету такого стандарта что веб программист не должен заниматься этим. И наверное если ты это будешь уметь, то это будет только плюсом. И для начало просто поставь Ubuntu(Linux) и глянь его. 

 Все зависит от условий. Лучше - иметь опыт заранее.