
Bezpłatny kurs: „Szybki start w Pythonie”
Dowiedz się więcej
Programista Clojure, a także autor kilku projektów open source, w tym Fira Code, Alabaster, AnyBar, DataScript i Rum. Prowadzi również kanał Telegram „Stoy pod areloy”, gdzie dzieli się swoim doświadczeniem i nowinkami ze świata technologii.
Linki odgrywają kluczową rolę w internecie, umożliwiając nawigację między różnymi stronami internetowymi i zasobami. Nie tylko pomagają użytkownikom znaleźć potrzebne informacje, ale także przyczyniają się do poprawy widoczności witryny w wyszukiwarkach. Prawidłowe użycie linków w treści jest niezbędne do poprawy jej pozycji w rankingu SEO. Linki wewnętrzne pomagają rozłożyć ciężar strony na całą witrynę, podczas gdy linki zewnętrzne do autorytatywnych źródeł zwiększają wiarygodność treści. Optymalizacja tekstu zakotwiczającego, czyli klikalnej części linku, jest również ważna dla SEO. Skuteczne linki nie tylko poprawiają doświadczenie użytkownika, ale także pomagają zwiększyć ruch w witrynie. Dlatego ważne jest, aby zwracać uwagę na poprawne formatowanie i rozmieszczenie linków w treści. Nazywam się Nikita Prokopov, znany również jako Tonsky lub Nikitonsky. Jestem programistą z 37-letnim doświadczeniem, mieszkającym w takich miastach jak Nowosybirsk, Moskwa i Berlin. Swoją karierę zaczynałem od Javy, następnie uczyłem się Pythona, Erlanga, OCaml, Perla, Rusta, Kotlina i C++. Osiem lat temu zainteresowałem się Clojure, funkcjonalnym językiem programowania z dialektami dla JVM i JavaScript. Jestem również autorem kilku projektów open source i chciałbym podzielić się z Tobą ich funkcjami i korzyściami.
Jak rodzą się hity
Moim najsłynniejszym projektem jest specjalistyczna czcionka programistyczna Fira Code. Została ona stworzona z myślą o potrzebach programistów i zapewnia czytelność kodu. Fira Code obsługuje ligatury, co znacznie poprawia wizualne postrzeganie kodu programu. Dzięki nowoczesnemu designowi i wysokiemu kontrastowi, czcionka ta idealnie nadaje się do pracy w środowiskach programistycznych. Fira Code jest aktywnie wykorzystywana w różnych IDE i edytorach tekstu, co czyni ją wyborem numer jeden dla wielu programistów.
Pomysł na zaimplementowanie ligatur dla programistów w czcionce o stałej szerokości zrodził się pod wpływem Haskliga. Ligatury w tej czcionce są naprawdę imponujące, ale same litery pozostawiają wiele do życzenia. W rezultacie wybrałem czcionkę Fira Mono, która moim zdaniem ma atrakcyjniejszy design, i dostosowałem ją, dodając ligatury dla znaków takich jak ->, != i ++. Usunąłem również wszelkie skojarzenia z Haskellem, ponieważ często kojarzą się one z porażką. Rezultatem jest unikalna czcionka, która łączy w sobie walory estetyczne i funkcjonalność dla programistów.
Rezultat, który opublikowałem na GitHubie, niespodziewanie zaczął zyskiwać na popularności bez żadnego wysiłku z mojej strony. Fira Code ma obecnie ponad 60 000 gwiazdek na GitHubie. To imponująca liczba, przewyższająca liczby tak dużych projektów jak Bitcoin, Angular, Webpack, Elasticsearch i Redis. Fira Code jest niewątpliwie liderem wśród czcionek na GitHubie, co potwierdza jej popularność i zapotrzebowanie wśród programistów.
Wciąż cieszę się, gdy widzę czcionkę Fira Code na zrzutach ekranu, stronach internetowych lub prezentacjach. Szczególnie cieszy mnie fakt, że korzystanie z niej było praktycznie darmowe. Ta czcionka jest nie tylko estetyczna, ale także poprawia czytelność kodu, co jest szczególnie ważne dla programistów. Fira Code stała się popularnym wyborem wśród programistów dzięki nowoczesnemu designowi i obsłudze ligatur, co czyni ją idealną do kodowania.

Skupiam się bardziej na promowaniu DataScript, bazy danych w pamięci dla Clojure i ClojureScript. Pomysł na tę bazę danych zrodził się z ciekawości, gdy poznałem architekturę bardziej dojrzałej bazy Datomic, opracowanej przez Richa Hickeya, twórcę Clojure. Wtedy zdałem sobie sprawę, że mógłbym zaimplementować coś podobnego. Na początkowym etapie nie myślałem o celach i potrzebach użytkowników, ale z czasem zdałem sobie sprawę z wagi tych kwestii.

Pierwsza wersja mojego projektu wzbudziła pewne zainteresowanie, co zmotywowało mnie do dalszej pracy. Zacząłem optymalizować funkcjonalność, testować i dodawać nowe funkcje.
Od momentu powstania DataScript znacząco się rozwinął. Pisałem o nim, prowadziłem prezentacje i dzieliłem się swoimi doświadczeniami. Obecnie kilka komercyjnych projektów opiera się na DataScript i zajął on już ważne miejsce w ekosystemie Clojure.
Zawsze miło jest słyszeć od użytkowników, którzy używają DataScript w swoich projektach. Wasze opinie i doświadczenia z tym narzędziem inspirują nas do dalszego rozwoju i ulepszania. Doceniamy każdą prośbę i cieszymy się, widząc, jak DataScript pomaga Wam w pracy.
Dla mnie
Pomysły na projekty często przychodzą mi do głowy, gdy organizuję swoją pracę programisty. Oprócz programowania interesuję się również użytecznością, co pozwala mi kształtować własne zdanie na temat wyglądu edytora tekstu, najwygodniejszego schematu kolorów, używanej czcionki i wielu innych aspektów. Moje doświadczenie w tych obszarach pomaga mi tworzyć bardziej efektywne i intuicyjne rozwiązania, które usprawniają interakcję użytkownika z oprogramowaniem.
Każdy nowy projekt powinien zawierać co najmniej jeden oryginalny pomysł. Konieczne jest wniesienie czegoś nowego, odmiennego od poprzednich podejść. W przeciwnym razie, po co w ogóle rozpoczynać ten projekt? Nowość to kluczowy element, który nadaje sens i wartość każdej inicjatywie.
Ideą schematu kolorów Alabaster jest minimalizm, użycie ograniczonej liczby kolorów, aby łatwo zapamiętać ich znaczenie. Może się to wydawać proste, ale w praktyce wielu projektantów nie stosuje się do tej zasady. Takie podejście pozwala na stworzenie harmonijnej i zrozumiałej całości wizualnej, co jest szczególnie ważne w projektowaniu stron internetowych i grafice. Użycie wielu kolorów pomaga uniknąć przeładowania wizualnego i ułatwia odbiór informacji, co jest ważne dla doświadczenia użytkownika.
Projekt cieszy się dużą popularnością i jest dostępny do wykorzystania w różnych środowiskach programistycznych. Obecnie dostępne są wersje dla Sublime Text, VS Code i IntelliJ IDEA, a także wiele portów stworzonych przez innych programistów dla różnych edytorów i terminali.

