Переводы

индекс
114,12

ТОП 10 самых раздражающих факторов для программиста

Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…

ТОП 10 самых раздражающих факторов для программиста


10. Комментарии, которые объясняют "как", но не объясняют "зачем"

Еще в институте, на курсе программирования, нас учили что код необходимо комментировать, и максимально полно. Всегда лучше иметь слишком много комментариев, чем слишком мало. К сожалению, данная рекомендация иногда перерастает совсем уж в паранойю — программист комментирует каждую строчку кода. Например:

$r = $n/2; // Устанавливаем $r равным $n поделенное пополам
// Цикл выполняется до тех пор пока $r — ($n/$r) больше $t
while (abs($r — ($n/$r)) > $t) {
$r = 0.5 * ($r + ($n/$r)); // Устанавливаем $r равное половине $r + ($n/$r)
}

Вы имеете хоть малейшее представление что этот код делает? Я — нет. Даже после 100 грамм. Данный код является прекрасной демонстрацией проблемы, когда комментарии описывают что делает код, но никак не описывают зачем он это делает.

Для контраста приведу пример этого же кода, но с нормальными комментариями:

// Вычисление квадратного корня из n методом Ньютона — Рафсона
$r = $n/2;

while (abs($r — ($n/$r)) > $t) {
$r = 0.5 * ($r + ($n/$r));
}

С такими комментариями уже понятно для чего предназначен данный код.

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

9. Отвлечение от работы

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

Причина банальна — для работы над задачей нам необходимо держать в голове громадный объем данных, чтобы не упустить что-нибудь важное.
Отвлечение от работы просто пускает "под откос" наш, уже разогнавшийся, "локомотив" и поставить его обратно на рельсы занимает очень много времени, сильно раздражает, и что хуже всего, способствует появлению новых ошибок.

8. Изменения в проекте

На английском данная проблема звучит как Scope creep, Изменения в проекте могут превратить простую задачу в самый страшный ночной кошмар. Достаточно нескольких вполне невинных слов, внесенных в проект заказчиком, чтобы превратить задачу в кашу. Например:
  • Версия 1. Показать карту местности
  • Версия 2. Показать 3D карту местности
  • Версия 3. Показать 3D карту местности, по которой пользователи могут виртуально перемещаться
Ужас! 30 минутная простая задача превращается в сложную комплексную систему, на которую можно потратить не одну сотню человеко-часов. Но страшнее всего, когда изменения в проект вносятся во время разработки, что влечет за собой переписывания, рефакторинг, а иногда и просто выбрасывание кода, на который разработчик потратил уйму времени.

7. Менеджеры, которые ничего не смыслят в программировании

Менеджмент — не такая уж и легкая работа. Поддержание большой группы людей в виде сплоченной команды это лишь вершина айсберга. Но сложность работы менеджера не избавляет его от необходимости иметь хотя бы базового представления о том, чем занимаются их подчиненные, особенно в IT индустрии. Когда менеджеры не способны понять базовые концепции работы программистов, мы получаем очередные изменения в проекте, нереалистичные дедлайны, раздражения и разочарования с обоих сторон процесса разработки. Это достаточно распространенная жалоба со стороны программистов и источник многих проблем.

6. Документирование приложений

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

Не сложно догадаться что это самое нелюбимое занятие программистов. Достаточно взглянуть на множество open-source проектов. Какая наиболее частая просьба в помощи от open-source коммьюнити? Правильно, написать документацию.

5. Приложения без документации

Программисты часто используют в своей работе библиотеки и программы сторонних разработчиков. Для этого им, конечно же, нужна документация. Но, как указано в пункте 6, программисты ненавидят писать документацию.

Нет ничего более раздражающего чем попытки использовать стороннюю библиотеку, когда не понимаешь что делают половина функций в API.
Какая разница между poorlyNamedFunctionA() и poorlyButSimilarlyNamedFunctionB()? Необходимо ли делать дополнительные проверки атрибутов?
Получается сплошная работа методом псевдо-научного тыка.

