В чём проблема с PHP

Почему устойчиво хранится и передаётся ироничное отношение к PHP и PHP-разработчикам? Почему существует шутка “В своём резюме вы указали знание PHP, вам не стыдно?”? Язык-то популярный. И на нём пишут в топовых компаниях (Facebook вообще упорот на PHP).
До моих любимых попунктных утверждений немного истории. PHP появился в 1995 году. Языком программирования не являлся даже по мнению автора (гуглите интервью Лердорфа, их вообще любопытно почитать) — это скриптовый язык шаблонов. Чем дальше от вебовых задач применялся, тем было хуже (и снова Лердорф: “As you move more towards the back end, PHP usefulness starts to decrease”). Главная задача PHP — облегчать динамическое создание web-страниц. Всё. Именно этим PHP жил много-много лет. В привычном виде язык стабилизировался в виде PHP5 и на десять лет замер. В PHP6 не осилили Юникод. Наконец, в 2015 вышел PHP7. Вот в рассуждениях и размышлениях следует учитывать, что культурная гиря в IT/CS этим языком заработана парой десятилетий косяков, а не тем языком, который видите сейчас.

Во-первых, PHP со старта не для программирования. Утилитарный шаблонный язык для конкретных задач. Он не был предназначен для написания чего-либо, что отличается от “фигакни <ul></ul> по массиву, что выгребли из базы” (вот вам ещё интервью за 2013 (!) год). Всё дальнейшее развитие PHP заключалось в попытках выбраться из этой ямы (из похожей выкарабкивается JavaScript).
Во-вторых, слишком популярен. Взрывной рост интернетов привёл к взрывной потребности создавать тысячи страниц в час. Пусть убогих. Пусть глючных. Пусть всё падает уже на десятом посетителе. Но каждый киоск в Намибии захотел свою страничку в интернете. Потому на эту поляну побежали сотни тысяч школьников и студентов. В то время первым ответом на вопрос школьника “как заработать компьютером” было “иди писать странички на PHP”. Вы можете представить уровень? Я могу. Тогда даже на известных сайтах словить при заходе трейс от PHP было обычным делом. Тогда же “PHP-разработчик” стало синонимом “бестолковый генератор говнокода”.
В-третьих, повторюсь, уровень разработчика равен уровню решаемых им задач. Можно ежечасно бить себя пяткой в грудь, но если изо дня в день вы только и заняты, что генерацией магазинов, блогов (видел резюме чуваков, пишущих “WordPress-программист”) или форумов, вы… мнэ… короче, есть некоторая разница. Тем, кто считает иначе, советую пригласить на собеседование таких бойцов и провести по типовому опроснику Google / Facebook / Yandex / etc. Будет интересно.
В-четвёртых, культура. Тема, достойная отдельного эссе. Пока определяем интуитивно — это то, как разработчик решает задачи. На заводе это назвал бы культурой производства. Если все вокруг бухают, станки помнят царя (и сломаны), стружку не убирают годами, а в трудовых фамилии написаны с десятью ошибками, культура страдает. Невероятно сложно в такой атмосфере стать годным специалистом. PHP’исты и не становились. Типичный код — всё сунуть в один файл, перемешать уровни, прокостылить каждую вторую строчку и убежать к следующему заказу. Какую культуру знаний и умений может породить рынок, почти со старта диктовавший целью максимально быстрый выброс сайта в сеть (один фиг потом ещё десять Вась десять раз перепишут, ну или соседский Петя, он скоро на летних каникулах)?

Как итог, до 2005..2007 годов (по моей памяти) образ PHP’иста сложился. Это очень молодой человек без специального образования, фрилансово занимающийся любой доступной работой по созданию web-страниц, не заинтересованный в качестве работы, живущий вне контекста универсального программирования. Если нанимаешь PHP’иста в другую область, процесс начнётся с долгого и тщательного переучивания. Не всегда удачного. В IT/CS эти ребята занимали ту же нишу, что сейчас занимают приезжие из Средней Азии.
Как-то так.
PS. Понятно, всё это не мешает действительно толковым бойцам использовать инструмент действительно толково.

