Программистам необходимо общаться с клиентами
Некоторые программисты считают, что им не обязательно быть теми, кто общается с клиентами. Для вашей компании это верный способ написать что-то совершенно блестящее, чтобы никто не мог понять, для чего он предназначен или как он был предназначен.
Вы не можете ожидать, что менеджеры по продукту и бизнес-аналитики примут все решения. На самом деле, программисты должны принимать 990 из 1000 (часто небольших) решений, связанных с созданием модуля или функции, иначе продукт просто не будет поставляться! Поэтому убедитесь, что ваши решения проинформированы. Понимайте своих клиентов, работайте с ними, наблюдайте, как они используют ваше программное обеспечение.
Если вы собираетесь написать лучший код, вы хотите, чтобы люди использовали его. Интересуйтесь вашей пользовательской базой и учитесь у "тупых идиотов", которые там. Не бойтесь, они действительно полюбят вас за это.
Вы должны иметь возможность воспроизвести этот алгоритм в одном запросе:
select sum(v1.value * v2.value)
from vectors v1
inner join vectors v2
on v1.dimension = v2.dimension
where v1.vector_id = ...
and v2.vector_id = ...