JavaDevMatt.pl – Mateusz Kupilas

Programista, przedsiębiorca, gamedev, bloger.

Na jakim projekcie uczyć się programowania? Co pisać, by mieć z tego frajdę?

Jednym z popularniejszych wpisów na blogu i filmów na YT był ostatnio „Jakbym dzisiaj zaczynał z Javą od zera? Porady i darmowe materiały do nauki„.

Była tam zamieszczona popularna w internecie lista przykładowych pomysłów. W końcu „by pisać, trzeba pisać”, a nie ciągle czytać o programowaniu i oglądać filmy związane z programowaniem.

Jednak ciągle pojawiają się pytania o to, jak znaleźć „swój projekt”, który sprawi nam dużo frajdy i będziemy mieli dzięki temu motywację, by go rozwijać. Może nawet znajdziemy parę osób, które nam pomogą. O tym będzie dzisiejszy wpis. Zapraszam. 🙂

Ten wpis powstał w ramach współpracy ze szkołą Coders Lab. Dla zainteresowanych: pod koniec wpisu znajdziecie ofertę kursu z możliwością 100% zwrotu (w przypadku zatrudnienia). Zwrot kosztów jest możliwy dzięki współpracy Coders Lab z firmą Amelco. Zgłaszać można się do 28.02.2018 (18:00). Szczegóły na tej stronie lub pod koniec tego wpisu.

Czym się interesujesz?

To najłatwiejszy sposób, by znaleźć „swój” projekt. Moim głównym zainteresowaniem na początku studiów była gitara. Akurat mieliśmy na drugim semestrze C++. Zabrałem się za jakieś IDE, które pomagało w tworzeniu prostych okienkowych aplikacji i tak powstał program do ćwiczenia słuchu EarExp! 😀

Przedstawiłem program na paru forach muzycznych i otrzymałem nawet parę dotacji (na stronie projektu był button PayPala) za przydatny soft. Miłe komentarze zawsze pomagają w motywacji do dalszego działania, ale gdy jakiś anonim z internetów przekaże ci 10$, to daje to jeszcze większego kopa. 😀

Co innego mógłbyś stworzyć? Może interesujesz się piłką nożną i zabierzesz się za własny ranking?

Niekoniecznie musisz korzystać z danych z realnego świata. Może napiszesz aplikację dla kolegów, którzy często organizują sobie kanapowe turnieje w Fife na PS4 i aplikacja będzie prezentowała ranking + wyśle maila z gratulacjami do zwycięzcy?

Niby to banalne pomysły, ale pisząc coś takiego co „czujesz” i widzisz, że ktoś może faktycznie 1, czy 2 razy z tego skorzysta (jak ten mój program do ćwiczenia słuchu z gitarą), to motywacja do dalszego rozwijania projektu się pojawi.

Przykłady 2 projektów stworzonych zgodnie z zainteresowaniami progamistów możesz sprawdzić w moim podcaście. Nagrałem 2 odcinki z osobami, które są entuzjastami treningu siłowego i stworzyli swoje aplikacje.

Od lewej: Weighter i Fortitudo

Z czego korzystasz albo o czym sporo słyszałeś? Napisz uproszczoną wersję z jakimś smaczkiem

Gdy pomysł z pisaniem czegoś związanego ze swoimi zainteresowaniami zawiedzie, to mamy plan B.

Z jakiego oprogramowania korzystasz, albo o czym sporo słyszałeś? Możesz spróbować napisać uproszczoną własną wersję, z jakimś dziwnym smaczkiem. Nikomu za zapadanie w pamięć, jeśli napiszesz „gorszą wersję Twittera”.

Za to w pamięć zapada taka przeróbka Tindera. Bimber – apka do szukania kompanów do wspólnego piwa. 😀

Nawet prosty do bólu kalkulator można przecież „udziwnić” i mieć masę frajdy z takiego projektu. Może kalkulator, który po podaniu wyniku 666 odpala YouTuba z losowym utworem Slayera? Nie tylko napiszesz kalkulator (bardzo popularny pierwszy krok początkujących), ale również dowiesz się jak pobrać wyniki wyszukiwania z YT i wylosować film, który ma zostać odtworzony. Nie jest to super praktyczne, ale na pewno w ramach nauki maiłbym większą ochotę na coś takiego, niż pisać kolejną symulację działania biblioteki.

Gry świetnie nadają się jako projekt poboczny – nie szkodzi jeśli nie znasz się na grafice.

Kolejną opcją jest gra. Jest to zdecydowanie inne doświadczenie od pisania oprogramowania, z którym będziesz miał do czynienia w typowej pracy jako programista… ale może to i dobrze. 🙂 Gry idealnie nadają się jako projekt do rozwoju „po godzinach”, by trochę oderwać się od codzienności. By nie korzystać znowu ze Springa, ale może pobawić się w Unity? Zawsze to kolejne wypisane linijki kodu i kolejne doświadczenia z nowymi problemami.

Istnieją w sieci miejsca z darmową grafiką i dźwiękami, które możesz wykorzystać w takim projekcie. Ze swojej strony polecam OpenGameArt.org – masa darmowych zasobów do gier. Pamiętaj tylko o czytaniu licencji. W hobbystycznych projektach bez problemu można większość wykorzystywać, ale jeśli chcesz wrzucić taką grę później na Google Play (i np. trochę zarobić na reklamach), to musisz uważniej czytać na jakiej licencji udostępniane są darmowe assety.

Coś co niedawno odkryłem na Reedicie: narzędzia Pixelator, którym możesz przerabiać zdjęcia na pixelart. Od razu pojawił się głowie pomysł, by porobić zdjęcia swojej okolicy i zrobić z tego oldschoolową przygodówkę point and click.

Gdzie szukać osoby do projektu? Tematyka jest często ważniejsza od samego programowania

W przypadku, gdy Twój projekt jest związany z konkretnym zainteresowaniem np. gotowanie, to zamiast na forach programistycznych warto popytać na tematycznych grupach facebookowych o gotowaniu. Coraz więcej osób hobbystycznie coś programuje i gdy dodatkowo interesują się tym samym co Ty, to bardzo prawdopodobnie znajdziecie wspólny język i kompana do projektu. 🙂

Oczywiście grupy i fora programistyczne również są dobrą opcją, ale z doświadczenia widzę, że łatwiej nawiązać z kimś współpracę, gdy interesuje się tematyką projektu (piłka nożna, gry karciane, opuszczone miejsca).

Prowadź dziennik developerski

Warto prowadzić prosty dziennik developerski. Szczególnie, gdy na rozwijanym projekcie chcesz w przyszłości trochę zarobić (jest to fajna reklama projektu). Oprócz tego zbierasz cenny feedback, który pomaga zerknąć na to co robisz z innej perspektywy. Pisanie dziennika developerskiego pomaga również zebrać myśli i podejmować lepsze decyzje związane z projektem.

Jako przykład dziennika developerskiego warto sobie zerknąć na dziennik Blocky Farm na forum touch ardade. W podcaście, do których ich zaprosiłem przyznali, że w dużym stopniu przyczyniło się to do sukcesu gry:

 

Olej perfekcjonizm i nie porównuj się z innymi

Coś czego powinieneś unikać, to perfekcjonizm i porównywanie swojego projektu z innymi. Zerkaj do innych, gdy szukasz inspiracji, ale nigdy nie porównuj na zasadzie „on zrobił w miesiąc tak dużo, a u mnie nadal nie ma podstawowej funkcjonalności”. Jedyna osoba, z którą powinieneś się porównywać, to Twoje „ja” z przeszłości – łatwiej wtedy zauważyć realne postępy.

Innym „blockerem” jest perfekcjonizm. Zaakceptuj, że przy pisaniu projekt popełnisz masę błędów i się tym nie przejmuj. Szerzej temat olewania perfekcjonizmu poruszyłem na blogu 2 lata temu:

Dlaczego nie warto być perfekcjonistą (w kontekście startupu, indie developera, czy początkującego programisty)

Jeśli chcesz zobaczyć co robią inni (w ramach inspiracji, a nie porównywania się), to zapraszam do mojej serii „Twórcy Niezależni”, w której omawiam projekty widzów mojego kanału YouTube. Są tam głównie gry, ale w paru odcinkach trafiło się parę tych „niegrowych” projektów. 😀

Stosuj narzędzie do planowania projektu – np. Trello

Gdy piszemy coś kompletnie bez planu, to bardzo łatwo się zniechęcić, gdy nie widzimy do czego to wszystko zmierza. Dlatego polecam korzystać z jakiegoś narzędzia do planowania projektu np. Trello.

Nagrałem kiedyś taką serię „Praktyczne programowanie w LibGDX”, gdzie stosowałem te narzędzie do planowania kolejnych kroków.

Bardziej praktycznie – co powinien zawierać program pisany typowo pod kątem doświadczenia do pierwszej pracy?

Powyższe rady dotyczyły głównie tego, jak znaleźć coś do napisania, bym mieć z tego dużo radochy. Jeśli interesuje Was typowo to, co pisać w ramach przygotowania do pierwszej pracy, czy stażu, to odsyłam do mojego starszego materiału na ten temat:

Partner wpisu: kurs z możliwością zwrotu kosztów od Coders Lab

Jak już wspomniałem przy wstępie: wpis ma sponsora. 🙂 Kurs szkoły Coders Lab we współpracy z firmą Amelco. Do 28.02.2018 (18:00) możecie się zgłaszać na kurs programowania w Javie od podstaw. Każdy kursant otrzyma dofinansowanie w wysokości 30% ceny kursu (jest to możliwe dzięki partnerowi kursu: Amelco). Jeśli okaże się, że Wasze wyniki są na tyle dobre, że firma Amelco Was zatrudni, to otrzymacie 100% zwrotu kosztów oraz 3-miesięczne szkolenie w Londynie z wynagrodzeniem 2000£ brutto na miesiąc. Firma zwróci też koszt przelotu do Londynu i udzieli pomocy w zorganizowaniu pobytu (koszt zakwaterowania pokrywa kursant).

Zapraszam do zapoznania się ze szczegółami.

Zawsze gdy pojawia się temat szkół programowania, to odsyłam do mojego wpisu na ich temat. Jak do wszystkiego, tak również do szkół programowania warto podejść z głową – po szerszą wypowiedź zapraszam do mojego wpisu (oraz filmu) na ich temat:

Szkoły programowania – moje zdanie


3 thoughts on “Na jakim projekcie uczyć się programowania? Co pisać, by mieć z tego frajdę?

  • I najlepiej od razu podczas pisania wyjść z założenia, że to co zrobimy wrzucimy do sieci. Szczególnie, jeśli to coś webowego.
    Piszę choćby jakąś listę todo czy cruda? Wrzucam działającą aplikację na np heroku. I powoli, z czasem podrzucam nową wersję 🙂 Przy okazji uczę się jak zrobi deployment, z czym to się wiąże.

    Wczoraj zastanawiałem się nad przykładowymi aplikacjami, możecie zerknąć na moim blogu na 10 przykładowych pomysłów na aplikację do nauki nowej technologii.

  • rzeczywiście fajnie motywuje możliwość pokazwywania swoich projektów ludziom (web/mobile – app/play stores), a nie chowania do szuflady, ale najbardziej monetyzacja;)

  • Arek pisze:

    Ciekawy projekt, swoją drogą. Jednak wydaje mi się, że duża liczba osób wybiera zawód programisty w wyniku zachęcenia przez liczne artykuły mówiące o tym jak dużo zarabia programista. A jeżeli wybiera się coś z powodu pieniędzy, a nie powołania to jednak zdecydowanie trudniej znaleźć pasję wykonując ciekawy projekt.
    I niestety, dużo osób się rozczarowuje zarobkami jakie ostatecznie otrzymują, a to prowadzi jedynie do szybkiego wypalenia.
    To o czym Matt piszesz to jednak aplikacje tworzone w wyniku pasji programowania. A obawiam się, że nie wszyscy programiści tak tą pracę odbierają.

Dodaj komentarz

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