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.

Zachęcam również do dalszego obserwowania mojego bloga poprzez: polubienie fanpage na Facebooku, subskrypcję kanału RSS, zapisanie się do notyfikacji mailowych (formularz "Bądź na bieżąco" po prawej stronie) lub śledzenie mnie na Twitterze. Dzięki temu na pewno niczego nie pominiesz :)

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do dedykowanej grupy 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.

1 000 000 zł

Milion złotych. Tak, milion złotych. Milion złotych to cel, który sobie postawiłem jakiś czas temu. Chcę zarobić milion złotych na tym blogu. Do tej pory udało mi się zarobić 664,06 zł, więc jak widzisz jeszcze mi trochę brakuje. Jeszcze nie wiem do końca jak, ale to zrobię. Na pewno nigdy nie będę pobierał żadnych opłat za dostęp do treści, bo tymi chcę się po prostu dzielić. Pierwszym krokiem niech będzie rozpropagowanie bloga wśród jak największej liczby osób. I tu mam prośbę do Ciebie: jeśli uważasz, ten artykuł za wartościowy, to udostępnij go proszę swoim znajomym. Przy lewej lub dolnej krawędzi ekranu znajdziesz przyciski, które Ci to ułatwią. Niezależnie od tego, czy prześlesz ten wpis dalej, czy nie, to ja i tak bardzo Ci dziękuję za doczytanie do tego miejsca! Do przeczytania niebawem.

Picture Credits