Некоторые малоизвестные факты о программировании
Будучи программистом я многое узнал о том, как создаётся программное обеспечение. Вот несколько фактов, которые могут вас удивить.
Программист тратит 10-20% своего времени на написание собственно кода, и большинство программистов пишут всего 10-12 строк кода в день, которые попадают в конечный продукт, независимо от их уровня. Хорошие программисты тратят большую часть оставшихся 90% времени на размышления, исследования и эксперименты в поисках наилучшего решения. Плохие программисты тратят это время на отладку, случайные изменения в коде и последующую проверку его на работоспособность.
Хороший программист в 10 раз более продуктивен, чем средний. Отличный программист в 20-100 раз более продуктивен, чем средний. И это не преувеличение — исследования, проводящиеся с 1960-х годов, чётко это показывают. Плохой программист не просто непродуктивен: он не только не выполняет свою работу, но ещё и создаёт проблемы, которые приходится решать другим.
Лучшие программисты тратят очень немного времени на написание кода. По крайней мере того, который попадает в конечный продукт. Программисты, тратящие много времени на код либо слишком ленивы, либо слишком безграмотны, либо слишком высокомерны, чтобы искать существующие решения старых проблем. Отличные программисты — мастера определения и использования стандартных подходов. Хорошие не боятся постоянного рефакторинга в поисках идеальной архитектуры. Плохие же пишут код, которому недостаёт концептуальной целостности, лаконичности, иерархичности, шаблонов проектирования, и его невероятно сложно рефакторить. Проще выбросить плохой код на помойку и начать заново, чем что-то менять в нём.
Программы подчиняются закону энтропии, как и всё остальное во Вселенной. Непрерывные изменения вызывают разрушение программ, которое нарушает целостность изначальной архитектуры. Это неизбежно, но программисты, не принявшие во внимание вопросы целостности, пишут программы, которые разрушаются настолько быстро, что становятся ненужными ещё до своего завершения. Энтропическая ошибка целостности, вероятно, самая распространённая ошибка, приводящая к провалу проектов. А вторая по распространённости — это создание программы, идущей вразрез с желаниями клиента. Разрушение программ замедляет прогресс разработки экспоненциально, поэтому многие проекты приходят к лавинообразно нарастающим срывам бюджета и сроков, и это продолжается до тех пор, пока их окончательно не уничтожат.
В исследовании 2004-го года было обнаружено, что большая часть программных проектов (51%) сталкиваются с критическими проблемами (срыв сроков, превышение бюджета, невыполнение обязательств, нарушения функционала и т.п. — прим. пер.), а 15% полностью проваливаются. Это лучше, чем в 1994-м, когда последних было 31%.
Хотя большая часть программ создаётся командами, это не есть демократическая деятельность. Обычно всего один человек является ответственным за архитектуру, остальные — лишь кодеры.
Программирование — тяжёлый труд. Это очень напряжённая умственная деятельность. Хорошие программисты думают о работе 24 часа 7 дней в неделю. Они пишут лучший код в душе и в своих снах. Поскольку самая важная работа делается вдали от клавиатуры, разработку программных проектов нельзя ускорить, заставляя людей больше работать в офисе, или добавив новых людей в проект.
От переводчика. Вероятно, эти факты не являются такими уж малоизвестными или уникальными. Но мне они показались где-то забавными, где-то поучительными, и уж точно стоящими внимания.
Кто из вас сколько строк кода пишет в день?
Вот давайте обсудим эту тему. Вот мне интересно сколько именно кода в день программисты пишут. Интересуют все и любители и профи и те кто этим деньги зарабатывает.
Интересует сам объем дневной работы.
Свое количество я напишу позже.
Только я надеюсь вы не считаете строчки вручную;)
Производительность программиста НЕ измеряется количеством написанного кода в день.
Ну разве что у Индусов только.
Я спрашивал не про производительность программиста. А просто про среднее число полезных строк. То есть среднее комфортное число строк которые программист может набить в день не стремясь выполнить План или успеть к сроку, который прошел вчера.
Вот я в день в среднем набиваю от 50 строк чистого кода, иногда при особом вдохновении (у правильном проектировании, если лень не победит) до 100 строк. Я никуда не спешу. И я не работаю программистом. Думаю у профи всеже больше результат. Но на мои проекты этого достаточно. А вот всего пять месяцев назад мне хватало от силы на 30-40 строк, да и то с копипастой (благодаря конкурсу стратегий я научился набивать много полезного кода)
Это вопрос из разряда:
Товарищи водители, кто из вас сколько раз нажимает на газ в день?
@!!ex
> Это вопрос из разряда:
> Товарищи водители, кто из вас сколько раз нажимает на газ в день?
Тем не менее на него можно ответить — взять например за месяц сколько написал строк подсчитать и поделить на дни. Это мера эффективности программиста но ответ на вопрос дает.
Чем больше кода пишет программист, тем более он говняный.
warchief
количество строк не очень характеристика имхо
все ведь зависит от
1) качество кода, говнокодить можно и по 100500 строк в день
2) возможностей среды, с использованием таких средств как Resharper и тп можно и 100500 строк качественного кода бить
3) синтаксиса языка, без комментариев )
4) можно ведь и считать по разному,
программист в очень редких случаях выдает прям без ошибочно большие блоки кода (имхо),
можно ведь вбить блок и весь день его править/дебажить/рефакторить набирая и стирая при этом очень много кода )
за вторую неделю не написал ни одной строки, так как сейчас идет стадия сетапа
к стати в идеальном случае использования шаблонов со всякими стратегиями в конце проекта пишут чаще не код а typedef’ы
cNoNim
Согласен когда число строк доходит до тысяч — это говнокод.
Тогда такой вопрос — сколько в среднем на день вы можете написать кода с любовью к нему? То есть такого кода который вызывает у вас самих восхищение
warchief
Не подходящий вопрос для пятницы 🙂
Придется ждать понедельника, чтобы добраться до проекта, и поделить строки на дни.
а вообще если честно слышать от программиста — а количество кода не указывает на мою эффективность и профессиональность, тогда что указывает? Я лично считаю (и меня так учили — был предмет проектирования информационных систем) что проектирование должно проходить один раз, перед началом работы над проектом, далее ничего проектироваться не должно, только правиться, тестирование по завершению проекта, тогда чем занимаются проф программисты если для них не важно число кода?:)
Но вообще вопрос был не сколько максимально кода вы набиваете, а ваш средний показатель, сглаженный теоретическими измышлениями, правками, поисками вредного бага, лазанью по форумам и просто пуляниями бумажных самолетиков:)
Строк кода в час
вспомним байки про французов, которым платили за перепись скрижалей побуквенно (в итоге пежо это peugeot) и про маяковского, который писал по одному слову на строчке.
"Сколько аппендиксов должен вырезать хирург в день? "
— наркоз больному!
— но, доктор, у меня же всего лишь насморк!
— насморк или не насморк, у меня норматив по аппендиксам, наркоз!
(20) Ну вот тебе статистика:
Программист тратит 10-20% своего времени на написание собственно кода, и большинство программистов пишут всего 10-12 строк кода в день, которые попадают в конечный продукт, независимо от их уровня. Хорошие программисты тратят большую часть оставшихся 90% времени на размышления, исследования и эксперименты в поисках наилучшего решения. Плохие программисты тратят это время на отладку, случайные изменения в коде и последующую проверку его на работоспособность.
(33) Тут еще есть один фактор, что считать за строку кода?
Рассмотрим следующий пример на Си:
for (i=0; i<100; ++i) printf("привет"); // Сколько здесь строк кода?
В данном случае у нас:
1 физическая строка кода
2 логические строки кода (Оператор цикла for и оператор вызова функции printf)
1 строка комментария
У другого программиста этот же участок кода, скорее всего, будет оформлен в несколько строк:
for (i=0; i<100; ++i)
<
printf("привет");
>
// Сколько здесь строк кода?
В данном примере у нас будет:
5 физических строк кода
2 логических строки кода
1 строка комментария