Jump to content

Inceputurile programarii si progresul personal


Recommended Posts

Posted

Cum a inceput totul

Salut!

Cu putina experienta pe SmallBasic, SourcePawn, C++, HTML, CSS, JavaScript, PHP, common Linux software, Bash scripting & automation - am condus o companie de IT&C timp de peste 5 ani de zile imediat dupa perioada liceului. Nu prea scot in evidenta acest aspect in discutiile de zi cu zi pentru ca nu mi se pare ca am facut ceva super exceptional si nu doresc sa amestec viata profesionala cu comunitatile de gaming. In schimb, ce mi se pare exceptional este faptul ca eram singurul care programa in C++ la orele de informatica de pe propriul Arch Linux pe memorie USB 3.0 (standard de stocare mainstream recent aparut la vremea aceea) din intregul liceu si posibil printre singurii 2-3 indivizi din intregul judet.

 

Ce m-a ajutat enorm este faptul ca aveam 2 mentori, iar unul dintre ei a facut tot posibilul sa ma converteasca la ideologiile lui foarte bine structurate. Dupa nici cateva zile mi-am indeplinit visul de mic copil pe cont propriu: acela de a face browsing total anonim pe orice computer fara urme pe hardware-ul local si fara urme in lumea online. Am folosit de asemenea BackTrack Linux o vreme (pana sa apara Kali Linux) si dupa ce m-am familiarizat mai bine cu mediul Linux in sine, utilizam activ doar Arch + I3 tiling window manager in deplasare, iar pe computerul personal Arch + GNOME. Faptul ca am aflat ulterior care e de fapt diferenta dintre distributiile linux mainstream (in afara de adaugarea de package-uri specifice) a schimbat modul in care vedeam lumea. Apoi, am decis ca in ultimul an de liceu sa ma concentrez pe limba engleza si pe dobandirea de cunostinte noi, evitand sa merg la orele inutile de TIC si ce se mai studia atunci, dupa convingerea profesorilor ca e sub nivelul meu ce se preda pe acolo.

 

In toata situatia asta, trecerea de la linux at home la linux remote (pe servere) a avut un stepping curve initial de cateva zile, timp in care nu ma familiarizasem asa repede cu lucrurile la vremea aceea. Inca eram un pusti de liceu care nu stia prea multe. Ulterior, a trebuit sa investesc timp si efort pentru a intelege niste lucruri esentiale incat sa-mi continui evolutia pe plan personal.

 

Perioada facultatii si proiectele

Pe perioada facultatii am reusit sa construiesc proiecte (in special website-uri, sisteme de facturare in PHP etc.) pentru companii si institutii publice din Bucuresti, Cluj-Napoca, Buzau, Timisoara si alte cateva orase relevante sau mai putin relevante din Romania. Ulterior, am inchis firma intrucat ajunsesem la burnout si ma afecta la nivel personal. Existau perioade de lucru continuu si pauze foarte mici, asta pana cand am inceput sa am pauze mult mai mari si lucru mai putin din cauza altor prioritati. Asadar, am decis ca e mai bine sa ma opresc o vreme. Clientii companiei au fost predati cu acordul lor catre firma altui cunoscut de la vremea aceea care putea sa preia macar pe sfert din volumul de munca pe care il aveam. Decizia inchiderii companiei a fost aplicata cu gandul ca intr-o buna zi voi reveni in industrie. Intre timp am mentinut legatura cu domeniul incat sa nu raman in urma, invatand tot mai multe pe zi ce trece si lucrand activ cu diverse organizatii pe care aleg sa nu le mentionez pentru a delimita zona de comunitati de gaming de viata profesionala.

 

Partea de Counter-Strike

