- PVSM.RU - https://www.pvsm.ru -
Я разработчик в небольшой организации. Цель моей работы — делать людям хорошо. Я ускоряю их работу, добавляя тот или иной функционал к уже существующему продукту, моими клиентами являются сотрудники самой организации. Современный бизнес очень динамичен, каждый день появляются новые идеи и потребности, то есть мой план расписан на год вперед, и каждый месяц перестраивается под новые задачи.
Однако, на фоне, казалось бы, динамично растущего бизнеса (кол-во сотрудников увеличивается на 10-15 человек в год) отдел IT растет значительно медленнее. Основное требование к выполняемой работе: “Быстро!”, как следствие плохо масштабируемый код, подверженный плавающим ошибкам.
Сейчас наша компания переживает новый виток развития ПО (период 5 лет), постепенно мы отказываемся от старых разработок и переписываем то, что есть, придерживаясь объектной модели и паттернов, а заодно и переезжаем на новые сервера (новые железо + софт), но требования остались на прежнем уровне — все должно быть сделано вчера.
В очередной раз при релизе кода работа сотрудников была парализована на пару часов, и ген. директор спросила: “Ребята, сколько это еще будет продолжаться?”, на что я ответил: “Когда завершится переезд”, а спустя сутки прислал более подробный ответ, описав то, что меня волнует в последнее время все больше и больше.
Зачем я это рассказываю? А затем, что моя история не уникальна. Кому-то эта статья даст пищу для размышлений, а то и подтолкнет к действиям. Кто-то поделится своим опытом, а кто-то в очередной раз порадуется, что у него в компании все намного лучше.
На данный момент все проблемы, возникающие в процессе переезда, связаны с плохой архитектурой, отсутствием систематизированного подхода к разработке (речь о самой методологии), а так же отсутствием должного тестирования продукта (проверить тыкаются ли нужные кнопочки – это уже заключительное тестирование, ему должны предшествовать автоматические и/или автоматизированные [1] тесты [2]).
Встав на путь создания движка и объектной модели в целом, у нас появилась возможность избежать выполнения накопившегося технического долга [3], однако, без внедрения современных методик (например [4] или вот [5]), я боюсь, что мы снова погрязнем в этом же через 5-7 лет. У компании, несомненно, далеко идущие планы, а текущие программные продукты это основные её инструменты.
Да, быть может через столько лет профиль и инструменты компании изменятся настолько, что проделанная работа станет неактуальной, но какова вероятность этого? MS Office’у(2003) больше 10 лет, а это такой же инструмент, как и тот продукт, что мы разрабатываем. Мне кажется, если ни чего не поменять – все повторится, и через несколько лет компания будет ходить по этим же граблям.
К сожалению, для внедрения практик, о которых я писал выше, потребуется больше временных ресурсов, т.е. больше разработчиков. Изменив процесс разработки, повысится его научная ценность, а как следствие — “интересность”. При нынешней обстановке на рынке IT-кадров соискатели выбирают один или несколько интересующих их факторов: Деньги, Интересные задачи, обстановка в коллективе (пруф [6] ниже)

Большие деньги в нашей компании — это навряд ли, хороший коллектив имеется, но это скорее удерживающий фактор, чем влияющий при приходе в новый коллектив, а вот интересные задачи — это как раз то, чем мы можем приманить толковых студентов олимпиадников на небольшие деньги (только на первое врем и относительно средней цены программиста по рынку) в хороший коллектив.
Однако стоит понимать, что дополнительные разработчики это не только прямые затраты (раб. место, з/п, соц. пакет, налоги), но и косвенные — молодого разработчика нужно ввести в курс дела, учить, просматривать его код, обсуждать модель, более того, вырастив толкового разработчика через год-два его нужно будет удержать.
Какие из этого всего можно сделать выводы? — Необходима реструктуризация процесса проектирования, а так же более глубокого обучения персонала и расширения штата. Как этого добиться, не сломав неокрепшую психику окружающим? Все изменения необходимо вносить постепенно, не ломая текущих бизнес-процессов.
Я выработал следующую стратегию:
Автор: Ascott
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/agile/38124
Ссылки в тексте:
[1] автоматизированные: http://en.wikipedia.org/wiki/Unit_testing
[2] тесты: http://en.wikipedia.org/wiki/Functional_testing
[3] технического долга: http://habrahabr.ru/post/119490/
[4] например: http://en.wikipedia.org/wiki/Agile_software_development
[5] вот: http://en.wikipedia.org/wiki/Test-driven_development
[6] пруф: http://habrahabr.ru/post/185208/
[7] MVC: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[8] Адаптер: http://habrahabr.ru/post/85095/
[9] Фасад: http://en.wikipedia.org/wiki/Facade_pattern
[10] Источник: http://habrahabr.ru/post/185742/
Нажмите здесь для печати.