Как доказать моему стейкхолдеру и менеджеру, что мое программное обеспечение работает? [закрытый]


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

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

вам нужно поставить качественное программное обеспечение вовремя и в рамках бюджета

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

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

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

Бизнес становится зависимым от данных, которые им движут. Предприятия стали критически зависимы от своего программного обеспечения и вычислительной инфраструктуры. Есть множество критически важных миссий системы, которые должны быть в эфире двадцать четыре часа в сутки / семь дней в неделю. Если эти системы выходят из строя, запасы не могут быть проверены, сотрудники не могут быть оплачены, самолеты не могут быть направлены и так далее. [..]

Поэтому в основе бизнеса лежит поиск способов держать системы подальше от большого комка грязи. Что система все еще ремонтопригодна. Что система действительно работает и что вы, как программист, можете это доказать. Ваш менеджер спрашивает вас, закончили ли вы ваш код сегодня, она спрашивает вас, если релиз, который имеет исправления A, B и C можно сделать сегодня или она спрашивает, если программное обеспечение, которое будет выпущено на самом деле работает? И вы доказали, что это работает? И чем же?

Теперь мой вопрос:

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

[добавлено позже]

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

Следующий вопрос заключается в том, что все должно быть в этой политике QA?

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

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

[добавлено позже]

Спасибо за все ответы. Речь действительно идет о "доверии". Мы не можем сделать релиз, если программное обеспечение не пользуется доверием заинтересованных сторон, которые активно тестируют наше программное обеспечение сами, используя веб-сайт, который потребляет наш веб-сервис. Когда возникают вопросы, Первый вопрос наших тестировщиков является ли это проблемой уровня обслуживания или проблемой уровня представления? Что заставляет меня иметь политику контроля качества, которая гарантирует, что наше программное обеспечение в порядке для тестов, которые они делают.

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

5 5

5 ответов:

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

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

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

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

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

Итак, каково же было решение:

    Первым делом отделили руководство от программистов, и поставили дружный коллектив руководителем. Во-вторых, получить квалифицированную команду QA. В первые несколько недель жуки были в 100-х годах. В-третьих, поставьте 2-3 разработчика в качестве команды поддержки, там ответственность заключается не в том, чтобы делать какие-то новые задачи, а просто исправлять ошибки, работать непосредственно с QA. В-четвертых, мотивируйте ребят, иногда речь идет не о деньгах или дополнительных каникулах, иногда хорошее слово будет идеальный. Небольшой пример: проработав 3 дня подряд почти по 15 часов в день, руководитель группы сделал замечание менеджеру. Через два дня я получил письмо от генерального директора, в котором он поблагодарил меня за мои усилия и дал мне 2 дня отпуска.

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

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

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

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

Такова роль U ser A cceptance T esting: показать, что достигнут приемлемый уровень полезности.

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

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

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

Как однажды сказал Билли Джоэл: "это всегда было вопросом доверия."

Вы должны понимать, что разработка программного обеспечения-это "черная магия" для всех, кроме тех, кто пишет программное обеспечение. Это не очевидно (на самом деле, довольно противоречиво) для остальной части вашей компании, что многие из ваших инициатив приводят к повышению качества и снижению риска запуска с течением времени и/или бюджета. Ключ заключается в построении доверительных, уважительных отношений между развитием и другими частями общества. бизнес. Как вы строите это доверие? Ну, это одна из тех проблем с обидчивыми людьми... вам нужно будет немного поэкспериментировать. Я часто использую следующие инструменты:
  1. видимость процесса - Убедитесь, что все знают, что вы делаете и как продвигаются дела. Кроме того, убедитесь, что каждый может видеть влияние и изменения, которые происходят во время разработки.
  2. укажите на маленькие победы - чтобы укрепить доверие, укажите, когда все пошло именно так, как ты все спланировал. Попытайтесь найти ситуации, в которых вы должны были принять решение и использовать термин "смягчение риска" с вашим руководством.
  3. не сказать, "я сказал вам так.- Предположим, вы сказали руководству, что вам нужно 2 месяца, чтобы выполнить какую-то задачу, и они сказали: "Ну, у вас есть только три недели."Результат вряд ли будет хорошим (при условии, что ваша оценка точна). Поставьте руководство в известность о проблеме и задокументируйте все, что вам нужно было сделать, чтобы попытаться решить эту проблему. крайний срок. Когда качество оказывается плохим, вы можете работать над проблемами, с которыми вы столкнулись (и записали) в профессиональной манере, а не показывать пальцем и говорить: "Я же вам говорил."
Если у вас хорошие отношения с вашим менеджером, вы можете предложить ему прочитать несколько книг, посвященных разработке программного обеспечения, чтобы он мог понять лучшие практики отрасли.

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