Последен шанс! Вземи regular билет за .NET Conf 2026 със 17% отстъпка с код NET17

+
Вход

Въведи своя e-mail и парола за вход, ако вече имаш създаден профил в DEV.BG/Jobs

Забравена парола?
+
Създай своя профил в DEV.BG/Jobs

За да потвърдите, че не сте робот, моля отговорете на въпроса, като попълните празното поле:

108-42 =

+
Забравена парола

Въведи своя e-mail и ще ти изпратим твоята парола

Пътят към автоматизирането на онлайн супермаркетите и отговорността на екипа, който е и product owner – разказва Павел Ненов, мениджър на екип в Ocado Technology

Павел е дипломиран индолог, програмист и мениджър на екип в Ocado Technology, компания, специализирана в разработката на роботизирани системи за целите на онлайн търговията. Интересува се от технологии още от механотехникума, а след като завършва Индология, започва да се занимава с QA, което постепенно отстъпва място на програмирането. Към днешна дата говори малко хинди и пише Android на Kotlin, a мениджърската му роля е резултат от ясно начертания му преди години и методично следван план да бъде team lead. В момента му е поверен растящ екип, който разработва Android native приложения, благодарение на които се минимизира фактора “човешка грешка” при избиране, пакетиране и натоварване на стоките, поръчани от крайния клиент онлайн.

Ocado Technology е глобален лидер в предоставянето на решения за автоматизация, позволяващи на супермаркети да оперират частично или изцяло онлайн. Собственикът Ocado Group пък притежава и 50% от най-големия онлайн супермаркет във Великобритания, поради което в групата имат много добро разбиране за проблемите на този тип бизнес. Използват широк спектър от интересни технологии да ги решават – cloud, роботика, AI, IoT. Дори миналата година компанията придоби два стартъпа в сферата на роботиката.

През 2018 компанията открива свой инженерен офис в София (след като от 2015 насам работи в партньорство с Questers), където в момента са заети повече от 120 души, изцяло отговорни за развитието на някои от продуктите на Ocado. Пример за такъв продукт е StorePick, система за обработване на онлайн поръчки в магазините, част от която е и Android приложение за направляване на персонала в избора на стоки в магазина. Павел работи именно за развитието на това приложение. Идеята на продукта е да направи процеса максимално автоматизиран, така че да остане минимално пространство за човешки грешки, а самото приложение съдържа доста голямо количество инструменти, подчинени на бизнес логиката на клиента.

Изминалата 2020 беляза началото на още по-бързия преход на бързооборотната търговия към онлайн пространството. Съвсем логично и търсенето на системи като тези на Ocado, и в частност продукти като StorePick, улесняващи прехода от изцяло физическото вчера към все по-автоматизираното утре, се засили. Затова и за Павел в момента водеща цел е да разшири екипа си с още хора, с които да си поделят предизвикателствата по разработката (виж актуалната позиция), и защо не – следработните бири. Какво правят с подробности и с какъв технологичен инструментариум, как са организирани екипите в Ocado, какви са добрите практики, които се следват и възможностите в компанията, ни разказва Павел Ненов.

DEV.BG: Владееш интересна комбинация от езици. Разкажи ни малко повече.

Павел: Недълго след като завърших Индология, започнах работа като QA, после постепенно минах към повече dev и по-малко тестване. Писал съм различни неща на Python, работил съм по симулацията на Ocado bots на Java, по firmware-a на роботите на C, сега пиша Android на Kotlin. Обичам да казвам за себе си, че не ме интересува технологията или езика за програмиране, а естеството на проблемите, които се решават и възможностите за лично и технологично развитие.

DEV.BG: Какво те доведе до ръководна позиция? Защо избра да се развиваш в тази посока?

Павел: Искам да участвам в създаването или в нашия случай – в поддържането – на самомотивиран, проактивен екип, който да движи промяната, а не да следва някого.
За мен това означава екип, в който всяко мнение да се чува и уважава, където всеки един човек да ръководи себе си, и не на последно място – където това, което правим да не е в разрез с това, в което вярваме. На лидерските позиции ми харесва това, че по-ясно се вижда голямата картина.

DEV.BG: Какви са като цяло възможностите за развитие в Ocado – вертикално и хоризонтално?

Павел: Може би в основата на всичко е, че ние насърчаваме професионалното любопитство и личностното развитие. Ако един човек прави това, процесът за вертикално развитие е естественият резултат. Както и за хоризонтално, всъщност. Ако искаш да смениш сферата и да станеш, примерно, dev от QA или UX от dev, това ще бъде насърчено. Рецептите за развитие, които имаме, се споделят с новопостъпилите едва ли не от първия ден. Аз приемам това като ясно съобщение, че не търсим хора, които да седят на едно място.
При нас също така смяната нагоре се случва с много прозрачен процес и честна и навременна обратна връзка от лийдове и екип. Работим заедно, за да се развиваме един друг.

DEV.BG: Над какво работите в момента с твоя екип?

Павел: Разработваме Android native приложение, чиито клиенти са големи вериги магазини. Приложението се използва, за да се събират в магазините продуктите, поръчани от крайния клиент, след което да се натоварят в бусовете за доставка. Процесът цели всичко да е възможно повече system driven, за да минимизира възможността за човешка грешка. Също така работим по оптимизация на процеса, така че да стане максимално ефективен. Имаме метрика – UPH или Units Per Hour. По този UPH работи отделен екип, който анализира данни и обмисля оптимални маршрути в магазина, комбиниране на подобни продукти/близки локации и.т.н с цел по-висок UPH. Приложението, върху което работим, не е типичен Android client, който визуализира данни, обработени и изпратени от сървъра. При нас има много бизнес логика на самото устройство, облечена в алгоритми, design patterns, event-driven бизнес логика, и разбира се – UI. Поддържаме много фийчъри и flow-ове, има много corner cases.

Днес те питаме…

Кое би улеснило избора ви между няколко оферти за работа?
Loading ... Loading …
DEV.BG: Ти какво намираш за най-интересно в работата си по този продукт?

Павел: Понякога ми е малко трудно да продам идеята за StorePick и колко всъщност вълнуваща и интересна технически е работата по него. Едно от нещата, които го прави интересен е, че в момента е много ключов за компанията продукт и има много за подобряване по него в сравнение с други по-узрели продукти. Откакто стана толкова ключов продукт, едно от големите ни предизвикателства е как да адресираме технически промени, докато развиваме продуктови неща.

DEV.BG:Какви са техническите предизвикателства? Какви са интересните казуси, с които се борите?

Павел: Технически най-интересното нещо, което се опитваме да правим е да мигрираме event-driven архитектурата на нашия предимно Java app към Kotlin и по-модерна архитектура, следваща добрите практики от Google. Всяка нова разработка правим на Kotlin и се стремим да се доближаваме към новите стандарти на Google. Това се случва, докато фирмата подписва договори с нови клиенти, които идват със своите изисквания за промени и нови фийчъри. Тези фийчъри означават комуникация с UI UX дизайнер, комуникация с другите екипи, технически дискусии.
Тук може би е интересно да спомена, че всеки един нов фийчър при нас не е задача, която се спуска, за да се накоди. Неслучайно нямаме product owner, а product manager. Tова означава, че екипът е owner на продукта и ние имаме думата относно какво, как и защо ще се направи, можем да върнем requirements за преразглеждане към клиента, можем да създадем requirements, които да се задвижат и да прераснат във фийчъри.

DEV.BG: Всъщност StorePick отделът е изцяло в България. Как изглежда твоят екип и как си взаимодейства с други екипи в отдела?

