Разработчик Ubuntu Скотт Ритчи написал в своем блоге о результатах проведенного им исследования, тема которого заставляет вспомнить о работах знаменитого профессора Амвросия Амбруазовича Выбегалло. Ритчи вознамерился определить зависимость удовлетворенности пользователя приложения WINE от количества исправленных программных ошибок.

Для решения этой задачи была построена математическая модель и написан скрипт для симуляции процесса. Автор предположил, что существует 500 пользователей, которым необходимо запускать в среде WINE 500 приложений, при этом в самой среде содержится 10 тыс. ошибок, так или иначе влияющих на работу прикладных программ.

В рамках модели считалось, что все ошибки могут быть исправлены за какой-то ограниченный промежуток времени. Таким образом, в результате получится, что все пользователи будут абсолютно удовлетворены — кто-то раньше, а кто-то позже.

Автор решил рассмотреть процесс в динамике. Главной задачей исследования было нахождение некой последовательности исправления ошибок, чтобы количество удовлетворенных пользователей было максимальным в любой момент. Выводы, к которым пришел Скотт Ритчи достаточно интересны.

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

Интересно, что на вид графика практически не влияет сложность исправления ошибок. Действительно, потребителя не интересует затраченный разработчиком труд, ему важен конечный результат.

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

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

Применив полученные в ходе исследования результаты к процессу внедрения Linux, автор приходит к выводу, что аналогия вполне допустима. Он предполагает, что главные препятствия на пути широкого распространения этой ОС таковы. У 80% пользователей есть проблемы с поддержкой оборудования, у 80% не работают какие-то нужные им программы и 80% плохо информированы о возможностях свободных решений.

В результате получается, что полностью удовлетворенных пользователей будет менее 1%. Вероятно, это значение соответствует действительности. По мнению автора, решение каждой проблемы будет приводить примерно к четырехкратному росту поклонников СПО.