Рубрики
контроль качества

Как повысить качество кода

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

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

Уже на работае я познакомился c CVS (Concurrent Version System). Тогда ее использовали только для резервного копирования кода. В то время большинство проектов создавались одним разработчиком и возможности совместной работы не использовались.

На второй работе я познакомился с разделением окружения на prod, dev и test. Вернее, окружение было всего два: prod и dev. Test считался излишним, т.к. все тесты выполнялись разработчиками на dev. Тогда же я познакомился с идей разделения прав и ответственности: разработчики имели доступ только к dev. Копированием файлов с dev на prod занимался руководитель проекта. Разработчики, закончив новую функциональность, создавали файл с описанием и прикладывали файлы c кодом, которые надо было скопировать на prod. Руководитель проекта проверял описание и копировал файлы с кодом. Если в работе prod возникали ошибки, то он откатывал файлы с кодом на предыдущую версию.

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

Git поддерживает разделение кода на prod и dev, которые называются ветками: master и develop. Права на запись в мастер ветку имеет только руководитель проекта. Разработчики могут обновлять ветку develop, но большинство создают свои копии ветки develop, например: feature или bugfix. А после завершения работы со своей веткой, копируют ее содержимое в develop. В Git реализован механизм обьединения веток даже при конфликтах в коде, когда два разработчика изменили одну и ту же строку.

Git можно установить самостоятельно, на свой сервер, но чаще всего пользуются сайтами GitHub.com и Bitbucket.com. Они позволяют сравнивать две версии кода: до и после изменений, оставлять комментарии, организуя социальную сеть разработчиков для обмена кодом, тестирования и code review.

В нашей команде GitHub.com и Bitbucket.com — основные инструменты для хранения и проверки кода. Клиенты имеют доступ к проеткам 24/7, могут сами тестировать код и оставлять свои комментарии.

Рубрики
хранилище данных

Как выстроить отчетность с Pentaho BI

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

Хранилище данных позволяет получать отчеты мгновенно в виде web-страниц, PDF или Excel-файлов. Хранилище содержит все данные компании, что позволяет исследовать работу всей организации, а не изолированных отделов. Например, можно исследовать кто привлекает самых прибыльных клиентов и почему часть клиентов остается убыточными. Хранилище позволяет вести подробный учет доходов и расходов компании почти в реальном времени. Даже если какие-то данные пропадут из исходных систем, они будут доступны в хранилище данных.

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

В нашей команде есть опыт создания хранилища данных и отчетности на основе Pentaho BI. Это свободное ПО и вы можете начать использовать Pentaho уже сегодня. Не надо договариваться с поставщиками о цене и согласовывать бюджет. Pentaho не ограничено санкциями и так же надежно, как и коммерческое ПО. Для примера, мы создали сайт pentaho-bi.com на основе последней версии Pentaho BI.

Также в структуру Pentaho входит Pentaho DI (Data Integration), который можно сравнить с пылесосом. Он всасывает данные из любых источников, очищает данные и сохраняет результат в хранилище. Pentaho DI может работать с любыми форматами данных: текстовые файлы, XML, Excel файлы, данные из реляционных и многомерных баз данных. Процессы загрузки данных запускаются по расписанию, без участия администратора.

Рубрики
скоринг

Плохой клиент — подарок конкуренту?

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

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

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

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

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

В нашей команде есть опыт создания подобных моделей для банков, агентств взыскания и маркетинговых акций. Напишите нам на почту oleg@artel.dev, мы обсудим ваш кейс и предложим варианты решения.