Это признаки плохого разработчика? [закрыто]

36

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

Но теперь я вижу в себе другие «порывы». Недавно я обнаружил, что говорю «это все равно что пытаться вставить квадратный колышек в круглое отверстие», а также я обвиняю нерешительность клиента в том, что проект не выполняется.

Есть ли признаки того, что я должен искать, где я должен изменить свое отношение? Всегда ли клиент прав, или я иногда оправдываюсь разочаровываться?

Пол Т Дэвис
источник
20
Хорошее место для начала - самооценка, которая именно то, что вы делаете.
Крис
2
КЛИЕНТ всегда прав. Даже если КЛИЕНТ заявляет, что небо зеленое, ваша задача - изменить законы природы в одиночку (или в одиночку для более опытных). Как вы собираетесь оправдать свое существование, если не удовлетворяете КЛИЕНТА ?
ThomasX
26
Однажды я работал в компании, генеральный директор которой иногда приходил к проблемным клиентам и говорил им: «Клиент всегда прав, а вы ошибаетесь, поэтому вы явно не наш клиент». (И да, он также вернул свои деньги.)
Дейв Шерохман
4
@ThomasX: клиент всегда прав? Я обнаружил, что часто существует разрыв между тем, что хочет клиент, и тем, что ему нужно. Клиент может не знать о лучших, более подходящих решениях.
Skizz
3
В зависимости от контекста одни и те же аргументы могут быть как действительными, так и недействительными. Например, требования меняются, но иногда они полностью выходят из-под контроля. Это часть вашей работы, чтобы справиться с изменениями, но только в разумных пределах. Вы должны предвидеть возможные изменения, но нельзя ожидать, что у вас будут экстрасенсорные способности ...
Steve314

Ответы:

55

Я бы не сказал, что вы плохой разработчик. Знание проблем уже выводит вас за рамки этого определения.

Требования меняются. Это дано. Хороший разработчик должен принять это во внимание. Многие современные методы программирования помогают справиться с этим.

Оставаться верным оригинальной спецификации нереально. Также нереально постоянно меняются требования.

Клиент определенно не всегда прав. Это «правильно» чаще, чем мы хотим, чтобы он / она были, хотя (например, попытайтесь приспособить его, если он не полностью выключен). Но когда вы видите, что он ведет проект в неправильном направлении, попытайтесь отстаивать то, что вы считаете правильным.

Здесь нет жестких правил, и даже хорошие и опытные разработчики не достигли идеального «дзен». Единственный неправильный подход - не пытаться улучшить их.

Борис Янков
источник
16
+1, потому что «Осознание проблем уже выводит вас за пределы этого определения».
maple_shaft
38

Есть случаи, когда это клиент. Но это тоже ваша проблема

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

ИМХО, даже лучше: смотреть на это без вины: «это вина клиентов, у меня паршивый код, потому что он всегда меняет требования», а потом «этот клиент выясняет, чего он хочет, поэтому обратная связь, быстрое создание прототипов и гибкость - это больше важнее, чем полнота, надежность и скорость ».

Вроде дзен-ума: не суди об этом, просто посмотри как оно есть.

keppla
источник
Я взволнован, услышав, что по-прежнему существует пропаганда старого доброго «Клиент всегда прав», +1.
Уэйн Коортс
1
На самом деле это больше похоже на «клиент всегда прав ... если только вы не клиент».
Люк Ван в
@WayneKoorts - пока они готовы платить, их можно назвать клиентом.
Джефф
2
на самом деле, я думаю, что TCIAR более успешен, чем «все остальные неправы», но не так хорошо, как «кому небезразлично, кто прав, просто определите проблему», поэтому +1 может быть незаслуженным.
Кеппла
1
TCIAR частично противоядие для отказа , что является проблемой.
Steve314
13

Во-первых, клиент не знает, чего он хочет, пока не увидит это. Это часть привлекательности небольших итераций Agile-парадигмы с активным участием клиентов. Во-вторых, не ожидайте, что продукт будет «завершен», когда вы завершите код.

Microsoft использует продукт под названием «Watson» (сообщение об отправке обратной связи, которое вы получаете, когда всплывают окна), чтобы отслеживать проблемы непосредственно обратно клиенту. Отслеживание - это хороший способ отследить проблемы до пользователей, которые их испытывают. Вы можете получить прослеживаемость, спросив. Или, если у вас есть ресурсы, интегрируйте функциональность в продукт (ы). Ключ отслеживания проблем / улучшений, чтобы они могли быть решены.

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

P.Brian.Mackey
источник
+1 за секрет айсберга.
Даниэль Приден
5

Изменение требований - тяжелый факт жизни; но гниение кода не вызвано этим.

Гниение кода происходит, когда некоторые части вашего кода не используются часто; поэтому, когда вы делаете некоторые изменения, которые «не должны влиять ни на что другое», вы можете вносить ошибки. Другими словами, код, который не видит дневного света, медленно разлагается, и вы не можете сказать, когда он перестал работать.

Да, это твоя вина, а не твой пользователь.

Реальное решение? часто проверяйте весь свой код Конечно, лучший способ - это автоматизированные тесты с хорошим охватом.

Хавьер
источник
+1 за автоматизированные тесты! TDD - разработка, основанная на тестировании - написание тестов, сначала основанных на требованиях, так что тестируется большая часть или почти весь код, - это один из способов не допустить гниения кода, даже при постоянном переносе цели. Инструменты покрытия также могут быть использованы для определения областей, где тесты ничего не касаются, областей, которые могут подвергаться гниению.
Дэнни Стейпл
4

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

FrustratedWithFormsDesigner
источник
4

Хавьер подчеркивает, что изменение требований - сложный факт жизни. Я тоже разочарован этими ситуациями, потому что слишком часто я работаю над продуктом, в котором разработчик должен принимать решения. Раньше я считал, что «почему руководство не может понять это с клиентом?» Или «Почему мы начали этот проект, если клиент не знает, чего он хочет?», «Это так сильно болит, когда они меняются, поздно в развитии ".

Простой факт: это всегда будет происходить не только в программировании / разработке программного обеспечения, но и в любой сфере жизни. Мир был бы просто очень скучным и совершенно другим местом, если бы люди никогда не меняли свое мнение, никогда не адаптировались, никогда не обращались к переменам. Люди имеют тенденцию смотреть на то, что им дают, и улучшать это. Разве вы не делаете то же самое с вашим кодом? Если у меня есть блок кода, который меня не устраивает (он неэффективен, грязен), я его улучшу. (Операционная система жалуется на меня? ... иногда, если я использую определенную безымянную ОС, но обычно нет)

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

Я понимаю, что не все согласятся с этим ответом, но я думаю, что важно, чтобы ответы на этот вопрос охватывали более широкую перспективу.

архиватор ARJ
источник
2

Когда вы взаимодействуете с клиентом, вы не программируете; Вы учитесь и учите.

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

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

Если вы не сказали им заранее, не ожидайте, что они узнают о отраслевых стандартах и ​​передовых методах или любом другом оправдании того, что вы делаете. Я ненавижу, когда не вижу вознаграждения до самого конца, когда продавец говорит мне, что это стандарт в отрасли. Я не должен был этого знать. Мой ответ таков: «Заставляет ли меня чувствовать себя тупой задницей?»

Когда вы с клиентом, обращайте на него больше внимания, чем на кого-либо или кого-либо еще в комнате. Прирученные собаки - гении в этом; особенно если у вас есть еда.

JeffO
источник
1

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

Призраки
источник
1

Вот почему вы всегда должны настроить документ Business Requirement Document и подписать его до того, как какое-либо приложение выйдет за пределы этапа создания прототипа / исследования.

Теперь идея о том, что этот документ на самом деле является окончательным, ошибочна, но это должно помочь вам лучше понять, чего на самом деле хочет клиент. И пока вы пишете свой код с учетом удобства сопровождения, вы можете свести свои проблемы к минимуму.

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

(Конечно, это просто оправдание, если вам это нужно. Вы всегда должны планировать, что они что-то изменят )

user606723
источник
1

В цитате Эмерсона «Глупая последовательность - это хобгоблин маленьких умов ...», наиболее часто пропускаемое слово глупо . Последовательность не подлежит обсуждению в определенных условиях, но все это часто заменяет критическое мышление и анализ.

С одной стороны, многие модели разработки разработаны специально для помощи в среде, которую вы описываете; так что, если вы обнаружите, что вам нужно нарушить вашу модель, то вы либо неправильно ее реализуете, либо у вас неправильная модель.

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

tylerl
источник