Opracowałem kilka własnych wtyczek do Sublime Text, opartych na moich osobistych potrzebach i specyfice mojej pracy. To swego rodzaju optymalizacja przepływu pracy: staram się, aby codzienne zadania były jak najwygodniejsze i najefektywniejsze. Nikt nie zna moich preferencji lepiej niż ja sam.
Oczywiście, ta metoda może być rozpraszająca. Każda rozsądna osoba, zaczynając programować, będzie preferować edytor, który oferuje maksymalne wsparcie dla jej języka programowania. Wybór odpowiedniego narzędzia ma kluczowe znaczenie dla zwiększenia produktywności i wydajności. Odpowiedni edytor nie tylko ułatwi kodowanie, ale także pomoże uniknąć błędów, zapewniając wygodniejsze i szybsze środowisko programistyczne.
Wybrałem Sublime Text pomimo początkowo słabej integracji z Clojure i stopniowo ulepszałem ten aspekt. Moja wtyczka Clojure Sublimed zapewnia wysokiej jakości podświetlanie składni Clojure i optymalną integrację nREPL z Sublime Text. Jeśli chcesz osiągnąć doskonałe rezultaty, lepiej zrób to sam.
Sześć sekretów szczęścia
Praca nad projektami open source równolegle z główną pracą wymaga starannego rozważenia, aby uniknąć wypalenia zawodowego. Jednak w pewnych warunkach jest to całkowicie możliwe. Właściwe zarządzanie czasem, wyznaczanie granic i zarządzanie obciążeniem pracą pomoże Ci zachować równowagę między obowiązkami służbowymi a udziałem w rozwoju open source.
Motywacja do działania dla popularności jest nieskuteczna, ponieważ statystyczne prawdopodobieństwo stworzenia czegoś naprawdę udanego jest niezwykle niskie. Chociaż nadzieja na sukces jest normalna, liczenie na niego byłoby błędem. Moje doświadczenie z obserwacji otaczającego mnie świata pokazuje, że przewidzenie sukcesu projektu jest prawie niemożliwe. Zamiast koncentrować się na popularności, lepiej skupić się na jakości i szczerości swoich pomysłów.
W dłuższej perspektywie motywacja do „robienia tego, co naprawdę potrzebne” jest bardziej zrównoważona. Na przykład wiele moich projektów ma zaledwie 100-200 gwiazdek na GitHubie i prawdopodobnie było użytecznych tylko dla kilkunastu użytkowników. Jednak nawet jeśli nikt inny nie doceni tych wysiłków, czas poświęcony na ich tworzenie nie pójdzie na marne. Każdy projekt pomaga rozwijać umiejętności i pogłębiać zrozumienie technologii. Dlatego ważne jest, aby skupić się na własnych potrzebach i zainteresowaniach, co ostatecznie prowadzi do bardziej znaczących rezultatów.
Ważnym aspektem open source jest możliwość otwartego eksplorowania i rozwijania projektów. Jeśli coś okaże się sukcesem, będzie to miłym dodatkowym efektem. W open source najważniejsza jest pasja do procesu, a nie rozczarowanie porażką.
W społeczności open source panuje powszechne przekonanie, że wokół popularnych projektów tworzy się aktywna społeczność współpracowników. Choć ta idea jest pozytywna, w praktyce takie społeczności powstają znacznie rzadziej, niż można by się spodziewać.
Surowa rzeczywistość jest taka, że sukces projektu zależy przede wszystkim od jego autora. Społeczność może aktywnie uczestniczyć w promocji, testowaniu i zgłaszaniu błędów, ale nie zapewnia znaczącego wsparcia w kodowaniu i rozwoju. Choć takie przypadki się zdarzają, nie zdarzają się na tyle często, by można było na nich polegać. Dlatego jest mało prawdopodobne, że będziesz mógł szybko uruchomić projekt, odpocząć i polegać wyłącznie na wkładzie współpracowników.
Stworzenie kodu to dopiero pierwszy krok. Ważne jest również, aby wyjaśnić, czym on jest, do czego służy i dlaczego inni ludzie go potrzebują. Sam kod nie zawsze jest w stanie wyjaśnić jego wartości, a przynajmniej nie tak skutecznie, jak słowa. To aspekt marketingu i bez niego sukces jest niemożliwy. Aby Twój kod przyciągał uwagę i był pożądany, musisz jasno komunikować jego zalety i unikalne cechy.
W praktyce stworzenie wysokiej jakości pliku Readme jest łatwiejsze, niż mogłoby się wydawać. Napisanie informacyjnego i zrozumiałego pliku Readme to już znaczący krok naprzód. Ważne jest, aby używać przystępnego języka, aby wyjaśnić najważniejsze kwestie: czym jest projekt, jak go wykorzystać, jaki jest jego cel, jakie przynosi korzyści i jaki jest aktualny stan rozwoju. Bez tych informacji prawdopodobieństwo, że ktoś zainteresuje się Twoim repozytorium, jest znacznie mniejsze. Warto zatem zadbać o stworzenie pliku Readme, aby przyciągnąć uwagę do swojego projektu i zwiększyć jego widoczność.

Umiejętność wyjaśniania i komunikowania pomysłów i projektów jest często niedoceniana wśród programistów. Wiele technicznie zaawansowanych projektów jest skomplikowanych w zrozumieniu, co utrudnia ich zrozumienie i użytkowanie. Umiejętność jasnego przekazywania informacji jest kluczem do udanej pracy zespołowej i interakcji z klientami. Jasne wyjaśnienia pomagają nie tylko w rozwoju, ale także w promowaniu projektów, zwiększaniu ich akceptacji i zainteresowania użytkowników. Rozwijanie umiejętności komunikacyjnych jest kluczowym krokiem dla programistów dążących do sukcesu zawodowego.
Jeśli Twój projekt zacznie zyskiwać na popularności, szybko odczujesz wzrost zainteresowania. Wraz ze wzrostem zainteresowania projektem wzrosną również wymagania: nieznajomi będą podchodzić do Ciebie z pytaniami, prośbami, a czasem nawet żądaniami.
To naturalne. Należy jednak pamiętać, że w obecnej sytuacji nie jesteś nikomu nic winien. Nie masz obowiązku odpowiadać, pomagać ani spełniać próśb innych. Rób to tylko wtedy, gdy masz na to ochotę, energię i czas.
Jeśli coś Ci nie odpowiada, odczuwasz dyskomfort, brak czasu, zmęczenie lub po prostu nudę, masz pełne prawo nic nie robić. To fundament Twojego zdrowia psychicznego i higieny psychicznej. Szacunek dla Twoich emocji i stanu jest ważnym aspektem dbania o siebie. Nie ignoruj swoich uczuć i potrzeb; odgrywają one kluczową rolę w utrzymaniu równowagi psychoemocjonalnej. Dbając o siebie, tworzysz warunki do lepszej jakości życia i zwiększonej produktywności. Pamiętaj, że Twoje dobre samopoczucie jest najważniejsze.
Pamiętaj, że Twój wkład w świat ma znaczenie, nawet jeśli dzielisz się swoim rozwojem za darmo. Takie działanie poprawia środowisko i przynosi korzyści innym. Wszystko, co wydarzy się później, będzie miłym dodatkiem, ponieważ robisz to przede wszystkim dla siebie i swojej inspiracji.
Może się to wydawać egoistyczne, ale w rzeczywistości chodzi o praktyczne podejście i konieczność. Każdy projekt można ulepszać w nieskończoność, zawsze będą prośby o nowe funkcje i zawsze ktoś napotka problemy. Prośby mogą być nieskończone, a Twoje zasoby ograniczone. Praca w ramach swoich możliwości to jedyny sposób, aby uniknąć przytłoczenia i presji ze strony innych. Optymalizacja procesów i priorytetyzacja zadań pomogą Ci zachować równowagę i skutecznie rozwijać projekt.
Rób to, na co masz siłę i nie martw się resztą. Skoncentruj się na swoich możliwościach i zasobach i nie pozwól, aby niepotrzebne zmartwienia odciągały Cię od ważnych zadań.
Brak informacji zwrotnej to jeden z najbardziej irytujących problemów dla użytkowników. Kiedy zadaję pytanie, tworzę zgłoszenie lub wysyłam pull request, oczekuję odpowiedzi. Zamiast tego jednak panuje cisza – dzień, tydzień, miesiąc, a czasem nawet rok. To prowadzi do frustracji i zmniejsza motywację do współpracy przy projekcie. Skuteczna komunikacja jest ważna dla podtrzymania zainteresowania i zaangażowania uczestników.
Programiści nie mają obowiązku odpowiadać użytkownikom, ale uważam, że ważne jest zwracanie uwagi na opinie. Osobiście staram się odpowiadać w ciągu kilku dni, nawet jeśli jest to tylko krótka wiadomość, taka jak „dzięki, zauważyłem”, „sprawdzę to później” lub „nie jestem pewien”. Najważniejsze to nie pozostawiać użytkowników bez odpowiedzi i podtrzymywać komunikację. To tworzy pozytywne wrażenie i pomaga budować zaufanie do produktu.
Nie musisz porzucać wszystkiego, co robisz, aby natychmiast rozwiązać problem. Ważne jest jednak, aby stworzyć poczucie bycia zauważonym i przebywania wśród ludzi. To buduje zaufanie i sprzyja pozytywnej atmosferze. Interakcje międzyludzkie odgrywają znaczącą rolę w naszym życiu i sposobie, w jaki postrzegamy otaczający nas świat.
Nie zapomnij cieszyć się procesem. Oprogramowanie open source oferuje wiele możliwości inspiracji i kreatywności. Jest nie tylko użyteczne, ale i przyjemne. Jeśli nie lubisz tego, co robisz, to po co to robisz?
Przeczytaj także:
- Jak przetestować pomysł na startup IT: instrukcje dla przyszłych programistów-założycieli
- Podstępne oprogramowanie open source: jakie zagrożenia czyhają w otwartym i wolnym oprogramowaniu
- Czym jest framework i jak wybrać framework dla front-endu: porady od doświadczonych programistów

