Поло, водное по-оло!..

There are two non-empty arrays $a and $b. What is the result of their sum (+)?

View Results

Loading ... Loading ...

Рекламная пауза

Можешь не писать — не пиши!

Пещерный человекВ силу специфики своей деятельности последних десяти лет «я часто общаюсь с людьми», которые так и рвутся сотворить свою CMS. Или фреймворк. Я знаю минимум три хороших причины такие штуки сотворить, но куда больше причин основательно изучить какую-нибудь общеизвестную штуку. И даже пришёл к выводу, что если сотворить хочется настолько, что аж руки чешутся и глаз по ночам сомкнуть не можешь, — что ж, пиши «для себя», никто не мешает. Желательно — в свободное от работы время. Брось на половине, ной всю жизнь про нереализованность своей крутейшей идеи. Но лучше не пытайся впихнуть её в недоделанном виде в существующий проект, если она у тебя не обкатана на десятке-другом задач, написанных «в стол» либо просто для себя. Хочешь быть честным — не подписывай других на масштабный и наверняка неадекватно тобой оцененный риск собственной глупости.
Своя CMS, свой фреймворк — это большие (не вру, видел такое) трудозатраты. То есть на ряде ситуаций, которые автор сразу учёл, полёт будет нормальный. А сделай шаг влево-шаг вправо — и выяснится, что есть ситуации, которых автор не учёл. Пока CMS или фреймворк мало используются, всё путём (и грустный опыт свидетельствует, что единственным). Но как только начинаются нештатные ситуации (а они нередко начинаются в реальной жизни прям-таки с порога), всё зависит от опыта и адекватности автора. Это может быть попытка сразу переписать всё нафиг, но в живом проекте такое нереально; поэтому начинается, как правило, переделка всего на живую нитку. Оно же «подгонка под ответ». Получается хреново, но автор, как правило, этого не видит (опыта мало, а настроение свернуть горы здесь и сейчас как раз молодёжи вполне присуще). Переделка — это, ко всему, переучивать персонал, менять концепцию, ну и т.п. А переделка, заметим, закрывает только один тип неучтённых ситуаций, на которые мы только что конкретно наступили.
А сколько их ещё впереди? В итоге CMS или фрейм в плане архитектуры штормит так, что данное поделие программным продуктом назвать-то нельзя, это просто воплощённый кошмар. А дальше следует неизбежное: после десяти-двадцати проектов все понимают, что это решение проще выкинуть на помойку, потому что это не программный продукт, в натуре, это дерьмо в проруби. И начинается выбор чего-нибудь проверенного и известного, пусть и не очень хорошего, пусть и не супер-пупер. Но надёжного. Приблизительно так наши солдаты используют “калашников”: да, не идеален, но даёт вполне предсказуемый средний результат, в отличие от крутейшей снайперской винтовки, которую в полевых условиях никак не отремонтировать, да и патронов к ней взять, в целом, негде.
В целом, работает Общий Закон Эволюции: каждый человек повторяет путь своих предков от эпохи к эпохе. Каменный век, бронзовый век и т.п. Начинаем с процедурного программирования и примитивнейших инклюдов, приходим к OOP и основнательно утоптанных «под себя» MVC/MVP (пройдя, как правило, стадии: 1) фанатизма по поводу OOP; 2) понимания, что это не «волшебная пуля»; 3) фанатизма по поводу паттернов; 4) понимания, что это не «волшебная пуля», — то есть, обобщая, стадии увлечения чем угодно, лишь бы жить и не работать, с неизбежными последующими периодами дикой тоски потому, что так не получается).

Заранее предчувствую ехидный вопрос ко мне. Да, такой опыт я получал сам, вышеизложенное попробовал на своей шкуре. Но есть разница: я писал очень простой фреймворк, который не сильно-то и усложнился за несколько лет. И ещё одна разница: он изначально был заточен на то, чтобы: а) самого фрейма практически не было; б) кода итогового приложения было минимум; в) чтобы больше было задач, которые библиотеками (общеизвестными, хорошо документированными и т.п.) оперативно решаются. Почему так? А потому что мне сразу надо было получить средство, с помощью которого я могу решать как можно больше задач, не меняя своего подхода к процессу разработки, раз; и потому, что мне не хочется много-много стандартных вещей реализовывать самостоятельно, два. А в подавляющем большинстве как CMS, так и фреймворков, подход сугубо противоположный: автор видит картину своего «идеального проекта», которую сначала набрасывает наскоро, а потом, с течением времени, воплощает в жизнь. Лично я уже три года, кажется, тяну и тяну одну идею. Идея одна, реализация в ближайшие дни, скорее всего, возникнет третья по счёту, благо основательный фундамент в виде готового кода и масштабного опыта эксплуатации этой штуки у меня уже есть. Самый смех в том, что приложения останутся практически полностью совместимы.

Начнём-с.

P.S. Картинка кликабельна.

Share:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Juick
  • Twitter

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">