Главное Авторские колонки Вакансии Образование
Выбор редакции:
968 6 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как получается плохой софт

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

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

Мы адаптировали статью тимлида команды Yelluw про основные грабли и проблемы, влияющие на появление плохого программного продукта на рынке.

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

Лишенные последовательности и неверные решения никогда не перерастают в качество. Хорошие проекты никогда не пишутся инстинктивно. Это результат организованных и основанных на фактах решениях. Сильный руководитель задает тон остальным сотрудникам. Все люди, так или иначе, учатся на примерах.

b_584724d951e90.jpg

  • Нечеткие обязанности

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

  • Отсутствие тестирования

Факт: сегодня большое количество проектов пишется без последующего выполнения тестов. Никаких юнит-тестов. Никаких тестов по интеграции. Даже никаких «как это будет работать на машине заказчика»-тестов. Код просто пишется (копируется с Гита), компилится и выдается клиентам.

b_5847248512c22.jpg

  • Нежелание учиться

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

  • Сотрудники-мудаки

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

b_58470c24f10a3.jpg

  • Ориентированность на краткосрочные цели

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

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

Перевод статьи https://dev.to/yelluw/how-bad-software-gets-made

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Екатерина К
Странно, что вы не упомянули еще одну, гораздо более очевидную причину, чем все остальные. Вы не поверите, но огромное количество программистов не умеют и не хотят учиться писать хороший код. "Из говна и палок" - вот что они чаще всего создают, быстрые решения, нежелание рефакторить код, нежелание и неумение продумать архитектуру хоть немного загодя. (Про учебу вы упомянули, но гораздо важнее знать не отдельную технологию, а о том, как писать хороший код - на любом языке).

Другая причина - отсутствие архитектора и архитектуры, под которой в минимальном значении можно понимать свод правил и решений, чтобы никто не могу нагородить код, которые вызовет проблемы в будущем.
Ответить
Tados
Разработка ПО для оборудования и сложных бизнес-процессов
Маша Третьякова
>Вы не поверите, но огромное количество программистов не умеют и не хотят учиться писать хороший код

Поверим, Екатерина, еще как поверим :) Не буду далеко ходить: у нас первое (и зачастую решающее) задание на собеседованиях — FizzBuzz. Простейшая задача, алгоритм которой описан в самом же вопросе (если интересно, статья по теме https://habrahabr.ru/post/298134/). Так вот, 80% соискателей не могут ее решить, потому что привыкли не писать код, а собирать его из палок и... ну пусть будет библиотек :))

>нежелание рефакторить код

Это отдельная тема, отражающая не только один из смертных грехов некоторых разработчиков, но и ситуацию на рынке. Я часто мониторию вакансии по отрасли и очень (ОЧЕНЬ) часто встречаю в описаниях вакансий от коллег что-то вроде «необходимо писать сразу хороший код, чтобы потом не приходилось рефакторить» о_О Что, простите?..
Что уж говорить о разработчиках, которым такие вот стандарты навязывают свыше.

В целом вы, конечно, зрите в корень :) Но я побуду адвокатом «плохих ребят» (не ради того, чтобы оправдать их, нет, просто чтобы пояснить, откуда такая жесть вообще берется). Тут дело в том, что Заказчику ведь не объяснить, что нужно закладывать время на рефакторинг, на расширяемое ядро, на архитектуру. Поэтому зачастую считается, что то, что оплачивается один раз, должно работать вечно. Но с расширением логики продукта это невозможно. Поэтому исполнители часто и жертвуют этим.

Лично мы для себя эту проблему (хвала богам!) решили. У нас есть фиксированный объем работ на развитие крупных проектов, в который мы закладываем в том числе улучшения — от рефакторинга до UX/UI-доработок. Но не все так могут.
Ответить
Екатерина К
>>>Тут дело в том, что Заказчику ведь не объяснить, что нужно закладывать время на рефакторинг,

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

Вообще мои замечания были скорее для фирм, не которые работают на заказ, а которые делают свои продукты (у меня с такими больше опыта). Там, правда, те же проблемы - основная - это нехватка времени. Но! Как правило (во всяком случае, довольно часто), менеджеры уточнаяют сроки вместе с разработчиками. И вот тут многие сами рубят свой собственный сук. Когда меня спрашивают, сколько времени мне нужно на такую-то задачу, я всегда закладываю время на три этапа: дизайн, собственно разработку, и рефакторинг-редизайн. Поэтому получается хм... несколько больше. Я знаю, что в глазах других разработчиков я выгляжу тупой дурой (да я такое могу слабать за две недели, какие тут два месяца?!), но я уже привыкла и не обращаю внимание. Что самое прикольное, очень часто менеджеры соглашаются на мои длинные сроки, что позволяет мне сделать нормальный код.
Ответить
Tados
Разработка ПО для оборудования и сложных бизнес-процессов
Маша Третьякова
Хороший подход, мы поступаем примерно также :) У каждой задачи обсуждаем с разработчиками greenline - срок, когда задача будет выполнена, если все пойдет по плану; redline - максимальный срок, который озвучила команда менеджеру проекта; ну и, собственно, deadline - когда мы сдаем решение Заказчику.

Разницу между редлайном и дедлайном высчитываем эмпирически. Если в реализации конкретной задачи участвует разработчик, который, в силу своих индивидуальных особенностей, часто срывает сроки - дедлайн отодвигается далеко. Если в исполнителях разработчик, зарекомендовавший себя как пунктуальный, разница совсем небольшая - чтобы покрыть издержки на согласование и возможные небольшие доработки.
Ответить
ADZY
Ассистент для ведения рекламных компаний
Дмитрий Кубитский
ТДД, регламены, штрафы всё это не поможет улучшить качество продукта, проблемы более фундаментальные:
1. Компетенции
Рынок и количество разработчиков увеличивается в 2 раза каждые пять лет, при этом технологии меняются ещё быстрее всех этих новых специалистов по новым технологиям банально некому учить.
Кто-то ищет компетентных профессионалов с опытом, а профессионалов в разы меньше чем потребность рынка, при этом свободных профессионалов вообще нет и не будет, такова реальность.
Единственный вариант - это обучать самим, но обучать я уже говорил не кому, сами компании восновном также не компетентны (тк тоже сформировались на волне роста рынка).
2. Потребности рынка.
заказчик требует сокращение сроков, сокращение издержек и тд,
никто не резервирует бюджет на дополнительные нагрузочные тестирования, тщательные проверки, повышения качества кода которое нельзя пощупать и тд.
в конкуретной борьбе заказчик сам часто отдаёт предпочтение тем кто готов снижать стоимость за счёт этого качества (это требование рынка, которому нужно всё больше, быстрее, дешевле).
===
вобщем массовый рынок ВСЕГДА будет низкого качества, нужно подумать как с этим работать, частично это пытаются решить овериндженерингом типа 100500 готовых решений на любой случай жизни, но как видно этого не хватает. Возможно какие-то решения в области искусственного интеллекта, может будут какие-то автоматические системы улучшения кода либо интеллектуальных ассистентов для программистов.
Ответить
Tados
Разработка ПО для оборудования и сложных бизнес-процессов
Маша Третьякова
Сначала ответила на предыдущий комментарий, а потом заметила ваш и подумала, что зря писала :)) Вы выразили то же самое.

Глобально вы правы. Но не все так беспросветно как вам кажется. И изменения в отрасль еще можно вносить — она не такая закостенелая, как все остальные.

Развивая вашу мысль, возьмем 2 компании:
1. «Хорошие ребята» Inc.
2. «Плохие ребята» Inc.

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

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

Мы много думали об этом, а так как легких путей мы не ищем, решили внести свой вклад в формирование отраслевых стандартов качества оценки ПО и компаний по его разработке. Этот стандарт поможет Заказчикам оценивать исполнителей и их продукты с точки зрения множества факторов, часть из которых я утрированно привела выше. Возможно, это хотя бы немного изменит положение на рынке - компаниям будет выгодно повышать уровень компетенций, а отрасль не будет построена на «дешевле — значит лучше». А может, мы просто потратим зря N лет :) Не исключено.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.