пятница, 26 апреля 2019 г.

[prog.thoughts] Проектирование -- это искусство возможного

Давно уже хотел эту незамысловатую мысль выразить словами. Тем более, что при написании последних статей для Хабра ее актуальность подтверждалась снова и снова. Так что вот: говорят, что политика -- это искусство возможного. Но и проектирование программ, программных библиотек или даже отдельных частей программы/библиотеки, -- это так же искусство возможного.

Речь о том, что качество ваших проектных решений определяется вашими текущими возможностями.

Например, количеством информации, которой вы располагаете. Количеством и качеством формализированных и неформализированных требований. Их (не)противоречивостью. Способностью повлиять на требования. Или хотя бы выяснить их происхождение и степень "жесткости".

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

Если речь о библиотеках и фреймворках (что актуально для меня и нашей маленькой компании), то наличием чувства вкуса. Ибо выбор удобных и запоминаемых имен для API библиотеки -- это та еще задача.

Но, наверное, самое главное -- это наличием времени. Ибо одно дело, когда у вас в распоряжении неделя. Совсем другое -- когда два дня. И уж совсем другое -- когда счет идет на часы.

К чему я все это веду?

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

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

Так что, перефразируя Сальвадора Дали: к совершенству нужно стремиться, но достичь его не получится. И это нормально.

6 комментариев:

Grigory Demchenko комментирует...

Осталось еще немного обобщить: результат любой работы - это компромисс множества факторов.

eao197 комментирует...

@Grigory Demchenko

Это да. Но, наверное, стоило сделать упор на проверяемость качества результатов.
Скажем, если мы говорим про код программы, то есть, как минимум один серьезный и объективный критерий оценки его качество: работоспособность. Т.е. проходит тесты -- уже OK. Пусть код будет запутанным и лишь бы как написанным, но он хотя бы рабочий. И это, вообще говоря, более ценно, чем наличие, полезность и объем комментариев, правильно подобранные идентификаторы и пр.

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

Igor Mironchik комментирует...

Вопрос на засыпку: а ты сам политику искусством считаешь?

eao197 комментирует...

@Igor Mironchik

Международную -- наверняка.

Igor Mironchik комментирует...

Так там же сплошная брехня, прохиндейство и кидалово... Какое-то странное искусство, они даже не пытаются стремиться к прекрасному, думают как это одеяльце натянуть на себя побольше... :)

eao197 комментирует...

@Igor Mironchik

Вот такое вот. Другого искусства международной политики у меня для вас нет (c)