CO ROBIĆ, gdy nic nie działa i wszystko się wali!?

CO ROBIĆ, gdy nic nie działa i wszystko się wali!?

Miał się pojawić kolejny wpis o StormSnapshot, ale … No właśnie, jeszcze go nie ma.

Co robić, gdy nic nie działa i kończą Ci się pomysły jak to naprawić?

Każdemu programiście czasem zdarza się dojść do takiego momentu, że mimo usilnych starań nie może rozwiązać jakiegoś, wydawałoby się prostego problemu.

Ty też tak czasem masz, prawda?

Najpierw kontekst

Po straconych dwóch popołudniach na bezowocnej „walce z maszynami” postanowiłem zmienić trochę podejście, zebrać do kupy dotychczasowe doświadczenia i trochę się pożalić…

Przez poprzedni wpis na temat React Native przeszedłem bez większych problemów. Tym razem miałem pochylić się nad Ionic. Nie spodziewałem się większych problemów, zwłaszcza że miałem już do czynienia z PhoneGap.

Niestety… Mimo usilnych starań, po kilkugodzinnej walce jestem dalej bez działającego środowiska. Można powiedzieć, że nawet nie zacząłem.

Teoretycznie wszystko powinno działać, ale dziwnym trafem nie chce.

Teoria i praktyka

Teoria i praktyka

Standardowe początki

Sytuacja zazwyczaj rozwija się w bardzo standardowy sposób. Wykonujemy spokojnie swoje zadanie, realizując kolejne punkty dokumentacji, czy jakiegoś tutoriala.

Oczywiście pojawiają się błędy i problemy, ale co to dla nas! Przecież jesteśmy programistami, taka nasza praca. Chwila zastanowienia, szybkie przeskoczenie do google i znowu jesteśmy w grze.

Problem zaczyna się wtedy, gdy standardowe rozwiązania nie przynoszą spodziewanego rezultatu, a my denerwujemy się coraz bardziej.

Programistyczna ŚCIANA i chwila zwątpienia

Kolejne godziny mijają coraz szybciej, a rozwiązania jak nie było, tak nie ma.

Człowiek robi się coraz bardziej poddenerwowany, a świadomość, że to powinno być przecież takie proste i nawet stażysta poradziłby sobie z tym problemem w kilka chwil, wcale nie pomaga.

W takim stanie naprawdę ciężko podejmować jakieś sensowne decyzje.

STOP! Zatrzymaj się, złap oddech i zbierz myśli

Najlepsze, co można zrobić w takiej sytuacji, to zatrzymać się i wyrwać się z tego zamkniętego kręgu.

Albert Einstein

Albert Einstein

Czasem nie wystarczy już zwykłe podejście do okna, czy popatrzenie w sufit.

Głowa, która dosłownie pęka od nadmiaru informacji i pretensji do siebie, potrzebuje więcej czasu, by odpocząć. Mnie najlepiej pracuje się rano, gdy jeszcze nie mam mętliku w głowie od codziennych obowiązków. Dlatego właśnie staram się zaczynać dzień od najtrudniejszych zadań.

A mówią, że programowanie to taka łatwa praca…

Nowy plan

Nowy plan działania wcale nie musi oznaczać „ciśnięcia” tematu dalej do upadłego.

Odpuść sobie „Let It Go!”

Let It Go!

Let It Go!

Nie można zapominać, że nasza praca i nasz czas ma swoją wartość. To właśnie efekt, jaki ona przynieście, zazwyczaj jest najważniejszy, a nie satysfakcja, że po spędzonym całym weekendzie przed komputerem znajdziemy wreszcie brakujący średnik, czy nadmiarową spację w pliku…

Odpuścić można na wiele sposobów i wcale nie jest to przyznanie się do porażki.

  • Sygnalizacja zagrożenia! To podstawa, jeżeli pracujemy w zespole. Jeżeli widzisz, że nie dowieziesz danego tematu na czas, to Twoim obowiązkiem jest poinformowanie innych członków zespołu o tym jak najszybciej. Może się okazać, że w naszym bliskim otoczeniu jest ktoś, kto miał taki sam problem lub ma większe doświadczenie w tej kwestii.
  • Rezygnacja z zadania. Jeżeli spędzimy nad danym problemem zbyt dużo czasu, może się okazać, że potencjalne korzyści przewyższą koszty. Jeżeli oczywiście jest to możliwe, warto rozważyć rezygnacją z takiego zadania i uciąć potencjalne straty, póki są jeszcze akceptowalne.

Jednak dam radę

No dobra. Nie możemy lub nie chcemy porzucić takiego kłopotliwego zadania. Jak w takim razie je ugryźć? Zebrałem poniżej trochę potencjalnych rozwiązań na takie specjalnie sytuacje.

Google Twoim przyjacielem

Niby wszyscy (no dobra, prawie wszyscy) korzystają z Google, jednak jak pokazują statystyki [1] przeszło 90% ludzi ogranicza się tylko do pierwszej strony wyników wyszukiwania.

Google 2 strona

Google 2 strona

Google udostępnia szereg rozwiązań, które pozwolą doprecyzować to, czego szukamy.

Wyszukiwanie ścisłego dopasowania

Jeżeli chcesz wyszukać konkretną frazę z zachowaniem kolejności poszczególnych słów, umieść ją w cudzysłowie („”). Bardzo dobrze to się sprawdza w przypadku fragmentów kodu, czy stack trace.

Pamiętaj jednak, że w ten sposób ograniczasz się tylko do wyników, które posiadają dokładnie tę frazę.

„konkretne hasło”

Wykluczenie słów

Jeżeli nie chcesz, żeby jakieś frazy pojawiły się w wynikach wyszukiwania, wstaw przed nimi znak minus (-).

To bardzo przydatny operator, zwłaszcza gdy w wynikach znajdziemy dwie całkowicie różne rzeczy o takiej samej nazwie. Wyobraźcie sobie moje zdziwienie, gdy przeszukując Internet po haśle: Ionic znalazłem suszarki do włosów! Co ciekawsze okazało się, że mam nawet taką w domu 😉

-suszarka

Wyszukiwanie wszystkich słów w tekście

Przy pomocy operatora allintext: można znaleźć strony, które zawierają wszystkie podane przez nas zwroty.

allintext: java react native stormit

Łączenie zapytań

Poszczególne zapytania można ze sobą łączyć przy pomocy operatora OR

stormit OR java

Wyszukiwanie w obrębie strony

Wyniki wyszukiwania można również ograniczyć do konkretnej strony lub do końcówki domeny jak .pl

site:stormit.pl java

Ciekawe wyniki można uzyskać również, łącząc ze sobą poszczególne operatory. Można np. wykluczyć z wyników wszystkie wyniki z wybranej strony:

java -site:java.com -site:wikipedia.org

Więcej przykładów operatorów znajdziecie w pomocy Google.

Alternatywne wyszukiwarki

Na Google świat się nie kończy. Niby w Polsce [2] pozostałe wyszukiwarki stanowią niespełna 3%, jednak na świecie sytuacja wygląda trochę lepiej.

Wyszukiwarki świat

Wyszukiwarki świat
(źródło: statcounter.com)

Jeżeli człowiek jest odpowiednio zdesperowany, warto rozważyć wszystkie opcje.

  • Bing (bing.com)
  • Yahoo (yahoo.com)
  • Baidu (baidu.com)
  • Yandex (yandex.ru)
  • Ask (ask.com)

Dokumentacja

Tak, takie coś czasami też istnieje 🙂

Na stronie różnych bibliotek często można znaleźć pomocną dokumentację. Java także posiada opis swojego API, do którego czasem warto zajrzeć.

Źródła

Niektórzy, w tym ja, preferują czytanie źródeł aplikacji ponad dokumentację. Dobrze napisany kod zawsze prawdę Ci powie, a dokumentacja niestety już nie zawsze…

Podpięcie źródeł

Jeżeli tylko wykorzystuję zewnętrzną bibliotekę w swoim projekcie, staram się mieć podpięte jej pełne źródła oraz Javadoc w IDE. Jeżeli jakaś metoda nie działa zgodnie z moimi oczekiwaniami, zawsze można zajrzeć do jej wnętrza lub ją zdebugować.

Dekompilacja

W ramach pakietu JDK dostępne jest narzędzie javap, przy pomocy którego możemy dekompilować klasy, które posiadamy tylko w skompilowanej wersji. Nie jest to tak wygodne, jak przeglądanie samego kodu, ale czasem może okazać się pomocne.

GrepCode

W ramach projektu grepcode.com indeksowane są źródła publicznie dostępnych bibliotek. Przy pomocy tej strony można też przeszukać bazę źródeł po fragmencie kodu.

Zmień środowisko i zacznij od zera

A restart robiłeś?

Takie pytanie pada dość często w takich sytuacjach. Niby półżartem, ale jednak coś w nim jest. Dla świętego spokoju warto spróbować i tego.

Zmień komputer

Żyjemy już w takich  czasach, że w domu często jest więcej niż jeden komputer. Jak kończą mi się pomysły, to przesiadam się na laptopa i tam próbuję swoich sił. Czasem nowe środowisko, nowa konfiguracja, może odmienić losy naszego problemu.