Dupa o pauza de cativa ani de la AmxModX si bataia de joc (reverse engineering + modding + redirecte) care a distrus vechiul Counter-Strike 1.6, am revenit in comunitate. Am lucrat activ pentru serverele de Counter-Strike: Global Offensive (SourceMod scripting & automation, Linux management, networking & filtering etc.). Apoi, odata cu aparitia Counter-Strike 2, am luat decizia inspirata de relua programarea de la 0, plus partea de linux management si networking. Asa mi-am depasit nivelul exponential. Bineinteles ca inca sunt in proces de dobandire cunostinte si abilitati noi. Totusi, de data asta am ales sa lucrez enorm la baze pana cand le stiu asa cum stiu si alfabetul (ABC...). Oricum, invatarea nu inceteaza niciodata cand esti activ in domeniu si vrei sa fii la curent cu noutatile relevante, nu lansari de framework-uri si atat.

 

Ca materiale de baza am folosit tot ce am postat la partea de documentatie coding pe forum, inclusiv cursurile Harvard, MIT (prin doamna prof. Ana Bell) si alte surse relevante.

Intr-adevar, am avut putin ajutor extern de la corporatiile la care am lucrat in Bucuresti, insa asta nu e un factor relevant in marea schema a lucrurilor.

 

Lucrand la baze de luni de zile, am ajuns sa-mi fixez o buna parte din lacunele pe care le aveam pe partea de programare, reusind sa construiesc software de zeci si sute de mii de linii de cod diverse limbaje. Am implementat de asemenea baze de date direct in RAM si am facut code concurrency cu un outcome exceptional chiar si pe Python, care e limitat de GIL (Global Interpreter Lock). Am realizat data autoimport on app start si scheduled data autoexport, lucrand atat cu SQLite, cat si cu MySQL sau alte tipuri de baze de date. Pentru discord am conceput diverse tipuri de software care acopera nevoile oricarei persoane ce vrea sa detina o aplicatie functionala cu automatizari care tin cont inclusiv de partea de hardware failures. Am preferat sa construiesc multe solutii software si librarii. Totul de la 0 direct in limbajele de programare. Am evitat pana si Redis, Memcached ori alte solutii mainstream. De ce? Pentru a dobandi abilitati noi si know-how. Atunci cand va fi nevoie de scalabilitate voi lua in considerare alternativele. Totusi, in acel moment n-am vrut sa trec prin procesul de dobandire cunostinte in mod superficial, ci am vrut sa raman cu ceva. Aici experienta vorbeste, nu presupunerile sau imaginatia ori adoptarea de software facut deja de altcineva.

 

De-a lungul timpului am implementat sisteme de backup si data recovery bazate pe schema de rotatie GFS (grandfather-father-son) scrise de la 0, sisteme de logging, sisteme de control linux de la distanta si multe altele, fara librarii custom. Am invatat lucruri noi prin building - nu prin tutorial hell. Si n-am fost de acord cu ideea de a lua codul gata facut de AI din prima pentru ca nu mai treci prin procesul de learning cum trebuie, iar asta afecteaza abilitatile oricui pe termen mediu si lung.

 

Programarea de la 0

Dormeam cu laptopul. Ma trezeam cu laptopul. Deschideam frigiderul si gaseam laptopul. Inchideam frigiderul si ma astepta laptopul. Gateam impreuna cu laptopul. Ma puneam la masa cu laptopul si ma ridicam de la masa tot cu laptopul sa continui lucrul. Dacă nu aveam acces la laptop, programam de pe telefonul mobil. Timp de aproximativ 2 ani de zile asta a insemnat reluarea programarii de la 0 pentru mine incat sa-mi acopar lacunele, sa ma autodepasesc zi de zi si sa comprim timpul petrecut de un Software developer obisnuit pentru a ajunge de la Junior la Senior (5-7 ani). Am reusit sa ajung la rezultatele similare in doar 2 ani. In acesti 2 ani nu a existat altceva in viata mea in afara de munca part-time si programare 24/7. Noaptea visam linii de cod, dimineata le scriam. Daca nu apucam sa adorm din prima, ma ridicam si munceam in fata laptopului pana la extenuare.

 

Nu recomand niciunei persoane intregi la minte modul asta de lucru.

Daca eu am ales sa-mi risc sanatatea, renuntand in acelasi timp la comunicarea frecventa in familie si la relatiile cu prietenii - nu inseamna ca si voi ar trebui sa faceti la fel.

