Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.39.23] |
|
Сообщ.
#1
,
|
|
|
Мне кажется, что самое трудное в переходе на коммерческую основу - это научиться оценивать свою работу.
Мне предложили сотрудничество и сказали назвать цену за первый проект. Прошу у вас совета. Как не загнуть, но и не сдешевить: Нужно на основе .net написать программку под винду, которая будет с помощью сторонней (не нашей) dll изменять определённый файл и после авторизации на сервере (тоже стороннем) сжимать полученный файл и отсылать его на него. основные аспекты: - drag&drop интерфейс - применение dll - сжимание файла - авторизация - отправка на сервер Время на работу - 2 недели, но я думаю это не из-за трудоёмкости. |
Сообщ.
#2
,
|
|
|
Когда-то давно попадалась цифра $1 за строку кода. Но это было давно. Цены наверняка поменялись.
|
Сообщ.
#3
,
|
|
|
Дык, по-моему, я где-то уже писал об этом....
Коротко, процесс мне представляется так: 1. Собираешь и формализируешь требования к программе. Подробно. Здесь главная опасность - различное понимание одного и того же функционала заказчиком и исполнителем. В твоем конкретном случае, например, ты делаешь то, что описано как drag&drop по своему пониманию, а заказчик заявляет: "я думал, это должно будет работать не так, а вот этак..." Кстати, затраты на сбор требований - включаешь в счет. Этов ведь работа, которую ты делаешь, не так ли? 2. Делаешь прикидку архитектуры приложения. Далее, разбиваешь компоненты на все более и более мелкие задачи до тех пор, пока не будет ясности типа "вот этот функционал я напишу за 4 рабочих часа". Не забываешь включить сюда время на написание юнит-тестов. На RSDN коллега Gaperton выкладывал такую Excel'евскую табличку G-Estimation - поищи, позволяет весьма точно оценить трудозатраты по проекту. Конечно, если в списке задач нет фатальных пропусков Но здесь поможет только опыт... 3. Строишь в MS Project или Planner (ну или на бумажке ) график работ проекта. Он нужен для тебя - чтобы оценивать продвижение проекта и отставание (что чаще ) или опережение по сравнению с графиком. Ну и постепенно ты сможешь называть все более реальные сроки окончания. Или, в крайнем случае, известить заказчика об отставании. Никто не любит неожиданностей! Как правило, заказчик готов пойти на подвижку срока, если узнает об этом не в самый последний момент. 4. Альтернативный метод - оценить количество фунциональных точек (ФТ). Можно считать, что 1 ФТ средней сложности потребует 1-2 человеко-дня. Ну, или как альтернатива - можно как-то прикинуть ожидаемое итоговое количество строк _отлаженного_! кода и плясать от этой печки. (Грубо, на C/C++ можно ожидать 80-120 LOC/день). Если оценки по пп.3 и 4 достаточно хорошо коррелируют - это говорит об отсутствии грубых ошибок в планировании. И этими оценками уже можно пользоваться. 5. Теперь, зная трудозатраты на кодирование, добавляешь некоторое время на отладку и тестирование приложения и на другие затраты. У меня по опыту реальных проектов получаются вот такие проценты соотношения затрат: Управление 3% Анализ 12% Проектирование 19% Кодирование 32% Отладка 18% Интеграция модулей 13% Тестирование 4% В твоем случае, соотношение затрат может быть иным. 6. Достаточно ли ты знаешь заказчика? Достаточно ли он предсказуем? Не произойдет ли изменения требований в процессе работы? Если это возможно, то как часто? Готов ли заказчик увеличивать сроки работы и оплачивать переработки вследствие изменения требований? Если возможно изменение требований прямо в процессе работы, то тебе может потребоваться "технологический запас" трудоемкости до 20-30%. А может - не потребоваться. Зависит от заказчика и отношений с ним. 7. Теперь, зная трудозатраты, умножаешь их на свой рейт в час и получаешь цену работы. 8. Но это еще не все. Есть ли в проекте области, с которыми ты недостаточно знаком? Если так, то добавляешь еще примерно 30% времени к суммарному времени проекта. Но не добавляешь стоимость - ведь заказчик не должен платить за твое обучение, не так ли? 9. Итак, получаешь оценку сроков работы и стоимости. Но еще рано называть стоимость заказчику 10. Имеет ли этот заказчик "стратегическое" значение для тебя? Стал ли он (или может стать в перспективе) постоянным заказчиком? Имеет смысл подумать о возможной скидке в 10-15-20% (сколько можешь себе позволить). То есть, сначала надо назвать полную стоимость, а в процессе торга сделать скидку и преподнести это как твой подарок заказчику. 11. Имеет ли смысл попросить аванс перед началом работы? Аванс в 30% - нормальная практика. Обосновать всегда можно - у тебя ведь будут затраты, прежде, чем ты выполнишь работу полностью. 12. Вот теперь можно говорить с заказчиком о сроках и стоимости..... Удачи! |
Сообщ.
#4
,
|
|
|
Цитата Вообще-то стандартной производительностью программиста считается 8-10 тыс.строк отлаженного кода в год.на C/C++ можно ожидать 80-120 LOC/день Откуда получается прмерно 4 строки в час. Сколько же часов в день Вы предлагаете работать? По поводу распределения времени: мне кажется сильно недооценены фазы отладки и тестирования. Насколько я помню, оценки примено такие: Проектирование 11% Написание кода 1% Отладка 10% Альфа-тестирование 11% Бета-тесирование 67% Правда, это применимо к большим проектам. В случве индивидуального исполнения, вполне допускаю, доля тестирования может быть меньше, но вот насчет соотношения времени на написание и отладку почти 2:1 вместо 1:10 - вызывает серьезные сомнения. PS. Полностью согласен с тем, что один из самых важных моментов - заранее формализовать требования к результату, а также оговорить, что в случае внесения изменений в требования после согласования цены и сроков как то, так и другое может быть серьезно пересморено в сторону увеличения. |
Сообщ.
#5
,
|
|
|
Цитата andriano @ Вообще-то стандартной производительностью программиста считается 8-10 тыс.строк отлаженного кода в год. [.....] Насколько я помню, оценки примено такие: [......] 1. Считается - кем? Откуда дровишки (сиречь, каков источник информации)? 2. Оценки - откуда? Опять таки, каков источник информации? |