Каталог решений - Как повысить качество разработки своих проектов под 1С?

Как повысить качество разработки своих проектов под 1С?

Как повысить качество разработки своих проектов под 1С?

В наличии

Здравствуйте уважаемые коллеги. Мы – небольшое франчайзи (4 человека), которое занимается разработкой под 1С вот уже более 2х лет. После первого года работы возникли некоторые проблемы с качеством кода, поскольку начался стремительный  рост сложности проектов и, соответственно, начало появляться большое количество неприятных ошибок. В статье я постараюсь рассказать о тех мерах, которые мы приняли для повышения производительности труда программиста и качества написанного им кода. Кому интересно прошу под кат.

Категория:

Описание

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

Контроль времени программиста

Тем не менее, team leader принял решение о переводе разработки на Scrum/Agile, что, как выяснилось через некоторое время, принесло свои результаты. Вот список изменений, которые были внесены в процесс разработки:

  1. Спринты наше все. В буквальном смысле все. Все время разработки разделено на равномерные отрезки, которые в нашем случае длятся две недели – наиболее удобный для нас промежуток времени. Время спринта может коррелироваться в соответствии со сложностью и объемом исполняемого проекта. Но в последнее время длительность спринта так и не удавалось сократить на срок менее двух недель. От себя могу добавить, что методика разбиения времени разработчиков на спринты очень удобна и программистам и начальству, поскольку первые получают определенный список задач, ТЗ которых не изменяется на протяжении спринта, а вторые видят определенный результат после окончания итерации разработки.
  2. Среди разработчиков был назначен Scrum Master – один из разработчиков, на широкие плечи которого был возложен тяжелый груз общения из заказчиком, а также проведения ежедневных Daily Scrum Meeting. Теперь мы смогли более сконцентрироваться на разработке, а не на выяснении отношений со свирепыми пользователями, объясняя им, почему мы не будем решать ту или иную задачу здесь и сейчас.
  3. Daily Scrum Meeting – очень полезные штуки. Всего за 10 минут рабочего времени каждому нужно рассказать о том, что он сделал вчера, что получилось, а что не получилось и что он будет делать сегодня. В результате у сотрудников возросла мотивация, процесс разработки стал более интересный и качественный, поскольку можно оперативно получить помощь или критику (обоснованную) от более продвинутых коллег. Митинги проводим даже в том случае, когда один из разработчиков опоздал или в командировке (используем Skype в качестве скринкастера или звонилки). Буквально за первую неделю практики Daily Meeting наш коллектив стал более дружественный и сплоченный.
  4. Следующий пункт – разделение задач по категориям. В каждом проекте наши задачи делятся на категории.
    • Идеи. В эту категорию попадают задачи-хотелки пользователей, у которых нету ТЗ и которые мы возможно даже не будем делать(из-за абсурдности самой задачи, или присутствием в той или иной конфигурации стандартного функционала, решающего проблему).
    • Кандидаты на реализацию. Задачи, которые точно будут реализованы, но не имеют точно сформулированного ТЗ.
    • Необходимо обсудить. Задачи, которые возможно будут реализованы, но хотелка пользователя непонятна для разработчика.
    • Технические истории. В этот раздел попадают задачи программистов для программистов, задачи – результат выполнения которых не будет виден конечному пользователю (библиотека, оптимизация запроса).
    • Product Backlog. Собственно задачи с четким ТЗ, которые  точно нужно выполнить или коммерческие задачи, за которые хорошо платят.
  5. Каждая задача оценивается в story points (в количестве дней, которые разработчик потратит на выполнении задачи). Если задача занимает пять или больше дней – ее необходимо разбить на более мелкие задачи и желательно распараллелить мелкие задачи между несколькими разработчиками, для увеличения уровня совместного владения кодом. Количество времени, необходимое для решения задачи ставят сами разработчики, после завершения очередного спринта осуществляется переоценка задач в Product Backlog на следующий спринт, чтобы сориентировать заказчика на сроки выполнения проекта.
  6. Каждый спринт начинается из Planning meeting, на которым мы вместе с Product Owner (иными словами заказчиком) набираем задачи на 36 story points (4 разработчика на 9 дней разработки). Главная задача Planning meeting состоит в том, чтобы заказчик увидел объем работ, который будет выполняться в последующий отрезок времени и продукт, который он получит в результате выполнения намеченных работ.

Code review

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

  1. Переход на стандарты написания кода от самой 1С. Кому интересно почитать можно здесь – очень полезная методичка, в которой описано как и что правильно делать, а что делать нельзя. Также там поднимаются вопросы о производительности кода, оптимальности работы запросов, уменьшению количества клиент-серверных вызовов и многое другое, что будет полезно и начинающему программисту и человеку с большим опытом. Каждый наш разработчик потратил определенное количество времени на изучение материала, а сейчас, мы повсеместно применяем его на практике, как во внутренних проектах так и при разработке под заказ.
  2. Code review. Думаю, это просто необходимость в современных проектах. При написании обработок, где количество строк кода исчисляется тысячами без него не обойтись. Часто удавалось отловить злую ошибку влияющею на производительность работы всей системы еще до внедрения у клиента. В нашей команде это стало стандартом – проверять код написанный коллегой и по возможности проводить рефакторинг или оптимизацию. Да, возможно стоимость разработки возрастает, но взамен мы получаем более стабильный код, меньшее количество ошибок, быстрый тем роста новых сотрудников.

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

http://realtimeboard.com/ — онлайн доска, которая заменяет нам обычную. На ней мы рисуем наш Burn down chart (очень важный элемент в процессе разработки, поскольку позволяет увидеть, успеваем мы с проектом или нет), разные алгоритмы, или просто комиксы, связанные с разработкой :).

http://www.redmine.org/ — опенсорсный дашбоард в котором мы и ведем все наши проекты. Удобно с точки зрения возможности подгона под наши потребности к процессу разработки с помощью разнообразных плагинов и настроек. Здесь есть и проекты, и статусы задач, и чек-листы, и многое другое.

http://www.kayako.com/ — для улучшения работы службы поддержки пользователей. С помощью программы регистрируется каждое обращение в службу поддержки (письмо по электронной почте, звонок или персональный визит).

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

Статья опубликована также на сайте avtomat.biz

has been added to your cart:
Оформление заказа