Сегодня хотел бы остановиться на более технической теме, не касаясь вопросов управления и организации. А именно паре простых вещей, которые сделают ваш проект значительно лучше с точки зрения сопровождения.
В последнее время я в основном имею дело с языком Go. Избегая вопросов о плюсах и минусах, скажу, что, даже после многих лет работы на Python, обязательная типизация все равно имеет больше плюсов, чем дает удобство от ее отсутствия. Опуская все возражения, что задавать типы сложно и неудобно, а так же что в Go многое нельзя сделать (что довольно забавно, если это не пытаются рассказать вам лично), то строгая типизация дает сильный прирост в читаемости и строгости написания кода. Пропадает эта частая проблема, что же тут вообще идет на вход, а что на выход и почему в одном из миллиона случаев оно ломается (как раз когда подается на вход не пойми что).
Как раз на днях копался в Python проекте и убил большую часть времени, чтобы разобраться в тонкостях входных и выходных данных, а по скольку тестов конечно же тоже не было, то это заняло какое-то время.
Также я проводил несколько беглых ревью фронтовых проектов и должен сказать, что проекты на TypeScript с классами, настолько понятнее и легче во вхождении, что вся это фронтовая магия не стоит того, чтобы пренебречь таким инструментарием. С учетом моего небольшого знания губин JS, проект на TypeScript оценить было легче всего, как и понять, что там происходит.
Собственно к чему это я все говорю. А к тому, что в современной разработке очень пагубно избегать использования типизации и тестов. Наличие только этого, повысит читаемость и поддерживаемость вашего проекта (конечно если не использовать везде где не надо костыли вроде any или interface{}). Так же это сэкономит уйму времени для людей, которых вы вводите в проекте. И для этого не нужно отказываться от своих языков и фреймворков. В Python давно уже есть typing и mypy, как и pytest. TypeScript так же не наложит на вас особых ограничений, кроме некоторого времени на погружение в детали. Используйте инструменты, которые позволят вам сделать ваши проекты понятнее и проще поддерживаемыми, оно того стоит. Тем более, что затраты на внедрение невелики, а тесты должны быть и так в каждом проекте. Если этот пост зайдет, то можно будет также порассуждать о плюсах и минусах grpc, protobuf и многого другого.