При наличии достаточного количества пользователей вашего API не имеет значения, что вы обещаете в контракте: всё наблюдаемое поведение вашей системы будет зависеть от кого-то другого.Закон ХайрамаИмеется в виду, что даже самая простая и логичная спецификация системы может (в 98% обязательно будет) с течением времени становиться всё более сложной из-за деталей и особенностей реализации. Исходный дизайн системы, который вы здорово задумали простым и прямолинейным, становится сложным и запутанным из-за постоянного добавления новых функций, правил и исключений (под давлением/хотелками заказчиков/менеджеров), которые не были (и не могли быть) учтены при первоначальном проектировании.
Конечно, крайне важно тщательно планировать, проектировать и тестировать по всем измерениям вашу систему на всех этапах, чтобы минимизировать вероятность возникновения сложностей и непредвиденных ошибок в будущем, но... попробуйте объяснить это своему начальству.
Готовлю по этой темке трек software design -- как исходно закладываться так, чтобы любое развитие системы сохраняло её сложность линейной. Не одна серебряная пуля, а много мелких серебряных пулек.
Первый курс готов на 80%
(и осталось ещё 80% :). Так затянуло, так залип, не могу оторваться, даже отложил (временно) Metal Slug Attack Reloaded.