Об истории Software: почему программы становятся всё хуже

0b2bec03693bf7c1052beca7071bfb9c

Эта статья — попытка разобраться в причинах того, что описано в статье о плохом качестве современного программного обеспечения.
До начала 90-х годов прошлого века специальность программистов была исключительно инженерной. Компьютеры (ЭВМ) были спецтехникой в научных или военных учреждениях. Программирование в современном виде стало актуально, когда в новой профессии встретились специалисты из ВУЗов и вчерашние энтузиасты, писавшие для себя под Спектрумы. Этим людям предстояло создать мир компьютерных программ. Тогда, по моему мнению, началась история современного программирования.

Взлёт


С появлением более мощных и доступных компьютеров сфера их применения колоссально выросла. С компьютерами деятельность практически во всех областях становилась лучше, быстрее, эффективнее и комфортнее, для некоторых задач открылся путь из фантастики в реальный мир. При этом, как и в любой совершенно новой области в начале её существования, программ для компьютеров катастрофически не хватало. Это породило до сей поры невиданный спрос на программистов и их работу.

В это же время специальность программиста перестала быть чисто инженерной, стала обособленным видом деятельности. Требования к программистам и порог вхождения были высоки, но не чрезмерны, и соответствовали ситуации. Работа программистов, в определенной степени, не была похожа ни на что другое, существовавшее до этого. Здесь было минимум карьеризма, фальшивых репутаций, условностей, ненужного регулирования. Деятельность программиста — более творческая, чем другие в инженерно-технической области. Те, кто начинали программировать в это время, помнят энтузиазм и эмоциональный подъём, который стал тогда привычным. Написать и заставить правильно работать хорошую программу — удовлетворение от этого было таким же, как удовлетворение художника, создавшего произведение искусства.

Рынок


Глядя на бурное развитие и распространение компьютеров, «представители бизнеса» достаточно быстро «разглядели» в этом новый рынок — рынок программного обеспечения. Потенциально огромный, и — практически свободный! Редчайшая ситуация в конце XX века. Захват даже части такой большой сферы сулил «золотые горы», но требовал определенной стратегии. И самым успешным, на тот момент, стал подход »выпустить продукт, который делает что-то нужное, раньше конкурентов». Это было оправдано ситуацией, потому что большинство тех, кто использовал компьютеры, выбирали между «сырой» программой сейчас или ожиданием, без каких-либо сроков и гарантий, и выбирали первое. Так ОС Windows «захватила» ПК.

Качество


Период, когда «любая программа лучше чем никакой» продлился не долго. (Хотя отдельные «представители индустрии» этого не поняли, и продолжили выпускать всё новые версии своих продуктов, которые уже никому не были нужны. Через несколько лет такие компании закономерно «ушли со сцены».)

Интернет и возникновение мирового сообщества программистов сделало написание открытых и свободных программ по настоящему эффективным. Кроме того, появилась конкуренция со стороны тех, кто «опоздал на первый раздел». Чтобы захватить долю рынка нужна была одна стратегия, чтобы удержать — понадобилась другая. И будущие «хозяева индустрии» (монополии, уничтожающие свободный рынок, который их создал) изменили подход. Они стали нанимать лучших программистов и ставить перед ними задачу писать хорошие, надежные и эффективные программы, не только коммерческие, но и открытые. Доработка существующего свободного ПО для своих нужд, даже с необходимостью публикации исходников, часто оказывалась принципиально эффективнее написания своей версии с нуля. Так сложилась уникальная ситуация: программисты хотели писать хорошие программы и изменять мир к лучшему, а компании-гиганты готовы были за это платить.

«Застой»


В конце 00-х (частично — в начале 10-х) мощность массово производимых процессоров достигла необходимого большинству предела. Фактически завершилась «гонка мегагерц», а от «гонки техпроцессов» ждали уже не столько ускорения вычислений, сколько энергоэффективности и снижения выделения тепла. Конечно, производительность и количество ядер в новейших процессорах продолжали наращивать, но мощные ПК стали узкоспециализированными профессиональными устройствами (либо дорогими игрушками), а массовая разработка пошла в сторону компактности и снижения шума от охлаждения.

В это же время «рынок программного обеспечения» оказался насыщен. Практически под любую задачу уже существовало необходимое ПО, пусть не идеальное, но вполне рабочее. Для выполнения специфических задач применение аддонов / расширений / плагинов стало обычным делом. Разработка свелась к медленному исправлению ошибок, и почти такому же медленному и постепенному внедрению нового функционала по мере необходимости, по сути превратившись в рутину.

В целом такое превращение, по моему мнению, закономерно и даже хорошо (особенно для тех, кто ценит стабильность). Но позиция «хозяев индустрии» прямо противоположна: Стабильность в любой сфере ведет к социальному балансу и исключает сверхприбыли, для постоянного »экономического роста» нужны кризисы и регулярные «шаги назад». Новые «рынки» в реальности появляются слишком редко. Но тут началась «эпоха смартфонов».

Второй виток


Всего за несколько лет смартфоны «захватили» мир. Почему? Это дискуссионный вопрос (по моему мнению, главными составляющим успеха стали компактность, совмещение функций [К]ПК с телефоном и сенсорный экран). Но так или иначе, это произошло. Для производителей ПО опять открылся новый и пустой рынок.

Подход »выпустить продукт, который делает что-то нужное, раньше конкурентов» снова стал актуальным. А с учётом примитивности задач и позиционирования смартфонов как модной «игрушки» на первых этапах, низкое качество кода оказалось ещё меньшей проблемой.

Но методы получения прибыли на этом рынке стали другими. Продажа экземпляров ПО уже в середине 00-х очевидно стала малоэффективным решением. А опыт поисковых гигантов по обработке запросов и таргетированию рекламы оказался более чем востребован «хозяевами индустрии», и продажа информации о пользователях стала основным коммерческим двигателем разработки программ. Причем для всех разработчиков, даже мелких, потому что тихий сбор и продажа данных (то, что ещё недавно было уголовным преступлением в большинстве стран) теперь стал основным, часто — единственным способом «монетизации» приложений.

Другой путь


Можно было ожидать, что через несколько лет рынок программ для смартфонов также будет насыщен, и разработка сместится в сторону повышения качества. Но этого не произошло.

Эффективные менеджеры корпораций (на самом деле эффективные, без доли иронии!) на этот раз хорошо подготовились, построив будущее ещё в начале пути. В текущем состоянии насыщение рынка приложений для смартфонов просто невозможно. В значительной степени — потому, что большинство значимых приложений — это «клиенты», без серверной части абсолютно бесполезные. Была предусмотрена и «защита» от альтернативного ПО в виде магазина приложений, подконтрольного вендору (конечно для безопасности пользователя), что исключает по настоящему массовое распространение «не одобренного» приложения. Аппаратной «защитой от стабильности» стали встроенные аккумуляторы, выход из строя которых со временем неизбежен, а конкретная причина отказа — не контролируема.

При таком подходе «хозяевам индустрии» качественные и оптимизированные программы оказались не нужны. Более того — вредны. Если все программы занимают сотни мегабайт места и «лагают» — это воспринимается как норма, и спрятать в такую программу недокументированные функции сбора информации (главная задача с т. з. того, кто платит разработчику) намного легче.

С учётом популярности смартфонов коммерческий успех такого подхода оказался настолько головокружительным, что подход был распространён и на программы для ПК, и на Web-разработку. В результате абсолютное большинство программ, выпускаемых сегодня, крайне неэффективны. По моему мнению, это не заговор и даже не сговор — получить такие результаты можно гораздо проще, не информируя о подлинной цели множество людей. Уволить хороших программистов, а на их место взять больше дилетантов (или отдать задачу на аутсорс, что одно и то же) — и они сами напишут плохой код. Монополии действуют по этому принципу сами, а более мелких производителей рынок заставляет делать так же.

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

Заключение


Сложившаяся в мире компьютеров и программ ситуация не устраивает многих, а у кого-то вызывает серьёзное беспокойство за будущее. Эта статья — без ответа на вопрос «что делать», и вообще всё что написано выше — лишь мое скромное мнение ©, попытка разобраться в причинах того, что есть. Без понимания прошлого — нельзя построить будущее.

* В статье не затронуты многие параллельные и заслуживающие внимания темы, такие как усложнение ради усложнения протоколов, примитивизация интерфейсов, проблемы самоуправления сообществ разработчиков свободного ПО, и т.п. В части этих вопросов я не считаю себя достаточно компетентным, чтобы о них писать, другие же слишком увеличили бы размер статьи. Было бы интересно почитать комментарии или статьи об этом от тех, кто «в теме». Конструктивная критика и замечания в комментариях также приветствуются.

© Habrahabr.ru