4. Железо

Любой программист, который хоть раз отлаживал абсолютно непонятное падение базы данных или сталкивался с рассинхронизациям RAID массива прекрасно знает какую головную боль доставляют проблемы с железом. Самое большое заблуждение в сфере IT, это то, что поскольку программист работает с компьютерами, он же и должен их и чинить. Конечно, для некоторых программистов это не проблема, но мешает сосредоточится на более высокоприоритетных задачах. Для таких целей должны быть специальные люди, которые будут этим заниматься.

3. Неопределенность

"Сайт не работает!". "Функционал Х работает не так как надо!". Неопределенные баг-репорты — как заноза в заднице.
Особенно, когда разозленные не-программисты на просьбу предоставить информацию по воспроизведению бага отвечают — "ты же программист! возьми просто и почини!" и не понимают что недостаточно информации, чтобы взять и починить.

2. Другие программисты

Программисты далеко не всегда уживаются с другими программистами. Шокирует, но это правда. Наиболее характерными раздражающими факторами являются:
  • Несдержанность по отношению к оппонентам-программистам
  • Непонимание того факта, что есть время обсуждения архитектуры системы и есть время для ее реализации
  • Невозможность адекватной коммуникации с коллегами и заказчиком и различия в понимании терминологии
  • Невозможность работать как надо и когда надо
  • Безразличие к коду и, собственно, к проекту

1. Собственный код, 6 месяцев спустя

Вы когда-нибудь заглядывали в свой старый код? Это я написал такое??!!! Начинаешь выглядеть идиотом в собственных глазах.

Да, проблема… Но есть и хорошие новости — вы не один такой ;).

Суть данной проблемы заключается в том, что мир программирования постоянно изменяется. То что мы считаем новейшими тенденциями сегодня, завтра может просто устареть. Банально невозможно написать идеальный код, поскольку стандарты и методологии программирования пересматриваются и эволюционируют ежедневно! Конечно, жестоко осознавать что красивый код написанный сегодня может быть смешным и нелепым уже завтра. Для большинства программистов это и есть наиболее раздражающий фактор в их работе…

Перевод и адаптация by Fenix.
Кросс-пост из персонального блога.

+275
1 сентября 2008, 04:19
101

комментарии (70)

+84
Fiery_Fenix #
Почти год был в роли хабра-читателя, вот решил попробовать себя в роли хабра-писателя, постарался создать качественный материал…
+9
Bonch #
Всё правда. Отличный материал перевели. Спасибо!
Еще согласен с комментирующими, насчет свободного раб. графика. Никогда не понимал, почему для программера не могут сделать свободный рабочий график? Важен же результат!

Но мне всегда говорили — мы можем сделать тебе свободный график. Но как другие в комманде будут взаимодействовать с тобой?
Ну ёмаё! Есть телефоны, почта, скайп, мессенджеры и, в конце-концов, можно просто назначить дату совещания, если накопилось много вопросов.

Сейчас работаю на себя — доволен.
+7
al_bozo #
Есть такая штука, как teamwork. В стратегическом плане плотная _совместная_ работа программеров ведет к росту как их квалификации, так и квалификации стажеров. Это работа на будущее. Конечно, людям-интровертам это может быть не нужным, но стратегически компании так выгодней, ибо снижает человеческий фактор в ее активах. А «купить „ этот график можно как раз своей высокой и крайне необходимой _сейчас_ квалификацией, реализовать зависимость компании от тебя. То есть реализовать то, чего компания избежать =)
0
VovixLDR #
Видимо, вместо «программеров» следует читать «кодеров»:) Интересно, какой по-настоящему хороший софт был написан в таком режиме?
НЛО прилетело и опубликовало эту надпись здесь
0
Bonch #
Проведу параллель со зданиями (да, вы не ослышались).

