*Текстът е предоставен от Scalefocus
Разговаряме с Атанас Христов – Delivery Manager в Scalefocus. Наско, представи се.
В компанията съм почти от самото ѝ създаване – вече над 11 години. Началото на кариерния си път в Scalefocus започнах като Senior Integration Developer с Java и Java базирани proprietary решения като IBM Websphere ESB, webMethods, TIBCO, както и open source такива. През годините преминах през различни роли и поех разнообразни отговорности, които допринесоха много за професионалното ми развитие. Наученото на всяка една стъпка досега е изключително полезно в настоящата ми роля на Delivery Manager.
Разкажи ни за ролята и отговорностите като DM в в Scalefocus?
Ролята на Delivery Manager в Scalefocus е ориентирана най-вече към клиента. DM-ът e човекът, който е пряко отговорен за това клиентът да е удовлетворен от работата, свършена от екипа, и доставеното софтуерно решение на конкретен бизнес проблем. Разбира се, позицията включва и отговорности, свързани с изграждането, организацията и контрола на работата на development екипа, както и не на последно място – със сплотяването му, изграждането на доверие и насърчаването на колаборацията вътре в него. Именно това са нещата, които се отразяват пряко на delivery резултатите.
Какви предизвикателства срещаш в тази роля и как ги преодоляваш?
Управлението на множество проекти е свързано с доста честа смяна на фокуса и контекста и едно от нещата, които най-много ми помагат, е правилното структуриране на екипите и подходящото разпределение на отговорностите вътре в тях. Една добре изградена структура от хора с правилните знания, умения и мотивация помага много за това DM-ът да има винаги актуален контекст и информация за статуса на всеки един от проектите, както и за конкретните пречки, които съществуват във всеки един момент. Колкото до инструментите – това са най-вече добре познати похвати за комуникация (Teams, Zoom, Mail), както и такива за управление на проекти и source code като Jira, Azure DevOps, GitHub и други.
Как следиш/подсигуряваш качественото и навременно изпълнение в delivery процеса?
Качественото и навременно изпълнение е пряко свързано с качеството на хората в екипа, отдадеността им към постигане на успех и страстта им за разрешаване на бизнес проблеми с помощта на модерни софтуерни решения. Разбира се, само това не е достатъчно и тук на помощ идват следването на добрите методологии, практики, процеси и тяхната автоматизация. Някои от тях, които е важно да бъдат споменати и спомагат именно за качественото и навременното изпълнение, са Agile, SAFe, автоматизирани процеси по CI/CD, Code Review, Static Code analysis и други.
Как си сътрудничиш ефективно с други заинтересовани страни, участващи в delivery процеса?
Сътрудничеството с други заинтересовани страни или така наречените stakeholder-и е многопластово и се изразява основно в комуникация, поставяне на цели, споделяне на прогреса и постигнатите резултати и разрешаване на конкретни пречки, които биха могли да блокират или забавят delivery-то.
Едно от основните неща, които позволяват ефективното сътрудничество на DM-a с всички заинтересовани страни, е способността му да „говори езика“ на всяка една от страните – development team, бизнес потребители, мениджмънт, финанси и така нататък. Доброто разбиране на бизнес домейна на клиента и delivery процеса в пълнота позволява на Delivery Manager-a да съобразява всяко едно важно решение с интересите на всяка една от страните и в крайна сметка да намери балансиран подход за разрешаване на конкретната ситуация, но винаги с крайната цел да се изпълнят качествено и навременно изискванията на клиента.
Как се справяте с потенциални закъснения или пречки, които могат да възникнат по време на изпълнението на проекта? Можеш ли да дадеш пример за предизвикателна ситуация, с която сте се сблъсквали, и как сте я разрешили?
Обикновено проблемите, които един DM решава на дневна база, са концентрирани около един или няколко от основните аспекти на всеки проект – екип, бюджет, обхват, график, технически предизвикателства и рискове. Най-добрият начин за справяне със закъснения или други технически или нетехнически пречки е тяхното предварително предвиждане и отчитане като зависимости и рискове. Това позволява на ранен етап да се прогнозира вероятността за възникване на тези проблеми, а също така и да се състави план за тяхното разрешаване в случай, че не могат да бъдат избегнати.
Най-често предизвикателните ситуации, с които се сблъскваме, са промени в обхвата на проекта по време на разработката или промяна в приоритетите на различните функционалности, които трябва да се имплементират. Въпреки това, конкретният пример, който бих искал да дам, се отнася за предизвикателство от друг тип, с което се сблъскахме в един от проектите наскоро и разрешаването на което донесе голямо удовлетворение от работата – както от страна на клиента, така и от страна на екипа.
Клиентът поиска от нас и няколко други технологични партньори да предложим идеи за подобрения на тяхното приложение чрез използване на някоя от модерните технологични концепции за Data Science, Machine Learning и AI.
Благодарение на отличното познаване на бизнес домейна от страна на екипа и интереса им към новите течения в софтуерната индустрия, както и чрез привличането на Data Science експерт с необходимия опит в екипа, успяхме само в рамките на месец да доставим и демонстрираме функциониращ прототип, който беше приет от страна на клиента като най-доброто предложение за подобрение и беше одобрен за последваща разработка.
Какви показатели или ключови показатели за ефективност (KPI) проследявате, за да измерите успеха? Как използвате тези показатели, за да стимулирате подобрения?
Показателите са много, но някои от основните, които проследяваме, са удовлетвореност на клиента (customer satisfaction), продуктивност (обем на доставените story points), code review метрики (брой ревюта, средно време на едно ревю), покритие на unit тестовете, гъстота на дефектите (defect density) – среден брой дефекти на всеки 50 или 100 story points доставени функционалности.
Всеки от тези показатели спомага за точното проследяване на ефективността, качеството на работата или продуктивността на екипа и позволява да се предприемат действия за подобряване на резултатите, в който и да е от тези аспекти, ако се забележи изоставане.
Да поговорим за оптимизиране на работния процес и рационализиране на delivery услугите. Внедрили ли сте инструменти за автоматизация или управление на работния процес?
Да, разбира се. Без подобни инструменти работата би била значително по-трудоемка и съответно продуктивността и ефективността на Delivery Manager-a биха били доста по-ниски. В Scalefocus използваме специализирано решение за Professional Services Automation, което улеснява значително управлението на delivery услугите и процесите.
Как се справяте с обратната връзка и ревизиите по време на delivery процеса? Можете ли да опишете Scalefоcus подход към ефективното управление на промените и итерациите?
Не бих могъл да кажа дали подходът ни за справяне с обратната връзка и управлението на промените и итерациите е ексклузивен за Scalefocus , но смея да твърдя, че той е ефективен и насърчава изграждането на култура на постоянно подобрение по време на цялостния жизнен цикъл на проекта.
Подходът се състои основно в следните няколко стъпки:
• Установяване на ясни комуникационни канали за получаване на обратна връзка от страна на клиента, крайните потребители, а също така и вътрешно от страна на всички членове от екипа. Тези канали биха могли да са от всякакъв тип – email, инструменти за управление на проекти (Jira, ADO etc.), различни платформи за колаборация, регулярни срещи или дори чат канали.
• Документиране и приоритизиране на обратната връзка
• Ангажиране и въвличане на всички заинтересовани страни в процеса по събиране на обратната връзка, посредством редовно търсене на тяхното мнение, свързано с предложени промени или решения.
• Използването на система за контрол на версиите и отбелязване на промените по кода.
• Следване на Agile подход, който включва регулярни итерации или спринтове. Това позволява на екипа регулярно и сравнително бързо да адресира получената обратната връзка и итеративно да доставя подобрения на софтуерния продукт или услуга през целия процес на разработка.
• Имплементиране на CI/CD (Continuous Delivery and Continuous Integration) pipeline-и за автоматизиране на процеса по build, test и deployment. Това значително улеснява бързото завършване на всяка итерация и безпроблемната интеграция на промени в софтуерното решение, което се доставя.
• Автоматизирано тестване и контрол на качеството – първото осигурява увереност при извършване на промени и намалява риска от непредвидени последствия.
• UAT (User Acceptance Testing) – това е много важна стъпка, която се изпълнява с участието на заинтересованите страни и най-вече с клиента. Гарантира, че доставяното софтуерно решение покрива очакванията му и подсигурява това, че обратната връзка е била адресирана адекватно.
• Управление на Release и Deployment процесите – контролирането на release-ите, посредством следване на предварително установен release процес, помага да се избегне объркване и гарантира, че правилната версия на софтуерното решение е deploy-ната на съответните среди.
• Post-Release мониторинг – проактивното продължително мониториране след release позволява на екипа бързо да отговори на потенциални проблеми и да ги адресира своевременно.
• Ретроспекция и отчитане на научените уроци – провеждането на редовни ретроспекции след всяка итерация или проект дава възможност за подобрение и пренасяне на научените уроци в бъдещи проекти.