Dacă ești programator și te întâlnești cu sintagma industrie financiară, mai mult ca sigur că vei face conexiuni cu inteligența artificială, statistică sau pur și simplu cu white collars. Dar e bine de știut că industria artificială este mai mult de atât. Această industrie oferă un context propice, unde poți crește și pe plan tehnic dar și ca bun specialist în domeniul financiar. Te expune la experiențe variate, la tipologii umane și profesionale diverse și la foarte multă informație nouă.
Lângă aceste avantaje, le adăugăm și pe acelea de a aplica ultimele tehnologii și de a crea cei mai rapizi algoritmi.
În rândurile următoare vom realiza o scurtă descriere a tradingului și a produselor software pe care acesta se bazează.
Știm că în domeniul financiar nu e totul despre algoritmi, low latency și high frequency - acestea sunt aspecte importante, dar e nevoie și de big data.
Nevoia de raportare și de conformitate a crescut în importanță și nivel de muncă atribuit. Noile reguli și reglementări implementate de Uniunea Europeană odată cu a două etapă a MiFID (Markets in Financial Instruments Directive) intrate în vigoare la începutul anului 2018, implică creșterea exponențială a importanței acordate produselor destinate acestei zone. Activitatea poate fi reglementată și monitorizată folosind aceste produse, mutând în responsabilitatea firmelor de trading implementarea acestora.
Alt aspect demn de luat în calcul în acest domeniu, este că nu totul e despre aplicațiile care ajută la efectuarea tranzacțiilor, pentru că o multitudine de date trebuie colectate și procesate înainte ca activitatea propriu-zisă să poată avea loc. Iar după ce tranzacțiile au confirmat datele, rezultate vor fi folosite la generarea nenumăratelor statistici și rapoarte, calculi de risc, analiza activității și alte procesări ulterioare. Sunt nenumărate reguli de respectat și directive de urmat.
Când lucrezi într-un domeniu atât de specializat ca și tradingul, trebuie să ai în vedere cum vor fi folosite produsele construite de tine și pentru ce. Cu cât mai bine înțelegi fluxul care duce la nevoia inițială a aplicației, cu atât mai ușor și mai rapid vei putea să analizezi și să produci un produs bazat pe nevoile persoanelor din business (traderi, manageri de risc etc.).
Trebuie mereu să ai în vedere noile schimbări din domeniu și să fii atent la posibilele dezvoltări ulterioare. E ca și cum ai adopta un nou domeniu, pe lângă cel al dezvoltării software, pe care să îl integrezi și pentru care să îți ajustezi cunoștințele personale.
Când lucrezi în domeniul acesta, întâlnești provocări la fiecare pas, începând cu cele tehnice și terminând cu unele specifice domeniului. Dintre acestea menționăm:
Când lucrezi ca programator în acest domeniu, te lovești de o multitudine de date provenite din foarte multe surse și de mărimi variabile. Trebuie să fii pregătit să lucrezi cu big data, să normalizezi date și să te ocupi de inconsistența lor.
Big data poate fi folosit în nenumărate feluri: să ajute traderii să facă predicții și să fie mai eficienți în generarea de rapoarte și statistici, să ajute managerii de risc să analizeze impactul diverselor schimbări, oferindu-le un produs bun de software, care poate fi folosit ușor și eficient în vederea optimizării. Apoi big data poate fi valorificat și de către departamentul de dezvoltare business pentru a îmbunătăți partea de execuție a trade-urilor și pentru a optimiza portofoliile etc. .
Aplicațiile care fac tranzacționare trebuie să fie rapide, dar viteza nu e totul. Acestea trebuie să fie performante și prin raportare la memoria consumată sau la monitorizare. Pe de altă parte, toate aplicațiile trebuie să fie reliable, și, deoarece investițiile pot prezenta un risc mare, un proces de disaster recovery trebuie ca în fiecare moment să știm cum stăm și cum putem gestiona cât mai eficient orice potențial pericol.
Pentru a asigura un produs, programatorii din domeniul financiar trebuie să facă echipă bună cu inginerii de sistem. Pentru a asigura nevoile produselor software, micile ajustări de hardware sunt la fel de importante ca un algoritm eficient. Comunicarea dintre programatori și inginerii de sistem poate aduce multă valoare adăugată, iar cunoștințele împărtășite pot ajuta la îmbunătățirea constantă a nivelului de senioritate a unui programator.
Măsurarea performanței sistemelor și identificarea bottlenecksurilor pot aduce la fel de multă valoare ca și designul unei arhitecturi puternice pentru aplicații. Modificarea părților de sistem pentru a elimina verigile slabe, precum și măsurarea constantă a performanțelor după asemenea modificări e prioritară în păstrarea competitivității și crearea unor aplicații puternice și reliable.
Dacă un algoritm este eficient și face bani sau economisește bani, atunci experiența utilizatorilor cade pe un loc secundar. În acest domeniu nu este suficient să prezinți o interfață atrăgătoare, în schimb aplicația trebuie să își facă treaba și trebuie să te poți baza pe ea. La fel, trebuie să fie ușor mentenabilă. Acest aspect este esențial de luat în calcul când cineva alege acest domeniu.
Calitatea produselor are deseori impact direct în profitul posibil sau în pierderile posibile într-o companie de trading. Din acest motiv sunt folosite o multitudine de tehnici pentru a îmbunătăți performanța, ca și optimizarea codului, balansarea încărcării, strategii de caching, calcule distribuite, ajustări de finețe, astfel ca atenția unui programator va fi automat îndreptată înspre aceste aspecte, mult superioare ca importanță creării unei interfețe frumoase.
E un domeniu în care va exista mereu competiție. Aceasta este singura constantă. Din momentul în care traderii erau fizic în încăperea bursei, strigând pentru a fi primul care profită de una sau alta dintre oportunitățile pieței, pana in prezent, când fiecare se grăbește sa fie primul care observă o anomalie a pieței, sau o potentială oportunitate de a face bani.
Acest stil rapid necesită și reacții mai rapide din partea programatorilor implicați, astfel că aceștia trebuie să poată înțelege nevoile în avans și să propună soluții creative pentru potențiale oportunități viitoare.
În domeniul tradingului, o aplicație care a fost bună astăzi s-ar putea să fie inutilizabilă mâine, deoarece situațiile se schimbă rapid. Trebuie să fii în fiecare moment pregătit să îți îmbunătățești, alteori chiar să rescrii aplicațiile de la zero, trebuie să te reorientezi pentru a acorda managementului libertatea de a jongla cu prioritățile, astfel încât businessul să prospere.
Este o cursă permanentă pentru a fi primul pe piață și primul ieșit de pe piață dacă lucrurile merg rău. În programare, să faci lucrurile mai bine în fiecare zi, merge mână în mână cu dezvoltarea personală. Ca programator trebuie să fii motivat de provocările care pot apărea din diverse părți ale companiei, cea mai importantă provocare fiind aceea de a înțelege din punct de vedere tehnic nevoile colegilor din business. Lista de skilluri pe care trebuie să le dezvolți este extensivă și include interesul arătat pentru domeniul financiar, ca punct obligatoriu de plecare pentru a putea avea succes. La fel și interesul pentru tehnologiile inovatoare și noi modalități de abordare a arhitecturilor, deoarece acestea sunt vitale. În același timp, este necesară și capacitatea de a anticipa dincolo de primul deliverable, modul acestuia de a scala și de a putea fi ajustat pe viitor etc. .
În acest domeniu trebuie să fii pregătit să gândești în afara patternurilor și să ai disponibilitatea de a reconsidera constant aplicațiile, procesele și rezultatele. Când intri într-o firmă de trading ca programator, e important de conștientizat volatilitatea acestui domeniu. Specific
Pentru companiile de trading se estimează că cinci ani de experiență în companie (excluzând experiența anterioară, considerând doar experiența în domeniul financiar sunt suficienți pentru a deveni un programator senior capabil să se adapteze ușor noilor așteptări și provocări.
Ca programator este important să ai acces și la imaginea de ansamblu din spatele micii bucăți de cod pe care o scrii. Poți avea acces la aceasta, dacă deții un nivel rezonabil de cunoaștere a ceea ce presupune specificitatea domeniului financiar. Doar așa vei putea empatiza mai bine cu utilizatorii finali ai aplicațiilor tale, adică te vei putea adapta mai bine la așteptările lor.
Acest domeniu oferă programatorului o multitudine de avantaje.
Crearea de aplicații performante este un obiectiv pe care și-l doresc împlinit toți programatorii. Găsirea celor mai bune metode care să crească nivelul de calitate a codului și gradul de competitivitate a aplicațiilor software presupune o reală angajare din partea programatorului, dar care aduce avantaje majore profesionalizării sale.
Înțelegerea nevoilor celor din business și a imaginii de ansamblu
A-ți manifesta curiozitatea și deschiderea în fața lumii "ascunse" din domeniul financiar, echivalează cu a te menține motivat și mai dornic ca aplicația la care lucrezi să servească în mod real celor care au nevoie de ea. De aceea, fii la curent cu știrile din domeniu financiar, încearcă să vezi lucrurile din perspectiva acestuia și îți vei ameliora în mod cert aptitudinile analitice necesare perfecționării aplicațiilor.
Deoarece e un domeniu în care schimbarea e la tot pasul, scenariile de recuperare în caz de dezastru sunt tot timpul luate în considerare. În general, aceste scenarii sunt acoperite tehnic, dar e la fel de important să fim pregătiți să acoperim și celelalte aspecte neluate în considerare.
Unul dintre aceste aspecte este suportul acordat de către programatori și nevoia de a acoperi o varietate mare de aplicații în lipsa colegilor responsabili de ele. De asemenea, prioritățile se pot schimba, iar colaborarea și munca în echipă sunt fundamentale, astfel ca fiecare să-și poată aduce contribuții la valoarea echipei. Mai mult, acest fel de environment te ajută să îți dezvolți latura socială. Apoi, poți învăța să colaborezi mai ușor cu toți colegii, chiar și cu oameni de business, reușind să ai acces la nevoile lor ințiale.
Deși există întotdeauna necesitatea de a îmbunătăți și rafina software-ul pentru a obține rezultate excelente, în acest domeniu este ușor să crești și să înveți lucruri și tehnologii noi. Aici, programatorii dețin marele avantaj de a fi într-o lume în continuă schimbare (lumea financiară), care are efecte pozitive asupra dezvoltării personale a programatorului.
Un alt punct forte pentru a fi programator într-o companie financiară, unde performanța este o necesitate, este faptul că, întotdeauna vor exista programatori cu experiență de la care poți învăța, cu care poți lucra alături. O interacțiune cu un "coding guru", care nu este foarte rară , te obligă la reale problematizări și reconfigurări profesionale.
A lucra pentru companiile internaționale de tranzacționare, cum este Flow Traders, vă facilitează întâlnirea cu o mulțime de oameni interesanți, de la care puteți învăța multe lucruri, cu care să împărtășiți experiențe și să legați prietenii.
Este o industrie care nu doarme, întotdeauna există nevoia de îmbunătățire, așa că dacă nu sunteți fan al acestui joc, poate fi un mediu stresant din cauza presiunii cauzate de competitivitatea constantă a domeniului principal.
Prioritățile nu se schimbă peste noapte, dar în acest domeniu trebuie să fim mereu atenți deoarece lucrurile ar putea să se schimbe. Dacă o aplicație a funcționat astăzi, nu există nicio garanție că va funcționa mâine, deoarece piețele se mișcă constant, cerințele se schimbă și trebuie să ne adaptăm. Ați putea merge la somn cu gândul că totul este în regulă și să vă treziți dimineața cu o problemă operațională. Așadar, întotdeauna sunt probleme de rezolvat.
Indiferent dacă vă place statistica matematică sau sunteți interesat de piețele financiare, lucrul într-o companie de tranzacționare are multe beneficii și tot pe atâtea provocări pentru programatori. Oferă dezvoltare personală pe multe niveluri și o mulțime de oportunități de creștere. Toate acestea, într-un tip foarte specific de mediu. Așadar, ar trebui să vă placă.
de Ovidiu Mățan
de Alina Mihuț
de Ovidiu Mățan
de Ovidiu Mățan