ТехноСаратов → Блог

Эффект второй системыБлогПрограммирование

Как все любят говорить — «первый блин комом». Первый проект практически у каждого программиста не бывает триумфальным. Пусть он доделывается в срок, достаточно стабильно работает и полностью удовлетвор… яет заказчика, но только его создателю известно, чего тут еще не хватает, насколько корявая архитектура этого продукта и насколько некрасивы отдельные куски кода. И вот приходит время второй версии, торопиться особенно некуда и можно детально проработать архитектуру, воплотить все свои идеи накопленные за время разработки первого проекта. Теперь то все будет правильно!

Так рождается сверхпроект второй системы, которому, как правило, не суждено быть законченным, по тому, что он будет раздавлен под собственным весом. И если даже будет выпущен релиз системы, то врятли она удовлетворит пользователя переполненным и разрозненным функционалом.

В качестве примера можно рассматривать операционную систему HURD, которая разрабатывается уже почти 20 лет. Целью проекта было создание идеальной хакерской операционной системы. Не смотря на то, что проектом занимались лучшие программисты, стабильной версии нет до сих пор. Вообще Столмена можно обвинить в создании универсальных программ (хотя бы за Emacs), что противоречит принципам UNIX.

UNIX — это яркий пример третьей системы, на котором можно учиться правильной постановке задачи при проектировании. Не углубляясь в историю, напомню лишь, что первой операционной системой разделения времени была CTSS, написанная в лаборатории искусственного интеллекта MIT. Второй системой, была ОС Multics, которая по закону второй системы развалилась под собственной тяжестью. Разработчики же UNIX подошли к проектированию несколько с другой стороны — они выделили основополагающие унифицирующие принципы, которые позволили сделать систему легко расширяемой. Как следствие — UNIX не просто жива до сегодняшнего дня, но и вытеснила (VMS,MVS,VM/CMS) или поглотила (MacOS) практически всех конкурентов, кроме Windows.

Обобщая все выше сказанное, можно утверждать, что Vista была как раз второй системой для большинства разработчиков 🙂

Для того, чтобы избежать эффекта второй системы, действенными являются следующие методы:

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

2. Следует выбрать несколько основных унифицирующих черт системы, которые будут определять всю архитектуру и к тому же будут простыми в и четкими в реализации.

PS: в качестве картинки к посту был выбран логотип операционной системы HURD, который, ИМХО, отражает ее главную проблему 🙂