Miscellanea IV

Не очень люблю open source в поддержке энтузиастов. Часто это означает, что поддержки нет, т.к. энтузиаст живёт своей жизнью, делает свою работу, а при выкатке софта в OS не представлял, что такое общение с массой пользователей. А оно включает в себя долгие вежливые диалоги о том, почему не надо делать не по RFC. Или почему не надо писать вне общего стиля. Или как решить проблему пользователя[, которая совершенно не относится к теме софта]. Или показать миллиард ошибок в том, что пытаются впихнуть. И т.д. Всё это занимает время. Всё это ни фига обычно не интересно. Потому энтузиасты быстро заканчиваются, а версии софта выходят всё реже и всё менее толково. Человек на окладе хоть ответит быстрее.

Pokemon Go — один из великолепных примеров наступающего киберпанка. Миллионы роящихся существ, прикипевших глазами к смартфону. Ещё один шаг привычки к внешнему сигналу от корпорации, чтобы что-нибудь сделать (ах, столько людей вышли на свежий воздух! а чё, самостоятельно выйти в парк мозжечок не велит?). Убийство времени, т.к. не хочешь / не можешь тратить его с пользой, будучи заменяемым винтиком какой-нибудь фигни. Перед стадом зомби помахали покемонами, зомби стали веселее.

Десять лет назад пользователь радовался, если существовал рычаг, который можно опустить вниз и произойдёт что-нибудь. Сейчас меня выбешивает инфантильность 30-летних людей с высшим образованием, с опытом работы, порою даже с семьями, но устраивающими гиперактивный движняк по причинам, которые даже до смешных не дотягивают. Ай, вы не так мне спички в коробке уложили, надо, чтобы микрон зазора был! Ай, почему эта большая кнопка не нажимается сама?! Я хочу, чтобы яблочко уже в виде пюрешечки на дереве росло! Хочу! Хочухочухочу!!! Вот это неутоляемое хочухочухочу!!! — первый признак того, что ребёнок ещё не вырос, что его рано из гнёздышка тёплого вытащили. С другой стороны… благодаря этим 30-летним детям у сотен тысяч людей есть работа — автоматизировать застилание постельки утром “руками” мегасовременного робота (с обязательной покупкой новой версии через год) за каким-нибудь Васенькой можно бесконечно.

Один из самых типичных фейлов допустил в феврале. Принял продуктовую задачу за техническую, а у технической недооценил сложность. Критичный для оценки сроков порог — из продуктовой (что делать) в техническую (как делать). Пока задача не перешла из что в как, срок спрогнозировать невозможно в принципе уже потому, что самой задачи нет. Вы не можете понять, сколько вбить гвоздей в стену (и умножить минуту на количество гвоздей), если не принято окончательное и цельное решение о том, быть ли стене и какой. Никогда не называйте сроки и не начинайте код, пока не закончится продуктовая часть. И всегда учитесь всегда верно определять, закончилась ли она.

Amazon выпустил свой Slack (или Lync, или GoToMeeting). Стопицотое средство сказать кому-нибудь “привет”. В этой оргии коммуникаторов интересно другое. Вы заметили то, как Amazon живёт на рынках, которые ему не свойственны, казалось бы? Хорошо, Kindle понятен — отличный канал распространения медийных товаров. Но десять лет назад появились Amazon Web Services с облаками и вот этим всем. Amazon Echo — шаг в “умный дом”. Зоопарк сервисов доставки того или иного товара даже не упоминаю. Но Amazon — это также Audible Inc. (производство и распространение аудио-книг), Twitch.tv (геймерский стриминг), Goodreads (активная и огромная UGC-база о книгах), IMDb (ага, с 1998 года владелец Amazon)… и ещё десятки купленных компаний. Занятно, как “витрина для товаров” ни фига не витрина для товаров, если присмотреться. Учимся вести бизнес.