Знаете, раньше в СССР существовала такая вещь, как СамСтрой.
Думаю, программеры, не ограниченные ленью (хотя это трудно, но можно, когда дедлайн), могут сделать все, что угодно.

Расскажу историю:

Пацан из моей школы (закончил в 2000 году), будучи программером, как-то раз зафрилансил, и нашел нехилый проект. Много денег предлагали. А проект завязан весь на OCR.

Я думаю, мало же кто подвяжется, тем более делать это надо было для нашей доблестной милиции.

Но он подвязался (КАК ФРИЛАНСЕР! ДЛЯ ГОС. СТРУКТУРЫ! ШОКЕ!). И он сделал.
Правда, пришлось ему около 3-х месяцев «вымогать» деньги с заказчиков. Но «вымог». Сейчас завязал с такими работать.

Так что, VovixLDR, не везде программеры на фрилансе есть тупые кодеры (но их хватает), и не всегда они хотят очень много денег. Они просто хотят гарантий, а ребят этих можно найти, проявив должный уровень смекалки. Такие ребята есть в любом крупном городе. Но эти ребята в основном олд-скул,
и денег они попросят немало.

Резюме этого текста: Качество=Деньги (и наоборот).

Так что хороший софт могут написать и простые ребята, главное, чтобы было ТЗ и не унылая сумма денег!
0
Bonch #
После «как СамСтрой», параграф с новой строки. Я его пропустил, в порыве страсти, и теперь — стало непонятно про СамСтрой. Извините.

И для tehnoman: «интересно какой дом не был построен обычными строителями :)»?, было же. Самстрой был. Наши отцы строили (ну не все конечно). В некоторых таких квартирах сечас живут хабралюди, и не подозревают, что эти квартиры строили в основном неквалифицированные специалисты)
0
taliban #
скорее всего слишком кричично, но все же…
10 — предпочитаю коментировать только важные участки кода, в которых «зарыт» сюжет логики
9 — для этого существуют, так называемые, системы баг-трекинга
8 — =) сказал бы про паттерны, но промолчу, т.к хорошо и продуманно думать зачача не из легких
7 — теоретически в каждом проекте должен быть проект-менеджер (программист который общается с менеджерами) отвечающий за интерпретацию мыслей менеджеров программистам
6 — =)
5 — говоря честно, не видел «известных» библиотек без документации, помоему есть недокументированное правило: пишешь себе — тебе и разбираться, пишешь для других — обьясни что сделал!
4 — помоему в серьезных конторах не попросят программиста чинить компы (да и админа не должны)
3 — сразу вспомнилась цитата с баша про девочку которая говорила программеру что его прога не работает и чтоб поченил… неопределенные баг-репорты — да, но «ваша программа не работает, почините» помоему из мира фантастики
2 — последний пункт да, а как надо решать должны все вместе а не каждый сам по себе
1 — москва не сразу строилась, все растут и получают опыт в любой работе, программирование не исключение, ничего пугающего

а вообще как мелодрамма для девушки, задевает за живое =) дал бы плюсик
+12
relort #
Простите за мой французский: фиксированный рабочий день ещё одна большая жопа)) И если где-нибудь в центре нашей великой и необъятной с этим хоть как-то соглашаются, то «чем дальше в лес»…
0
stfalcon #
как это все близко и знакомо. к счастью после полного перехода на free-lance я избавился некоторых и вышеперечисленных факторов.
0
Obi #
Можно даже сказать «от большинства».
+1
stfalcon #
нет. только от 3х.
+3
maxshopen #
Афигеть, даже нечего добавить, кроме неудобного рабочего графика

Спасибо вам, буду рассылать друзьям и их начальникам :)
+7
podlivkin #
Еще в стародавние времена, в 1969 году, старина Бауер заявил:

«the whole trouble comes from the fact that there is so much tinkering with the software. It is not made in a clean fabrication process, which it should be. What we need, is software engineering.»

