CodeGym /Blog Java /Random-PL /Jak to było? Albo mój pierwszy projekt
John Squirrels
Poziom 41
San Francisco

Jak to było? Albo mój pierwszy projekt

Opublikowano w grupie Random-PL
Oto tłumaczenie historii sukcesu naszej globalnej społeczności Java. Alex nauczył się Javy na rosyjskojęzycznej wersji kursu, którego uczysz się w języku angielskim na CodeGym. Niech stanie się inspiracją do dalszej nauki i może kiedyś zechcesz podzielić się z nami swoją historią :)

Wstęp

Trochę o tym jak zacząłem przygodę z programowaniem. Z wykształcenia jestem nauczycielem i psychologiem, a od 5 lat z sukcesem wykonuję swój zawód. Jednak z różnych powodów coraz częściej myślę o przeprowadzce do innego kraju. A ponieważ język i przepisy są różne w innych krajach, nie mógłbym stać się profesjonalistą tego samego rodzaju bez poważnego przekwalifikowania. Zacząłem więc szukać prostszych, interesujących sposobów poruszania się i odniesienia sukcesu. Jak to było?  Albo mój pierwszy projekt - 1Próbowałem swoich sił jako tatuażysta (nie wymaga to w zasadzie żadnej znajomości języka), ale to historia na inny dzień. Następnie mój przyjaciel ze współpracownika zapoznał mnie z CodeGym. Początkowo byłem sceptyczny wobec obietnic, że dzięki grze w grę uczynią mnie pełnoprawnym programistą i to za tak skromną cenę. Ale potem dostałem trochę urodzinowych pieniędzy (niepodlegających „podatkowi rodzinnemu”) i stanąłem przed wyborem między WoW a CodeGym… Cóż, dzięki zniżce w odpowiednim czasie szala przechyliła się w dobrym kierunku i oto jestem. Jak wszyscy powinniśmy już wiedzieć, CodeGym to w 90% czysta praktyka. Uczysz się rozwiązywać zadania. Uczysz się odnajdywać w Internecie brakującą Ci wiedzę. Wszystko fajnie, jednak przez 15 poziomów nie mogłem oprzeć się wrażeniu, że brakuje mi czegoś, co uzupełniłoby dla mnie obraz. Myślałem o dołączeniu do GeekBrains, ale (prawdopodobnie na szczęście) ten sam znajomy zatrzymał mnie w porę i przedstawił mi Udemy. Otwierając tę ​​skarbnicę wiedzy, poszedłem za apelami: „ Psst, przyjacielu. Jesteś nowicjuszem?” Mamy dla Ciebie zniżkę... tylko na 3 dni — nie przegap tej okazji! " Później stało się jasne, że zawsze są zniżki, ale nie o to chodzi. Od razu kupiłem pakiet z dwoma kursami: Java od 0 do Pro i coś podobnego dla Androida. I tu zaczyna się nasza historia.

Sukces czy porażka?

Podczas pracy nad kursem dotyczącym Androida dostałem pracę domową polegającą na wykonaniu projektu w oparciu o moją nową wiedzę. Jestem osobą, która wierzy, że zrobienie czegoś w prosty i zwyczajny sposób jest jak nierobienie tego w ogóle. Więc od razu zacząłem komplikować sobie życie. Zwróciłem się do znanej mi osoby, która ma najbardziej rozwiniętą i żywą wyobraźnię. To jest moja droga żona (tak, ona też przeczyta ten artykuł). Zasugerowała stworzenie aplikacji ze zdjęciami zwierząt, które po kliknięciu wydają odpowiednie odgłosy zwierząt. To był świetny pomysł, ale wciąż dość prosty. Biorąc tę ​​sugestię za podstawę, zacząłem rozumować:
  • Ta aplikacja musi być czymś więcej niż tylko bzdurą (coś, z czego można się pośmiać i zapomnieć). Chcę, żeby to miało wartość. Na przykład ucząc czegoś.
  • Niech to będzie alfabet ze zwierzętami. Ale nie byle jaki alfabet, ale alfabet angielski!
  • I nie tylko zwierzęta, ale rzadkie zwierzęta, które zna niewiele osób, aby poszerzyć swoje horyzonty!
  • Powinna być animacja, reprodukcja dźwiękowa nazw liter i imion zwierząt w języku angielskim i rosyjskim!
