paint-brush
Istaknite se od drugih programera doprinoseći otvorenom kodupo@empiree361
Nova povijest

Istaknite se od drugih programera doprinoseći otvorenom kodu

po Oleg Dubovoi7m2024/12/28
Read on Terminal Reader

Predugo; Čitati

Ako doista volite programiranje i želite rasti kao razvojni programer, nastojte stvoriti nešto svoje - bilo da se radi o maloj knjižnici ili usluzi.
featured image - Istaknite se od drugih programera doprinoseći otvorenom kodu
Oleg Dubovoi HackerNoon profile picture


Pozdrav svima! Želim podijeliti svoje iskustvo razvoja knjižnice otvorenog koda, govoriti o uključenom procesu i inspirirati vas da kreirate vlastite projekte.

Prapovijest

U proljeće, dok sam gledao jedan od streamova Yegora Bugaenka — bio sam inspiriran idejom razvoja otvorenog koda. Yegor je ustvrdio da ako želite ići dalje od običnog programera i postati traženiji i jedinstveniji stručnjak, trebate stvoriti nešto svoje. Bilo da se radi o knjizi, blogu, knjižnici ili čak okviru, takvi projekti omogućuju vam da se istaknete među mnogim drugim programerima, posebno na današnjem IT tržištu. Ovo ne samo da pokazuje vašu profesionalnost, već također pokazuje istinski angažman u razvoju područja.


Sve me to potaknulo na razmišljanje: kako se zapravo ističem među ostalim programerima? Unatoč godinama rada u IT-u i sudjelovanju u raznim projektima, još uvijek nisam imao ništa svoje — nešto što bi moglo pokazati moju posebnost i profesionalnost.

Traženje ideja

Ponovno sam pregledao svoje stare projekte ljubimaca na GitHubu, ali sam brzo shvatio da nijedan od njih nije uistinu značajan. Tako sam odlučio krenuti od nule i stvoriti nešto novo. Pun motivacije i entuzijazma počeo sam razmišljati što bih mogao napisati, a da bi bilo traženo, barem među malom publikom, a što bi odgovaralo mojim vještinama.


Dva-tri dana analizirao sam ideje za svoj open-source projekt. Što sam više razmišljao, to mi se više činilo da je sve već napisano, a ono što tek treba realizirati neće biti moguće postići sam. Odmah da kažem: ovo je pogrešna perspektiva. Ne dopustite da uništi vaš potencijal. Da, mnogo toga je već stvoreno, ali to nije razlog da odustanete i napustite ideju stvaranja nečeg svog.


Sada ću objasniti zašto:

  • Uvijek postoji prilika da se uhvati trend i stvori alat ili usluga koja brzo postaje popularna. Na primjer, tijekom pandemije COVID-19 razvijene su web stranice koje su u stvarnom vremenu pružale statistiku o infekcijama i najnovije vijesti. Trenutno smo svjedoci trenda prema AI uslugama, koji nastavlja dobivati na zamahu. Dovoljno je samo iskoristiti trenutak i ponuditi rješenje koje je traženo u tom razdoblju.
  • Nije potrebno biti prvi u niši da bi je osvojio. Uzmimo Discord kao primjer: pojavio se 2015. kada su već postojali etablirani igrači kao što su TeamSpeak, Ventrilo, Skype i RaidCall. Ipak, u samo nekoliko godina Discord je postao lider u svom segmentu. Ključ nije novost ideje, već koliko učinkovito rješavate postojeći problem.


Najvažniji aspekt stvaranja nečeg novog je identificirati pravi problem i ponuditi rješenje. To može biti globalni izazov ili mali, ali značajan problem koji treba poboljšati. Ključno je razumjeti s kojim se poteškoćama susreću drugi programeri ili obični korisnici i kako im možete pomoći da prevladaju te izazove.


Nakon daljnjeg razmišljanja, osjetio sam želju da stvorim nešto korisno za .NET zajednicu — malu knjižnicu koja bi mogla olakšati razvoj projekta. Budući da je moj primarni fokus .NET, odlučio sam se koncentrirati na ono što već znam i dobro radim. Jedna ideja koja mi je pala na pamet bila je stvoriti knjižnicu za praćenje događaja unosa s tipkovnice i miša.


