Являются ли разработчики программного обеспечения, которые игнорируют качество / стандарты лучше для компании? [закрыто]


10

Разве разработчики программного обеспечения, которые предпочитают не ставить оптимизацию кода, стандарты и передовые практики в качестве первоочередных задач, создают более полезный код, чем те разработчики, которые хотят беспокоиться об оптимизации, внедрении стандартов и практик кодирования, а не о своевременном выполнении задач?

Как эти разные методологии сравниваются, когда дело доходит до отдельных обзоров эффективности?

Как эти стили сравниваются в рецензиях?

Каков наилучший способ повлиять на вашу команду для внедрения большего количества лучших практик во время SDLC?


2
@Haylem - я думаю, что оригинальное редактирование, которое я сделал, было лучше. Если заголовок совпадает с первым предложением, то в чем смысл заголовка?
Блэкджек

1
@ BlackJack Я вернул твой заголовок и уточнил вопрос немного подробнее. Я думаю, что мы втроем застряли в одном и том же посте в истории редактирования. Должно быть хорошо сейчас.
Томас Оуэнс

4
SE не место для суеты о вашем боссе. У всех нас есть боссы, и у большинства из нас есть кто-то в цепи командования, который, по их мнению, не принадлежит им (не я, я думаю, что они великолепны / отстойны). Гнев о них здесь не приносит пользы.
SoylentGray

1
@Chad: Хотя я согласен со всем, что вы сказали, я не совсем уверен, что ОП хотел поссориться с его боссом (напрямую).
Хайлем

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

Ответы:


32

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

Они будут уничтожены годами

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

Они могут даже получить такое же лечение от:

  • текущие тестеры,
  • составители текущей технической документации.

@Ivan: Спасибо. Долгосрочное мышление всегда побеждает.
Хайлем

@haylem - Я согласен с тобой, потому что люди быстро меняют работу. так что лучший код будет полезен для новых участников, чтобы быстрее понять код
Jitendra Vyas

Все верно, но из-за их работы они будут долго возвышаться над теми пионами, которые переживают оставленную боль. Грустно, но правда!
Anon

6

Ложная дихотомия: качества ортогональны.

                Высокое качество Низкое качество

Прибыльный УДИВИТЕЛЬНЫЙ Эскиз

Убыточный Iffy FIRE FIRST

5
Iffy лучше или хуже Sketchy?
HLGEM

1
@HLGEM: Прибыльный всегда лучше, чем убыточный.
Donal Fellows

это игнорирует будущие затраты, созданные отрывочным качеством
Рудольф Олах

1
Присвоение прибыли исключительно за спину разработчика является упрощением. Как насчет управления продуктами, инфраструктурой развертывания? Разве они также не играют роль в прибыльности?
DavidS

5

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

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

Оптимизация кода, как правило, не стоит делать, если вы не измерили свои узкие места, не подтвердили, что необходимо выполнить оптимизацию, и измерили, что ваш хитрый трюк действительно соответствует требованиям к производительности. Иначе (что в основном) не стоит делать, а значит и не оптимально.


6
Лучшие практики не помогают правильно выполнить все проекты за меньшее время. Это просто вещи, которые, по наблюдениям, работают в большинстве проектов большую часть времени.
Томас Оуэнс

2
Слепое соблюдение «передового опыта» или чьего-либо другого объявленного лучшего способа сделать что-либо - это процесс разработки, то есть кодирование грузового культа для процесса кодирования. Вы должны быть в состоянии понять, что означает практика, действительно ли это лучшая вещь в вашей ситуации, и если нет, что должно заменить ее.
Blrfl

5

Согласен ли я с разработчиками, которых не волнует оптимизация кода и практики? Нет .

Они делают работу, которую им нужно сделать? Да.

Бизнес - это зарабатывание денег, и единственный способ заработать деньги - выпускать продукты. Обычно это означает, что проекты имеют строгие графики, а это значит, что лучший способ сделать что-то может быть не самым быстрым.

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


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

1
@Jitendra - Если бы вы потратили целый день на оптимизацию уже написанного и не получили никакой новой функциональности, я бы тоже не обрадовался. Если оптимизация не даст вам чего-либо, кроме того, что в исходном коде будет меньше строк и символов, вы ничего не добьетесь.
SoylentGray

3
@Jitendra - я не сказал, что это не так. И написание вашего кода в удобочитаемой форме это здорово. Обращаться к «исправлению» внешнего вида кода других людей, когда у вас есть собственные задачи, нет.
SoylentGray

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

4
@Ivan: у меня был прямой опыт с этим менталитетом. Это идет так. Компания запускает новый проект. Hotshot Developer X объединяет вещи как можно быстрее, используя большое количество ctrl + cи ctrl + v. Продукт запускается в очень короткие сроки. Компания довольна разработчиком X. Приходят отчеты об ошибках и запросы функций. Разработчик X не может идти в ногу со временем и увольняется / переходит к следующей работе. Следующие 3 года развития - это вращающаяся дверь новых команд инженеров, которые не могут добиться прогресса, и компания X теряет все рыночные преимущества, которые она когда-то имела.
Грег Бургхардт

4

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


2
+1 за то, чтобы быть коротким, в точку, и исправить. Компания, которая не заботится о стандартах качества, является либо глупой, неосведомленной или жульничеством.
Уэйн Молина

3

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

Вас будут ненавидеть сопровождающие, но ваш начальник полюбит их.


3

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

Вы пишете систему наведения для космического спутника (вероятно, нет)? Тогда, черт возьми, плохой качественный / исполняющий код никогда не будет приемлемым в такой работе.

Вы пишете одноразовый веб-сайт для одноразового маркетингового продвижения (вы, вероятно, тоже этого не делаете, или не задали бы вопрос, но это более вероятно, чем спутник)? Тогда, черт возьми, да, вытащите этот кусок пуха через любые средства, необходимые для соблюдения сроков, следующий директор по маркетингу, вероятно, все равно будет делать что-то еще с другой компанией. ТО, ЧТО ВЫ ДЕЛАЕТЕ, НЕ ИСКУССТВО ИЛИ НАУКА - ПОЛУЧИТЕ ОПЛАТУ.

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

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

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


2

Сколько денег они делают для компании является дискуссионным. Если есть уровень пересмотра рассматриваемого кода, затраты на обслуживание будут расти, и кто-то не будет счастлив. Высокие затраты на длительное техническое обслуживание обходятся дороже, чем правильное предварительное обслуживание.

Какое уважение они получают, вероятно, зависит от конкретного случая. В какой-то момент, однако, кто-то заметит.


2

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

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


2

Все зависит от клиента.

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

Подумайте о строительстве кабинета.

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

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

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

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


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

1

Нет никогда. Оптимизация кода IMO, лучшие практики, реальное мастерство - это САМАЯ важная вещь в кодовой базе; без этого все превращается в осадок и скрепляется клейкой лентой. Это неустойчивый дизайн. Это похоже на игнорирование опухоли, потому что она маленькая и ты здоров; конечно, вы здоровы сейчас, но через несколько лет он станет терминальным, потому что вы так долго игнорировали его.

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


1

Хорошее чтение: http://www.joelonsoftware.com/items/2009/09/23.html

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

Что бы ты ни думал, не будь придурком по этому поводу.

РЕДАКТИРОВАТЬ: Я не защищаю ни одну из позиций, в зависимости от задачи, которую я мог бы склонить в любую сторону.


Зависит от "лучшей практики" ИМО. Такие вещи, как проведение тестов (не обязательно TDD, но автоматических тестов в целом), следование SOLIDпринципам, использование шаблонов проектирования, использование абстракций / интерфейсов - это базовый уровень, которым должен заниматься любой компетентный разработчик.
Уэйн Молина

Как бы мне ни нравились тесты ... они не являются базовыми.
CaffGeek

1

Лучше для компании? Это зависит.

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

Для зрелого продукта, где многие пользователи полагаются на качество программного обеспечения, все должно быть сделано "правильно".

Лучше для индивидуального разработчика? На самом деле это не имеет значения. Просто сделайте то же, что и ваши коллеги, и пусть руководство справится с последствиями - это не ваша работа. Если вы все время чините чужое дерьмо, вы БУДЕТЕ выглядеть медленным, и вы будете тем, кто все еще там, в то время как другие были продвинуты над вами. Возьми с собой программу или уйди пока можешь, если это так плохо.


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

Я не согласен. Это, безусловно, происходило во многих малых и средних веб-проектах, в которых я принимал участие, и есть также много других известных компаний, которые возвращаются и реорганизуют свою кодовую базу основными способами - например, переключение Twitter с Ruby на Scala, Facebook и их стремление к оптимизировать язык PHP и т. д. На самом деле, я уверен, что большинство успешных зрелых приложений (веб и настольных компьютеров), которые мы используем каждый день, не имеют много общего с их предками v1.
timh

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

0

Зависит от разработчика и проекта / ситуации.

Необычные времена требуют чрезвычайных мер.

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

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

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

Это в каждом конкретном случае. Кроме стиля кодирования - здесь нет оправданий.


0

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

Основная ценность программного обеспечения заключается в том, что оно гибкое.

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

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

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

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

Так что нет плохого качества, с точки зрения гибкости, никогда!


1
Никогда не говори никогда. Целые приложения выбрасываются в мусорное ведро. Преобразования данных из одной системы в другую привыкают один раз и исчезают.
JeffO

Поддержание чистоты кода часто снижает скорость разработки в краткосрочной перспективе . Важной частью является то, что нечистый код вызывает гораздо большее сокращение в долгосрочной перспективе. Я вижу несколько других ответов, которые упоминают об этом.
Ixrec
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.