Wielu początkujących programistów – kiedy uda już im się przebić przez trudne początki – zastanawia się jaką aplikację wybrać na swój pierwszy projekt. Też miałem całkiem niedawno podobny problem (programuję mniej więcej od dwóch lat), dlatego pomyślałem, że podzielę się swoimi pomysłami i przy okazji pokażę jak wyglądała moja ścieżka.

 

GET THAT BRICK – przełom 🤣

 

Pierwsze aplikacje uczyłem się pisać na silniku Unity3D z wykorzystaniem języka C#. Zawsze chciałem stworzyć swój własny klon Arkanoida dlatego jak już ogarnąłem podstawy to wybór był dla mnie oczywisty. Na początku pisałem kod nie zwracając kompletnie uwagi na grafikę (byłem tak zajarany działającym kodem mojego autorstwa, że wszystko inne nie miało znaczenia 😎), ale po krótkim czasie dotarło do mnie jak paskudnie to wygląda i zacząłem więcej czasu poświęcać stronie wizualnej. I tutaj odebrałem swoją pierwszą ważną lekcję. Wpadłem w nieskończoną pętlę, w której co chwilę zmieniałem wygląda jakiegoś elementu, a następnie dopisywałem lub zmieniałem istniejącą już logikę (czyli kod), aby za tymi zmianami nadążyła.

 

 

Wtedy jeszcze nie wiedziałem, że na samym początku najlepiej jest zbudować prosty prototyp aplikacji, który potwierdzi lub obali nasze twierdzenia związane z określonymi funkcjonalnościami. To znaczy znałem wcześniej takie pojęcie jak prototyping, ale musiałem na własnej skórze przekonać się dlaczego jest to takie ważne 😆. Cały projekt ostatecznie ukończyłem po około 6 miesiącach, ale to nie było tak, że siedziałem nad nim cały czas, bo wtedy jeszcze nie planowałem zająć się programowaniem tak na poważnie. Sprawiało mi to dużo frajdy, ale nie byłem pewien, czy to jest to (w tej chwili jestem już tego pewien 😄). Swoją grę o błyskotliwym tytule Get That Brick opublikowałem na Androida i Windows Phone.

W sumie do dzisiaj pobrało ją około 70 osób z całego świata i chyba ze 3 (według statystyk Googla) ma ją jeszcze zainstalowaną na swoim telefonie. Żeby nie być gołosłownym poniżej macie link do Play Store i Windows Store gdzie znajduje się moja aplikacja. Dorzucam również link do mojego konta GitHub z projektem. Weźcie jednak pod uwagę, że rozpoczynając go nie korzystałem jeszcze z git’a, dlatego historia commitów jest tak uboga 😅. Jeżeli będziecie chcieli sobie odpalić projekt to musicie ściągnąć Unity3D w wersji 4.6 (dokładnie wersji jednak nie pamiętam), bo od wersji 5 zmieniło się mocno API silnika i sporo rzeczy nie będzie już na piątce działało. Linki:

Google Play Store

Windows Store

GitHub

 

Crazy Cactus 😱

 

W tak zwanym między czasie na jednej ze stronek z szablonami aplikacji dorwałem za jakieś grosze podstawkę do stworzenia gry platformowej na Androida (też w Unity 3D). Kupiłem ją, ponieważ wtedy byłem jeszcze bardzo zielony i strasznie chciałem zobaczyć jak wygląda kod aplikacji napisany przez kogoś ktoś się zna. Ostatecznie okazało się, że ten szablon wymagał bardzo dużo pracy, dzięki czemu udało mi się zdobyć bardzo cenne doświadczenie w pracy z kodem innego programisty. Grę zatytułowałem Crazy Cactus i opublikowałem na Google Play Store. Mogę podać jedynie link do sklepu Googla, ponieważ kodu nie umieszczałem na GitHubie z uwagi na warunki licencyjne. Kupując szablon w najtańszej wersji nie stałem się jego właścicielem i nie mogę go udostępniać. Link:

Google Play Store

 

AnyDay Assist

 

Moje eksperymenty trwały nadal. Doszedłem do wniosku, że tworzenie gier jest całkiem fajne, jednak na dłuższą metę nie będzie to moje zajęcie docelowe. Od kilku miesięcy próbowałem już wgryźć się trochę w Androida, ale jakoś nie mogłem się przebić z uwagi na chaotyczny charakter platformy (wtedy tak to odbierałem – dzisiaj mam inne podejście). Któregoś dnia trafiłem na niezłą cenę (około 60 zł) kursu uczącego podstaw pisania aplikacji na iOS. Nie miałem jeszcze wtedy żadnego Maca, ale stwierdziłem, że postawię sobie maszynę wirtualną i spróbuję swoich sił z systemem Apple. Od razu go gustu przypadł mi Xcode i wtedy jeszcze całkiem świeży (w sumie dalej taki jest 🤣) język programowania Swift. Zamiłowanie do tej pary pozostało mi do dnia dzisiejszego. Nie będę tu jednak rozwodził się na temat różnic pomiędzy iOS a Androidem.

 

 

 

 

Pierwszą moją aplikacją napisaną przy użyciu Swift była rozbudowana wersja aplikacji typu TO-DO. Jest to typ aplikacji chyba najczęściej polecany początkującym programistom. Chodzi w niej zwykle o to, aby użytkownik mógł tworzyć listę rzeczy do wykonania. Taka aplikacja wymaga zwykle zaimplementowania jakiejś formy stałego przechowywania danych (np. z wykorzystaniem bazy danych), a jednocześnie pozostałe jej funkcje są banalnie proste, przez co stanowi ona bardzo dobre wprowadzenie w daną technologię.