Павел: Екипът ни се състои от петима програмисти, включително мен. Имаме product manager и UX designer, с които работим и са част от екипа, макар и формално да отговарят пред друг мениджър. В целия StorePick отдел ние сме един от общо четири екипа. Има още екип от десетина програмисти, занимаващи се с backend на Scala, още един front-end екип от шестима души, които пишат на TypeScript/React, и Data Science екип от четирима.
Четирите текущи екипа работят и взимат много решения автономно, но много синхронизирано един с друг. Фийчърите, които разработваме заедно се обсъждат от представители на всички замесени екипи, а разработването им се осъществява с проактивна и продуктивна комуникация. Не съществува разделение, всички работим с една цел.

DEV.BG: У вас е и изцяло отговорността за продукта и качеството му. Разкажи ни за добрите практики, които следвате в работата си?

Павел: Едно от нещата, което си струва да кажа, е че ние изключително много държим на качеството и отсъствието на бъгове. Всяко едно code review при нас се прави внимателно. Не само за стил и синтаксис, а и за бизнес логика. Интересно за нашия екип и отдел е, че ние нямаме QAs. Отговорните за добре изтествания код сме си ние. Имаме разработен от нас integration test framework, базиран на Espresso и никой фийчиър не се счита за завършен без да е покрит както с unit тестове, така и с UI тестове. Това ни е част от Definition of Done.

DEV.BG: Какъв tech stack използвате?
Павел: Java, Kotlin, Coroutines, MVVM, LiveData, Sqlite, Room database, Espresso test framework JUnit, Firebase, Gitlab CI. Имаме нова, мощна лично наша машина за CI в офиса, със специален шкаф и UPS, както и почти всички физически устройства, на които се предполага, че трябва да върви нашето приложение.

DEV.BG: Какви са методологиите, срещите и ритуалите в екипа ви?

Павел: Работим по Scrum, на който сме извили ръцете така, че е най-ненатоварващ откъм церемонии за екипа. Имаме спринтове от по две седмици, daily, което в последно време е придобило по-социално ориентиран формат от обикновения делови такъв.
В Ocado като цяло вярваме в колаборацията като водещ принцип на компанията, така че всеки е на разположение за ad hoc срещи за дискусии, мнение, съвети. Често някой с въпрос би пратил google meet линк в Slack канала и който иска може да дойде да даде мнение, настроение, или просто да слуша, докато си цъка по задачите.

DEV.BG: Как поддържахте екипния дух през последната година?

Павел: От една страна, при нас е съвсем обичайна практиката да останем дори след daily и да си поговорим за чисто човешки и неработни неща. В интерес на истината сме се опитвали да се виждаме на живо, доколкото обстановката позволява. Просто, когато си имал възможност да се видиш с някой на по бира и да си поприказвате глупости, после и работата ви върви по друг начин. Веднъж ходихме да правим френски макарони, което си беше забавно.

DEV.BG: Макар, че беше предизвикателство за поддържането на екипната култура, remote режимът се оказа и доста удобен. Как стои въпроса с гъвкавото работно време и присъствието в офиса след пандемията?

Павел: В Ocado много държим на work/life balance. Наистина много. Гледаме да сме на линия, когато имаме срещи, дискусии или нещо, което да изисква присъствие, но, ако примерно някой е фен на сиестата и иска да почива от 2 до 4 – няма проблем. Това важи и за лични задължения – никой не иска да си пуска отпуска за смяна на паспорт, гуми или защото иска да тръгне по-рано за морето.
В момента работата ни е изцяло от вкъщи. Който иска, разбира се, може да работи в офиса. След пандемията ще се стремим да направим смесен вариант – вкъщи и в офиса, като лятото и зимата ще има възможност за няколко седмици работа “от вкъщи”.

DEV.BG. И последно, какъв човек търсите за екипа си (извън техническата характеристика)?

Павел: Най-общо си търсим човек, с когото да искаме да работим, така да се каже, и той/тя да ни хареса като екип и да иска да работи с нас. Търсим някой, който да може да работи автономно, но колаборативно, който да иска да учи и пробва нови неща и да не го е страх от грешки – ние се учим от грешките си, и колкото по-рано ги направим – толкова по-бързо ще се научим.