
metaclass
- January 1st, 22:49
Обчитавшись всякой шизы в книжке про agile разработку, попробовал применить метод оценки времени на работу оттуда - описание фич, раскладывание их по приоритетам и предварительная оценка затрат времени(в идеальных единицах) с дальнейшим уточнением.
В результате, за последние 9 часов получилось следующее: фичу, которую я оценил в 8 часов, я целиком не сделал, поэтому оценку увеличил до 16 часов, т.е. завтра продолжу.
Но при этом я реализовал несколько других фич, от которых зависела разрабатываемая, причем они будут массово повторно использоваться и дальше, уменьшая в дальнейшем время реализации совершенно других фич.
Соответственно, получается следующее: мой метод работы - реализация всяких обобщенных вещей, по мере необходимости их для конкретных фич. Я, в принципе, по опыту знаю, где может в будущем понадобится какая нибудь похожая хрень, и заранее делаю реализацию обобщенной - главное тут вовремя остановиться и не начать делать что-нибудь вроде собственных языков программирования, интерпретаторов хаскеля на дотнете и метациклических моделей. Но обобщенные в меру базовые классы весьма помогают.
И этот метод работы, получается, поначалу плохо совместим с точными оценками времени. Потом - оценки становятся точнее, причем время реализации сильно сокращается, по сравнению с "сделать все в лоб".
И еще этот метод работы очень хреново совместим с современными средствами разработки, особенно если начинать их изучать с нуля. Ведь какие примеры даются для всяких сред и фреймворков: что-нибудь вроде простейшего приложения из двух-трех таблиц и форм для них. И практически всегда описывается, как это сделать в лоб и вручную.
Т.е. открыл дизайнер, напилил туда руками гридов, накидал кнопок и прочего и все. Да и средства разработки тоже заточены под это - не под программную генерацию GUI из модели, а под ручное рисование в дизайнере. Какая-нибудь локализация - точно так же, сиди в дизайнере 100 элементов GUI перепиливай. В visual studio это вообще ад.
А у меня проект с 30-50 таблицами, локализация для 7 языков, данные таскаются из базы через веб-сервис в десяток различных приложений на разных платформах. Если такое делать вручную, а не использовать генерацию внешнего вида приложения из моделей хоть в каком-то виде - можно башкой двинуться очень легко.
И это все при том, что я неоднократно читал про то, что так делать нельзя, а надо делать в лоб, а то уподобляешся тому "русскому программисту, который весь срок делает универсальный решатель задач, а потом в последний день на нем решает конкретную задачу". :)