Daca intrati pe contul meu de pe forum si stiti sa cautati cum trebuie topic-urile redactate, observati ca exista o inconsistenta undeva.

 

  • Topic pe 9 martie 2023
  • Topic pe 13 septembrie 2025
  • Topic pe 19 ianuarie 2026 etc.

 

Imagine:

lista-subiecte-hks-forum-comunitate.png

 

N-a fost nici macar un topic pentru servere sau pentru membri. Unde am fost in perioadele in care nu redactam nici macar un anunt pe comunitate? Unde sa fiu? In backend. Mai scriam pe discord cateodata pe canalul #fairside-news si comunicam uneori cu echipa pe canalele de staff. Comparativ cu asta, am mentinut constant legatura cu managerii de servere in toti acesti ani. Toate aceste lucruri nu se vedeau daca nu se accesau anumite zone din comunitate. Nici macar n-am facut eforturi incat sa aratam ce se intampla in spate. Totusi, cu informatii despre asta am si inceput de fapt primul anunt din 2025, dupa pauza de pe forum luata incepand cu 2023. Accesati postarea despre revizuirea strategiei comunitatii de la anunturi forum.

 

Continuarea progresului

Daca la inceputul timpului imi era teama sa intru adanc in domeniul asta, acum vad situatia total diferit doar pentru ca am avut curajul sa-mi depasesc propria limitare, obtinand un nivel bun de proficiency in diverse limbaje si acoperind lacune majore pe care le aveam. Asta va incurajez si pe voi. Nu va indoiti de ceea ce puteti atinge.

 

E ceva grozav ce am facut? Nici pe departe. E doar inceputul.

Setul minim de cunostinte si expertiza pe care am pretentia sa le am sunt cu mult peste ceea ce am realizat pana acum. Totusi, ce am descris anterior este doar o mica parte din totalul de lucruri pe care am reusit sa le fac intr-o fereastra de timp relativ mica. Nu am intrat in detalii cu privire la job sau alte proiecte part-time pentru ca prefer sa tin totul separat. Si totusi, cum am inceput cu adevarat sa parcurg aceasta calatorie? Asa cum reiese din paragrafele anterioare, am lucrat specific la bazele fundamentale pentru realizarea de software de calitate, luand totul de la 0 si acoperind lacunele majore.

 

Viata de zi cu zi

In viata de zi cu zi sunt o persoana simpla, la fel ca toata lumea. Nu sunt Linus Torvalds, dar am de gand sa construiesc un OS Unix-like compatibil cu hardware mainstream. Cand? Dupa ce finalizez cel putin un compilator C based cu niste imbunatatiri pe partea de pointers handling. Ceva similar cu ceea ce se regaseste in Go, dar cu diferente minimale. Deja am realizat un Refcounting Garbage Collector si o extensie de Mark and Sweep, ambele scrise de la 0 in C cu putin ajutor extern. Ulterior, sunt motivat de realizarea unui software pentru networking care sa imite CloudFlare Magic Transit (cu alegerea de tari/continente pentru blocking) pe baza de eBPF + XDP. Ma intereseaza de asemenea si controlul granular (packet size etc.) si lucruri esentiale pentru filtrarea complexa a traficului. De ce? Doar sa-mi demonstrez ca pot. De asemenea, rezolv niste probleme pe care le-am întâlnit de-a lungul timpului. Procesul in sine te ajuta enorm sa intelegi lucrurile fundamentale din Computer Science. Cand reusesc sa termin toate astea? In cateva sute de ani. Who knows? Am inceput sa merg pe calea asta de ceva timp si totul pare ok pentru moment.

 

Ramane de vazut daca se materializeaza ambitiile personale in urmatorii ani. Poate imi schimb jobul de 10 ori pana atunci si dispare motivatia subit. Sau poate fac de 10 ori mai mult, sarind complet peste motivatie si bazandu-ma integral doar pe disciplina si obiceiurile formate deja in ultimii ani, obiceiuri care m-au propulsat destul de departe pe calea aceasta. Hai sa vedem ce se va intampla. Tind sa cred ca e important sa faci ce-ti place si sa excelezi. Altfel nu ai cum sa-ti atingi potentialul. Restul e doar zgomot.

×
×
  • Create New...