Mjesec dana prije toga, dok sam radio na desktop aplikaciji za Windows, suočio sam se sa zadatkom praćenja pritisaka tipki na tipkovnici za izvođenje određenih radnji. Glavna nijansa bila je da je trebao raditi bez obzira na to je li naša aplikacija bila aktivna. Budući da u to vrijeme nije bilo gotovih rješenja, koristio sam native P/Invoke pozive i uspješno postigao željeni rezultat. U tom trenutku nisam razmišljao o tome da bi se i drugi programeri mogli suočiti s ovim problemom i da bi mala biblioteka koja se bavi tim problemom mogla biti vrlo korisna.


Da, to nije knjižnica koja će nekome promijeniti život, ali je prvi korak prema stvaranju nečeg mog. To je prilika da steknem dragocjeno iskustvo i provedem vrijeme baveći se nečim u čemu sam istinski strastven, zbog čega sam se odlučio za akciju.

Razvoj

Prvi korak bilo je smišljanje ideja za funkcionalnost koju bi moja knjižnica imala. Želio sam da njegove mogućnosti budu što šire, a da pritom ostanu pristupačne i jednostavne za korištenje. Moj je cilj bio da korisnik ne mora pisati više od 3-5 redaka koda u većini scenarija.


Tijekom procesa razmišljanja došao sam na ideju da bi bilo moguće ne samo pratiti unos već i kontrolirati ga. Na primjer, s kodom se može simulirati pritiskanje tipki ili kombinacija tipki, pomicati kursor miša, onemogućiti određene tipke tako da sustav ne bi reagirao na njihove pritiske ili čak promijeniti vezanje tipki. Sve ove značajke implementirane su postupno kroz ažuriranja.


Čim sam dovršio skup značajki, s entuzijazmom sam započeo razvoj. Pisanje koda nije bilo posebno zahtjevno, ali sam se fokusirao na njegovu strukturu i čistoću kako bi drugi programeri mogli lako shvatiti što je učinjeno i zašto. Tijekom procesa razvoja nekoliko sam puta proveo globalno refaktoriranje, mijenjajući organizaciju i imena, kao i izdvajajući dijelove koda u zasebne klase. Obratio sam posebnu pozornost na odvajanje koda ovisnog o platformi (jer sam planirao stvoriti rješenje za više platformi u budućnosti) od samog koda knjižnice. To bi spriječilo potrebu ponovnog pisanja cijele baze koda kada se udaljite od P/Invoke. Također sam odvojio vrijeme da dodam XML komentare kako bi korisnici knjižnice mogli razumjeti što svaka metoda ili klasa radi.


Nakon što sam dovršio prvu verziju biblioteke, učitao sam je u NuGet (sustav za upravljanje paketima za .NET platformu, sličan npm-u ili pipu). Želio sam dobiti povratne informacije kako bih shvatio je li itko zainteresiran za ovaj projekt i u kojem smjeru trebam dalje krenuti. Prije promoviranja svoje biblioteke, odlučio sam stvoriti datoteku README u GitHub repozitoriju, uključujući informacije o ciljevima biblioteke i kratak vodič o tome kako je koristiti.



Prvi korisnici

Odlučio sam svoje prve korisnike potražiti na Redditu . Nakon što sam pronašao nekoliko odgovarajućih zajednica, napisao sam kratki post pod naslovom " Open Source C# biblioteka za rukovanje događajima tipkovnice/miša u Windows UI aplikacijama " Bilo je malo stresno i iskreno, nisam očekivao nikakve značajne rezultate. Međutim, začudo, isplatilo se. Jedna od objava dobila je oko 14.000 pregleda i otprilike 30 komentara s pozitivnim povratnim informacijama. Bio je to nevjerojatan osjećaj koji bih volio da svi mogu doživjeti: spoznaja da vrijeme provedeno na projektu nije bilo uzalud. Iako nisam stvorio nešto revolucionarno, shvatio sam da postoje ljudi kojima je to istinski korisno i koji su voljni podržati moje napore.


Nakon prikupljanja svih povratnih informacija, odlučio sam nastaviti s razvojem i ostati u kontaktu s najzainteresiranijim korisnicima koji su ostavljali komentare. Aktivno sam komunicirao s njima i slušao njihove zahtjeve za funkcionalnostima koje bi željeli vidjeti. Tijekom sljedećeg mjeseca izdao sam nekoliko malih ažuriranja i zatim se ponovno usredotočio na privlačenje korisnika.


