Po satysfakcjonującym mnie starcie bloga i ilości do tej pory opublikowanych wpisów na temat prowadzenia własnej działalności gospodarczej, blogowanie spodobało mi się na tyle, że postanowiłem rozszerzyć poruszane tutaj zagadnienia o część programistyczną.

Tematykę programistyczną rozpocznę pierwszym wpisem z cyklu Vademecum Juniora. Jak pewnie się domyślasz jest on kierowany głównie do młodych adeptów programowania i będzie zbiorem krótkich porad, wskazówek i przykładów z życia opisujących moje doświadczenia z pracy jako programista. Jeśli nie jesteś już juniorem, to nie uciekaj od razu. Zapoznaj się z poniższym tekstem i podziel się swoimi przemyśleniami w komentarzu. Chętnie dowiem się, co Ty o tym myślisz.

Cykl artykułów "Vademecum Juniora"

Ten wpis jest częścią cyklu, w ramach którego opisuję moje doświadczenia i spostrzeżenia na temat programistycznego rzemiosła. Cykl jest dedykowany osobom rozpoczynającym swoją przygodę z zawodowym programowaniem lub planują taki krok w przyszłości.

Artykuły składające się na Vademecum Juniora zawierają różne porady, wskazówki i przykłady z pracy jako programista. Nie są one ani uporządkowane chronologicznie, ani mocno ze sobą powiązane. Możesz je więc czytać niezależnie od siebie i w dowolnej kolejności. Polecam jednak zapoznać się z treścią wszystkich wpisów, gdyż wierzę, że z każdego możesz dowiedzieć się czegoś wartościowego.

Studium przypadku

Opowiem Ci krótką historię. Kilka lat temu, po dłuższym okresie milczenia, odezwał się do mnie Adam, kolega z gimnazjum. W tamtym czasie ja byłem na starcie mojej kariery programistycznej i miałem coś około roku doświadczenia w pracy na część etatu, a on kończył studia medyczne. Zapytał, czy nie mógłbym napisać mu małego programu, który obliczałby odległość Levenshteina pomiędzy dwoma ciągami DNA. Był on mu potrzebny do jakiejś pracy naukowej. To, że to było akurat DNA nie miało tutaj dużego znaczenia. Po prostu potrzebny był program obliczający odległość Levenshteina pomiędzy dwoma ciągami znaków pobranymi z pliku. Dodatkowo ważne było, żeby był to program wyposażony w GUI, bo był przeznaczony dla osób nietechnicznych, więc tłumaczenie jak odpalić to z linii poleceń nie wchodziło w grę. Z entuzjazmem podjąłem „wyzwanie”, gdyż było ono fajną odskocznią od bieżących projektów.

Od razu zabrałem się za kodowanie. Bez namysłu wybrałem Javę. GUI poszło całkiem sprawnie. Napisałem je w Swingu, bo akurat byłem z nim w miarę obeznany po kilku uczelnianych projektach . W końcu zabrałem się za implementacje właściwego algorytmu. Pisałem, pisałem, dopieszczałem, napisałem nawet kilka testów (co nie było jeszcze wtedy takie oczywiste). W sumie na sam algorytm zeszło pewnie kilka godzin. Z finalnego efektu byłem zadowolony, Adam (oraz osoby współtworzące jego pracę naukową) jeszcze bardziej, co było dla mnie fajną gratyfikacją.

Czas mijał, ja uczyłem się nowych rzeczy i zdobywałem kolejne doświadczenia na etacie. Coraz bardziej zapoznawałem się z projektem Apache Commons, który spotykałem praktycznie w każdym projekcie, z którym miałem styczność. Kilka tygodni, a może nawet miesięcy po tym jak wysłałem Adamowi ostateczną wersję projektu, trafiłem na metodę:

org.apache.commons.lang3.StringUtils#getLevenshteinDistance(CharSequence, CharSequence)

Nazwa metody jest chyba wystarczająco wymowna. Zainteresowanych szczegółami zapraszam do dokumentacji.

W żadnym znanym mi języku świata nie ma słów, które potrafiłyby wyrazić jak się wtedy poczułem 🙂 Myślę, że najlepiej wyrazi to kapitan Picard:

Picard's facepalm

Wniosek

Morał z tej historii jest taki – zanim zaczniesz odkrywać koło na nowo (lub wyważać otwarte drzwi, jeśli wolisz to powiedzenie) upewnij się, czy rozwiązanie Twojego problemu nie zostało już ładnie opakowane w bibliotekę/moduł/pakiet i udostępnione publicznie. Istnieje spore prawdopodobieństwo, że już tak się stało. Co więcej, jeśli Twoim zadaniem jest utrzymywanie lub rozwijanie istniejącego projektu, to sprawdź, czy przypadkiem dana biblioteka nie została już tam dołączona przez Twoich poprzedników lub czy podobne rozwiązanie nie zostało już przez któregoś z nich napisane. Tutaj również masz spore szanse, że właśnie tak się stało.


Bądź na bieżąco!

Podobają Ci się treści publikowane na moim blogu? Nie chcesz niczego pominąć? Zachęcam Cię do subskrybowania kanału RSS, polubienia fanpage na Facebooku, zapisania się na listę mailingową:

Dołączając do newslettera #NoweRozdanie2 otrzymasz dostęp do dodatkowych materiałów:

  • PDF: „Jednoosobowa działalność gospodarcza krok po kroku” (do artykułu)
  • PDF: „FAQ: Jak pracuje się dla Roche/Sii?” (do artykułu)
  • PDF: „Jak zmniejszyć prawdopodobieństwo wystąpienia kontroli i co zrobić kiedy urzędnik zapuka do Twoich drzwi?” (do artykułu)

Powyższe dane są przechowywane w systemie Mailchimp i nie są udostępniane nikomu innemu. Więcej szczegółów znajdziesz na stronie polityki prywatności.

lub śledzenia mnie na Twitterze. Generalnie polecam wykonanie wszystkich tych czynności, bo często zdarza się tak, że daną treść wrzucam tylko w jedno miejsce. Zawsze możesz zrobić to na próbę, a jeśli Ci się nie spodoba – zrezygnować :)

Dołącz do grup na Facebooku

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do powiązanych grup na Facebooku, gdzie znajdziesz dodatkowe informacje na poruszane tutaj tematy, możesz podzielić się własnymi doświadczeniami i przemyśleniami, a przede wszystkim poznasz ludzi interesujących się tą samą tematyką co Ty.

W grupie Programista Na Swoim znajdziesz wiele doświadczonych osób chętnych do porozmawiania na tematy krążące wokół samozatrudnienia i prowadzenia programistycznej działalności gospodarczej. Vademecum Juniora przeznaczone jest zaś do wymiany wiedzy i doświadczeń na temat życia, kariery i problemów (niekoniecznie młodego) programisty.

Wesprzyj mnie

Jeżeli znalezione tutaj treści sprawiły, że masz ochotę wesprzeć moją działalność online, to zobacz na ile różnych sposobów możesz to zrobić. Niezależnie od tego co wybierzesz, będę Ci za to ogromnie wdzięczny.

Postaw mi kawę na buycoffee.to

Na wsparciu możesz także samemu zyskać. Wystarczy, że rzucisz okiem na listę różnych narzędzi, które używam i polecam. Decydując się na skorzystanie z któregokolwiek linku referencyjnego otrzymasz bonus również dla siebie.

Picture Credits