paint-brush
Ieșiți în evidență față de alți dezvoltatori, contribuind la Open Sourcede@empiree361
Noua istorie

Ieșiți în evidență față de alți dezvoltatori, contribuind la Open Source

de Oleg Dubovoi7m2024/12/28
Read on Terminal Reader

Prea lung; A citi

Dacă îți place cu adevărat programarea și vrei să crești ca dezvoltator, străduiește-te să creezi ceva propriu – fie că este o bibliotecă mică sau un serviciu.
featured image - Ieșiți în evidență față de alți dezvoltatori, contribuind la Open Source
Oleg Dubovoi HackerNoon profile picture


Bună ziua tuturor! Vreau să împărtășesc experiența mea de dezvoltare a unei biblioteci open-source, să vorbesc despre procesul implicat și să vă inspir să vă creați propriile proiecte.

Preistorie

În primăvară, în timp ce urmăream unul dintre fluxurile lui Yegor Bugaenko — am fost inspirat de ideea dezvoltării open-source. Yegor a afirmat că, dacă vrei să mergi dincolo de a fi un dezvoltator obișnuit și să devii un specialist mai căutat și unic, trebuie să creezi ceva propriu. Fie că este vorba despre o carte, un blog, o bibliotecă sau chiar un cadru, astfel de proiecte vă permit să vă remarcați printre mulți alți dezvoltatori, mai ales pe piața IT de astăzi. Acest lucru nu numai că demonstrează profesionalismul dvs., dar arată și angajamentul real în dezvoltarea domeniului.


Toate acestea m-au făcut să mă gândesc: cum mă evidențiez cu adevărat printre alți dezvoltatori? În ciuda anilor în care am lucrat în IT și am participat la diverse proiecte, încă nu aveam nimic al meu - ceva care să-mi arate unicitatea și profesionalismul.

În căutarea ideilor

Mi-am revăzut vechile proiecte pe GitHub, dar mi-am dat seama rapid că niciunul dintre ele nu era cu adevărat semnificativ. Așa că am decis să încep de la zero și să creez ceva nou. Plin de motivație și entuziasm, am început să mă gândesc la ce aș putea scrie care să fie solicitat, cel puțin în rândul unui public restrâns, și care să se potrivească cu abilitățile mele.


Timp de două sau trei zile, am analizat idei pentru proiectul meu open-source. Cu cât mă gândeam mai mult, cu atât mai mult părea că totul fusese deja scris și că ceea ce nu se realiza încă va fi imposibil de realizat singur. Permiteți-mi să spun imediat: aceasta este o perspectivă înșelătoare. Nu-l lăsa să-ți distrugă potențialul. Da, s-au creat deja multe, dar acesta nu este un motiv să renunți și să renunți la ideea de a crea ceva propriu.


Acum, voi explica de ce:

  • Există întotdeauna șansa de a surprinde o tendință și de a crea un instrument sau un serviciu care devine rapid popular. De exemplu, în timpul pandemiei de COVID-19, au fost dezvoltate site-uri web care oferă statistici în timp real despre infecții și cele mai recente știri. În prezent, asistăm la o tendință către serviciile AI, care continuă să câștige avânt. Tot ce este nevoie este să profitați de momentul și să oferiți o soluție care este solicitată în acea perioadă.
  • Nu este necesar să fii primul dintr-o nișă care o cucerește. Să luăm Discord ca exemplu: a apărut în 2015 când existau deja jucători consacrați precum TeamSpeak, Ventrilo, Skype și RaidCall. Cu toate acestea, în doar câțiva ani, Discord a devenit lider în segmentul său. Cheia nu este noutatea ideii, ci cât de eficient abordați o problemă existentă.


Cel mai important aspect al creării a ceva nou este identificarea unei probleme reale și oferirea unei soluții. Aceasta poate fi o provocare globală sau o problemă mică, dar semnificativă, care necesită îmbunătățiri. Este esențial să înțelegeți cu ce dificultăți se confruntă alți dezvoltatori sau utilizatori obișnuiți și cum îi puteți ajuta să depășească aceste provocări.


După o reflecție suplimentară, am simțit dorința de a crea ceva util pentru comunitatea .NET - o bibliotecă mică care ar putea facilita dezvoltarea proiectului. Având în vedere că obiectivul meu principal este .NET, am decis să mă concentrez pe ceea ce știu deja și pe ceea ce fac bine. O idee care mi-a venit în minte a fost crearea unei biblioteci pentru urmărirea evenimentelor de intrare de la tastatură și mouse.


Cu o lună înainte, în timp ce lucram la o aplicație desktop pentru Windows, m-am confruntat cu sarcina de a urmări apăsările tastelor de pe tastatură pentru a efectua anumite acțiuni. Nuanța principală a fost că trebuia să funcționeze, indiferent dacă aplicația noastră era activă. Deoarece nu existau soluții gata făcute la acel moment, am folosit apeluri native P/Invoke și am obținut cu succes rezultatul dorit. În acel moment, nu am considerat că și alți dezvoltatori s-ar putea confrunta cu această problemă și că o bibliotecă mică care să abordeze această problemă ar putea fi destul de utilă.


Da, nu este o bibliotecă care va schimba viața cuiva, dar este primul pas către crearea a ceva propriu. Este o oportunitate de a câștiga experiență valoroasă și de a petrece timp angajându-mă în ceva ce mă pasionează cu adevărat, motiv pentru care am decis să iau măsuri.

Dezvoltare

Primul pas a fost ideea de idei pentru funcționalitatea pe care ar avea-o biblioteca mea. Am vrut ca capabilitățile sale să fie cât mai largi posibil, rămânând în același timp accesibile și ușor de utilizat. Scopul meu a fost ca utilizatorul să nu fie nevoit să scrie mai mult de 3-5 linii de cod în majoritatea scenariilor.


În timpul procesului de brainstorming, mi-a venit ideea că ar fi posibil nu numai urmărirea intrării, ci și controlul acesteia. De exemplu, cu cod, se poate simula apăsările de butoane sau combinații de taste, se pot muta cursorul mouse-ului, dezactiva anumite taste, astfel încât sistemul să nu răspundă la apăsările lor sau chiar să schimbe legăturile de taste. Toate aceste caracteristici au fost implementate treptat prin actualizări.


De îndată ce am finalizat setul de caracteristici, am început cu entuziasm dezvoltarea. Scrierea codului nu a fost deosebit de dificilă, dar m-am concentrat pe structura și curățenia acestuia, astfel încât alți dezvoltatori să poată înțelege cu ușurință ce s-a făcut și de ce. În timpul procesului de dezvoltare, am efectuat de mai multe ori refactorizarea globală, schimbând organizația și numele, precum și extragerea părților din cod în clase separate. Am acordat o atenție deosebită separării codului dependent de platformă (deoarece am plănuit să creez o soluție multiplatformă în viitor) de codul bibliotecii în sine. Acest lucru ar preveni nevoia de a rescrie întreaga bază de cod atunci când vă îndepărtați de P/Invoke. De asemenea, mi-am făcut timp pentru a adăuga comentarii XML, astfel încât utilizatorii bibliotecii să poată înțelege ce face fiecare metodă sau clasă.


După finalizarea primei versiuni a bibliotecii, am încărcat-o în NuGet (sistemul de gestionare a pachetelor pentru platforma .NET, similar cu npm sau pip). Am vrut să primesc câteva feedback pentru a înțelege dacă este cineva interesat de acest proiect și în ce direcție ar trebui să merg în continuare. Înainte de a-mi promova biblioteca, am decis să creez un fișier README în depozitul GitHub, care să includă informații despre obiectivele bibliotecii și un scurt ghid despre cum să o folosesc.



Primii Utilizatori

Am decis să caut primii mei utilizatori pe Reddit . După ce am găsit mai multe comunități potrivite, am scris o scurtă postare intitulată „ Biblioteca C# cu sursă deschisă pentru gestionarea evenimentelor de la tastatură/mouse în aplicațiile cu interfața de utilizator Windows ” A fost puțin stresant și, sincer, nu mă așteptam la niciun rezultat semnificativ. Cu toate acestea, în mod surprinzător, a dat roade. Una dintre postări a primit aproximativ 14.000 de vizualizări și aproximativ 30 de comentarii cu feedback pozitiv. A fost un sentiment incredibil pe care mi-aș dori ca toată lumea să-l poată experimenta: conștientizarea că timpul petrecut în proiect nu a fost în zadar. Deși nu am creat ceva revoluționar, am înțeles că există oameni care îl consideră cu adevărat util și care sunt dispuși să-mi susțină eforturile.


După ce am adunat toate feedback-urile, am decis să continui dezvoltarea și să rămân în legătură cu cei mai interesați utilizatori care au lăsat comentarii. Am comunicat activ cu ei și le-am ascultat solicitările de funcționalitate pe care și-ar dori să le vadă. Pe parcursul lunii următoare, am lansat câteva mici actualizări și apoi m-am reorientat pe atragerea utilizatorilor.


Pe GitHub, există un tip special de depozit numit „awesome” - acestea sunt colecții de link-uri și resurse compilate pe anumite subiecte, de exemplu, awesome-dotnet . Scopul meu a fost să-mi promovez biblioteca în fiecare dintre aceste depozite. Deși aceasta nu a fost o sarcină ușoară — o bibliotecă cu 10-15 stele pe GitHub nu atrage prea mult interes — am reușit totuși să intru în câteva dintre ele. Acest lucru a crescut semnificativ traficul de utilizatori și a atras atenția asupra proiectului meu.

Contribuția comunității la dezvoltare

Pe parcursul dezvoltării ulterioare, am întâlnit multe sarcini mici pentru care uneori îmi lipseau dorința și energia de a le îndeplini. Așadar, am decis să profit de unul dintre beneficiile dezvoltării open-source - atragerea de entuziaști care erau dispuși să ajute cu aceste sarcini. Pentru a face acest lucru, am apelat la serviciul Up-for-Grabs , care oferă o listă de depozite open-source cu probleme active pentru cei care doresc să contribuie. După ce mi-am adăugat depozitul și am creat mai multe probleme, am primit imediat solicitări de asistență.

După ce biblioteca mea a fost descărcată de mai mult de o mie de ori, am decis să lucrez activ la documentație. De la prima actualizare, funcționalitatea bibliotecii a crescut semnificativ, iar exemplele din fișierul README nu mai erau suficiente. Dintre toate opțiunile posibile, am ales-o pe cea mai simplă și mai accesibilă: am creat un fișier Markdown separat și am detaliat toate clasele oferite de bibliotecă. De asemenea, am decis să scriu un mic ghid pentru utilizatorii avansați care doresc să folosească pe deplin capacitățile bibliotecii. Spre surprinderea mea, un tip care este specializat în scrierea documentației tehnice m-a contactat și mi-a oferit ajutorul. M-a ajutat să structurez corect materialul și să descriu cu acuratețe toate detaliile. Cu ajutorul lui, am îndeplinit rapid această sarcină.

Dezvoltarea open-source este o oportunitate excelentă de a vă întâlni și de a vă extinde rețeaua cu alți programatori. Până acum, nouă persoane din diferite țări au contribuit la bibliotecă, inclusiv Statele Unite, Australia, Argentina, Canada, Germania, Polonia și altele. Au asistat la scrierea funcționalității, a testelor unitare și a documentației. În plus, a fost un schimb minunat de experiență și o comunicare plăcută. Poate cu unii dintre colaboratori, putem începe un nou proiect împreună.

În ciuda faptului că am un loc de muncă și alte angajamente, vreau să continui dezvoltarea și să lansez o versiune completă cu caracteristicile care cred că ar trebui incluse în bibliotecă. Planurile mele de viitor includ să-l fac multiplatform și să îl decuplăm de cadrele specifice de UI.

Concluzie

În concluzie, aș dori să rezum tot ce am spus. Nu vă fie teamă să încercați ceva nou și nu stați pe loc. Dacă îți place cu adevărat programarea și vrei să crești ca dezvoltator, străduiește-te să creezi ceva propriu – fie că este o bibliotecă mică sau un serviciu. Nu știi niciodată unde ar putea duce. De-a lungul dezvoltării acestei biblioteci, am găsit bucurie nu numai în programare, ci și în întâlnirea cu oameni și realizarea de noi conexiuni. Plănuiesc să continui să mă implic în dezvoltarea open-source, nu numai prin promovarea propriilor proiecte, ci și prin contribuția la bibliotecile comunitare - aceasta este și o experiență grozavă.


Pentru cei care doresc să înceapă să se implice în dezvoltarea open-source, recomand acest ghid !


Dacă v-a plăcut această postare, v-aș fi recunoscător dacă ați putea susține biblioteca cu o stea pe GitHub!


LinkedIn / GitHub