Na GitHubu postoji posebna vrsta repozitorija pod nazivom "awesome" — to su zbirke poveznica i resursa kompiliranih o određenim temama, na primjer, awesome-dotnet . Moj je cilj bio promovirati svoju knjižnicu u svakom od tih repozitorija. Iako to nije bio lak zadatak — knjižnica s 10-15 zvjezdica na GitHubu ne privlači veliki interes — ipak sam uspio ući u nekoliko njih. To je značajno povećalo promet korisnika i skrenulo pozornost na moj projekt.

Doprinos zajednice razvoju

Tijekom daljnjeg razvoja susreo sam se s mnogo sitnih zadataka za koje mi je ponekad nedostajalo želje i energije. Stoga sam odlučio iskoristiti jednu od prednosti razvoja otvorenog koda — privlačenje entuzijasta koji su bili voljni pomoći s tim zadacima. Kako bih to učinio, obratio sam se usluzi Up-for-Grabs , koja pruža popis repozitorija otvorenog koda s aktivnim problemima za one koji žele pridonijeti. Nakon dodavanja svog repozitorija i stvaranja nekoliko problema, odmah sam primio zahtjeve za pomoć.

Nakon što je moja biblioteka preuzeta više od tisuću puta, odlučio sam aktivno raditi na dokumentaciji. Od prvog ažuriranja, funkcionalnost biblioteke je značajno povećana, a primjeri u datoteci README više nisu bili dovoljni. Od svih mogućih opcija, odabrao sam najjednostavniju i najpristupačniju: stvorio sam zasebnu Markdown datoteku i detaljno opisao sve klase koje knjižnica nudi. Također sam odlučio napisati mali vodič za napredne korisnike koji žele u potpunosti iskoristiti mogućnosti knjižnice. Na moje iznenađenje, javio mi se tip koji se bavi pisanjem tehničke dokumentacije i ponudio svoju pomoć. Pomogao mi je u pravilnom strukturiranju materijala i preciznom opisivanju svih detalja. Uz njegovu pomoć brzo smo izvršili ovaj zadatak.

Razvoj otvorenog koda izvrsna je prilika za upoznavanje i širenje mreže s drugim programerima. Do sada je devet ljudi iz različitih zemalja pridonijelo knjižnici, uključujući Sjedinjene Države, Australiju, Argentinu, Kanadu, Njemačku, Poljsku i druge. Pomogli su u pisanju funkcionalnosti, jediničnih testova i dokumentacije. Štoviše, bila je to prekrasna razmjena iskustava i ugodna komunikacija. Možda s nekim od suradnika možemo zajedno započeti novi projekt.

Unatoč poslu i drugim obavezama, želim nastaviti s razvojem i izdati punu verziju sa značajkama za koje vjerujem da bi trebale biti uključene u biblioteku. Moji budući planovi uključuju stvaranje više platformi i odvajanje od specifičnih okvira korisničkog sučelja.

Zaključak

Na kraju bih želio sažeti sve što sam rekao. Nikada se nemojte bojati isprobati nešto novo i nemojte stajati na mjestu. Ako doista volite programiranje i želite rasti kao razvojni programer, nastojte stvoriti nešto vlastito — bilo da je to mala biblioteka ili usluga. Nikad ne znaš kamo to može odvesti. Tijekom razvoja ove knjižnice radost mi nije bila samo programiranje, već i upoznavanje ljudi i stvaranje novih veza. Planiram se nastaviti baviti razvojem otvorenog izvornog koda, ne samo unaprjeđujući vlastite projekte već i doprinoseći knjižnicama zajednice — ovo je također sjajno iskustvo.


Za one koji se žele početi baviti razvojem otvorenog koda, preporučujem ovaj vodič !


Ako ste uživali u ovom postu, bio bih vam zahvalan ako biste mogli podržati knjižnicu zvjezdicom na GitHubu!


LinkedIn / GitHub

L O A D I N G
. . . comments & more!

About Author

Oleg Dubovoi HackerNoon profile picture
Oleg Dubovoi@empiree361
Software Engineer from Vienna. Passionate about open-source. Coding since childhood.

VIJESI OZNAKE

OVAJ ČLANAK JE PREDSTAVLJEN U...