В статье «Мое разочарование в программном обеспечении» за последние два десятилетия мы стали свидетелями ухудшения качества программного обеспечения.
В 2019 году Джонатан Блоу (разработчик Braid и The Whitness) выступил с докладом, объясняющим, почему это может происходить: Спектакль очень и очень хорош, но так как я уже знаю, что у вас не будет времени его посмотреть, вот моя интерпретация.
Кризис программного обеспечения носит системный и поколенческий характер.
Допустим, первое поколение работает над проектом X. После того, как X создан и становится популярным, проходит время, и приходит следующее поколение программистов и работает над проектом Y, основанным на X. Им не нужно точно знать, как был построен проект X, почему он был построен таким образом или как написать альтернативный X с нуля.
Они не хуже и не ленивее, у них просто нет реальной необходимости создавать Х 2 , поскольку X уже существует и позволяет решать многие насущные проблемы.
Самым важным моментом разговора было то, что если вы работаете над Y, а Y основано на X, это не означает, что вы автоматически знаете X. Даже если люди, создающие X, все еще существуют, их знания не передаются автоматически и без реальная необходимость останется с людьми, которые изначально ими владели.
Это парадокс: большинство людей могут подумать, что если бы мы построили, например, космический корабль или сложный самолет в прошлом, то мы могли бы построить его снова в любое время.
Но нет, если бы мы не строили постоянно какой-то самолет, то через 50 лет было бы проще разработать новый с нуля, чем пытаться возродить старые процессы и документацию.
Знания не передаются автоматически следующему поколению.
В программировании мы развиваем абстракции с угрожающей скоростью.
Когда они накапливаются в достаточном количестве, становится невозможно понимать и контролировать все происходящее.
Здесь начинается мой вклад: я считаю, что нашел несколько довольно ярких примеров того, как лестница абстракций начала падать, и теперь никто ничего не может с этим поделать, потому что мы все привыкли работать только на самом ее верху.
Войдите в macOS Catalina. Каждый год Apple выпускает новую операционную систему, и каждый год ей нужна флагманская функция для ее продвижения.
В этом году это было долгожданное отдельное музыкальное приложение.
Ну что может быть проще, правда? Список файлов, категорий, фильтров, смарт-списков.
Все это есть в iTunes как минимум с 2001 года.
Но даже если это не так, насколько сложно создать достойный музыкальный проигрыватель? Многие компании, на порядок меньшие, чем Apple, успешно делали это в прошлом.
И все же все пошло не так гладко.
Ребята из " Раздражает.Технологии "Есть отличные примеры.
Нажатие на один элемент открывает другой :
Заголовок Music.app отображается неправильно :
Проблема не ограничивается музыкой.
В подкастах определенные элементы выделяются при выборе, и другие этого не делают : Как правильно заметил Филипп,
«Это не какая-то сторонняя утилита, которая выглядит немного странно на малоизвестной версии MacOS. Это флагманская версия новой версии Music.app, в которую загружена Catalina».Я думаю, что это отличный пример, потому что все возможные объяснения, которые вы могли бы иметь, были бы актуальны только в том случае, если бы это было любое другое приложение.
Невнимательность? Что ж, они решили сами создать приложение «Музыка».
Они решили сделать его флагманским продуктом Catalina. Тысячи глаз посмотрели и поверили.
Не помогло.
Недостаток ресурсов? Это Apple, компания, которая может нанять кого угодно в мире.
Над их музыкальным плеером, вероятно, работает больше людей, чем над всем бизнесом Spotify. Это тоже не помогло.
Им просто все равно? Опять же, Apple в прошлом была известна своим вниманием к деталям и хорошо следовала этому принципу.
Я сомневаюсь, что они намеренно полностью изменили приоритеты компании.
Логично предположить, что им было все равно, но и это не помогло.
Это слишком незначительно для одной ошибки? Ну багов очень много и они портят все приложения Catalina. Ошибка слишком неясна? Что может быть более очевидным, когда нажатие на один элемент не выделяет его.
Недостаточно опыта? Они делают музыкальные плееры уже 18 лет! Проблема слишком сложна? Масштаб слишком велик? В общем, нет. Музыкальное приложение менее мощное и более ограниченное, чем iTunes. Конечно, этого следовало ожидать, поскольку iTunes успел развиться, но все же.
Это музыкальный проигрыватель.
Это не ядерная физика! Да, эти конкретные ошибки довольно незначительны и, вероятно, не повлияют на бизнес в краткосрочной перспективе, а только на репутацию Apple. Однако это имеет большое значение.
Представьте себе, насколько высока, непрозрачна и нестабильна эта лестница абстракций, что вы можете потерпеть неудачу даже в такой простой вещи, как выбор элемента в списке? Если вы щелкнете по списку, он должен выбрать то, что вы только что щелкнули.
Как вы думаете, насколько это сложно? Почему он безупречно работал со времен первого iPod с монохромным экраном и четвертью вычислительной мощности современных часов, но не может быть реализован во флагманском продукте с самой совершенной в мире операционной системой? Потому что продвинутый означает сложный.
Настолько сложное, что никто не смог бы понять или контролировать его, даже если бы захотел.
Apple очень этого хотела.
Но даже они не смогли.
Даже со всеми ресурсами мира.
В этот момент вы можете подумать, что я просто придираюсь к Apple или Catalina. Бог знает, что там пошло не так.
Возможно, они изменили приоритеты и наняли других программистов.
Но нет. Эта проблема широко распространена.
Амазонка не может сделать скрин с двумя флажками : Я имею в виду, да, Amazon никогда не славился производством качественного программного обеспечения.
Однако я настаиваю на том, что задача настолько тривиальна, что ее невозможно провалить.
Это демонстрирует, насколько плохо люди понимают и владеют своим инструментом.
Недавно Обновленный пользовательский интерфейс Twitter загружает первый твит в 7 раз дольше , по сути делающий за вас то же самое, но гораздо дольше и с гораздо большими усилиями: Точных данных у меня нет, но я слышал, что Gmail тоже стал намного медленнее после полного обновления без каких-либо новых функций.
Это все еще довольно радикально.
Если вы поместите GMail рядом с Fastmail или Twitter рядом с Tweetdeck, ни один из которых не претерпел полной перестройки за последнее десятилетие, вы увидите, насколько быстрым мог бы быть даже пользовательский интерфейс, если бы мы не поднимались постоянно вверх по лестнице абстракции.
Docker и Electron — самые разрекламированные новые технологии за последние пять лет. Ни то, ни другое не имеет никакого отношения к улучшению ситуации, прояснению трудностей и их уменьшению.
И то, и другое — всего лишь скомпрометированные попытки скрыть от разработчиков накопившиеся проблемы, потому что с ними стало невозможно справиться.
И это очень печально.
Теги: #Наука #программирование #Управление разработкой #Программное обеспечение #разработка #Юзабилити #производительность
-
Ядов Владимир Александрович.
19 Oct, 24