paint-brush
Издвојте се од другите програмери со тоа што придонесувате за софтвер со отворен кодод страна на@empiree361
Нова историја

Издвојте се од другите програмери со тоа што придонесувате за софтвер со отворен код

од страна на Oleg Dubovoi7m2024/12/28
Read on Terminal Reader

Премногу долго; Да чита

Ако навистина го сакате програмирањето и сакате да растете како развивач, настојувајте да создадете нешто свое - без разлика дали е мала библиотека или услуга.
featured image - Издвојте се од другите програмери со тоа што придонесувате за софтвер со отворен код
Oleg Dubovoi HackerNoon profile picture


Здраво на сите! Сакам да го споделам моето искуство за развој на библиотека со отворен код, да зборувам за процесот што е вклучен и да ве инспирирам да креирате свои проекти.

Праисторија

Во пролетта, додека гледав еден од стримовите на Јегор Бугаенко - бев инспириран од идејата за развој со отворен код. Јегор тврдеше дека ако сакате да го надминете тоа да бидете обичен програмер и да станете побаран и уникатен специјалист, треба да создадете нешто свое. Без разлика дали се работи за книга, блог, библиотека, па дури и рамка, ваквите проекти ви овозможуваат да се истакнете меѓу многу други програмери, особено на денешниот ИТ пазар. Ова не само што ја демонстрира вашата професионалност туку покажува и искрен ангажман во развојот на полето.


Сето ова ме натера да размислувам: како навистина се издвојувам меѓу другите програмери? И покрај годините работа во ИТ и учество во различни проекти, сè уште немав ништо свое - нешто што може да ја покаже мојата уникатност и професионалност.

Барање идеи

Ги посетив моите стари проекти за миленичиња на GitHub, но брзо сфатив дека ниту еден од нив не е навистина значаен. Затоа, решив да почнам од нула и да создадам нешто ново. Полн со мотивација и ентузијазам, почнав да размислувам за тоа што би можел да напишам што ќе биде барано, барем кај малата публика, и што ќе одговара на моите вештини.


Два или три дена ги анализирав идеите за мојот проект со отворен код. Колку повеќе размислував, толку повеќе се чинеше дека сè е веќе напишано и дека она што допрва треба да се реализира ќе биде невозможно да се постигне сам. Веднаш да кажам: ова е погрешна перспектива. Не дозволувајте да го уништи вашиот потенцијал. Да, многу е веќе создадено, но тоа не е причина да се откажете и да ја напуштите идејата да создадете нешто свое.


Сега, ќе објаснам зошто:

  • Секогаш постои шанса да се фати тренд и да се создаде алатка или услуга која брзо станува популарна. На пример, за време на пандемијата COVID-19, беа развиени веб-страници кои обезбедуваа статистика во реално време за инфекции и најнови вести. Во моментов, сведоци сме на тренд кон услуги за вештачка интелигенција, кој продолжува да добива на интензитет. Потребно е само да се искористи моментот и да се понуди решение кое е барано во тој период.
  • Не е неопходно да се биде прв во нишата што ќе го освои. Да го земеме Discord како пример: се појави во 2015 година кога веќе имаше воспоставени играчи како TeamSpeak, Ventrilo, Skype и RaidCall. Сепак, за само неколку години, Discord стана лидер во својот сегмент. Клучот не е во новитетот на идејата, туку колку ефикасно се справувате со постоечки проблем.


Најважниот аспект на создавање на нешто ново е да се идентификува вистинскиот проблем и да се понуди решение. Ова може да биде глобален предизвик или мало, но значајно прашање што треба да се подобри. Од клучно значење е да разберете со какви потешкотии се соочуваат другите програмери или редовни корисници и како можете да им помогнете да ги надминат овие предизвици.


По понатамошно размислување, почувствував желба да создадам нешто корисно за заедницата .NET - мала библиотека која може да го олесни развојот на проектот. Бидејќи мојот примарен фокус е .NET, решив да се концентрирам на она што веќе го знам и добро го правам. Една идеја што ми падна на ум беше да се создаде библиотека за следење на влезните настани од тастатурата и глувчето.


Еден месец пред тоа, додека работев на десктоп апликација за Windows, се соочив со задачата да ги следам притискањата на копчињата на тастатурата за да извршам одредени дејства. Главната нијанса беше дека требаше да работи без разлика дали нашата апликација беше активна. Бидејќи во тоа време немаше готови решенија, користев мајчин P/Invoke повици и успешно го постигнав посакуваниот резултат. Во тој момент, не мислев дека и други програмери може да се соочат со овој проблем и дека мала библиотека што го решава овој проблем може да биде доста корисна.


Да, тоа не е библиотека што ќе промени нечиј живот, но тоа е првиот чекор кон создавање на нешто свое. Тоа е можност да стекнете драгоцено искуство и да потрошите време ангажирајќи се во нешто за кое сум навистина страстен, поради што решив да преземам акција.

Развој

Првиот чекор беше бура на идеи за функционалноста што би ја имала мојата библиотека. Сакав неговите можности да бидат што е можно пошироки, а притоа да останат достапни и погодни за корисниците. Целта ми беше корисникот да не мора да пишува повеќе од 3-5 линии код во повеќето сценарија.


За време на процесот на бура на идеи, дојдов до идеја дека ќе биде можно не само да се следи влезот туку и да се контролира. На пример, со код, може да се симулира притискање на копчињата или комбинации на копчиња, да се движи курсорот на глувчето, да се оневозможат одредени копчиња за системот да не реагира на нивните притискања, па дури и да ги смени врзувањето на копчињата. Сите овие функции беа имплементирани постепено преку ажурирања.


Веднаш штом го финализирав множеството функции, со ентузијазам почнав да се развивам. Пишувањето на кодот не беше особено предизвик, но се фокусирав на неговата структура и чистота, така што другите програмери можат лесно да разберат што е направено и зошто. За време на процесот на развој, неколку пати спроведов глобално рефакторирање, менувајќи ја организацијата и имињата, како и извлекувајќи делови од кодот во посебни класи. Посветив посебно внимание на одвојувањето на кодот зависен од платформата (како што планирав да создадам решение за меѓуплатформи во иднина) од самиот код на библиотеката. Ова би ја спречило потребата од препишување на целата база на кодови кога се оддалечувате од P/Invoke. Исто така, одвоив време да додадам XML коментари за да можат корисниците на библиотеката да разберат што прави секој метод или класа.


Откако ја завршив првата верзија на библиотеката, ја подигнав на NuGet (системот за управување со пакети за платформата .NET, сличен на npm или pip). Сакав да добијам некои повратни информации за да разберам дали некој е заинтересиран за овој проект и која насока треба да ја преземам понатаму. Пред да ја промовирам мојата библиотека, решив да создадам датотека README во складиштето на GitHub, вклучувајќи информации за целите на библиотеката и краток водич за тоа како да го користам.



Првите корисници

Решив да ги барам моите први корисници на Reddit . Откако пронајдов неколку соодветни заедници, напишав краток пост со наслов „ Со отворен код C# библиотека за справување со настани со тастатура/глувче во апликациите за Windows UI “ Беше малку стресно и искрено, не очекував некои значајни резултати. Сепак, изненадувачки, се исплатеше. Еден од објавите доби околу 14.000 прегледи и приближно 30 коментари со позитивни повратни информации. Беше неверојатно чувство кое посакувам секој да го доживее: сознанието дека времето поминато на проектот не беше залудно. Иако не создадов нешто револуционерно, разбрав дека има луѓе на кои им е навистина корисно и кои се подготвени да ги поддржат моите напори.


Откако ги собрав сите повратни информации, решив да продолжам со развојот и да останам во контакт со најзаинтересираните корисници кои оставија коментари. Активно комуницирав со нив и ги слушав нивните барања за функционалност што би сакале да ја видат. Во текот на следниот месец, објавив неколку мали ажурирања, а потоа повторно се фокусирав на привлекување корисници.


На GitHub, постои посебен тип на складиште наречено „прекрасно“ - ова се збирки на врски и ресурси составени на одредени теми, на пример, awesome-dotnet . Мојата цел беше да ја промовирам мојата библиотека во секое од овие складишта. Иако ова не беше лесна задача - библиотека со 10-15 ѕвезди на GitHub не привлекува голем интерес - сепак успеав да влезам во неколку од нив. Ова значително го зголеми корисничкиот сообраќај и го привлече вниманието на мојот проект.

Придонес на заедницата во развојот

Во текот на понатамошниот развој наидов на многу мали задачи за кои понекогаш ми недостасуваше желба и енергија да ги завршам. Затоа, решив да искористам една од придобивките од развојот на отворен код - привлекување ентузијасти кои беа подготвени да помогнат во овие задачи. За да го направам ова, се свртев кон услугата Up-for-Grabs , која обезбедува листа на складишта со отворен код со активни проблеми за оние кои сакаат да придонесат. Откако го додадов моето складиште и создадов неколку прашања, веднаш добив барања за помош.

Откако мојата библиотека беше симната повеќе од илјада пати, решив активно да работам на документацијата. Од првото ажурирање, функционалноста на библиотеката значително се зголеми, а примерите во датотеката README веќе не беа доволни. Од сите можни опции, ја избрав наједноставната и најпристапната: создадов посебна датотека Markdown и ги детализирав сите класи што ги нуди библиотеката. Решив и да напишам мал водич за напредни корисници кои сакаат целосно да ги искористат можностите на библиотеката. На мое изненадување, еден дечко кој е специјализиран за пишување техничка документација дојде до мене и ја понуди својата помош. Тој ми помогна во правилно структуирање на материјалот и прецизно опишување на сите детали. Со негова помош брзо ја завршивме оваа задача.

Развојот со отворен код е одлична можност да се сретнете и да ја проширите вашата мрежа со други програмери. Досега во библиотеката придонеле девет луѓе од различни земји, меѓу кои САД, Австралија, Аргентина, Канада, Германија, Полска и други. Тие помогнаа во пишувањето на функционалноста, единечните тестови и документацијата. Покрај тоа, тоа беше прекрасна размена на искуства и пријатна комуникација. Можеби со некој од соработниците можеме да започнеме нов проект заедно.

И покрај тоа што имам работа и други обврски, сакам да продолжам со развојот и да издадам целосна верзија со карактеристиките што верувам дека треба да бидат вклучени во библиотеката. Моите идни планови вклучуваат да го направам меѓу-платформа и да го одвојам од специфични рамки за интерфејс.

Заклучок

Како заклучок, би сакал да резимирам сè што кажав. Никогаш не плашете се да пробате нешто ново и не стојте во место. Ако навистина го сакате програмирањето и сакате да растете како развивач, настојувајте да создадете нешто свое - без разлика дали тоа е мала библиотека или услуга. Никогаш не знаеш каде може да води. Во текот на развојот на оваа библиотека, среќавав не само во програмирањето, туку и во запознавањето луѓе и создавањето нови врски. Планирам да продолжам да се занимавам со развој на софтвер со отворен код, не само со унапредување на моите проекти туку и со придонес во библиотеките на заедницата - ова е исто така одлично искуство.


За оние кои сакаат да почнат да се занимаваат со развој на отворен код, го препорачувам овој водич !


Ако ви се допадна оваа објава, би ви бил благодарен доколку ја поддржите библиотеката со ѕвезда на GitHub!


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.

ВИСЕТЕ ТАГОВИ

ОВОЈ СТАТИЈА БЕШЕ ПРЕТСТАВЕН ВО...