Чтение онлайн

на главную

Жанры

Время — деньги. Создание команды разработчиков программного обеспечения
Шрифт:

Зависимость от внешних факторов

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

Параллельная разработка

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

психологии и работе над выпуском ПО.

Рассмотрим пример. Разработчики должны реализовать функции, соответствующие командам «Создать клиента», «Изменить клиента», «Удалить клиента». Как только эти функции станут готовы и появятся в ежедневной сборке ПО, команда тестировщиков должна испытать их и дать отзыв о качестве реализации этих функций. В то же время группа специалистов по инженерной психологии должна оценить пользовательский интерфейс с точки зрения его соответствия стандартам эргономики, практичности и задачам разработки. Группа по обучению пользователей должна привести описание этих функций к окончательному виду и дать отзыв о качестве их реализации и интеграции.

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

Баланс ширины и глубины охвата в работе над проектом

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

Контекст функций

Часто в ответ на вопрос о планах от разработчика можно услышать такое: «Сначала нужно обновить менеджер ресурсов поддержкой 32-разрядных идентификаторов, потом изменить алгоритм анализа индекса PRODUCT ID, чтобы разрешить дублирование записей, а затем переписать обработчик ошибок, чтобы поддерживалась многопоточностъ». Каждый из этих пунктов вполне допустим, как элемент работы программиста, однако следует удостовериться, что все они находятся в контексте функций программы или не выходят за рамки её требований. В контексте некоторой функции задачу разработчика можно сформулировать, например, так: «организовать поддержку печати из диалогового окна ввода заказа» или «обеспечить возможность ввода нескольких заказов одновременно». Более узкая сосредоточенность также полезна для других разработчиков команды, поскольку им важно знать, когда некоторые функции станут доступны, а не срок завершения задач, необходимых для реализации этих функций. Когда план чётко определяет срок завершения всех функций или требований, остальные участники

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

Трудности в работе с людьми

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

Распределение работы

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

Балансировка нагрузки

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

Возможные накладки

Наивно полагать, что все своё рабочее время люди будут трудиться над своими основными задачами. В каждой организации возникают накладки, к которым относится время, потраченное на собрания, наладку технологии, отпуска, стажировки, командировки, больничные и выходные. Даже при 80 рабочих часах в неделю, нетрудно заметить, что 10 из них тратятся на отвлечённые действия. Это тоже следует учесть в плане. Кроме предсказуемых событий (отпусков, командировок и т.п.), план должен учитывать и неожиданные: болезни сотрудников, зимнюю непогоду и пр.

Задачи: критичные и некритичные

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

Ловушки, подстерегающие любую команду

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

Сроки: конечный и согласованный

Конечный срок — это предположительная дата сдачи проекта. Обычно он основывается на внешней рыночной конъюнктуре и состоянии дел в отрасли. Эта дата очень важна, поэтому нельзя соглашаться с конечным сроком, не составив прежде план. Подставьте этот срок в «уравнение» планирования, как одну из переменных и попробуйте уравновесить требуемую функциональность ПО и ресурсы для её разработки. Если уравнение не решается, придётся исключить часть функций, добавить ресурсы или сделать то и другое в некоторой пропорции. Конечная цель в том, чтобы составить уравновешенный, реалистичный и правдоподобный план, против которого не стал бы возражать ни один член команды.

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

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

Поделиться:
Популярные книги

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Кровь на эполетах

Дроздов Анатолий Федорович
3. Штуцер и тесак
Фантастика:
альтернативная история
7.60
рейтинг книги
Кровь на эполетах

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени