Александр Кошелев
Александр Кошелев Python-разработчик

Про не свой монастырь, но свой устав

Довелось поучаствовать в очень интересной, на мой взгляд, дискуссии. Так вот, как мне кажется человек не с той стороны подходит к джанго и к agile технике как таковой.

Нет. я не отрицаю этап моделирования или проектирования. Они безусловно нужны. И теоретики agile подхода на этом делают акцент. Но не надо возводить их в ранг первостепенных и основных этапов разработки.

Имея настолько гибкие инструменты как динамические языки программирования (питон), и фреймворки (джанго), можно и моделировать, и проектировать используя их. Тот DSL который предоставляет джанго для описания моделей, на мой взгляд, настолько нагляден и даже визуален, что заменять его диаграммами, и уж тем более ставить их во главу угла нельзя. Написанная модель это не только некая мета информация, но уже готовый функционал, который можно подергать через shell и прикинуть варианты использования. Всё это сразу. Без сугубо теоретических рисований диаграмм и их перетаскивания их одного угла в другой.

Диаграммы конечно же нужны. Но потом. Либо в момент написания некой вспомогательной документации, либо просто для вникания в проект. Благо есть почти автоматически решения, которые по моделям джанго строят вполне приятного вида картинки с прямоугольниками и связями:)

Моя позиция, что долгое моделирование и проектирование в отрыве от реального кода, только будет прожигать время и принесет мало пользы. И не важно что на такой концепции построены процессы разработки в вашей компании или у вас лично.

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

И если вы его взяли не за тот конец и не знаете как включить, то это не проблема инструмента. Это ваш неправильный подход.

Далее. Насчет числа моделей в проекте. Конечно у джанги нет лимита на количество моделей (ну если не залезать глубоко в интерпретатор питона и его ограничения), и в теории их можно наплодить сколько угодно. Но если только приступая к проекту, вы уже знаете что моделей будет 70 и более, то это повод задуматься. Деление проекта на приложения помогает осуществить декомпозицию объектной модели и выделить независимые или почти независимые компоненты. Но всё равно вы упретесь в некий предел, после которого отслеживать все связи и зависимости станет трудно. Конечно если у вас в группе разработчиков несколько джангистов-профи, то из этого может что-то получится, но всё равно много сил и энергии на это уйдет.

Тем более, если вы, ещё не начав реализовывать проект, подсчитали такое количество сущностей. То это повод лишний раз задуматься над архитектурой. Ведь в процессе разработки их может стать ещё больше.

Ну а сколько времени уйдет на их моделирование и проектирование?

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

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

Предметный опрос джангистов в радиусе досягаемости подтвердил мою позицию по ущербности такой концепции разработки как в общем, так в частном случае джанги. Вот насчет эмпирического ограничения на число моделей/приложений меня не поддержали. Хотя конечно согласились, что при таком количестве в одиночку очень трудно совладать со всей системой.

Интересное совпадение, сразу после завершения диалога в этой теме, меня сделали модератором раздела по Django в этом форуме. Точно совпадение:)

P.S. И ещё, вот тут в django-developers начинают притесняют “языковые меньшинства”. Наверно последней каплей для некого Тома Тобина стал мой вчерашний пост, который провисел в агрегаторе на первом месте достаточно долго и явно намозолил глаза:)

comments powered by Disqus