И так, начнём по порядку 
я знаю десятки проектов, которые умерли из-за того, что писалось как по-проще, без осознания технического долга, потому что думали что именно их случай приземленный. Надо просто разделять интерации - сначала делаем mvp действительно быстро и максимально экономно, а потом пишем заново нормально, уже с поддержкой инвестора\займа.
чтобы конкретно, был однажды хороший блокнот, notepad++, хорошая штука вроде vim или emacs. Со временем когда настала пора расти, использовать идеи комьюнити, багфиксить, в ядре начали обнаруживатся функции по 1900(!!!!!!!!) строк, в итоге все забили, потому что ажиотаж спал а переписывать поздно, всем насрать.
Как бы не ругнуться матом, но донести мои слова так, что бы они были поняты, м? Короче, в грубой форме будет, потому что не понимаешь и очень много предполагаешь.
1. Перед тобой не студент-третекурсник, у которого за душой пачка говно-проектов и ничего вменяемого.
2. Перед тобой человек, который в безполезных стартапах не участвовал, не имеет привычки кодить тонны кода, а потом по пол года его переписывать, дабы справиться с нагрузкой или расширить функционал.
2.а. Я участвовал в разработке социальной сети, нацеленной на местный рынок, вышла на второе место в стране, полностью успешный коммерческий проект с очень высокими нагрузками (использовали MySQL NDB Cluster, в то время NoSQL ещё тока зарождался и небыл способен справиться с функционалом и нагрузкой, да и как оказалось - он нафиг не нужен был). Тот стиль написания кода, что ты описал, там просто не прокатывал, потому что мог легко положить весь сайт нафиг. Нужно было хорошо продумывать реализацию и API. Опыта оттуда вынес вагон. И никаких инвесторов, никаких стартапов.
3. Notepad++, vim, emacs? Чувак, ты уволен. Серьёзно. Zend Studio 5.5 рулил в те времена, сейчас рулит phpStorm.
4. Самый длинный метод, что я писал, укладывается в 100 строк. И то, потому что это controller action и HMVC мы не используем, т.к. для наших задач это оверкилл. Повторяющиеся блоки уезжают в виджеты, компопенты, расширения и модули.
5. Что такое технический долг я не только прекрасно знаю, но я ещё и умею его контролировать и вовремя доходчиво объяснить начальству, почему нам нужно потратить время на его исправление. Ещё ни разу не отказали, технический долг в проектах ни разу не существовал больше пары месяцев.
6. E_ALL | E_STRICT, даже в продакшене (само собой продакшен пишет всё в логи). Любые нотисы и варнинги к исправлению обязательны.
7. Я работаю с очень большим кол-вом внешних систем. И эти системы что только бывает не присылают в ответ. А мне нужно что-бы приложение ни в коем случае не свалилось с ошибкой, что ему дали что-то не то, что оно ожидает. Да ещё нужно всё залогировать, оповестить саппорт, себя, понять что делать с транзакцией клиента, дать звиздюлей мерчанту и.т.д. Обработка не валидного XML это вообще достойно целой блогозаписи...
В общем, когда цена твоей ошибки будет выливаться в сотни тысячь $ потерь, тогда будешь учить меня как нужно писать на PHP. При таких ставках не то что говнокод, а даже просто поспешная реализация может привести к очень плохим последствиям как для меня лично, так и для моего работодателя. Мы достаточно мотивированы, что бы не делать "х**к, х**к и в продакшен". Если на задачу надо 2 недели, значит две недели и ещё день-два на полное тестирование и проверку всех систем.
Не знаю что сравниться по скорости и затратам на разработку против такой вот связки:
php 5.4 >
yii 1.1.14
mysql 5.5.32
+memcached (сессии, view, запросы, вообще все что "просидает" под большой нагрузкой)
хорошо настроенный nginx
ну и если надо полноткестовой поиск по миллионам записям делать, прикручиваем к этому всему еще и sphinx
Если я уж перейду с этого то уже в сторону node.js + SPA + noSQL, хотя с большим объемом данных могут быть проблемы.
и да, на PHP можно писать по разному, это уже вопрос в выборе разработчика, руководителя и так далее.
Могу дать пару советов, используете === вместо == (!==, !=), разрабатываете на уровне notics, читайте внимательней документацию, используете ООП в полном объеме, и не делайте методы\функции более 30 строк )
p.s. само собой багтрекер\ git + hooks -> phpcs (стандарт фреймворка) и нормальная организация работ.
учить надо было не PHP, а логическому мышлению и инженерному подходу) и общим представлениям, шо там за сервер, что такое БД, протоколы там, дом, структуры данных.
Потому что учи не учи, а все ровно получишь google + php.net + stackoverflow.com
адд. Извините не удержался:
"Поверь мне, я 2 года учил людей в школе веб технологий в качестве преподавателя..."
День рождения:Июнь 15, 1986
Учитель бляя....

Yii рулит. Symfony тоже гут, но она большевата для сильно кастомных проектов. Больше подходит под шаблонные проекты
А так поддерживаю всё что написал.
Что касается учителя - а кто лучше может преподать серверное программирование на PHP, нежели практикующий специалист? Я к тому моменту стаж имел более 5-ти лет, и далеко не сайты-визитки делал. Группа, которая училась со мной эти два года (программа расчитана на 2 года), выпустилась и все до единого нашли хорошие рабочие места. Щас все уже вышли на средний уровень и выше, у одного даже свой e-бизнес.
Вот ты пишешь, надо было тому учить, этому учить. У меня к тебе очень тупой вопрос? А ЧЕМУ Я МОГ ИХ УЧИТЬ КРОМЕ ИМЕННО ЭТОГО? Я же не теоретик, а практик. Следовательно учил именно тому, что нужно на практике. Они у меня не использовали denwer - они у меня полностью сами были способны поднять рабочее окружение как на Windows, так и под Linux. Они работали исключительно под E_ALL | E_STRICT, любые нотисы и варнинги были не допустимы.
Я лично считаю, что за свитч по не декларированным текстовым строкам нужно убивать четвертованием. Потому что потом решишь добавить еще одно значение, тут поменяешь, там забудешь - и понеслась.
Вообще, для рефакторинга сам применяю правило третьего раза. Если встречается нечто, то первый раз кодим тупо, второй раз копипаста, третий раз - делаем нормальный обобщенный вариант (и не забываем оба первых привести к нему же).
Пока не подводило.
Свичи бывают разные
Если честно, я больше для примера привёл, т.к. у меня ни одного свича просто нету. Я рефакторю в тот момент, когда вижу что я копирую уже где-то существующий функционал - выношу в метод/компоненту/базовый класс и дело с концом 
А для чего Java EE задуман, если не для веба? 
Никто не говорил, что она не для веба. Но использовать её для небольших проектов не разумно (если конечно это не жесткий highload)
А вообще мой коллега с своё время выкинул джаву и взял .NET. Говорит, что в разы лучше.
Всем: давайте замнём тему 1С, а? Она не в тему и вообще чё её обсуждать - кактус есть кактус.
Сообщение отредактировал Psihius: 07 December 2013 - 0:30