Все эти проблемы решаются, если заставить каждого программиста перед тем как становиться Software Developer выучить наизусть основы Software Engineering.

Software Engineering ничто иное, как гигиена в медицине — она незаметна, но вклад существенно велик.

0
arkadym #
Вот! А то уж я думал — один такой! Меня мочему-то не бесит код даже 3х летней давности написанный мной. Да, несомненно, сам проект может меня уже не устраивать, но это только от того что он уже перерос себя (пришлось добавлять функционал который изначально даже близко не планировался).
+1
Rusan #
Да кстати насчёт пункта 1 — нашёл свой год годовалой давности и такая гордость охватила, я сейчас так не пишу :). Но это скорее исключительный случай.
0
logman #
А я как-то откапал свой курсач 6-ти летней давности О_о… Пришлось себя пол вечера пивом отпаивать и успокаивать от увиденного… :)
0
Rusan #
Ну у меня не курсач был, а первый мой по первому очень крутой проект, с офигенным техническим директором и просто он еще писался на фреймворке, что само-собой накладывало некий отпечаток.
+1
kulikoff #
Это не совсем повод для гордости. Это повод задуматься, если за год в вашем программистском мировоззрении ничего не изменилось. Либо вы просто достигли программистской нирваны, тогда да, можно гордится :)
0
Rusan #
Ну там не всё идеально было, но именно что грамотно написано, некоторые моменты я поправил, но это не так что открываешь и ужас-ужас. Вот я открыл более старый проект и один из свежих — вот там ужас-ужас (свежий потому что надо было сделать позавчера, а было послезавтра).
0
Vladimir #
Аналогично!
Встречая собственный код 2-х летней давности в большом проекте, откровенно завидую:
вот было же время когда так не давили пункты 9, 8, 7, 3 и 2!
0
chiaroscuro #
Тоже как-то откопал свой код на Си пятилетней давности.

Там такие трюкачества с указателями, что аж дух захватывает. :)
+8
newon #
Как фактор, добавил бы музыку, орущую из наушников коллеги. :) Нет, музыка это, конечно, хорошо, но в момент крайней сосредоточенности просто убивает.
0
printf #
Соглашусь, это просто ужасно.
+2
iscander #
Одно из решений — самому надеть наушники. Однако, если коллега вышел на перекур, а включенные наушники снял и на столе оставил — то это уже другое дело! То же касается беспризорного мобильника коллеги, иногда очень хочется ответить… :)
+2
warkord #
Есть большие наушников до 500р из которых почти не слышна музыка, если она не на полную катушку. Как вариант чтобы такие уши прилагались к рабочему месту.
+3
gaki #
Ага, хорошо. Особенно если вкусы противоположны (Бах vs. Билан). Скажешь, чтоб убавил громкость, он вроде убавит, а через пять минут опять начинаешь слышать, и х. з., то ли он накрутил опять, то ли у тебя от относительной тишины слух обострился. Опять просить сделать тише — чувствуешь себя склочником, пытаться игнорировать — лохом, на которого хуй положили…
+1
fmka #
Проходят года, а проблемы неизменны. Вот уже и кодить под Borland 3.11 это дурной тон. И среда за тебя треть кода выдает. А проблемы все те же )
+1
kottt #
Вот бы еще эти факторы в каждой компании висели в красной рамочке у каждого менеджера.
0
mad8vad #
А толку-то? Менеджер за тебя документацию напишет? Или закроет в отдельной комнате, защищенной от внешних воздействий?
0
kottt #
Я имел в виду пункты 7-9, как особенно раздражающие факторы, не зависящие от разработчиков, с которыми приходится мириться, так как остальные более-менее зависят от самих программистов.
+6
Fiery_Fenix #
Благодарю уважаемое сообщество за оценку моего скромного труда!
Перенес в «Переводы».
0
ennui #
Обожаю пункт 8, готов за его убить нашего «менеджера по развитию».
+6
rtm #
самый раздражающий фактор — Маша под боком ))))
0
l2k #
да… иногда перерастает в кашмар :)…