Zrób sobie przerwę i idź na piwo

Zrób sobie przerwę i idź na piwo

Zrób sobie przerwę i idź na piwo

Skoro i tak nic nie działa, to po co się zarzynać?

Z czystą głową lepiej rozwiązuje się problemy. Bywa, że lepiej przeznaczyć ten czas na inne zadanie lub na spacer/piwo…

Zapytaj kolegów

Nie jesteśmy sami na świecie, zawsze można skorzystać z pomocy jakiegoś znajomego, czy to siedzącego biurko obok, czy wirtualnego.

  • współpracownicy
  • fora internetowe
  • stackoverflow.com

Alternatywne rozwiązania

Na zakończenie jeszcze dwie mniej techniczne propozycje. Ostatecznie mówi się przecież, że informatyka ma w sobie trochę magii.

Odczaruj urok

Spluń przez lewe ramię, okręć się trzy razy na pięcie i stukaj obiema rękami w niemalowane drewno.

Koniecznie w tej kolejności!

św Ryta z Cascii patronka trudnych spraw

O potężna i sławna Święta Rito, oto u twoich stóp nędzna dusza potrzebująca pomocy, zwraca się do ciebie z nadzieją, że zostanie wysłuchana.

Ponieważ jestem niegodny z tytułu niewierności mojej, nie śmiem spodziewać się, że moje prośby będą zdolne ubłagać Boga. Dlatego wyczuwam potrzebę, aby mieć za sobą potężną orędowniczkę, więc ciebie wybieram sobie, Święta Rito, ponieważ ty właśnie jesteś niezrównaną Świętą od spraw trudnych i beznadziejnych.

O droga Święta, weź do serca moją sprawę, wstaw się do Boga, aby uprosić mi łaskę, której tak bardzo potrzebuję i o którą tak gorącą proszę (tutaj wyrazić łaskę, o którą się prosi) 

Nie pozwól mi odejść od ciebie nie będąc wysłuchanym. Jeżeli jest we mnie coś, co byłoby przeszkodą w otrzymaniu łaski, o którą proszę, pomóż mi usunąć tę przeszkodę: poprzyj moją prośbę swymi cennymi zasługami i przedstaw ją swemu niebieskiemu Oblubieńcowi, łącząc ją z twoją prośbą. W ten sposób moja prośba zostanie przedstawiona przez ciebie, wierną oblubienicę spośród najwierniejszych. Ty odczuwałaś boleść Jego męki, jak mógłby on odrzucić twą prośbę i nie wysłuchać jej?

Cała moja nadzieja jest więc w tobie i za twoim pośrednictwem czekam ze spokojnym sercem na spełnienie moich życzeń. O droga Święta Rito, spraw, aby moja ufność i moja nadzieja nie zostały zawiedzione, aby moja prośba nie była odrzuconą. Uproś mi u Boga to, o co proszę, a postaram się, aby wszyscy poznali dobroć twego serca i wielką potęgę twego wstawiennictwa.

O Najsłodsze Serce Jezusa, które zawsze okazywało się tak bardzo czułe na najmniejszą nędzę ludzkości, daj się wzruszyć moimi potrzebami i nie bacząc na moją słabość i niegodność, zechciej wyświadczyć mi łaskę, która tak leży mi na sercu i o którą prosi Cię dla mnie i ze mną Twoja wierna  oblubienica, Święta Rita.

O tak, za wierność, jaką Święta Rita zawsze okazywała łasce Bożej, za wszystkie zalety, którymi uhonorowałeś jej duszę, za wszystko co wycierpiała w swym życiu jako żona, matka i zakonnica, i w ten sposób uczestniczyła w Twej bolesnej męce i wreszcie z tytułu nieograniczonej możliwości wstawiania się, przez co chciałeś wynagrodzić jej wierność, udziel mi Twej łaski, która jest mi tak bardzo potrzebna.

A Ty, Maryjo Dziewico, nasza najlepsza Matko Niebieska, która przechowujesz skarby Boże i rozdzielasz wszelkie łaski, poprzyj Twoim potężnym wstawiennictwem modły Twej wielkiej czcicielki Świętej Rity, aby łaska o którą proszę Boga, została mi udzielona.
Amen.

Na koniec

Prędzej czy później każdy z nas trafi na taką ścianę. Ważne jest to, by mieć świadomość, że takie rzeczy czasem się zdarzają i wiedzieć jak sobie z tym radzić.

Powodzenia i wytrwałości, ja walczę dalej 🙂

A Ty jak radzisz sobie w takich sytuacjach?


20+ BONUSOWYCH materiałów z programowania

e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!

Jak zostać programistą

No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *