РУБРИКА
Dev Позиция: Full Stack Python Developer
Какви са изискванията за тази позиция?
Един Full Stack Python Developer участва в създаването и поддръжката на приложения, като това включва постоянна екипна работа с други програмисти, тестери, бизнес анализатори, а понякога и с крайни клиенти. Програмистът трябва да има знанията и опита, за да създаде висококачествен и надежден код, който да е лесен за поддръжка както от самия него, така и от колегите му.
Какви са отговорностите?
Full Stack Python Developer трябва да може да работи в екип, да приключва работата си в срок, да изтества кода, който е създал, да разбира изискванията по продукта, върху който работи. При работата по софтуерни продукти се налага да се правят code reviews, да се документират важни части от проекта и да се следват design approaches. Не на последно място, Python програмистът трябва да развива знанията си като проверява какви нови функционалности предлага Python, а и другите езици, как може да ги използва, какви други технологии би могъл да научи, за да са му от помощ, за да подобри нивото си на програмист.
Какви средства за разработка използваш?
В текущия си проект използвам Python като основен език за програмиране. Използваме C# за създаване на desktop widgets. Системата е голяма и използваме Messaging middleware, RESTful APIs, Redis за кеширане, SQL, HTTP протокола и много други средства, за да създадем софтуерния си продукт.
Има ли tool, платформа, service, който използваш, въпреки че виждаш проблеми в него?
Налага ми се да използвам Excel за дефинирането на определени тестови сценарии и функционалности в приложението. Проблемът, който ми създава, е разглеждането на предишни версии на Excel файлове. Има Version Control системи, които биха били доста по-ефикасни.
С какви други позиции в екипа/компанията има връзка (т.е. с кого пряко работи) Python Developer-ът?
Работата на един програмист е свързана с много комуникация с различните членове на неговия екип, както и с колеги от компанията. Процесът на разработка на един софтуерен продукт включва няколко основни звена – дефиниране на изискванията за продукта, създаване на план/архитектура на софтуерната система, след това нейното имплементиране, подходящо тестване и накрая доставяне на при крайния потребител. Един програмист, в частност Python Developer, има възможност да участва във всеки един етап от разработването, като за да се случи това, той трябва да работи заедно с Business Analyst, за да разбере изискванията, с QA-те, за да дефинират тестовите сценарии, с Team Leader по проекта, за да са координирани правилно задачите в екипа, със Support екипа, за да може да оправи проблем, възникнал при крайните клиенти и разбира се, с другите програмисти от екипа, за да създадат качествена и надеждна софтуерна система.
Какви са предизвикателствата, които срещаш?
При работата в голям екип, всеки програмист има различен стил на писане на код. Python дава голяма свобода как да се създаде определена функционалност. Предизвикателство е всички Python програмисти да следват определен стил при писане и затова е добре да има предварително дефинирани правила кое от езика може и не може да бъде използвано, и каква структура желаем да използваме.
Коя е най-трудната задача, с която се е сблъсквал?
В началото на обучението си се сблъсках с Test Driven Development approach-a. Концепцията гласи, че тестовете за дадено парче код се пишат преди самата му имплементация. Има три основни стъпки при използването на TDD:
- Пише се тест за несъществуващ код. Като този тест със сигурност не работи;
- Пишем изключително малко код, за да може тестът да минава;
- Кодът се рефакторира, за да се подобри качеството му;
Пречупването на мисленето, че първо трябва да пиша тестовете, а след това реалния си код по проекта, ми беше труден. Особено когато трябваше да напиша нещо лесно и доста очевидно, но с времето осъзнах как този подход ми гарантира чист, добре изтестван и качествен код.
Колко време отнема, за да се достигне до Senior ниво?
Предполагам, че поне 5-7 години. Аз самата смятам, че ми трябват поне още няколко проекта и различни езици и технологии, за да мога да стигна подобно ниво. За мен лично, за да си senior developer се изисква да не спираш да се развиваш и да трупаш обширен опит, за да може да помогнеш във всяко звено на проекта, в който работиш.
Колко души работят в твоя екип?
В момента екипът ми се състои от 10 души, от които 7 са програмисти, 2-ма QA и един бизнес анализатор.
Проектът, по който работиш?
Работя по международен проект, разработващ финансов софтуер. Процесът ни на създаването на системата включва постоянна комуникация с над 50 различни програмиста. Поради причината, че работим с финанси, надежността и качеството на продукта трябва да са на много високо ниво. За тази цел се залага много на тестването на всяко едно ниво – unit, component, integration, acceptance, performance и stress тестване.
Какви други умения са необходими, за да бъде добър професионалист?
Освен огромен стек от технологии и езици, на всеки му е нужен опит в различни проекти, с различни архитектури и интрументи. Но нека не забравяме и качества като комуникативност, лоялност, добро управление на времето и естествено желание и мотивираност за работа.
Каква е заплатата на един Top Python Developer?
Заплатата за един опитен специалист с Python е над средната за страната ни със сигурност. Но тя варира в зависимост от самото естество на работа, годините опит, както и от самата компания.
На кои въпроси трябва да може да отговори всеки кандидат за позицията Full Stack Python Developer?
Моето мнение е, че въпросите за Full Stack Developer, които трябва да се задават са общи и не зависят от конкретен език. Трябва да разбираш от ООП, от различни видове тестване, от структуриране на код, различни архитектури, бази от данни и много други неща.
Конкретно за Full Stack Python Devloper, очакванията ми са да си писал достатъчно код, за да знаеш какво са dunders, как се предават нещата по референции, как можем да направим променливите статични в един динамичен език като Python, как се имплементират decorators, generators, iterators. Мога да изброя и много други, но ще спра до тук.
А на кои въпроси трябва да може да отговори кандидат за обучение? Как се преподава Python? (за обучението)
Курсистите, които желаем да посещават „Programming 101 with Python“, трябва да ни покажат, че са мотивирани да учат и че искат да се развиват. Откъм технологична гледна точка задаваме въпроси свързани с основите на програмирането и със структури от данни и алгоритми. Основният ни “target” са хора, които са студенти или вече имат някакъв опит с програмирането, съответно трябва да могат да ни покажат, че имат добре положени основи.
Преподаването на Python е много интересно и понякога, естествено, е трудно. Отнема ми много време и усилия, за да си събера материалите за занятията, да си подготвя задачите и се изисква и много търпение от моя страна при работата с курсистите. Много често се въвеждат нови функционалности в езика и за да мога да се подготвя най-добре, трябва да съм запозната с новостите в Python.
Преподаването не е просто говорене пред група от хора. Според мен, един преподавател трябва да представя материала си с желание и да знае как да грабне хората. За да се случи това трябва опит, много подготовка и огромно желание да предадеш знанията на някого друг.