… Особенно в 5 часов утра
0
blazer #
1я причина — как это близко… :)
+2
contrabas #
Для меня самый раздражающий фактор — менеджер. Когда тебя спрашивают сколько времени еще ты будешь работать над задачей, и после этого спрашивают что так долго… причем после того как ты начинаешь объяснять, «почему так долго», начинаются чуть ли не вопли, что я ничего не понимаю в программировании, а задачу надо сделать быстро. Не знаю кого как, но меня это всегда бесило и будет бесить…
0
DaFive #
потому что см. пункт 7.
0
beq #
Работал с таким «менеджером». Это нечто. Если у тебя есть мнение по поводу сроков высосаное из пальца, но ты не собираешься его менять — зачем вообще что-то спрашивать?
+2
bloodmoon #
Пункты 9, 5 и 1. Как результат мигрень и нервные срывы. Забил и стал столярничать.
+3
dohlik #
Очень мизерное количество программистов могут написать код с нуля мизинцем правой руки, одновременно разговаривая по телефону, бреясь и жуя очередной бутерброд

Посмотрел бы на это. Даже без кодинга.

PS. Вспоминаю, как на 2-3 курсе писал лабораторки на JS, чтобы не стоять в очереди к компу с Borland Delphi (да и выепнуццо хотелось наверное).
+1
killest #
хе… я не один такой )))
0
ramber #
а еще когда начинают перекрикиваться из комнаты в комнату, или кто-то целенаправленно приходит в мою тихую комнату и начинает говорить по телефону (и такое бывает — ага) %)
спасибо автору!
0
gojanki #
10 фактор про комментарии напомнил «Совершенный код» Макконнелла, там этот же код в качестве примера приведен и комментарии такие же. Остальные советы тоже пересекаются местами. Только описано все это на тысяче страниц :-D
0
iRoma #
> 6. Документирование приложений
Я думал раньше, что в среде open-source это один из источников дохода, разве не так?
0
Imenem #
Это зачастую один из недостатков open-source, особенно в небольших проектах. Когда документацию писать влом, или документация есть только на родном языке разработчиков, а энтузиастов для перевода на великий и могучий нет :((

P.S.: Основной источник дохода open-source это тех-поддержка и дописывание функционала на заказ.
+1
aosodoev #
2 + 3 + 4 + 7 + 8 = 9*9 ...*9!!!
0
Aecktann #
ошибка.
>>Причина банальна — для работы над задачей нам необходимо держать в голове громадный объем данных, чтобы не упустить что-нибуДь важное.
+1
Fiery_Fenix #
Благодарю, поправил.
ЗЫ Вычитывал весь текст 2 раза, а все-таки пропустил ошибку :(
0
art_t #
Ага особенно в связке 6ое и 5ое)
+2
Scioner #
Первая и десятая причины очень тесно связаны.

Впрочем, всё-таки, иногда нужно писать не только что делает код, но и как. Бывает, что, в погоне за меньшим количеством итераций, код приобретает изящную компактность, но, через полгода, разобораться как именно он работает представляет из себя серьёзную трудность.
0
AigizK #
Я так понимаю, в вашей статье чем меньше номер раздражения, тем больше он раздражает? Если так, то не совсем согласен с п.п. 1 и 2. Насчет п.1, это скорее относиться к начинающим. А насчет п.2, тут наверные от среды, где ты работаешь.
0
Limarc #
> Собственный код, 6 месяцев спустя
Да уж… самая главная и болезнения проблема!
–5
jawbreaker #
he service is temporarely unavailable. We're working on it and hope that it'll come back soon. This is only a BETA version of the service and such failures will never become an usual practice.

Sorry for inconvenience and thanks for your attention,

SocialWatch team.
Это сулит мне дальнейшее развитие интернет-зависимости или у других он тоже не работает?
0
Scioner #
Уведомление на e-mail: «При комментировании вы серьёзно промахнулись топиком. На самом деле, вам сюда»
0
KRen #
На счет пункта 10…
Вспоминаю лабы по Pascal, на 1-2 курсе. И возмущения препода по поводу комментариев.=)
НЛО прилетело и опубликовало эту надпись здесь
+1
enshtein #
когда работал программистом — злился на project manager'ов, когда стал работать project manager'ом стал злится на программистов :))) а про менеджеров (п.7) да встречаются такие с гуманитарным образованием и ничего не смыслящие в ИТ-индустрии… но это уже зависит от человека — от его навыков и умения управлять людьми )
+1
AgaFonOff #
Хм, вот кажется и кандидат на черненький мак :)
0
AgaFonOff #
> Все топики, опубликованные с 01 сентября 2008 года, 18:00, уже участвуют в программе.
Ой, похоже, что нет. А жаль…
0
Fiery_Fenix #
Пост был опубликован в 4 часа утра, так что не попадаю в кандидатуры…
Если честно, то нисколько не огорчился, мне было просто приятно, что мой пост понравился сообществу, для меня это лучший приз за мой пост ;)
+1
wii #
Коли вы не льстите нам, то это похвально.