Ja poszedłem krok dalej i oprócz samych notatek tekstowych pozwoliłem użytkownikowi na nagrywanie notatek głosowych, zaznaczanie konkretnych miejsca na mapie oraz sprawdzanie pogody. W sumie aplikacja i tak wyszła banalna 😁. Zacząłem jednak w niej bardzo nieśmiało sprawdzać o co chodzi z Unit Test (testami jednostkowymi). Ale testy, które napisałem były bardzo podstawowe. W pełni też zacząłem korzystać z GitHuba. Na tym etapie wiedziałem już, że będę chciał się zajmować programowaniem zawodowo, więc dużo uwagi poświęciłem właściwej strukturze samego kodu. Nie oznacza to wcale, że to apka jakieś mistrzostwo świata 😝.

Aplikację nazwałem AnyDay Assist i po około 5 miesiącach prac umieściłem na App Store. Poniżej macie linki do platformy Apple i konta GitHub z aplikacją:

App Store

GitHub

 

world tour run

 

Po jakimś czasie doszedłem do wniosku, że dobrze będzie się podszkolić w Objective-C. Język Swfit jest już od dłuższego czasu rekomendowany przez Apple, choć i bez tego pewnie większość chętnie się na niego przesiada i nowe projekty na iOS rozpoczynane są właśnie z wykorzystaniem tego języka. Trzeba jednak pamiętać, że Wasz potencjalny pracodawca może mieć na utrzymaniu kilka starszych projektów, które zostały stworzone za pomocą Objective-C.

Trochę pokombinowałem i stwierdziłem, że napiszę aplikację do śledzenia postępów użytkownika podczas biegu. Muszę przyznać, że choć miałem już wtedy trochę doświadczenia z programowaniem to Objective-C okazał się niezłą przeprawą. Nic dziwnego, że wmyślili Swift 😭. Nad projektem pracowałem około 4 miesiące i ostatecznie opublikowałem go na App Store. Poniżej macie linki do App Store i GitHuba:

App Store

GitHub

 

speak loud

 

W minione wakacje stwierdziłem, że sobie chwilę odpocznę od iOS i spróbuję napisać coś prostego na Androida. Napisałem banalną aplikację do nagrywania notatek głosowych. Nic specjalnego, ale udało mi zaimplementować kilka podstawowych API plus jeszcze testu UI z wykorzystaniem Espresso. Aplikację pisałem około 2 miesiące i ostatecznie nie zdecydowałem się na publikację. Linka do GitHuba jednak mogę Wam podrzucić 😎:

GitHub

 

spiders web – aktualny projekt

 

Zawsze było tak, że pracowałem jednocześnie nad kilkoma rzeczami, dlatego pomiędzy powyższymi projektami pracowałem nad czymś bardziej zaawansowanym. Nie polecam Wam mojego podejścia, bo lepiej jest skończyć jeden projekt i dopiero wtedy rozpoczynać nowy. Szybciej będziecie mieli coś czym można się pochwalić.

Aplikację Spiders Web (dla osób, które zajmują się hodowlą pająków) oparłem całkowicie o bazę danych w chmurze. Wybrałem do tego Firebase, bo jest to bardzo przyjazna programistom platforma. Teraz skupiam się tylko na tym projekcie. Przeszedł on już wiele różnych etapów. Ostatecznie zdecydowałem się pisać wszystkie nowe funkcjonalności z wykorzystaniem podejścia Test Driven Development (TDD). Nie korzystałem z tego od samego początku, więc niektóre fragmenty aplikacji muszę pisać od nowa (bardzo trudno jest dla nich pisać testy). Chcę również pokryć całą aplikację testami UI. Po raz pierwszy zdecydowałem się na wykorzystanie procesu zwanego Continous Integration (CI). Nie chcę tutaj jednak rozpisywać się czym jest TDD i CI, ale możecie spokojnie znaleźć bardzo dużo na ten temat w sieci.

Postępy możecie śledzić na GitHub. Podobnie jak poprzednie projekty, ten również udostępniłem w oparciu o licencję MIT, co oznacza, że możecie dowolnie te projekty wykorzystywać. Muszę chyba ją zmienić bo licencja MIT wymaga zaznaczenia kto jest autorem projektu, a szczerze mówiąc na tym jakoś specjalnie mi nie zależy. Tutaj macie link do GitHub:

GitHub

 

inne projkety

 

Jako ciekawostkę napiszę, że napisałem także prosty web serwis oraz aplikację w ramach mojej pracy inżynierskiej. Tej drugiej nie udostępniam, bo ostatecznie będę chciał ją przekształcić w mój pierwszy, prawdziwy komercyjny projekt. Ale web serwis możecie sobie sprawdzić pod tym adresem:

GitHub

 

Jak widzicie trochę tego jest, jednak nie polecam Wam na początku takiego skakania po technologiach. Mogłem skupić się na jednej platformie i wyśrubować swoje umiejętności. Zamiast tego znam podstawy kilku technologii, a tylko jedną na poziomie powiedzmy średnim (mowa o iOS). Z drugiej strony programowanie to dla mnie przede wszystkim dobra zabawa i daje mi to dużą satysfakcję 😎. A możliwość poznawania nowych nowych obszarów motywuje mnie do dalszej pracy 😃.

Myślę, że po przeczytaniu tego wpisu coś tam się Wam w głowach rozjaśni. Nie twierdzę absolutnie, że jest to najlepsza, czy też jedyna ścieżka (patrz powyższy akapit), ale może komuś pomoże w podjęciu bardziej świadomej decyzji. Pamiętajcie, że ma przed wszystkim sprawiać Wam przyjemność. Do usłyszenia 🧐.


 

Dodaj komentarz

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