Давно уже хотел эту незамысловатую мысль выразить словами. Тем более, что при написании последних статей для Хабра ее актуальность подтверждалась снова и снова. Так что вот: говорят, что политика -- это искусство возможного. Но и проектирование программ, программных библиотек или даже отдельных частей программы/библиотеки, -- это так же искусство возможного.
Речь о том, что качество ваших проектных решений определяется вашими текущими возможностями.
Например, количеством информации, которой вы располагаете. Количеством и качеством формализированных и неформализированных требований. Их (не)противоречивостью. Способностью повлиять на требования. Или хотя бы выяснить их происхождение и степень "жесткости".
Наличием опыта. Как вообще, так и опыта в конкретной прикладной нише. Возможностью обратиться к чужому опыту. И качеством этого самого чужого опыта. Впрочем и качеством своего опыта так же.
Если речь о библиотеках и фреймворках (что актуально для меня и нашей маленькой компании), то наличием чувства вкуса. Ибо выбор удобных и запоминаемых имен для API библиотеки -- это та еще задача.
Но, наверное, самое главное -- это наличием времени. Ибо одно дело, когда у вас в распоряжении неделя. Совсем другое -- когда два дня. И уж совсем другое -- когда счет идет на часы.
К чему я все это веду?
К тому, что любое проектное или архитектурное решение -- это результат какого-то компромисса. Вероятно, полученного при всем прочем, в условиях недостатка времени, информации, знаний, опыта. А иногда и желания.
Временами компромисс получается удачным. Хорошо, если есть возможность этот результат с течением времени доработать напильником. Но временами получается так себе. Иногда откровенно плохо. Идеально, наверное, никогда не получается.
Так что, перефразируя Сальвадора Дали: к совершенству нужно стремиться, но достичь его не получится. И это нормально.
Осталось еще немного обобщить: результат любой работы - это компромисс множества факторов.
ОтветитьУдалить@Grigory Demchenko
ОтветитьУдалитьЭто да. Но, наверное, стоило сделать упор на проверяемость качества результатов.
Скажем, если мы говорим про код программы, то есть, как минимум один серьезный и объективный критерий оценки его качество: работоспособность. Т.е. проходит тесты -- уже OK. Пусть код будет запутанным и лишь бы как написанным, но он хотя бы рабочий. И это, вообще говоря, более ценно, чем наличие, полезность и объем комментариев, правильно подобранные идентификаторы и пр.
А вот с проверкой качества результатов проектирования все гораздо сложнее и субъективнее. Поэтому мы все любим поржать над системами, которые слеплены из говна и палок, но не факт, что в тех же условиях мы сами смогли бы спроектировать что-то получше.
Вопрос на засыпку: а ты сам политику искусством считаешь?
ОтветитьУдалить@Igor Mironchik
ОтветитьУдалитьМеждународную -- наверняка.
Так там же сплошная брехня, прохиндейство и кидалово... Какое-то странное искусство, они даже не пытаются стремиться к прекрасному, думают как это одеяльце натянуть на себя побольше... :)
ОтветитьУдалить@Igor Mironchik
ОтветитьУдалитьВот такое вот. Другого искусства международной политики у меня для вас нет (c)