Не столько узнал что-то новое для себя, сколько
Да, проблема… Но есть и хорошие новости — вы не один такой ;).

успокоило меня (это относится ко всей статье). :)
Да и к коду — тоже очень хорошо относится. Сейчас очень часто эксперимнтирую. В попытках написать тот самый «идеальный» код, действительно замечаю, как страшна моя работа, написанная даже пол-года назад.

Уже больше года слежу за хабром. Выделил для себя несколько интересных статей и отрывков из них (нет, не в избранном они у меня), которые дали мне новые идеи для развития.
Этот топик новых идей мне не дал, но его я тоже с удовольствием для себя выделил.
0
silverwind #
Еще передергивание приоритетов задач очень жизненно. То одно нужно сделать и быстро — вливаешься и строишь планы, заготовки делаешь, то резко нужно что-то другое сделать и еще быстрее первого; злишся, успокаиваешся и начинаешь разбираться со вторым (и уже мольшся чтобы чего-то третьего не подсунули)… ;-)
0
Halt #
Я бы в список пункта 2 добавил еще: «Несоблюдение стиля при написании программ» :) Я имею в виду, как несоблюдения стиля вообще, так и забитие на фирменный стандарт по стилю (правила именования переменных, отступов, расстановки скобок).

Если встречаешь такой код, то читать его бывает совершенно невозможно…
0
pedagog #
Пункт 8 по-русски называется «Каша из топора» — в начале просят «топор» и уверяют, что этого будет достаточно, потом просят «водицы», потом «крупы», потом «сахара», потом «маслица», ну и на последок еще и «изюмчика».
0
Fade #
Для меня единственный стопор и то, что реально бесит9. Отвлечение от работы.

Я бы поставил этот пункт на первое место.

6. Документирование приложений — это как-раз не проблема. Нужно лишь найти время. В настоящий момент я активно пишу документацию к своей openSource CMS-ке, т.к. это облегчает мне дальнейшее общение с клиентами.

В отношении документации к чужим проектам — да это проблема. Из-за этого приходиться месяцами «тыкать» в код, пока не разберешься, что к чему.
0
Fade #
А смотреть на свой код через 6 месяцев — полезно, т.к. позволяет иметь «свежий взгляд».
0
zanner #
Согласен со всем выше перечисленным, но вот только с первым пунктом не совсем согласен: если писать модульно, то те вещи которые часто используешь параллельно модифицируются и потом всегда их можно накатить в устаревшие варианты, хотя кто как пишет — я вообще этим вопросом уже давно занимаюсь и пока получается даже не все печально…
0
iyura #
По седьмому пункту у Ашманова отлично написано, ровно диаметрально противоположное.
0
developer #
абалдеть молодцом!

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