Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Общие вопросы создания ПО
Перезагрузить страницу Соотношение количества и качества в работе программиста
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
unknown_programmer unknown_programmer вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.05.2003
По умолчанию Соотношение количества и качества в работе программиста - 31.05.2003, 21:13

Есть такой давно интересующий вопрос, на который я получал множество разных ответов как от проджект-менеджеров так и от обычных кодеров.
Какой должна быть скорость работы программиста и в чем ее измерять? И как определить качество работы программиста по количеству найденных в его коде ошибок бета-тестерами, его коллегами или в конце концов самими пользователями? Каков допустимый уровень "глючности" программы на разных стадиях разработки?
И как соотносятся скорость разработки программы и ее "глючности"? Каково должно быть это соотношение чтобы программист мог считаться настоящим профессионалом?
И каковы эти цифры для разных платформ, языков и технологий?
Сам я человек темный, малообразованный :) и хотелось бы получить разумный и точный ответ от многоуважаемых господ программистов.
(При ответе на вопрос условимся на том, что мы пишем не какую нибудь навороченную систему в которой множество ноу-хау и мы не делаем революцию в разработке ПО.)
А вот основные ответы по поводу скорости разработки и оценки "глючности", которые мне удалось получить:
1. Все определяется субъективно. Поставь пиво своему ПМ и коллегам и не морочь себе голову :)
2. если ты гуру ты будешь писать 2000 строк в день, занимаясь системным программированием под юникс
3. если ты простой кодер, ты обязан писать не менее 500 строк в день
4. пиши 120 строк в день и не напрягайся
5. 10-30 кб исходников "пальцами" без копи энд паст - это недельная норма
6. 10 кб кода в день "пальцами" без копи энд паст
7. 60 символов в минуту на сях :)
8. от ошибок никто не застрахован, смирись, гордыня - это грех :)
9. программирование - это очень творческая работа и измерению тут ничего не поддается, доверяй тому что тебе говорит твой ПМ и более опытные коллеги
Ответить с цитированием
  (#2 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.06.2003, 15:59

1. Насчет своей "темноты и малообразованности" - не трудись, не поверим.

2. Если мы тебе скажем: "Производительность труда программиста должна составлять N строк кода в день", - что ты будешь делать с этим знанием? Неужели программисту платят за количество строк кода? Тогда, доводя этот тезис до абсурда:
Код:
#include <stdio.h>
int main()
{
   printf("Hello, world!");
   return 0;
}
- здесь шесть строк,
Код:
#include <stdio.h>

int main()
{
   if(true)
   {
    if(true)
    {
     if(true)
     {
      if(true)
      {
       if(true)
       {
        if(true)
        {
          printf("Hello, world!");
          return 0;
        }
       }
      }
     }
    }
   }
}
- ууу, здесь аж 25 строк, значит, теперь программист должен получать зарплату в четыре раза больше!

3. Вот пример из жизни. Двум программистам (назовем их А и Б) была поставлена одна и та же задача - разработать модуль с заданной функциональностью. (Ну, благо сроки и стоимость проекта позволяли безболезненно проделать такой эксперимент... Причем, ни один из них не знал, что другой получил точно такое же задание.)
Программист А за два рабочих дня написал и отладил (примерно) 400 строк собственноручно написанного кода (С++). Тесты модуля показали, что заданная функциональность реализована полностью, ошибок нет.
Программист Б полтора дня читал книжку, потом еще несколько часов изучал MSDN, и к исходу второго рабочего дня написал и отладил 4 строки кода. Тесты модуля показали, что заданная функциональность реализована полностью, ошибок нет.
Итого: оба реализовали заданную функциональность за два рабочих дня, ошибок ни в одной из реализаций нет. Вопрос: производительность которого из двоих (в "строках кода в день") надо принять за эталон

4. Что-то мне цифра "2000 строк кода в день, программируя для юникс" представляется чем-то из области легенд и мифов. По крайней мере, как средняя скорость за длительный срок, а не пиковая производительность (то же самое: спринтер может пробежать по гаревой дорожке стометровку за 10 секунд, но пятикилометровый кросс по пересеченной местности с такой же скоростью - дудки! На что больше похож хоть сколько нибудь продолжительный проект - на спринт или на кросс?).
Прикинем:
2000 строк - это значит, примерно 80000 символов в день, 10000 в час, 166 в минуту. Это средняя скорость работы приличной машинистки. Хорошо, пусть наш гуру не уступает машинистке по скорости набора. Но! :
а). машинистка набирает текст, нимало не вдумываясь в его смысл. Если ее через пару часов спросить "Что ты набирала?", она удивится, но так и не сможет связно изложить содержание текста. Программисту же (пусть даже и гуру) хотя бы иногда надо и ДУМАТЬ над текстом (кодом). Когда же он успевает?
б). если наш гуру пишет код с такой скоростью - когда же он успевает отлаживать и документировать его? Нет, я, конечно, могу себе представить, что рядом с нашим гуру сидят два-три-пять-...-много "не-гуру", которые отлаживают, документируют и тестируют его код. (Кстати, об упомянутом примере с 2000 строк кода на Си для UNIX - в подчинении автора этих самых мифических "2000 строк в день" была группа из минимум 12-ти человек. Источник-то информации и мне известен ) Но, в таком случае, 2000 строк в день - это норма ГРУППЫ программистов.
Ах да, я совсем забыл, - в мире *nix документировать свой код не принято, это моветон... но отладка-то все равно остается...
в). наш гуру, конечно же, никогда не обсуждает с коллегами свой или чужой код, никогда не консультирует их и не просит консультаций сам, никогда не пишет для руководства справок, отчетов и прочей бюрократической писанины, не участвует в совещаниях, не читает отчетов и аналитических записок службы поддержки и тестеров, не исправляет ранее сделанных ошибок в коде (ну еще бы! зачем? ведь он же гуру!), и т.д. и т.п... Этакий странный автомат для набивки кода...

(Примерно те же аргументы относятся и к п.3.)

5. Что же касается остальных оценок (за исключением пп.1, 8 и 9, совершенно не пригодных для планирования и управления проектом), то они не сильно различаются: 120 строк в день = примерно 5 К в день = примерно 25 К кода в неделю. Плюс-минус некоторое эмпирическое значение в зависимости от сложности и степени новизны кода.

6. В управлении проектом можно применять следующую эмпирическую формулу: вызываешь программиста и спрашиваешь: "От модуля требуется вот такая функциональность. Сколько тебе надо времени, чтобы реализовать и отладить модуль?", и полученный ответ умножаешь на три (программисты склонны недооценивать объем работы). Далее на основании этих оценок (умноженных на 3) строишь график проекта, и при достаточно жестком управлении (контроле сроков исполнения) проект имеет хорошие шансы успешно завершиться, иногда с небольшим отставанием от графика (от 8 до 15% - ввиду разных непредвиденных случайностей, типа ведущий программист схватил ангину и две недели проболел).

Возражения и комментарии приветствуются!
Ответить с цитированием
  (#3 (permalink)) Старый
unknown_programmer unknown_programmer вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.05.2003
По умолчанию 01.06.2003, 17:05

1. тот код , что ты написал преувеличение :)
поэтому сузим правила игры
- есть бумажка с корпоративными стандартами
- есть ТЗ - простор для фантазий и чтения книг и док сведен к минимуму
- инструментарий один и тот же
по сути дела задача превращается в рутину, все творческое процентов на 80-90 выхолощено
а любая рутинная задача может быть легко измерена в каких либо единицах, разве не так?
2. цифра в 2000 взята из одной книжки Криса Касперского :)
и строки там наверняка меньше чем ты сказал
3. я этот вопрос кинул на разные форумы и мне уже дали кучу информации
если кратко, то вот что может быть использовано при подсчете (из того что мне показалось полезным)
- 1 ошибка на 100 строк перед тестированием, 1 на 1000 после итд
- 0.5-2 ошибки на Кб кода
- почитать Брукса
- функциональные точки
- СММ и ИСО 9000
- 50-100 строк в процессе постановки и 500-1000 для написания бух софта с применением копи энд паст в самом процессе программирования
- 500 строк под юникс на си в день - это для мастера
Ответить с цитированием
  (#4 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 01.06.2003, 20:42

Цитата:
Originally posted by unknown_programmer
[b]1. тот код, что ты написал преувеличение , поэтому сузим правила игры [...skip...]
Конечно же, это преувеличение, я же написал - доводим идею измерения "строк в день" до абсурда. При приведенных тобою ограничениях для управления проектом и оценки качества работы программистов (в том числе, если от этого будет зависеть их зарплата) можно ориентироваться на те цифры, которые тебе совершенно правильно уже сказали в других форумах. Возражений не имею. (Я уже приводил в предыдущем постинге примерный расчет, так что 50-100 строк в день на этапе НИОКР - это нормально, и 500-1000 для стандартного бухсофта с применением средств RAD, Wizard'ов и Copy&Paste на этапе разработки рабочего кода, и с использованием шаблонов кода, полученных на этапах НИОКР и эскизного проектирования - это тоже нормально. Из этих 500-1000 строк содержательных строк (т.е. таких, в которых заключена логика программы, а не обрамление) будет - все те же 50-100.).

Для профессионального программиста можно считать нормой объем 50-100 К исходного кода (без применения RAD, но стандартный код) в месяц. Это, как нетрудно заметить, все те же 10-30 К в неделю, или, в среднем, все те же 100 строк (может, 50, а может 150) в день. С применением RAD и прочих радостей цивилизации объем кода возрастет примерно до 200-300 К в месяц.

А вот число ошибок в приведенных тобою цифрах мне представляется завышенным. Ведь не школьники же будут писать код (или же все-таки школьники? ) Чтобы допустить 0.5-2 ошибки на Кб исходного кода, надо либо совершенно забить на отладку кода (или же совершенно не владеть средствами и методами отладки, что сразу говорит о непрофессионализме), либо ОЧЕНЬ уж постараться их наделать. Такая цифра может быть приемлема только ДО начала отладки, до первого прогона приложения. То же и о цифре "1 ошибка на 100 строк кода".

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

PS: Крис - он Касперски.
Ответить с цитированием
  (#5 (permalink)) Старый
unknown_programmer unknown_programmer вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.05.2003
По умолчанию 01.06.2003, 22:01

Цифры о количестве ошибок взяты из американской статистики на этот счет. И как я предполагаю речь идет не о фирмах где программист и постановщик, и кодер, и жнец и на дуде игрец, а о крупных компаниях с громадными тестерскими отделами.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 02.06.2003, 12:15

Мда... Комментариев не имею

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

PS: ничего личного против программистов на Бейсике я не имею - язык как язык...
Ответить с цитированием
  (#7 (permalink)) Старый
unknown_programmer unknown_programmer вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.05.2003
По умолчанию 02.06.2003, 12:45

это данные об ошибках за период около 30 лет
и ничего во многом не изменилось
и речь идет не о переучившихся секретаршах
Ответить с цитированием
  (#8 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 03.06.2003, 12:41

Да уж, за 30 лет изменилось всего ничего - матчасть, операционные системы, языки программирования, средства разработки, технологии разработки... па-адумаешь, мелочи какие-то....

А вообще - квалификация программиста определяется отнюдь не числом строк кода в день, а - умением решать конкретные проблемы, поставленные вышестоящим программером (проектировщиком, менеджером, в конечном счете - заказчиком) в конкретные сроки. Или же - умением доказать оному вышестоящему, что проблема нерешаема, хотя программисту просто лень ее решать .
Оценивать работу программиста по числу строк кода - все равно, что оценивать картины Рембрандта и Рубенса по количеству килограммов краски.

Что же до числа строк кода - советский термин "гнать туфту" тебе, надеюсь, известен? Не стоит насильно ставить программера в ситуацию, когда он вынужден будет гнать туфту, только чтобы отчитаться перед менеджером/заказчиком/etc. за число строк/килобайт кода.
Почитай литературу про технологию XP.
Ответить с цитированием
  (#9 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Welcome into new economics :) - 22.06.2003, 12:55

Производительность труда программиста или инженера-конструктора или научного работника или представителя культурной интеллигенции вычислять еще не научились (что не так плохо, как может показаться на первый взгляд). Вполне очевидна зависимость: чем больше творчества, тем менее достоверен ПРОГНОЗ производительности и свойств продуции. Можно нормировать труд рабочего (хотя и к этому путь был долгий и ухабистый), но можно ли временными рамками ограничить свободу творчества? Кто знает, когда в голову придет стОящая идея (да, и придет ли вообще)?
Но реально вопрос состоит в другом. Насколько правомочно подходить к оценке производительности творческого труда с методиками оценки физического труда? Простой пример из области программирования. Языки PL/1 и Ada создавались очень большими коллективами с большими затратами времени и сил. В то время, как Pascal был создан одним человеком, C и Basic - в соавторстве двух человек. В работе комитета CODASYL принимали участие сотни человек, как, впрочем, и в работе ODMG, а реляционную модель разработал один Кодд. Если же посмотреть на то, какие языки и модели данных снискали себе заслуженное уважение, то становится очевидно, что термин производительность творческого труда теряет всякий смысл. Один рабочий может сделать Х изделий за время Т, два рабочих могут сделать 2Х изделий за время Т, но "если собрать вместе девять беременных женщин, то они все равно не смогут родить одного ребенка за один месяц".
Можно следовать в русле СММ, добиваясь предсказуемых результатов деятельности, но нельзя не видеть, что в основу этой методики положено выхолащивание творческой составляющей деятельности. Научитесь достигать положительных результатов, закрепите свой успех на подобных проектах, научитесь планировать свою деятельность в рамках однотипных проектов... А если проекты неоднотипные с большой исследовательской частью?..
В общем, рад приветствовать вас, дамы и господа, в той области, которая получила название "new economics". Все программисты работают в этой области, но законов для нее пока не сформулировано. Все понимают, что существует серьезное различие между традиционной экономикой (материальное производство и распределение) и "new economics" (производство и распределение идей), понимают, что в "new economics" методы традиционной экономике становятся непригодными, но... иных пока наука предложить не может. И как быть... каждый решает сам.
Ответить с цитированием
  (#10 (permalink)) Старый
hgh hgh вне форума
Member
 
Сообщений: 176
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2003
По умолчанию Тогда - конкурс! - 25.07.2003, 13:37

Поскольку программисты считают (я, кстати, тоже), что количественной оценки их труда не существует, предлагаю конкурс на лучший ответ на вопрос потенциального работодателя: "Сколько строк в среднем в день пишешь?"
Ответить с цитированием
  (#11 (permalink)) Старый
Vic8 Vic8 вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.09.2003
По умолчанию Конкурс на лучший ответ на вопрос работодателя. - 13.09.2003, 13:31

Конкурс на лучший ответ на вопрос потенциального работодателя: "Сколько строк в среднем в день пишешь?".

Если Вы будете мне платить за количество строк кода, то к обеду Ваша организация уже будет банкротом.
Ответить с цитированием
  (#12 (permalink)) Старый
Vic8 Vic8 вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.09.2003
По умолчанию Конкурс на лучший ответ на вопрос работодателя. - 13.09.2003, 13:31

Конкурс на лучший ответ на вопрос потенциального работодателя: "Сколько строк в среднем в день пишешь?".

Если Вы будете мне платить за количество строк кода, то к обеду Ваша организация уже будет банкротом.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 16.09.2003, 14:30

И все-таки есть в профессии программиста еще нетворческий элемент. Вот, например, такой случай. Принято решение оформить некоторую часть программы в виде отдельной dll библиотеки. Надо написать интерфейсные части для самой dll-ки и для программы. Так как из dll нельзя возвращать объекты, то нужно написать дополнительные "обертки классов". В моем случае, ориетировочно, должно быть написано что-то около 60 функций строчек на 20-30 каждая. Работа совершенно тупая. Что надо писать - абсолютно ясно. Просто сиди и тупо ботай по клаве. Спрашивается сколько времени я имею моральное право их писать? День - два или неделю?
Ответить с цитированием
  (#14 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 16.09.2003, 14:30

И все-таки есть в профессии программиста еще нетворческий элемент. Вот, например, такой случай. Принято решение оформить некоторую часть программы в виде отдельной dll библиотеки. Надо написать интерфейсные части для самой dll-ки и для программы. Так как из dll нельзя возвращать объекты, то нужно написать дополнительные "обертки классов". В моем случае, ориетировочно, должно быть написано что-то около 60 функций строчек на 20-30 каждая. Работа совершенно тупая. Что надо писать - абсолютно ясно. Просто сиди и тупо ботай по клаве. Спрашивается сколько времени я имею моральное право их писать? День - два или неделю?
Ответить с цитированием
  (#15 (permalink)) Старый
TNT TNT вне форума
Member
 
Сообщений: 509
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.03.2003
По умолчанию 24.09.2003, 21:31

Ну, как обычно … буду использовать цитаты (не я их писал Ж-)))
 рекомендуем распределять затраты в крупном проекте так:
на анализ и проектирование – 40%
на кодирование – 20%
на тестирование и отладку – 40%

обычно работу программера принято рассчитывать в LOC (Lines Of Code) – чистые линие (без доп. отступов и пустых строк). Из них уже пересчитывают в так называемые FP (Features Points) – абстрактная единица, вычисляемая в зависимости от «сложности» и краткости языка. Вот такие вот сводные данные:
asm – 320
c – 128
cobol – 106
fortran – 106
pascal – 90
c++ - 64
Java – 53
Ada 95 – 49
VB – 32
Visual C++ - 34
Delphi – 29
Smalltalk – 22
Perl – 21
HTML – 15

вот и считай!!!
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ноутбуки японского качества марки Prime Sergg Выбор ноутбука 8 25.02.2012 08:36
(КА) Руководитель группы обеспечения качества Optimus Работа 4 23.06.2011 14:17
Программа для записи звука с компьютера, без потери качества. NERO_1 Любые вопросы от новичков 3 03.03.2011 19:05
Рекусивное соотношение(((( я уже не знаю что придумать((( помогите Sonne Pascal 18 21.02.2011 11:45
Потеря качества после обработки видео Redik0312 Любые вопросы от новичков 4 11.12.2010 21:11
Инженер по обеспечению качества (1300-1500$) youth Работа 0 08.06.2007 17:17
Инженер по обеспечению качества (1300-1500$) youth Работа 0 04.06.2007 19:38
Работа в Intel. Вакансия: инженер по контролю качества Wonderland Работа 0 08.02.2006 16:50
Программные продукты низкого качества становятся популярны Dian Мысли вслух 22 25.01.2006 16:07
Уровень качества Garik Юмор 0 18.01.2005 14:01
Личностные качества программиста Anonymous Мысли вслух 16 29.03.2004 12:57



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов