Menu Zamknij

Czas Przestać Odkrywać Amerykę Po Raz Setny!

odkrywać Amerykę mapa
Nie uważasz, że najwyższy czas przestać odkrywać Amerykę na nowo?

Początek pracy w nowej firmie to z jednej strony stres, ale z drugiej ciekawa możliwość zajrzenia w umysł (kod) innych programistów. Każda instytuacja ma swoją specyfikę pracy i wypracowane rozwiązania. Z mojego doświadczenia wynika również, że każda firma ma swój „specjalny” kod. Być może lepiej byłoby powiedzieć, że jest to kod do zadań specjalnych. Niestety ta szczególna praca, którą wykonuje kod bywa rozczarowująca, bo znowu ktoś postanowił ponownie odkrywać Amerykę…

Nie ma na tym świecie odpowiedniego rozwiązania. No cóż… napiszę to sam…

Hmm. Gdybym dostał dolara za każdym razem, gdy to słyszę…

Programowanie jest z jednej strony dosyć proste, ale z drugiej szalenie skomplikowane. Od razu rozwikłam ten dziwny twór ze zdania powyżej. „Kodowanie” jest proste. „Programowanie” jest skomplikowane. Uważam, że w programowniu jest dużo więcej niż doskonała znajomośc frameworków, a już na pewno dużo więcej niż chęć budowania ich od nowa.

Gdy reguły prowadzenia wojny pozwalają przewidzieć pewne zwycięstwo, przystąpienie do walki jest bez wątpienia właściwe, nawet jeśli władca nie życzy sobie żadnej bitwy. Jeśli reguły wojny przepowiadają porażkę, właściwe jest powstrzymać się od walki, nawet jeśli władca pragnie wojny.

Sun Yzu, Sztuka Wojny
odkrywać Amerykę dobieraj bitwy
Dobieraj swoje bitwy! Jest wiele kodu do napisania bez Twoich „nowatorskich” prób.

Należy umiejętnie dobierać swoje bitwy. Każde oprogramowanie (komercyjne) odpowiada na jakieś zapotrzebowanie rynku. Przecież pod koniec dnia trzeba to sprzedać. Mam wrażenie, że my (programiści) o tym zapominamy. Dążymy do prefekcji, a każdy produkt (lub prawie każdy) ma przecież w sobie conajmniej zalążek wyzwania. Dlaczego nie chcemy się na nim skupić tylko uznajemy, że najwyższa pora napisać swoją własną bibliotekę do logowania?

Nie. Twój przypadek nie jest wyjątkowy.

Nie jest. Po prostu nie jest. Jak to pojmiesz to już jesteś dalej niż niejeden programista. Serio.

Dostęp do bazy danych. Logowanie. Jeżeli projekt jest odrobinę większy niz mały to posiada te części. Standard. Przez duże „S”. Kilkaset bibliotek. Wiele rozwijanych przez setki, a używanych przez tysiące programistów na całym świecie. Projekty rozwijane przez kilka lat i dostosowane często do najbardziej egzotycznych potrzeb.

Są sytuacje, które mogą sprawiać trudność w programowaniu. Nie oznacza to jednak, że ten przypadek jest wyjątkowy. Być może musisz lepiej poznać dostępne na rynku możliwości. Równie możliwe jest, że na Stackoverflow dawno już jest kilka odpowiedzi. Kilka lat doświadczenia nie sprawia, że zrobisz to lepiej. Zazwyczaj jest tak, że nie jesteśmy w stanie przewidzieć połowy problemów, na które natrafimy podczas takiej próby.

Skąd przeświadczenie, że napiszesz to lepiej?

Zanim zaczniesz pisać kod, zastanów się czy ktoś już przed Tobą tego nie zrobił. W szczególności należy przejrzeć rozwiązania „znane i kochane”.

Za każdym razem, gdy pochopnie pada pomysł napisania od nowa jednej z licznych standardowych implementacji, a więc logowania, dostępu do bazy, serwera HTTP czy innej „podstawy podstaw” popadam w zadumę. Jak można pomyśleć, że dziesiątki programistów, którzy nad tym pracowali przez kilka lat zrobili to gorzej niż „ja to zrobię”.

odkrywać Amerykę wyjątkowy
Nie. Ten przypadek nie jest wyjątkowy. Ty pierwszy nie napiszesz tego lepiej.

Próby te niezmienne kończą się powstaniem „standardowej” biblioteki, która działa wyłączenie w obrębie jednego projekt. Przy wyjątkowym szczęściu działa w obrębie jednej firmy. Drugi przykład jest oczywiście najlepszym z możliwych rezultatów.

Marnujesz nie tylko swój czas

Dzisiaj mamy festiwal argumentów przeciw, a więc niestrudzenie kontynuuję. W firmie podjęto nieszczęsną decyzję, że najlepszym podejściem jest „odkrywać Amerykę na nowo”, ponieważ nasz przypadek jest zaiste wyjątkowy.

  • Po pierwsze to zadanie jest znaczenie trudniejsze i bardziej czasochłonne niż się wydaje. Nie kłamię! Potrwa dłużej niż szacują najwięksi pesymiści i to nawet w negatywnych estymacjach.
  • Po drugie to kosztuje. Być może podwójnie, bo po 2 miesiącach wszyscy stwierdzą, że chyba trzeba by jednak skorzystać z dostępnych bibliotek standardowych.
  • Po trzecie będzie trzeba to utrzymywać i rozwijać. Gotowe biblioteki mają tendencję do rozwijania się bez naszego udziału.

Rozwiązuj problemy zamiast tworzyć nowe

Kiedyś ktoś powiedział mi coś bardzo mądrego:

Tester to osoba, która świetnie „psuje” rzeczy. Programista to osoba, która świetnie naprawia rzeczy.

Autor „zapomniany”

W żadnym przypadku nie chodzi mi o obrażanie kogokolwiek. Chodzi o stwierdzenie faktu, że programista i tester operują innym zestawem umiejętności, z których oba są kluczowe do powstania dobrej jakości oprogramowania.

Jako programista masz jedno zadanie. Jest nim rozwiązywanie problemów. Oprogramowanie istnieje po to, aby użytkownikom żyło się łatwiej. Masz do rozwiązania problem biznesowy. Ktoś płaci za rozwiązanie tego problemu. Skup się na tym! Nie dodawaj kolejnych trudności do tego procesu. W szczególności tam, gdzie ich nie ma!

Gotowe biblioteki bywają zawodne

Nowa wersja biblioteki, w której nic nie działa lub całościowo zmieniono fundamentalne założenia. Koniec wsparcia dla rozwiązania. Brak kontroli nad biblioteką i oddanie je w ręce niedoświadczonej społeczności programistycznej.

Czy to się zdarza? Oczywiście. Rozmawiamy jednak o sprawdzonych i używanych przez wielu programistów rozwiązaniach. Każde z nich przed użyciem powinno być przez odpowiedzialnego programistę sprawdzone pod względem ilości pobrań, supportu, licencji i daty wydania ostatniej wersji.

Nawet największym graczom zdarza się nieudana wersja. Zaufanie gotowym biblitekom nie jest pozbawione wad, ale zazwyczaj wystarczy się cofnąć do wcześniejszej wersji i poczekać, aż naprawią błąd.

Czy to prawda objawiona?

Jasne, że nie. Są przypadki poparte licznymi faktami i doświadczeniami produkcyjnymi, że jedynym wyjściem jest napisanie ponownie istniejącej już biblioteki. Są również firmy, które piszą wyłączenie taki kod lub własnie te „standardowe” biblioteki. Uwierz mi jednak na słowo, że w ciągu całej swojej kariery sytuacji, gdy konieczene będzie autorskie podejście do tego typu problemów policzysz na palcach jednej ręki. W każdym innym przypadku po prostu Ci się wydaje.

odkrywać Amerykę No ale u mnie
Są przypadki, gdy trzeba niestety przepisać standardowego gotowca. Nie deneruj się. Wiem o tym…

Wszystko powyższe oczywiście zakładając, że nie tworzysz rewolucyjnych konceptów w najbardziej strzeżonych bunkrach na świecie.

Podsumowanie

Praca programisty może dostarczać dużo ciekawych wyzwań. W każdej branży, w której pomaga kod jest mnóstwo ciekawych problemów do rozwiązania. Jestem przekonany, że można w nich się bardzo wykazać i rozwinąć.

Czy uważam, że chęć, aby odkrywać Amerykę na nowo nigdy nie ma sensu? Oczywiście, że nie! Wiem jednak, że w większości miejsc, w których pracujecie (lub będziecie pracować) jest dużo więcej problemów do rozwiązania – innych niż rewolucyjny system logowania.

Nie zapomnij zapisać się do newsletteru. Nie ominie Cię kolejny artykuł, a przy okazji otrzymasz całkiem za darmo poradnik…

Niezmiennie zachęcam do kontaktu. Komentarz. Mail. Formularz konatktowy. Odpowiadam na wszystko. Jeżeli chcesz, żebym o czymś napisał albo czujesz niedosyt tym artukułem to nie krępuj się! Coś poradzimy.