Ostatni tydzień był ciężki. Nie z powodu udziału w konkursie, a głównie za sprawą gorączek, jakie opanowały żeńską część mojej rodziny. Obydwie z moich kobiet, walczyły w tym tygodniu z wysoką temperaturą, dobijającą momentami do 40 stopni. Mimo iż choroba oszczędziła mnie osobiście, to natłok spraw, jaki wygenerował ten nagły wypadek był momentami przytłaczający.
Całkiem przypadkiem 40 to też liczba wszystkich uczestników konkursu wakacyjnego Firestarters. Konkurencja jest naprawdę mocna, chociaż sam traktuję ją tutaj jako grupa wsparcia. Nie wygrana jest tutaj najważniejszą, a droga, którą wszyscy pokonujemy.
Poniżej skrót minionego tygodnia w formie spisu treści:
Czas decyzji
Jak już wspominałem w poprzednim tygodniu, rozważałem kilka różnych opcji na start. Dziś wiem, co będzie najlepszą opcją do rozwiązania problemów grupy docelowej, którą znam od podszewki. Nie będzie to najłatwiejsza droga, ale zdecydowanie taka, której osoby z mojej grupy docelowej, najbardziej oczekiwały.
Kurs tworzenia projektów programistycznych pod rekrutacje, naukę i dobrą zabawę
To na nim będę się skupiał w najbliższych tygodniach. Główny nacisk położę na dobre wytłumaczenie całego programu i organizacji przedsprzedaży.
- Przede wszystkim pomoże mi to lepiej zwalidować w mój pomysł. Tak jak wspominałem w poprzednim tygodniu $$$ zawsze są najlepszym sposobem na sprawdzenie, czy jakiś problem jest faktycznie warty rozwiązania.
- Po drugie przedsprzedaż i budowanie programu z małą grupą early adopterów, chętnych dołączyć na specjalnych warunkach, niesie sporo zalet. Lepsze dopasowanie treści, pierwsze rekomendacje i opinie czy success stories, będą mocną dźwignią marketingową w kolejnych oknach sprzedażowych.
- Po trzecie, sprytnie unikam wygenerowania niepotrzebnie zbyt dużych kosztów w ramach konkursu. Tak jak wspominałem w drugiej części, sporo klocków, które mogę reużyć już aktualnie opłacam.
Pierwsze projekty i inspiracje
Co do samej tematyki kursu. Z osobistymi projektami programistycznymi mam do czynienia od roku 2008, kiedy ja sam byłem na etapie tworzenia pierwszych projektów. Głównie celem zabawy z tworzenia, nauki technologii, ale jak się później okazało, również jako karty dostępowej do pierwszych rekrutacji. Ten ostatni z powodów był o tyle zaskakujący, ze kompletnie się go nie spodziewałem. Dziś nie budzi moich wątpliwości, obserwując takie projekty z fotela rekrutera.
Do dziś pamiętam, co w tamtym czasie sprawiało największy zastrzyk motywacyjny do nauki programowania. Doskonale pamiętam, jak cieszyłem się z wystawionego na świat demo mojej gry Lupin. Możliwość pogrania z własnymi kolegami, dawała podobne uczucie jak tworzone własne mapy do CS’a kilka lat wcześniej. Dziś liczę, iż podobne uczucie zbuduje we mnie projekt, nad którym będę pracował w najbliższym czasie.
Wracając do samej gry, projekt budowałem inspirując się takimi tytułami jak
The Crims
Pierwszy tytuł służył jako inspiracja podstawy silnika. Zrozumiałem, iż choćby interaktywna strona, napisana w PHP, może być ciekawą grą i niepotrzebny jest żaden wyszukany silnik, żeby stworzyć coś naprawdę ciekawego. Co więcej, jak pamiętam, był to też projekt bardzo dochodowy jak na tamte czasy, kiedy wszechobecne mikropłatności nie były aż tak rozpropagowane jak dziś i tworzony raptem przez jednego developera.
Tibia
Druga, to gra, w której spędziłem ogrom czasu, grając z kolegami. Z czasem odstawiając profesjonalne granie, na rzecz pasji do programowania. Z tej pozycji zaczerpnąłem głównie idee profesji oraz klimatu gry, którą tworzyłem.
Mój pierwszy profesjonalny projekt
Gra bazowała na prostym systemie rzucania wyzwań innym graczom. Takie bardziej zaawansowane papier, kamienie nożyce w wersji asynchronicznej W grze zbieraliśmy doświadczenie, podnosiliśmy swoje umiejętności, wydawaliśmy cięzko zarobione pieniądze na lepszy ekwipunek, w planie była budowa mapy, po której docelowo mieliśmy się poruszać.
Ostatnio wygrzebałem mój stary dysk i uchowało się na nim kilka screenshotów z tego projektu z przed 14-letniego projektu.
Zalety pierwszego projektu
Gra niewątpliwie była pod pewnymi względami, udanym projektem. Po pierwsze była namacalnym dowodem umiejętności tworzenia pewnych rozwiązań programistycznych i osiągania postawionych przez siebie celów. Pomimo wielu niedociągnięć, była grywalna, i nie została potraktowana jak ciekawostka, a coś, w co dało się pograć i czerpać pewną dozę satysfakcji z rozrywki. Była również elementem, który przed odbyciem praktyk, wpłynął znacznie na moją krzywą uczenia się i rozwoju jako programista.
Co było nie tak z tym projektem?
Nie był to jednak projekt pozbawiony wad, o czym przekonałem się dość boleśnie zostając odrzuconym na pierwszej rekrutacji na stanowisko młodszego programisty PHP. Niestety, ale tworzenie projektu w pełni na własną rękę, wiąże się z ryzykiem, nasiąkania złymi praktykami. Pogoń na ficzerami gry sprawiła również, iż poziom samego kodu, była na drugorzędnym planie, co nie umknęło uwadze rekrutera. Dziś wiem, czego zabrakło i jakie elementy powinienem poprawić.
Są to na pewno aspekty, które będę chciał zaadresować moim programem. Aspekty, które pomimo upłynięcia ponad 14 lat, przez cały czas są najczęstszymi wyzwaniami podczas realizacji własnych projektów.
Społeczność
Oprócz samego kursu chciałbym zbudować również społeczność. Będzie to element dodatkowy, budowany nieco z boku, ale jak wielokrotnie się przekonywałem, element miejscami ważniejszy od samego kursu. Po pierwszej niezbyt udanej próbie zbudowania takiej społeczności na Facebooku, tym razem wyciągnę kilka rad zaczerpniętych z Kursu o budowie społeczności. To czego zabrakło w pierwszej wersji to na pewno:
- Nieco losowy skład początkowych członków społeczności, pełniących kluczową rolę w rozkręceniu całej społeczności – dobrze w pierwszym etapie zadbać o wartościowe osoby i samemu niczym bramkarz w klubie robić wstępną selekcję,
- Zbyt szybkie odpuszczenie po mojej stronie i nienawiązanie intymnej relacji z pierwszymi osobami dołączającymi do klubu – jak przekonałem się z kursu pierwsze miesiące są najtrudniejsze i najważniejsze dla rozkręcenia całej inicjatywy. To tutaj jest jednak czas na nawiązywanie bliższych kontaktów, w społeczności liczącej setki osób, jest to już niemożliwe.
Szybki status odnośnie postępu
Wydatki i zyski, wciąż okrągłe 0 PLN
Nic dodać, nic ująć. Brak zarobków, ale i konieczności zainwestowania przydzielonego budżetu. Niedługo jednak się to zmieni. Wiekszość moich prac skupia się na notatkach i układaniu pierwszej wersji agendy.
Discord w trakcie zakładania
Rozpocząłem konfigurację serwera Discord jako lepszej (jak liczę) alternaty dla grup na facebooku.
Agenda kursu
W pierwszej wersji planuję 9 modułów, dotykających 9 obszarów tworzenia własnych projektów:
Plan,
Czyli wyjaśnienie, jak przerabiać ten moduł, jaki efekt możemy dzięki niemu osiągnąć.
Strategia i pomysł,
Ważny moduł, który pozwoli, dopracować pomysł na projekt. Dobrać pod względem zainteresowań oraz umiejętności. To, co kluczowe, ten kurs będzie pozwalał na realizacje swojego autorskiego pomysłu, a nie realizacja projektu, który sam Ci narzucę.
Kontrola wersji,
Kursów na temat GIT’a jest sporo, ale tutaj skupimy się przede wszystkim na dobrym wyjaśnieniu kontekstu użycia tego narzędzia w grupie. Dużo praktyk, które tutaj omówimy będzie gotowe do zaaplikowania w przyszłości w pracy.
Hosting projektu,
To istotny punkt, który pozwoli na uruchomienie projektu w sieci. Wystawienie DEMO w sieci, jest świetnym pomysłem na dobre zaprezentowanie swojego portfolio.
Organizacja pracy,
Wiem, jak wiele z osób ma problemy z organizacją pracy, dlatego w tej części omówimy jak podchodzić do planowania rozbudowy swojego projektu. Kiedy wstrzymywać dalszy rozwój funkcjonalności, a skupić się na refactoringu i poprawie jakości.
Testy,
Czarny koń projektów, które uczestnicy będą realizowali. przez cały czas kilka z osób w swoich projektach pisze testy, a jest to dobry sposób aby:
- wyróżnić się z tłumu na tle innych projektów,
- poprawić jakość swojego kodu,
- zdobyć cenne doświadczenie, które przyda Ci się później w pracy.
GUI i warstwa wizualna,
Nawet jeżeli twój projekt skupia się na technologii backendowej, ten aspekt nie może zostać pominięty. Co istotne jest wiele sposbów, gdzie choćby bez bogatego doświadczenia w tym obszarze, da się osiągnąć bardzo przyzwoite efekty. Wszyscy jesteśmy wzrokowcami i efekt Sinatry dotyka każdego z nas, warto o tym pamiętać.
Bazy danych i hosting plików,
W tym module omówimy, jak przygotować bazę danych lub inne serwisy, aby realizowały postawione przez nas cele w projekcie. Celowo odwlekam ten moduł jako jeden z ostatnich, ponieważ zbyt wiele osób popełnia błąd budowania projektów w doktrynie „database driven”.
Prezentacja
Na koniec zostanie jeszcze zestaw elementów, jak to wszystko co będziemy tworzyć w ramach tego projektu, efektywnie sprzedać i dobrze zaprezentować swojej grupie docelowej. Mogą to być rekruterzy i użytkownicy naszego systemu.
Czwarty tydzień nadciąga
To w nim spróbuję dokończyć szczegóły mojej agendy, zebrać pierwszy feedback oraz zaplanować działania związane z przedsprzedażą. Być może starczy też czasu w popchnięcie dalej tematu Discorda.
PS. o ile już teraz czujesz, iż skorzystałby z tego programu, koniecznie dajcie mi znać w prywatnej wiadomości na Linkedin https://www.linkedin.com/in/towczarek/ lub mailowo: tomek@kodujmy.pl