Свилен Савов работи в Сайънт от година, а в края на 2020 г. става Line Manager – DevOps Team. Притежава над 20 години опит в IT сферата и е работил за DXC Technology и Hewlett-Packard.
Димитър Андреев е в компанията от три години, като от 2019 г. е на позицията Technical Тeam Lead. Преди това е бил .NET Developer и е разработвал интеграционни решения за туристическата индустрия и хотелиерството.
Двамата разказват за опита, който продължават да трупат в Сайънт, най-големите предизвикателства, с които се сблъскват и принципите, от които се водят ежедневно в своята работа.
Бихте ли се представил накратко?
Димитър: Сайънт (Sciant) е вторият ми работодател. Работя в компанията от три години. Занимавам се с програмиране от около 5 години, през които имам опит с frontend, backend и devops. Писал съм игри, „умни договори“ (smart contracts) върху Етериум, правил съм пенетрейшън тестове на програми. Създавал съм класически монолитни MVC приложения, както и много системи, базирани на микросървиси и изкуствен интелект.
Свилен: Имам над 20 години опит в IT сферата на различни позиции в различни компании, започвайки още като ученик от най-ниското ниво – с личен Linux рутер/сървър, кабелен модем и 500 метра UTP кабели, през които споделях своя интернет със съседите си. Местният LAN доставчик забеляза това и ми изпрати покана за работа. След това работих в няколко различни фирми докато се спра на HP->HPE >DXC, където работих сумарно над 9 години като Linux/UNIX TS Еngineer, Team Technology Lead и Project Manager. В Сайънт започнах на 1-ви Април (не е шега!).
Кой е най-интересният аспект от работата ти и по какъв проект работеше в момента?
Димитър: Безспорно най-вдъхновяващото за мен са архитектурните решения, които трябва да се вземат при построяването на дадена система: какви компоненти ще са включени, как ще общуват помежду си, какви са ограниченията и как ще скалират. Проектът, по който работя в момента, е свързан с прехода на вече изградена система (интеграция на отделните партньори в хотелиерската индустрия) към вътрешната ни единна платформа за мониторинг и инфраструктурна автоматизация.
Свилен: Най-интересният аспект е постоянното развитие на технологиите, позволяващо нови подходи за справяне с дадените проблеми. Като пример мога да дам огромния дял на облачната инфраструктура в текущите ни проекти, използването на Docker/Kubernetes, писането на код за инфраструктура (IaC) с Terraform и Ansible.
В кои индустрии имаш опит и какви проблеми разрешаваш ежедневно?
Димитър: Откъм софтуерна страна имам опит в две индустрии – автомобилната и хотелиерската, като разликата е главно в подхода на писане на код. Също така, ако с времето не се променя начинът, по който пишеш код, това е сигурен знак, че не се развиваш. Затова и приветствам ежедневните трудности от всякакво естество – от борба с по-завъртян синтаксис, през неоткриваеми бъгове, до проблеми с комуникацията.
Бих искал да обърна внимание и на важността на клиента и ролята му в развитието на нашите умения. Мога да дам за пример текущия ми проект, в който клиентът поиска да преместим цялата инфраструктура в негов AWS акаунт. Беше голямо предизвикателство да комуникираме по правилен начин с клиента, ръководителя на проекта и екипа по поддръжка, така че накрая на деня проектът да е завършен професионално и в срок. Решихме да интегрираме и използваме инструмент като Terraform, който много ускори процеса.
Свилен: Имам опит с IT проекти, свързани с онлайн банкиране, спортни залози, логистика в хранителния и хотелиерския бизнес, главно в частта с изграждане, интеграция и поддръжка на корпоративни инфраструктурни сървъри (традиционни, както и cloud-базирани). Проблемите са свързани основно с постигането на оптималния баланс между компонентите в една инфраструктурата, така че да се покрият изискванията на проекта – често един проблем може да бъде решен по различни начини, като всеки един си има предимства и недостатъци.
По какъв начин обменяш опит с останалите си колеги?
Димитър: Харесвам да обяснявам, но съм установил, че не е полезно за другите. Предпочитам да предавам опит, като хвърлям човека в дълбокото. Така въпросите изникват по естествен път и той/тя сам намира своето разбиране за нещата. В това много помагат и изградените процеси за качване на код, които имаме. Отделно в компанията се организират ежемесечно така наречените SciTechTalks, на които колегите споделят какво са научили или какво решение на проблем са открили.
Свилен: Това е постоянен и ежедневен процес във фирмата и нашия отдел. Въпреки че работим по различни проекти, ние сме доста сплотени и постоянно обменяме опит и идеи помежду си. Разпределяме си нещата, които трябва да бъдат разучени и след това споделяме наученото под формата на презентация или вътрешен TechTalk (на който са поканени всички колеги) и отговаряме на въпросите, похапвайки топла пица в някоя от конферентните зали. Един от последните SciTechTalks се отнасяше до някои тънкости в
Docker, а този за IaC/Terraform проведохме заедно с Димитър. Последният беше посетен от много колеги – все по-голяма част от тях използват Terraform поради изграждането на вътрешната ни обща платформа за Managed Infrastructure Services (MIS).
Какви са иновативните технологии и проекти, по които работиш? Как се развиваш/обучаваш?
Димитър: Не съм привърженик на обожествяването на така наречените „иновации“. Да, важни са и улесняват работата, но само ако преди това има разбиране как да се използват по правилен начин. Технологията или езикът, които се ползват, са от второстепенно значение. По-важни са принципите: как пишем качествен код, как пишем тестове, кога усложняваме ненужно и кога опростяваме необосновано. Едно от местата, където намирам интересни материали и нови подходи, е YouTube.
Свилен: Както вече споменах, има различни начини да се реши даден проблем в свят изграден от нули и единици. Работата по всеки проект, измислянето на малко по-различни похвати, използването и интегрирането на малко по-различни компоненти обогатяват знанията ми постоянно. За пример мога да дам проектите ни от MIS платформата, които имат много сходства помежду си, но и всеки е съобразен с изискванията на клиента.
Кои са едни от най-големите ти технологични предизвикателства, с които си се сблъсквал по време на работата си в Сайънт?
Димитър: Като конкретен пример мога да дам един монолитен проект, който бяхме наследили, в Travel & Hospitality сектора. Кодът беше много навързан, без тестове, и промени бяха почти невъзможни. Всички дългосрочни технологични проблеми се дължат на некачествено написан код, а не на някой нов framework или език – тези неща се научават. Когато кодът се съпротивлява и трябва да правиш „хакове“, за да заработи системата, означава, че има генерален проблем в логиката на писане на код и са нарушени основни принципи.
Свилен: Една от първите ми сериозни задачи в Сайънт беше да напиша инфраструктурен код за вече изградена и работеща среда (отново част от MIS), състояща се от над 400 компонента в „облака“ на AWS. Беше наистина голям и тежък проект.
Как ги разреши?
Димитър: Лека-полека преместихме проекта на микросървиси под Kubernetes. При остарели монолитни решения нещата трябва да стават поетапно.
Свилен: Получих огромна поддръжка от Митко и останалите колеги и заедно успяхме да оптимизираме и подобрим значително средата и съответно кода. Мисля, че и двамата научихме много нови неща покрай тази задача, а от друга страна клиентът остана изключително доволен от свършената работа, защото това му позволи да премества цялата среда в произволен акаунт за изключително кратко време.
Кои са основните принципи, които прилагаш в работата си?
Димитър: Първото, което работи за мен, е винаги да казвам нещата такива, каквито са. Това означава да не се опитвам да подминавам или крия проблемите от екипа/мениджъра, а да ги ескалирам своевременно. По този начин се развивам професионално и изграждаме доверие помежду си.
Свилен: Опитът ме научи, че добрата комуникация с колеги и клиенти е от ключово значение, наравно с техническите познания. Под „добра“ визирам това да мисля постоянно от какво по-точно се интересува другата страна (PM, клиент, колега от друг екип), за да мога да формулирам по-добре въпросите и отговорите си и така фокусът да е на правилното място.
Какво би посъветвал всички, които сега започват да се занимават с програмиране?
Димитър:
- Направете си Github акаунт и качвайте всичко там;
- Избягвайте условна логика и пишете математически чисти функции, ако/където е възможно;
- Приемайте възможностите за учене с охота.
Свилен:
- Правете чести бекъпи на кода, дори и всичко да ви е качено в Git;
- Водете си записки на централно и достъпно място (OneNote, Evernote или други подобни) за по-интересните проблеми и решенията им, както и като цяло за всяка технология с която работите или за която учите;
- Няма как да запомните всяка команда или функция, но запомнете че има такава – намирането й след това е лесно;
- Докато пишете код мислете какви въпроси биха възникнали, ако ваш колега го чете или какво бихте искали самите вие да му разясните – в този случай ще е чудесно просто да сложите коментар в самия код.