Ты слышал про парня, который распрощался с OOП?
О нет. Ещё один? Что он сказал?
Он сказал, что ни одно из всех обещаний OOП на самом деле не исполнено, что все преимущества ООП гораздо дороже того, чего реально стоят, и функциональное программирование лучше, и …
Ох. Да, это всё было известно раньше…
Значит OOП окончательно умерло, а мы можем идти дальше.
Дальше куда?
Ты чего? К новому техническому прорыву, конечно!
А, туда… И что там на очереди?
Не знаю, но меня очень привлекает идея микро-сервисов; я очень заинтересован в Elixr; и я слышал, что React по-настоящему крут; и …
Понятно. Маслобойка. Ты попал в Маслобойку.
Чего, чего? Что ты хочешь сказать? Сейчас замечательное время.
По мне так скорее удручающее.
Почему? Новые технологии появляются каждую неделю! Мы поднимаемся всё выше и выше.
Тю! Всё то, что мы делаем, так это опять изобретаем колесо, снова и снова. На это мы впустую тратим время и громадные усилия.
Ой, да ладно! Мы делаем ПРОГРЕСС.
Прогресс. В самом деле? Лично я этого не замечаю.
Ну, и что ты видишь?
Расточительство. Громадные, неисчислимые потери средств и времени. Расточительство помноженное на расточительство и помноженное на ещё большее расточительство.
Как можно говорить такое?
Посмотрим хотя бы на OOП. OOП не умерло. Оно всегда было не живым. OOП — это техника, хорошая техника. Утверждение, что оно мёртво аналогично утверждению о том, что хорошая отвёртка мертва. Прощание с OOП это, как прощание с хорошей отвёрткой. Напрасная трата!
Но функциональное программирование лучше!
Мне снова очень жаль, но это аналогично тому, что молоток лучше отвёртки. Функциональное программирование не «лучше» объектно-ориентированного. Функциональное программирование представляет собой метод, и весьма хороший, который может быть использован совместно с объектно-ориентированным программированием.
Я этого не слышал. Я слышал, что они взаимно исключают друг друга.
Конечно, НЕТ. Они решают ортогональные проблемы. Проблемы, которые есть во всех проектах.
Посмотри, есть те, кто думает, что прогресс программного обеспечения представляет собой линейный процесс. Типа, что с каждым шагом по лестнице «новая» ступенька будет лучше, чем предыдущая «старая». Но это не так.
А что происходит по-твоему?
Прогресс программного обеспечения подчиняется логарифмической кривой роста. Сначала прогресс был большим и впечатляющим. В последующие годы прогресс стал гораздо более плавным. Сейчас он практически отсутствует.
Посмотри: ассемблер гораздо лучше машинного кода. Fortran намного лучше ассемблера. «C» существенно лучше, чем Fortran. «C++», вероятно, лучше «C». Java стал улучшением «C++». Ruby вероятно чуть-чуть лучше Java.
Каскадная модель (водопад) была намного лучше, чем ничего. Agile была лучше, чем водопад. Lean был немного лучше, чем Agile. Kanban возможно был чем-то типа улучшения.
С каждым годом, прикладывая огромные усилия, мы продвигаемся на меньшее, чем годом раньше. Каждый год мы всё ближе и ближе к асимптоте.
Асимптота?! Думаешь, есть верхний предел для технологий программного обеспечения?
Уверен. Более того, думаю, что сейчас мы настолько близки к этому пределу, что любые дальнейшие усилия бесплодны. Мы уже прошли рубеж падения эффективности.
Что? Но это нелепо! И удручает!
Понимаю. Но это от того, что мы привыкли к быстрому росту. Были пьянящие дни и мы хотим их вернуть. Но они ушли, надо признать тот факт, что мы напрасно тратим средства и время на их возвращение.
Но если мы не будем подстёгивать будущее — мы никогда его не создадим!
Поверь, я определенно хочу подстёгивать будущее. Но это не то, что мы делаем. Мы просто тоскуем по прошлому.
Так к какому же будущему нам стремиться?
К продуктивному. К будущему, которое не подчиняется правилам расточительной маслобойки.
Что значит «расточительная»?
Ты когда-нибудь использовал IntelliJ или Eclipse для программирования на Java?
Конечно.
Это невероятно мощные инструменты. Опытный программист может быть в высшей степени продуктивным с этими инструментами. Рефакторинг! Представления! Удобства! Боже мой, эти инструменты впечатляют!
Но, каждый раз, когда возникает новый язык, мы отказываемся от этих мощных инструментов и переходим к СЛЕДУЮЩЕЙ НОВОЙ ШТУКЕ. Инструменты нового языка программирования выглядят как жизнь в странах третьего мира. Боже, зачастую там нет даже банального «rename» рефакторинга!
И на создание приличного набора инструментов уходит время. Если мы будем продолжать прыгать с одного языка на другой, то никогда не обеспечим их надёжным инструментарием.
Но новые языки лучше.
О чём ты! Они чем-то отличаются, но не могут быть лучше, по крайней мере, не настолько лучше, чтобы оправдать отсутствие инструментария и возврат обратно в каменный век.
А подумай о расходах на обучение и адаптацию к новому языку. Подумай во сколько обходится использование 84 различных языков только из-за того, что программисты увлекаются новыми блестящими возможностями каждые две недели.
Новые блестящие возможности? Звучит как-то обидно, не так ли?
Полагаю да, но зачастую всё сводится именно к этому. Новые языки не лучше, они просто блестящие. Мы ищем золотое руно в новом языке, в новом фреймворке, в новой парадигме, в новом процессе и уже достигли той точки, где это становится непрофессиональным.
Непрофессиональным?
Да! Непрофессиональным. Нужно осознать, что мы упёрлись в асимптоту. Пора остановить расточительное пенное бурление языков и фреймворков, парадигм и процессов.
Пришло время просто работать.
Нужно выбрать язык, два или три. Небольшой набор простых фреймворков. А затем выстроить наши инструменты. Кристаллизовать наши процессы. И стать настоящими профессионалами.
Источник:
Маслобойка, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха