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

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?

Programista – Pytania rekrutacyjne

Lista pytań rekrutacyjnych, które pozwolą przygotować Ci się na rozmowę kwalifikacyjną.

No comments
Share:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *