Senior Software Engineer, Backend

Engineering - Hybrid

FishingBooker je najveća online travel platforma za rezervisanje ribolovačkih putovanja širom sveta koju je prošle godine posetilo preko 10.000.000 korisnika iz 100 različitih zemalja sveta. 

Još od 2013. u FishingBooker-u razvijamo sopstveni proizvod za svoje korisnike, potpuno autonomno, bez spoljnih investicija. To omogućava da radimo brz, iterativni razvoj uz čest deploy koda. Verujemo u kvalitetna rešenja, zdrave i otvorene ljudske odnose i mogućnost da se stalno napreduje.

Kroz redovne A/B testove i "data-driven" pristup, ostvarujemo pobede i donosimo odluke koji nisu bazirane na ličnim stavovima pojedinaca, već su potkrepljene činjenicama i brojevima. Svako ima priliku da učestvuje u definisanju pravca u kome će se proizvod razvijati, nezavisno od funkcije, vremena provedenog u firmi i sl.

O tebi

Ti si Senior, Lead ili Principal inženjer sa dosta iskustva u razvoju veb aplikacija i visokim standardima kvaliteta pri razvoju servisa i ostale infrastrukture. Jasno nam je da nećeš znati kako naši sistemi funkcionišu od starta i ne očekujemo to od tebe. Najbitnije od svega je da imaš dobar temelj opštih veština za razvoj softvera, tehnički dizajn, debagovanje i rad u timu. 

Ako poseduješ ove karakteristike, postoji velika šansa da ćeš se dobro uklopiti u poziciju:

  • 5+ godina iskustva u backend razvoju veb aplikacija.

  • Napredno poznavanje jednog ili više serverskih programskih jezika, poželjno PHP-a.

  • Sposobnost dizajniranja i implementacije visoko skalabilnih i performantnih backend sistema, uključujući keširanje, load balancing i tehnike optimizacije.

  • Dobro poznavanje koncepta baza podataka i iskustvo sa SQL i NoSQL bazama.

  • Ekspertiza u dizajniranju i izgradnji RESTful ili GraphQL API-ja, i razumevanje najboljih praksi za API-je, verzionisanje i bezbednost.

  • Poznavanje web server tehnologija, poželjno NGINX, kao i razumevanje konfiguracije i optimizacije servera.

  • Iskustvo sa cloud platformama, uključujući implementaciju i upravljanje aplikacijama u cloud okruženju.

  • Poznavanje tehnologija kontejnerizacije kao što je Docker.

  • Razumevanje principa bezbednosti backend sistema, uključujući enkripciju podataka, autentifikaciju, autorizaciju i zaštitu od uobičajenih bezbednosnih ranjivosti.

  • Dobre veštine timskog rada i komunikacije radi efikasne saradnje sa drugim članovima tima, zainteresovanim stranama i timovima sa različitim funkcijama.

  • Jaka sposobost samoorganizacije i prioritizacije obaveza.

  • Razumevanje struktura podataka i različitih pristupa rešavanja problema, kao i sposobnost za donošenje odluka na osnovu trade off-a.

  • Inženjerska diploma ili odgovarajuće iskustvo umesto toga. Diploma, idealno u računarstvu ili softverskom inženjerstvu.

 

Plata i uslovi

  • FishingBooker zapošljava softverske inženjere po principu ugovora o radu. 

  • Plata zavisi od nivoa senioriteta koji procenjujemo u odnosu na ostatak tima u FishingBooker-u.

  • Proaktivni smo oko deljenja plata, u skladu sa tim ispod možeš da vidiš raspone za svaku od pozicija, a da ne prolaziš kroz nekoliko krugova intervju procesa.

    • Senior Software Engineer: od 3400 EUR do 4.100 EUR neto

    • Lead Software Engineer: od 4.400 EUR do 5.300 EUR neto

    • Principal Software Engineer: 6.000 EUR do 7.100 EUR neto

  • Na svakih šest meseci ćeš od svog inženjering menadžera dobiti detaljan performance assessment sa jasnim instrukcijama kako da napreduješ dalje u okviru firme. Imajući to u vidu, imaćeš priliku za unapređenje i povišicu u skladu sa tempom kojim se razvijaš i standardnim rastom inženjerskih plata na tržištu.

  • Imaš slobodu da samostalno definišeš svoje radno vreme, dokle god ono dozvoljava dobru saradnju sa tvojim kolegama.

  • Prvih 6-12 meseci očekujemo da dolaziš u kancelariju 3-4 puta nedeljno.

  • 23 dana plaćenog odmora (do najviše 25 dana u zavisnosti od dužine staža provedenog u kompaniji).

  • Privatno zdravstveno osiguranje.

  • Pristup knjigama, treninzima i kursevima.

  • Apple MacBook Pro, uz Dell Ultrasharp monitor(e), i miš/tastatura po tvom izboru.

  • Ne moraš da budeš pasionirani ljubitelj pecanja. Ne moraš ništa da znaš o pecanju. Ali, imamo tradiciju da svake godine počastimo firmu ribolovačkim putovanjem.

O poslu

Pridružićeš se Platform timu, kao Senior, Lead ili Principal inženjer. Platform tim je zadužen za izgradnju i održavanje platforme i servisa na koje se oslanja FishingBooker proizvod i sve njegove funkcionalnosti.

Radimo u šestonedeljnim razvojnim ciklusima, koji su praćeni dvonedeljnim pauzama rezervisanim za planiranje narednog ciklusa, smanjivanje tehničkog duga i isprobavanje novih ideja. Imaćeš slobodu da radiš posao kvalitetno uz podršku kolega.

 

Platform tim u FishingBooker-u je zadužen za sledeće stvari:

  • Optimizacija FishingBooker sajta i aplikacija sa fokusom na brzinu i performanse.

  • Stabilnost sistema.

  • Postavljanje bezbednosnih standarda za ostatak kompanije.

  • Postavljanje i održavanje backend infrastrukture za funkcionalnosti koje product timovi koriste prilikom razvoja (Na primer: Infrastruktura za plaćanje, infrastruktura za A/B testiranje, itd).

  • Implementacija različitih tehnologija koje unapređuju razvoj i poboljšavaju perfomanse sistema.

  • Definisanje, validacija i evolucija načina na koji gradimo, testiramo i vršimo deploy koda u servisno orijentisanoj arhitekturi.

  • Učestvovanje u tehničkom dizajnu i kod review sesijama.

  • Identifikovanje i usavršavanje dobrih praksi za backend razvoj.

  • Upravljanje našom cloud infrastrukturom, kao i provisioning, deployment, monitoring i on call sistema.

  • Primena metoda za poboljšanje pouzdanosti i kvaliteta podataka.

  • Kombinovanje sirovih informacija iz različitih izvora kako bismo stvorili dosledne i mašinski čitljive formate.

  • Razvoj arhitekture koja omogućava ekstrakciju i transformaciju podataka za prediktivno ili preporučujuće modeliranje.

Karakteristike pristupa razvoju web aplikacija:

  • Tehnički “stek” je baziran na PHP/MySQL, uz podršku NGINX servera čijom konfiguracijom upravlja Docker.

  • Infrastruktura se nalazi na AWS platformi i njom pretežno upravljamo korišćenjem Terraform i Ansible alata.

  • Od tehnologija sa klijentske strane koristimo React za web i React Native za mobilne aplikacije. Takođe, imamo razvijen Style Guide koji je baziran na private npm paketima koji pružaju mogućnost korišćenja tema, tipografije i grid sistema, kao i deljene komponente poput plaćanja, prikaza cena, itd.

  • Za monitoring, pouzdanost i upravljanje incidentima koristimo mešavinu alata kao što su New Relic, Elasticsearch, PagerDuty i nekoliko tipova automatizovanog testiranja (Unit, API E2E, Selenium).

  • Ozbiljno shvatamo i temeljno pristupamo tehničkom planiranju i code review-ima za sve funkcionalnosti i infrastrukturu aplikacija koje gradimo kako bismo obezbedili njihovu dugoročnu održivost. Stremimo ka tome da uvek ostavimo kod u boljem stanju nego što smo ga našli prilikom svakog spajanja pull request-a.

  • Ne ostavljamo slučaju kakav će uticaj napravljene izmene imati na korisničko iskustvo i ne zasnivamo odluke na “osećaju”. Naprotiv, oslanjamo se na A/B testiranje, detaljnu instrumentaciju i pristup analitici za donošenje data-driven odluka. 

Da dobiješ ideju na čemu ćeš raditi, evo i nekih inicijativa na kojima planiramo da radimo:

  • Želimo da aplikacija bude implementirana prateći 12-factor app metodologiju kako bi bila portabilna i samim tim otpornija na otkaze. Postoji niz projektata i inicijativa koji nas vode u ovom pravcu.

  • Poboljšanje sistema za praćenje i analizu korisničke aktivnosti izmeštanjem podataka iz glavne baze u Snowflake, radi unapređenja performansi glavne baze i lakšeg rada sa velikom količinom analitičkih podataka.

  • Unapređenje monitoringa sistema, kroz bolje logovanje i efikasnije izveštavanje o incidentima kako bismo imali bolji uvid u greške koje nastaju i kako bismo brže reagovali i rešavali incidente.

  • Poboljšanje arhitekture i organizacije koda postojeće web aplikacije i širenje znanja i unapređenje praksi unutar tima.

  • Postavljanje mikroservisne infrastrukture i odvajanje pojedinih delove sistema u mikroservise radi unapređivanja performansi, lakšeg održavanja, povećanja autonomnosti product timova, i drugih benefita.

Radujemo se tvojoj prijavi! ✌️

 

Interested in applying?

We want to work with only the best engineers!

Before you apply, we have a riddle for you:

"The response header of this page will lead you towards the answer."