I to właśnie nazywam pracą domową (zapomniałem dodać, że przed CodeGym w zasadzie nie znałem się na programowaniu. A od chwili, kiedy zacząłem aktywnie korzystać ze strony do momentu rozpoczęcia projektu, minęły niecałe 3-4 miesiące. Zatem jeśli jesteś weteranem w tej dziedzinie i myślisz: „ Pff… Czy coś się zmieniło w stosunku do oryginalnej wersji? ”, Zapewniam, tak, zmieniło się)! Pierwszą trudnością, jaką napotkałem, było , co dziwne, rozpoczęcie projektu. Jak się okazuje, nie tylko autorzy doświadczają „blokady pisarskiej”… Ale ponieważ jestem psychologiem, znałam rozwiązanie mojego problemu. Trzeba po prostu zacząć coś robić. Zrób chociaż mały krok, a potem po prostu nie przestawaj. Zacząłem więc od abstrakcyjnej klasy Letter . Ta klasa miała kilka pól, a następnie musiała mieć różne metody. Tak naprawdę nie miałam pojęcia, co z tym zrobię, ale musiałam coś zrobić. Następnie utworzyłem klasy dla każdej litery, sprawiając, że dziedziczą one klasę abstrakcyjną. Zajęło mi to sporo czasu i na tym zakończył się mój pierwszy dzień w pracy. Następnego dnia usunąłem projekt i zacząłem od nowa. Właśnie otworzyłem projekt, żeby przypomnieć sobie, co się zmieniło od momentu, który opisałem powyżej. I chciałbym powiedzieć, że kiedy skończyłem, wszystko wyglądało lepiej, ale nie. Tak naprawdę do każdej litery są jeszcze zajęcia... Było to spowodowane tym, że dostałem tę pracę domową niemal na samym początku kursu Androida i musiałem sam rozgryźć zawiłości relacji pomiędzy aktywność (aktywne okno lub coś w tym rodzaju) z klasą. I nie znalazłem ani nie wymyśliłem niczego innego niż ten niezdarny sposób powiązania konkretnej klasy z konkretną czynnością. Tak czy inaczej, jedna z zasad programowania (unikaj powtórzeń) została naruszona 26 razy. Najpierw całkowicie (wydawało mi się) zaimplementowałem pierwsze dwie litery, zrobiłem przybliżony interfejs użytkownika składający się z dwóch menu (menu ogólnego, które może być potrzebne przy rozszerzaniu funkcjonalności oraz spisu treści, z którego można było przejść do dowolnego z liter). W programowaniu nie napotkałem większych trudności. W trakcie realizacji mojego samodzielnego projektu wiele rzeczy, takich jak relacje między klasami, metodami itp., stało się jasnych, a sam projekt stał się doskonałą praktyką do utrwalenia całej wiedzy, którą zdobyłem nie tylko o Androidzie, ale także o Javie. Druga trudność polegała na tymże litera zmieniła się w tym samym czasie, gdy usłyszano jej nazwę. Płynne przejście (cieniowanie) sprawiało wrażenie, jakby dźwięk poprzedzał obraz. Kiedy jednak nałożyłem opóźnienie na dźwięk, cały wątek zamarł – przejście zostało po prostu przesunięte o wielkość opóźnienia, dając ten sam niepożądany efekt, dopiero później. Następnie podjąłem odważną decyzję, aby mój program był wielowątkowy! Przeniosłem odtwarzanie dźwięku do osobnego wątku, z opóźnieniem wystarczającym do załadowania obrazu. To tyle, jeśli chodzi o wielowątkowość, ale z dumą mogłem powiedzieć, że piszę aplikację wielowątkową. Ostatnią trudnością był wybór odpowiednich materiałów. Czy myślałeś, że w języku angielskim nie ma zwierzęcia na literę X (okazuje się, że ma)? Musiałem zidentyfikować 26 zwierząt, znaleźć ich obrazy i dźwięki oraz zapisać nazwy 26 liter i 26 zwierząt. Gdybym pracował w zespole, oczywiście pozostawiłbym tę część pracy komuś innemu. Takie monotonne chwile zabijają chęć do pracy, a gdy nie ma ochoty, pojawiają się wymówki. Tak czy inaczej, ten etap trwał około 2 tygodni (projekt robiłem w wolnym czasie i kiedy nie miałem wymówek). Projekt uznano za zakończony po około 3-4 tygodniach od jego rozpoczęcia.

Czy warto kontynuować naukę programowania?

Potem nastąpiło rozczarowanie. Po pierwsze, nie pozwolono mi publikować na kursie mojej pracy domowej. Wykonałem swoją pracę i włożyłem mnóstwo wysiłku, aby się popisywać, ale nie pozwolono mi na to. Po drugie, moja aplikacja działała doskonale w emulatorze i na moim telefonie. Animacji z tego, co planowałem zrobić, nie zrealizowałem, bo splunąłem i stwierdziłem, że dokończę to po przejściu odpowiednich lekcji w kursie. Kiedy jednak zacząłem myśleć o dystrybucji aplikacji, natknąłem się na ciekawy problem. Po użyciu innego telefonu i tabletu w celu sprawdzenia, czy moja aplikacja jest zoptymalizowana pod kątem różnych ekranów i różnych wersji Androida, napotkałem nieznany błąd. Program po prostu wyłączał się po przejściu na literę. Próbowałem znaleźć przyczynę problemu, przejrzałem logi, które w porównaniu ze zwięzłymi wyjątkami w Javie wydawały się jeszcze bardziej hokus-pokusem. Internet mi nie pomógł. Z jednej strony stworzyłem działającą aplikację, w którą lubią bawić się moje dzieci. Z drugiej strony działa to tylko na moim telefonie. To mnie śmieszy. Oczywiście byłem zdenerwowany, ale po zastanowieniu doszedłem do wniosku, że więcej zyskałem, niż straciłem:
  • Coraz lepiej radzę sobie z krytyką mojej pracy.
  • Uświadomiłem sobie wartość wiedzy i doświadczenia w projektowaniu oprogramowania.
  • Zwiększyłem swoją samoocenę w programowaniu.
  • Zdałem sobie sprawę z konieczności przestudiowania wzorców projektowych i podstaw refaktoryzacji.
  • I jak powiedziałem, teraz mam własną aplikację, której nikt inny nie ma i prawdopodobnie nigdy nie będzie miał. =)
"Wiem, że nic nie wiem". Realizując takie projekty edukacyjne, masz doskonałą okazję do przeanalizowania tego, co wiesz, gdzie masz luki w swojej wiedzy i określenia sposobów dalszego rozwoju. Czy warto kontynuować naukę programowania, jeśli rozumiesz, że wszystkie Twoje wysiłki na długim etapie życia przesunęły Cię z 0 do +0,001? Dla mnie odpowiedź brzmiała: tak. Co z tobą?
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION