Uwaga! Trwają prace nad nową wersją serwisu. Mogą występować przejściowe problemy z jego funkcjonowaniem. Przepraszam za niedogodności!
⛔ Potrzebujesz wsparcia? Oceny CV? A może Code Review? ✅ Dołącz do Discorda!
Chcesz być (lepszym) programistą i lepiej zarabiać? Umów się na rozmowę - powiem Ci jak to zrobić!
Gość: Daniel Roziecki – kim jest i czym się zajmuje
Czy możesz się przedstawić i powiedzieć, co łączy Cię z branżą IT?
Co to jest side project i dlaczego warto o nim mówić
Określmy czym według nas jest tzw. side project, o którym będziemy dziś mówić.
Kiedy warto zacząć myśleć o side projectach
Na jakim etapie nauki warto myśleć o takim przedsięwzięciu?
Gdzie szukać zleceń i inspiracji do side projectów
Gdzie szukać zleceń lub inspiracji?
Jak określić czas realizacji i wynagrodzenie przy side projektach
Jak określić czas realizacji i wielkość wynagrodzenia?
Korzyści płynące z realizacji projektu na boku
Jakie korzyści mogą płynąć z realizacji projektu na boku?
Wyzwania i decyzje związane z side projectami
Z jakimi wyzwaniami i decyzjami możemy mieć do czynienia?
Planowanie i realizacja side projektów
Jak planować i realizować tego typu projekt?
Najczęstsze błędy przy realizacji side projectów
Jakie błędy są najczęściej popełniane przy realizacji tzw. side projectu?
Książki dotyczące lepszej realizacji projektów po godzinach
Jaką książkę polecisz osobom, które chcą lepiej podejść do realizacji projektów po godzinach?
Daniel Roziecki – kontakt
Gdzie możemy Cię znaleźć w sieci?
➡ Jason Fried, David Heinemeier Hansson, Rework
➡ LinkedIn: www.linkedin.com/in/daniel-roziecki/
➡ Instagram: www.instagram.com/daniel.roziecki/
➡ YouTube: www.youtube.com/@FromZeroToJunior
➡ Facebook: www.facebook.com/groups/255597918944825
Dziś moim gościem jest Daniel Roziecki. Daniel opowie nam o tym, jak realizować projekt poboczny, który pozwoli nam zdobyć doświadczenie komercyjne i lepszą, a może nawet pierwszą pracę w IT. Danielu, dziękuję, że przyjąłeś moje zaproszenie na rozmowę.
Cześć Mateuszu, cześć słuchacze, cześć wszystkim − tak, jest taki plan, żeby na ten temat porozmawiać. Chociaż jaki będzie ostateczny werdykt tego wszystkiego to myślę, że zobaczymy dopiero na samym końcu.
Tak jest. W moim podcaście nie jesteś pierwszy ani nie drugi raz, ale standardowo − powiedz nam coś więcej o sobie. Co łączy cię z branżą IT?
OK, to tak skrótowo. Z tej strony Daniel Roziecki, cześć. W branży IT siedzę już długo, bardzo długo, w tej chwili ponad 30 lat, z czego grubo ponad 20 lat jestem programistą, administratorem. W branży IT zajmuję się mnóstwem rzeczy poza rzeczami np. stricte artystycznymi takimi jak grafika czy muzyka, bo do tego się kompletnie nie nadaję. Poza tym wykonuję naprawdę bardzo dużo różnych rzeczy, za wiele rzeczy mi już płacono. Wiele rzeczy wykonuję w ramach projektów pobocznych. W tym krótkim wprowadzeniu na mój temat chciałbym się do tego odnieść, bo myślę, że w tej rozmowie jest to najistotniejsze. Ja bardzo krótko pracowałem na etacie. Później miałem własną działalność gospodarczą − jednoosobową działalność gospodarczą. Teraz mam jeszcze do tego spółkę. Natomiast bardzo długo współpracowałem głównie z jednym klientem. Nie na zasadzie umowy o pracę, tylko właśnie na zasadzie jednoosobowej działalności. I to faktycznie było na tej zasadzie, że ja dyktowałem, kiedy pracuję i co dokładnie robimy itd., tak że miałem na to wszystko wpływ.
Natomiast w pewnym momencie oprócz tego stwierdziłem, że OK, fajnie by było zacząć robić jeszcze coś innego. I zaczęły pojawiać się u mnie głównie projekty edukacyjne. Pojawiła Akademia Scali. Potem pojawił się program Mentoringowy „Za rączkę”, „Zero to Junior” i kilka innych pobocznych tematów. Natomiast oprócz tego, że są to materiały edukacyjne i tematy/projekty edukacyjne, to pod spodem jest jeszcze bardzo dużo rzeczy technologicznych, zwłaszcza przy projekcie „Za rączkę”, gdzie to wszystko musi być obsługiwane. To wszystko jest oprogramowywane przeze mnie przez full code, czy przez narzędzie no-codowe. Teraz oczywiście doszła jeszcze sztuczna inteligencja, której jestem ogromnym fanem i bardzo lubię ją wykorzystywać w tych wszystkich swoich projektach. Tak że na początek, z grubsza, tyle o mnie.
Dobrze, zahaczyłaś już trochę o te projekty poboczne, to może określmy sobie, o czym będziemy dzisiaj mówić, jakiego typu to są projekty i jak my to widzimy, żeby wiedzieć, o czym rozmawiamy i o co dopytywać − bo pod postacią projektu pobocznego każdy może mieć coś innego w głowie.
Oczywiście. To ja mam dla ciebie takie inne pytanie pomocnicze − o kim rozmawiamy? Na jakim poziomie jest ta osoba, której mamy doradzać? Bo to też ma ogromne znaczenie − co możemy jej zaproponować, co możemy jej zaoferować. Jak myślisz?
Pierwsza myśl jest taka, że jest to osoba, która spędziła już jakiś czas nad nauką programowania. Myślę, że można określić, że to jest ok. roku i ta osoba zna już język, zna reguły i potrzebuje większego wyzwania. Może jest nawet na etapie szukania pracy, jeszcze mu to nie wychodzi i taka osoba pomyślała sobie, że może właśnie wykonam jakiś projekt, który pozwoli mi pójść dalej, nie będę się nudził, a zawsze coś z tego wyjdzie. Ale pewnie zahaczymy też o takie tematy, które mogą się przydać osobom, które pracują już komercyjnie, ale np. szukają czegoś więcej, bo np. w pracy nauczyły się już na tyle, że chcą spróbować czegoś na boku, czegoś więcej.
Oczywiście. Super. To teraz tak, ja bym przyjął jeszcze jedno założenie. Przyjąłbym takie założenie, bo to jest dla nas najprostsze i w zasadzie najsensowniejsze − że ta osoba po prostu pracuje. Abstrahując już od tego, czy pracuje w tej chwili w IT, czy poza IT i myśli o przebranżowieniu, ale pracuje, bo to jest ważny element naszej rozmowy, bo tak naprawdę, jeśli masz dużo czasu, nie pracujesz, to nie mówimy o projekcie pobocznym, tylko o czymś, w co możesz po prostu wejść na 100% i zacząć to sobie rozwijać. I jest to temat na zupełnie inną rozmowę, bo są zupełnie inne metodologie i sposoby, w jakie można to robić.
Natomiast chcemy się tutaj skoncentrować na tych projektach pobocznych, które możesz wykonywać w momencie, kiedy tego czasu jest po prostu mało. I teraz, słuchajcie, mam na sobie taką koszulkę – „nie mam czasu”. Nie chciałem zdradzić Mateuszowi, dlaczego, ale założyłem ją specjalnie, bo to jest mega ważne i to jest takie hasło kluczowe. Po pierwsze, mnóstwo osób nie zabiera się za takie rzeczy, bo ma wymówkę − nie mam czasu. I to jest bardzo często wymówka. Nie twierdzę, że zawsze, bo osobiście znam osoby, które faktycznie tego czasu nie mają. Mają tak zawalony grafik różnymi tematami rodzinnymi, dziwnymi, często niespotykanymi, że rzeczywiście tego czasu nie mają. OK, zdaję sobie z tego sprawę, ale bardzo często to jest po prostu wymówka, więc wywal tę wymówkę „nie mam czasu”. Jest jeszcze druga strona medalu.
To może zanim druga strona medalu, to jeszcze wejdę ci w słowo, bo przypomniała mi się jedna rzecz − akurat nie współpracuję z tą osobą, ale rozmawiałem z nią – i ta osoba ma piątkę dzieci i uczy się programowania. Więc jeżeli ty pracujesz na etacie i mówisz, że nie masz czasu i nie masz rodziny albo piątki dzieci to pomyśl sobie o tej osobą, która ma piątkę dzieci na głowie.
Tak, zgadza się. A druga strona medalu jest taka, że bardzo często mówisz, trochę bezmyślnie, że nie masz czasu, ale z tego powodu, że nie potrafisz świadomie powiedzieć komuś nie mam czasu − nie zrobię tego, nie wykonam tego, po prostu nie mam na to czasu. Chcę się zająć innymi tematami, które są dla mnie ważniejsze. Tak, to jest niezwykle cenna lekcja, która dotyczy nie tylko mówienia nie mam czasu innym, ale też mówienia nie mam czasu sobie. Żeby powiedzieć, ja nie mam czasu teraz na te pierdoły, chcę się zająć projektem pobocznym, na nim skoncentrować, albo w sposób świadomy: nie, dzisiaj nic innego nie robię, bo dzisiaj chcę się zająć dziećmi i spędzić z nimi czas. Ale w sposób świadomy, OK? I wtedy mówisz, nie mam czasu na inne tematy. To jest bardzo ważne i bardzo proszę, żebyś to zapamiętał/a, bo bez tego będzie nam niezwykle ciężko przejść przez to wszystko i pewnie sobie po prostu nie poradzisz, więc to jest ta świadomość czasu.
Ja tylko dopowiem, że może ten projekt poboczny będzie takim rozwiązaniem, że będzie nam łatwiej komuś odmówić, bo będziemy mieli coś na głowie, tak?
Tak − jest cel w głowie. Wiele osób ma właśnie problem z odmówieniem komuś, bo nie ma jakiegoś takiego celu, nie ma czegoś do czego dąży, a jak będziesz to mieć, to może będzie ci po prostu łatwiej.
Dobrze, to teraz, jeśli chodzi o sam side project − ja podzieliłbym go na takie trzy kategorie. Pierwsza, od niej zacznę, ale tylko skrótowo, bo tak naprawdę myślę, że, skoncentrujemy się dzisiaj na niej − to jest start nowego projektu komercyjnego, czyli czegoś, na czym w przyszłości będzie można zarabiać. To jest pierwszy element.
Drugi rodzaj projektu pobocznego, na którym można się skoncentrować, to jest projekt edukacyjny dla ciebie. Ja w ogóle uważam, że nauka programowania, to jest nauka powiązana z tworzeniem własnych projektów. Nie da się nauczyć programowania, nie da się wejść w branżę IT, jeśli nie tworzy się projektów. I ja nie mówię o jakichś takich malutkich aplikacyjkach na różnych stronach, np. możesz wejść na HackerRanka − to nie są projekty. To są odskocznie i to jeszcze bardzo często bardzo mocno teoretyczne i osobiście nie jestem ich fanem. Są potrzebne, chociażby ze względu na nieszczęsny live coding, który trzeba przejść i one dobrze do tego przygotowują, ale żeby zostać programistą, żeby nauczyć się tego wszystkiego, to taki projekt edukacyjny jest absolutnie konieczny. Duży projekt, na którym będzie się pracowało, bo pojawią się przed tobą miliony różnych innych problemów, których absolutnie nie widać, gdy rozwiązujesz jakieś proste zadania matematyczne czy logiczne. To jest zupełnie inna kategoria.
Trzeci projekt, to jest ciekawe, nie wiem, czy akurat do niego zachęcam, natomiast wiem, że są osoby, którym to sprawia przyjemność i które fajnie na tym wyszły − to jest np. uczestnictwo w projekcie open-source'owym. Można wejść sobie na GitHuba, można poszukać projektów open-source'owych, tam można na podstawie pewnych kryteriów wyszukać np. projekty, które są przychylne osobom początkującym i można znaleźć, jakie są zadania dla tych osób i można pomyśleć o takiej współpracy przy projekcie open-source'owym jako o takim swoim projekcie pobocznym. To są takie trzy kategorie.
Wydaje mi się, że ten ostatni ma najwyższy próg wejścia, dlatego, że po pierwsze musimy wejść komuś „do domu” − w czyjś projekt, więc już tutaj jest taka bariera, że nie jesteśmy pewni. Po drugie, pewnie musimy zapytać kogoś, jak to w ogóle zrobić, potem to zrobić i bać się, czy nas zaakceptują, czy nie zaakceptują, co się z tym stanie, czy mnie ktoś nie wyśmieje − więc pewnie będzie to najtrudniejsze dla wszystkich, którzy w ogóle nie mają styczności z branżą. Dużo osób to poleca, ale to jest trudny temat. Dodam też od siebie taką historyjkę − jest taki agregator osób, które chcą realizować różne projekty open-source. Możemy się do nich zgłosić, że np. mamy zespół i zrealizujemy jakąś stronę dla schroniska i oni mocno chwalą się tym, że pomagamy itd. Zgłosiłem się do takiego serwisu (nie chcę podawać adresu, teraz już nawet nie pamiętam), ale wyglądało to tak, że napisaliśmy do nich, że mamy zespół, chętnie zrobimy. Odezwali się do nas po roku, bo chcielibyśmy odświeżyć temat, więc szukamy kogoś. To też jest mocno zniechęcające. Ty się zgłaszasz, chcesz poświęcić swój czas, a oni dopiero po roku odzywają się, że tak, faktycznie można coś takiego zrealizować.
To jest rzeczywiście słabe i dlatego z tymi projektami open-source'owymi jest tak, że one z jednej strony są naprawdę ciekawym doświadczeniem, natomiast myślę, że dookoła nich krąży też sporo mitów, ale ja nie chciałbym się koncentrować na tym temacie w czasie naszej rozmowy, bo to jest temat na zupełnie inne spotkanie. Tu rzeczywiście wchodzi w grę bardzo dużo elementów i właśnie ze względu na te bariery wejścia, na to przełamanie się, myślę, że w czasie naszej rozmowy możemy się skoncentrować na tych dwóch pierwszych tematach − czyli na temacie projektu edukacyjnego dla samego siebie lub projektu komercyjnego, o którym można myśleć w takim kontekście, że być może przyszłościowo zacznie przynosić on jakieś finansowe gratyfikacje dla samego siebie. Aczkolwiek mówię z góry, że można powiązać te rozwiązania, bo znam osoby, które weszły w projekt stricte do nauki, żeby zacząć się uczyć i zaczęły robić jakieś rozwiązania dla siebie, które ułatwiały im życie, a z biegiem czasu okazało się, że to rozwiązanie podobało się innym i powstało z tego rozwiązanie komercyjne. Chociaż mówimy z góry (myślę, że Mateuszu też się ze mną zgodzisz), że to wejście w świat komercyjny wcale nie jest proste i będzie się pojawiało mnóstwo innych tematów, ale myślę, że porozmawiamy sobie o tym za jakiś czas w czasie tej rozmowy.
Zdecydowanie tak. To może tylko dopowiedzmy, że uznajmy, że projekt komercyjny to jest po prostu coś, za co pobieramy pieniądze, np. w formie abonamentu, ale to już inny temat.
Może nastawiamy się na to, że budujemy coś, za co będziemy chcieli pobierać pieniądze.
OK, to może właśnie podzielmy to tak, że projekt edukacyjny jest do momentu, kiedy nie pobieramy pieniędzy, a projekt komercyjny jest wtedy, gdy zaczniemy je już pobierać, bo może okazać się, że projekt komercyjny jest np. na takiej zasadzie, że mamy sąsiada, dla którego coś robimy i umawiamy się OK, to dasz mi za to, nie wiem, stówkę, czy ileś tam. I tu może też od razu dodam, że jeżeli mamy plan projektu edukacyjnego, to warto nawet na samym początku, wziąć za niego jakieś pieniądze, nawet niewielkie, ale to pokaże, czy w ogóle ten pomysł ma sens, bo jeżeli coś dajemy za darmo, to dopóki nie weźmiemy za to pieniędzy, to nie wiemy, czy to w ogóle zacznie kiedykolwiek zarabiać, bo jak coś dajemy za darmo, to zawsze ktoś to chętnie weźmie.
Właśnie dlatego istotny jest ten podział na projekt edukacyjny. Ja nie chciałbym, żeby z tej rozmowy osoby wyniosły błędne założenie, że jeśli nie będą one sprzedawały projektu, to jest to złe. Nie, tak nie jest, a jak uczycie się programowania, to takie projekty edukacyjne są absolutnie konieczne, żeby opanować potrzebną wiedzę. One są po prostu kluczowe. To czy będziecie myśleli o tym, żeby to przekształcić potem w projekt komercyjny, to jest zupełnie inny temat. Natomiast wcale nie musi być tak, że od pierwszego dnia myślicie o, to będzie komercyjne, bo to może po prostu odstraszyć wiele osób, a tego byśmy nie chcieli − więc spokojnie, możecie się rozwijać, możecie tworzyć sobie projekty edukacyjne, natomiast jeśli przyjdzie wam do głowy, albo od początku chcecie tworzyć coś komercyjnie, lub chcecie zamienić projekt edukacyjny na komercyjny, to wtedy rzeczywiście zaczynają się pojawiać zupełnie inne tematy i o tym sobie pewnie jeszcze za chwilę pogadamy.
Tutaj jak najbardziej zgadzam się też z Mateuszem, że jeśli myślisz o projekcie komercyjnym, to warto sprawdzić, czy ktoś ci za niego zapłaci − za sam pomysł na samym początku. To nie muszą być duże pieniądze, to mogą być malutkie pieniążki, żeby sprawdzić, czy w ogóle to ma sens, bo jest mnóstwo osób, mnóstwo projektów, które ludzie wykonują, a które nigdy nie zarabiają, mimo że poświęcono na nie kosmiczne ilości czasu i to nic nie daje, to jest po prostu bez sensu, wtedy trzeba wiedzieć, czy twoja przyszła praca ma w ogóle jakikolwiek sens.
OK, to w takim razie zastanówmy się nad tym, na jakim etapie nauki warto myśleć o takim przedsięwzięciu jak projekt?
Przyjęliśmy już pewne założenie na początku tej rozmowy − projekty edukacyjne to są takie projekty, które można rozpocząć na każdym etapie nauki. Naprawdę, praktycznie od samego początku zaczynasz uczyć się języka programowania i można już wtedy zacząć tworzyć jakieś proste projekty. Jeśli nie wiesz jakie, można porozmawiać z czatem i on ci poda. Można np. powiedzieć co potrafisz, czego się uczysz, co chcesz osiągnąć, czego chcesz się nauczyć i on ci podpowie różne proste rozwiązania, np. konsolowe, które można sobie stworzyć, które będą już dla ciebie takimi mini projektami − więc to jak najbardziej.
To od razu przychodzi mi pomysł – kalkulator. Na początku, jeżeli znasz instrukcje warunkowe, strukturę kodu, kalkulator nie jest zły. Dużo osób mówi a, co to jest kalkulator − OK, ale jak jesteś na początku, to kalkulator jest idealny, bo jest prosty, ale jednocześnie wymusza na tobie, żebyś powiązał te wszystkie rzeczy, których nauczyłeś się do tej pory.
Tak, dowiedzieć się, jak tworzyć, jak go napisać, żeby, np. za każdym razem po otrzymaniu wyniku pojawił się zresetowany ekran, w którym znowu użytkownik zostanie poproszony o wpisanie jakichś danych. Trzeba pomyśleć o dodaniu bardziej niestandardowych działań matematycznych, dodać do niego np. konwersje jednostek i z takiego kalkulatora zaczyna się robić całkiem skomplikowany i rozbudowany projekt − jak najbardziej można coś takiego robić.
Jak komuś wydaje się, dobra, no to jak umiem dodawanie, mnożenie zrobić, to zrobię też potęgowanie – OK, ale jak zrobisz potęgowanie, to nie pisz 2 daszek 3, tylko napisz 2 razy 2 razy 2 − w konsoli równa się osiem i zapewniam cię, że jak jesteś na początku, to nie będzie to dla ciebie super łatwe rozwiązanie.
Tak, nie będzie − dlatego te projekty edukacyjne można sobie robić od samego początku, na każdym etapie. Projekty open-source'owe, o których mówiliśmy wcześniej, uważam, że możemy robić po opanowaniu języka, przy czym ja wiem, że zaraz padnie pytanie: co to znaczy opanowanie języka? Dla mnie opanowanie języka jest wtedy, kiedy człowiek może się zabrać za realizowanie jakiegoś projektu i nie myśli nad absolutnie podstawowymi rzeczami, jak pętle, wyrażenia warunkowe – on to już po prostu wie. Wie jak coś takiego zakodować, nie musi o tym myśleć, nie musi o tym czytać, tylko po prostu siada do komputera i takie rzeczy robi. Może nie znać różnych bibliotek standardowych, które będą potrzebne, może nie znać frameworków i innych rzeczy − bo to wszystko jest dookoła języka programowania. Natomiast zna już ten język na tyle, żeby nie musieć sięgać co chwilę do książki, do czata, do internetu, żeby wykonać pewne operacje. To jest dla mnie znajomość języka.
Jasne, nauka języka tak naprawdę trwa latami, bo zresztą jak zaczniecie się w to bawić, zostaniecie np. programistami/programistkami (czego wam bardzo życzę), to zorientujecie się, że ten poziom będzie bardzo mocno wzrastał, bo zaczną się pojawiać nowe koncepty, nowe możliwości, nowe rozwiązania, jakieś nowe struktury, nowe warstwy abstrakcji, które czasami są potrzebne, czasami nie, ale tego jest po prostu bardzo dużo, więc ten rozwój będzie dosyć dynamiczny. Natomiast na tym etapie zakładamy, że po prostu potrafisz wykonać te proste rzeczy bez konieczności zerkania co chwilę do swoich notatek, więc to będzie taki moment, kiedy można na przykład próbować zacząć współpracę przy np. projektach open source'owych.
Może dodałbym jeszcze jedną rzecz, bo tak mówimy o instrukcjach warunkowych, o pętlach, ale może powiedzmy też o funkcjach klasy w zależności od języka, bo dużo osób potrafi pętle, wie co i jak, ale gdy trzeba napisać funkcje, parametry, zwrócić coś, czy napisać klasy w zależności od języka, tu się zaczynają schody, więc musimy być jeszcze o krok dalej. Wiem o czym mówisz, ale dodajmy jeszcze to, bo widzę, że często jest taki podział na osoby, które są w stanie napisać kod jeden po drugim, ale jeśli chodzi o funkcje, wywołanie jednej w drugiej − to już jest problem, a to też już powinniśmy raczej umieć.
Tak, jak najbardziej − potrafisz programować obiektowo, potrafisz rozbić ten kod na obiekty, potrafisz go rozbić w sposób logiczny na elementy, które są potrzebne do tego, żeby ten kod wykonywać. Potrafisz takie rzeczy bez zaglądania co chwilę do instrukcji. To jest taki etap, kiedy możemy dołączyć do projektów open source'owych, czy można zacząć myśleć o własnym projekcie komercyjnym. To będzie bardzo trudne, nie oszukujmy się, to będzie niezwykła, trudna droga, natomiast to jest taki moment, kiedy rzeczywiście można zacząć o tym bardzo powoli myśleć.
Dodałbym też to, że jeżeli znamy pewne nasze ograniczenia, to czasami wystarczy to do tego, żeby zrealizować projekt komercyjny. Mam tu na myśli nawet taką najprostszą rzecz jak zrobienie strony internetowej. Jeżeli znamy HTML i CSS i okazuje się, że sąsiad potrzebuje strony informacyjnej np. na temat jego warsztatu samochodowego, to będzie to wiedza wystarczająca. Musimy tylko wiedzieć, że jeżeli on zapyta nas o to, czy na stronie będzie formularz kontaktowy, to pewnie powiecie, że to może być już problem, bo w zasadzie nie wiem, jak to zrobić, ale mogę zamieścić same informacje i mogę to zrobić od ręki znając tylko HTML i CSS. To nie jest też tak, że musimy poświęcić nie wiadomo ile czasu, żeby zrobić coś na czym możemy już zarobić, ale musimy znać pewne nasze ograniczenia i w tym przypadku np. moglibyśmy zapytać pewnej doświadczonej osoby o to, czy jestem w stanie to zrobić z moją wiedzą i pewnie taka bardziej doświadczona osoba będzie wiedzieć, gdzie jest to rozgraniczenie, które pozwoli nam coś zrobić albo będziemy musieli coś doczytać, albo dodać coś więcej, żeby móc to zrobić.
No tak, tylko dodajmy jeszcze tutaj to, o czym mówiłem od samego początku, że to też są projekty edukacyjne. Nawet projekt komercyjny jest dla ciebie projektem edukacyjnym. To jest po prostu projekt edukacyjny, za który chcesz, żeby ktoś ci płacił. I to jest dla mnie w ogóle najlepsza forma nauki, kiedy ktoś ci płaci. Nie ma lepszej i to jest po prostu super, bo to działa niesamowicie na wielu płaszczyznach. Tak że jak czegoś nie wiesz − OK, super, no to się po prostu musisz dowiedzieć i na tym to polega. Oczywiście, jeżeli po nauczeniu się języka programowania będziesz chciał pisać programy do zarządzania łodziami atomowymi, to może nie jest to najlepszy pomysł. Tu też trzeba mieć zdrowy rozsądek i o tym zdrowym rozsądku będziemy później rozmawiali.
Tak jest, wrócimy jeszcze do tego, więc może przejdźmy do kolejnego pytania: gdzie szukać takich zleceń albo samych inspiracji?
No dobra, to teraz pojawia się mały problem, bo zlecenia można wg mnie podciągnąć bardziej pod freelancing i freelancing to absolutnie nie jest nic złego. Jest mnóstwo osób, które korzystają z takiej formy, natomiast ja tutaj jestem sceptyczny. Nauczony naprawdę wieloletnim doświadczeniem, nauczyłem się, że nic nie liczy się bardziej od możliwości skalowania i niesprzedawania własnego czasu. Nie ma nic cenniejszego w naszym życiu niż nasz własny czas. A freelancing to jest niestety ciągle sprzedaż czasu, wykonywanie zleceń dla kogoś. Nie dość, że rynek freelancerski jest bardzo rozbudowany i naprawdę ciężko jest się w to wbić osobie początkującej, chyba że ma się po prostu jakieś możliwości, np. jest sąsiad, albo może jest nawet jakaś opcja we własnej firmie, żeby wykonać jakieś zlecenia, to wtedy tak. Natomiast jeśli tutaj jest posucha, to po prostu będzie niezwykle ciężko. Poza tym, problemem jest niestety brak skalowalności, o którym już wspomniałem. Tutaj pracujecie z jednej strony na etacie i ktoś wam płaci za wasz czas, a tutaj znowu chcecie robić coś, gdzie ktoś wam będzie płacił za wasz czas, za coś, co się nie skaluje. Chyba że jesteście w stanie stworzyć produkt dla jednej osoby z myślą o tym, że ten produkt będzie sprzedawany potem do większej ilości osób. OK, super − to jest skalowalne. Takie podejście mi się podoba.
Tak, to chciałem powiedzieć − możemy znaleźć sąsiada, który ma np. ten nasz warsztat samochodowy. Możemy zrobić dla niego stronę internetową i może się okazać, że przede wszystkim on nam zapłaci − będziemy mieli już projekt do portfolio i później pójdziemy np. do innej miejscowości czy do innego warsztatu w naszej miejscowości i powiemy: słuchaj, mam taką stronę internetową − może chcesz coś podobnego? Wrzucimy tylko inne zdjęcie, oferta będzie oczywiście inna. OK, chcę. Wtedy jest to już trochę to skalowanie, bo może okazać się, że my nie poświęcimy już na to 5-10 godzin, tylko np. godzinkę − wrzucimy wszystko na inny serwer, podmienimy treści i mamy stronę. To wcale nie musi być takie złe, a pamiętajmy też, że faktycznie poświęcamy na to czas i sprzedajemy nasz czas, ale przy okazji możemy się czegoś nauczyć, prawda?
Oczywiście. Cały czas mówimy, że tak naprawdę ciągle chodzi o te projekty edukacyjne i myślę, że to jest nawet wyznacznik tego, co będziemy robili. Kiedy zaczynamy robić rzeczy, które nas nie rozwijają, to jest to zły znak. Znaczy to, że w tym wszystkim robimy coś nie tak i może warto byłoby znaleźć sobie np. kogoś, kto będzie robił to coś za nas i zarabiał dla nas. Myślę, że ten rozwój jest tutaj bardzo istotny. Do pewnego momentu rozwój jest bardzo istotny i powinno się robić takie rzeczy, które nas za każdym razem uczą czegoś nowego.
Jeśli chodzi o zlecenia, to myślę, że mamy ustalone, że pewnie najłatwiej uderzać do znajomych, potem są znajomi znajomych i w ten sposób możemy to rozkręcić.
Tak, dokładnie w ten sposób.
I to jest chyba najprostszy sposób, bo zawsze jest taki pomysł: a ogłośmy się np. na OLX − wydaje mi się, że zabiera to dużo czasu, a efektów jest z tego niewiele.
Efekt będzie zerowy prawdopodobnie.
W szczególności, że nie mamy portfolio, którym moglibyśmy się pochwalić, żeby ten ktoś chciał nas wziąć, bo wątpię, żeby ktoś powiedział OK, to biorę cię − nie wiem co zrobiłeś, ale ci wierzę, że zrobisz dobrze.
Na pewno − po prostu z całą pewnością tak − to jest taki pomysł. Wiecie, przecież jak działa świat.
Mamy te zlecenia. Teraz kolejny element. Powiedzmy, że rzeczywiście chcesz pomyśleć już o jakimś bardziej rozbudowanym projekcie, który ma coś robić, docelowo zarabia. Jest taki mit, który mówi o tym, że to musi być coś nowego, to musi być coś niesamowitego. To musi być coś takiego, że ludziom spadną kapcie z nóg i jeszcze w ogóle tego nie widzieli. Tylko jest to problem. Wymyślenie czegoś zupełnie nowego jest niemalże niemożliwe. Gdybyś prześledził/a serwisy internetowe na całym świecie i projekty, które powstają, to okazuje się, że wymyślenie czegoś nowego jest bardzo trudne. Co więcej, czytałem wiele razy opracowania, które mówiły, że osoby, które wynajdywały coś zupełnie nowego, praktycznie nigdy na tym nie zarabiały. Zarabiają na tym później kolejne firmy, które odkupują te projekty od takich bankrutów i zaczynają je odpowiednio rozwijać i wtedy rzeczywiście one zarabiają. Nie myślmy o czymś niesamowicie nowoczesnym, nieszablonowym itd. Chyba że masz taki pomysł, to super – można o tym pomyśleć.
Co się sprawdza? Sprawdza się robienie rzeczy, które inni już zrobili i które się podobają, bo jest to taki sprawdzony case. Jak ktoś coś lubi, ktoś za coś płaci, to jeśli ty zrobisz coś podobnego, ale rozwiążesz ten problem trochę inaczej albo skoncentrujesz się na większej niszy − zrobisz dany projekt, ale dla określonej niszy, to jest zdecydowanie większe prawdopodobieństwo, że znajdziesz tych klientów. W ogóle taką naprawdę najprostszą metodą jest zrobienie czegoś, co tobie przeszkadza. Na co dzień używamy mnóstwa programów: przeglądarki internetowe, różne IDE do tworzenia oprogramowania, różne inne narzędzia. Ja jestem pewien, że w każdym z tych narzędzi można znaleźć coś, co cię wkurza, co można by było zrobić inaczej i po prostu trzeba to zrobić. Jak najbardziej − można zacząć swoją zabawę z projektami komercyjnymi od stworzenia np. plug-inu komercyjnego do przeglądarki, czy plug-inu komercyjnego do IntelliJ IDEA. I to też może zadziałać. Generalnie starajcie się szukać takich tematów, które drażnią innych ludzi i im przeszkadzają.
A może nawet tobie przeszkadzają.
No właśnie, przede wszystkim tobie, bo jak ty nie możesz czegoś znaleźć, a ktoś ci coś podpowie, albo np. a w naszej firmie w tej chwili ta wysyłka poczty działa tak słabo − tak to źle zrobili, zainstalowali nam nowe oprogramowanie, ono jest takie głupie. A ty myślisz OK, dobra, spoko, zobaczmy o co tu chodzi. Może jestem w stanie zrobić to lepiej, fajniej. Rozumiesz?
To ja może od razu podam taki przykład, miałem znajomą osobę, która była artystą i jeździła po różnych miejscowościach grając muzykę na weselach. Ja nie rozumiałem tego problemu, ale ona mówiła no słuchaj, jedziemy gdzieś na imprezę i nie wiemy, jak będziemy grać, w jakiej kolejności itp. Napisałem więc aplikację, która mi to losuje, wrzucam tylko informacje o piosenkach − czy piosenka jest szybka czy wolna, jakie ma tempo itd. I to musi być zmieniane, musi być odpowiednia kolejność itd. Wystarczyło, że dałem generuj i działało. Taka prosta rzecz, nie wpadłbym na to, bo nie znam tego problemu, ale ta osoba mówiła, że ta aplikacja nie tylko pomogła jej, ale również jej znajomym, bo faktycznie mieli taki problem z wybieraniem odpowiednich kawałków, bo jedni lubili to, inni coś innego, a tak to po prostu klikało się generuj i nikt nie miał nic przeciwko.
Tak. I problem rozwiązany. To jest słowo klucz − problem. Tu chodzi o rozwiązanie czyjegoś problemu. Zawsze chodzi o rozwiązanie czyjegoś problemu. Oczywiście jest jeszcze cała branża rozrywkowa i to jest bardzo bogata branża, na której można zarobić kupę pieniędzy. Ona nie rozwiązuje niczyich problemów, ona śmieszy ludzi. Jeśli masz predyspozycje do tego, to super. Natomiast większość z nas ich po prostu nie ma, więc musimy się zająć rozwiązywaniem czyichś problemów. Jeżeli tworzysz oprogramowanie, które nie rozwiązuje niczyjego problemu to po prostu na tym nie zarobisz.
Tak jest. A wystarczy się rozejrzeć i na pewno znajdzie się mnóstwo tego typu przypadków. Pamiętam, jak jeszcze w liceum, czy w gimnazjum tata chciał sobie liczyć, ile spala jego auto i chciał wrzucać gdzieś te informacje. Pamiętam, że miał Excela, ale tak średnio mu to wychodziło. Powiedziałem mu: dobra − ja ci to zrobię. Prosta aplikacja − tata był zadowolony, korzystał z tego chyba 10 lat i wiedział ile zużył paliwa wprowadzając jedynie informacje, kiedy zatankował, ile zatankował, za ile zatankował i na jakim etapie tankował. Aplikacja liczyła mu to wszystko, był zadowolony, miał wszystko podzielone na miesiące, lata itd. Prosta sprawa, a ja też się czegoś nauczyłem.
No dokładnie. I teraz słuchajcie − taki bardzo istotny hint, który jest mega ważny w dzisiejszych czasach, bo rzeczywiście często może być tak, że trafisz na jakąś ścianę, na jakiś problem, który będzie znacznie przewyższał twoje możliwości: np. znasz się na back-endzie, a rozwiązanie, którego potrzebujesz, wymaga też bardziej zaawansowanego front-endu. Uczenie się front-endu, żeby to zrobić, jest problemem. Jasne, można kogoś poprosić o pomoc, ale tu też zaczynają pojawiać się problemy zupełnie innego rodzaju. Ale żyjemy w czasach, gdzie pojawiły się narzędzia no-code, low-code i w czasach, gdzie pojawiła się sztuczna inteligencja.
Jeśli nauczysz się mądrze używać tych narzędzi, to jesteś w stanie zrobić projekty, które naprawdę wysoko przewyższają twoje obecne możliwości techniczne, twoją wiedzę dotyczącą samego programowania. Front-end można tworzyć w rozwiązaniach no-codowych. Można użyć, chociażby Babla − nie jestem jego fanem, ale można go użyć. Można użyć naprawdę mnóstwa różnych narzędzi. Ja nie chcę w tej chwili rzucać nazwami, bo to teraz tak niesamowicie się zmienia. Powstaje tyle innych, nowoczesnych narzędzi, zwłaszcza związanych ze sztuczną inteligencją, że nie da się śledzić tego na bieżąco, mimo że ja to robię. Po prostu fizycznie się nie da. Jest tego ogromnie dużo. Natomiast umiejętność pracy z takimi narzędziami, umiejętność pracy ze sztuczną inteligencją daje ci w tej chwili ogromne perspektywy. Także jest to też taki element.
Mówiąc o projekcie edukacyjnym, w ogóle bardzo gorąco zalecam, żeby nauczyć się pracować z narzędziami AI w pierwszej kolejności. Nie chodzi o budowanie AI, bo to jest bardzo skomplikowany temat i poza tą rozmową, ale nauczyć się używać tych narzędzi − bo to, że odpalisz ChatGTP, Clouda, czy Gemini i wpiszesz mu jakiś prompt, nie czyni z ciebie osoby, która potrafi z tymi narzędziami pracować.
Dobra praca z tymi narzędziami wymaga ogromnej kreatywności, wymaga umiejętności myślenia, wyciągania wniosków. Z modeli można wyciągać naprawdę niestworzone, bardzo ciekawe i głębokie rzeczy, ale trzeba wiedzieć jak to robić, więc naprawdę praca z tymi modelami może ci bardzo pomóc. Praca z narzędziami no-code, low-code również może ci pomóc, chociaż w dłuższej perspektywie myślę, że używając AI'a, używając swojej wiedzy programistycznej, będziesz w stanie to wszystko zrobić przy pomocy zwykłego kodu, używając odpowiednich narzędzi np. Cursora, Aidera itd. będzie to można zrobić, więc jesteście po prostu w absolutnie niesamowitym momencie historii. Jesteście w takim momencie, w którym mając fajną wiedzę fundamentalną i rozumiejąc jak to wszystko działa, możecie budować absolutnie niesamowite rzeczy. Możecie celować o wiele wyżej niż my mogliśmy celować kiedykolwiek wcześniej, więc jest to tutaj super sprawą.
Jeszcze jeden element, trochę taki freelancerski − to jest ciekawe, bo w Polsce trochę się tego pojawia, na zachodzie jest to dużo bardziej popularne, w Stanach jest to bardzo popularne – kwestia automatyzacji różnych rozwiązań, kwestie budowania rozwiązań o narzędzia no-code'owe, low-code'owe, o narzędzia związane ze sztuczną inteligencją, żeby nawet często bez programowania tudzież dorzucając jakieś niewielkie skrypty budować takie rozwiązania, które automatyzują pewne czynności, np. w księgowości, sprzedaży, marketingu. Niemalże każdy dział ma całą listę powtarzalnych czynności, które można by było zautomatyzować dzięki nowoczesnym narzędziom i to też jest taki naprawdę super temat na side project – można wejść, wgryźć się w ten temat i zacząć świadczyć tego typu usługi. Wiem, że mówiłem, że to nie jest idealne rozwiązanie, bo to ciągle podchodzi pod robienie zleceń, ale myślę, że temat jest niezwykle interesujący i pozwala wejść w ten świat, który jest w tej chwili mało oblegany. Naprawdę niewiele jest firm, które się tym zajmują i niewiele osób, które w tym siedzą. Już od dobrych 3-4 lat opowiadam o no-code/low-code, ale znam raptem kilkanaście osób, które robią podobnie, więc to jest kolejny element, który może ci się przydać w czasie budowania twoich projektów pobocznych.
Jeśli chodzi o to, co powiedziałeś o sytuacji w obecnej firmie, gdzie dana osoba może coś robić przy automatyzacji − to powoduje, że po pierwsze w pracy uczycie się, czyli zyskujecie dodatkowe godziny, których nie mielibyście w domu − jeżeli w pracy robilibyście inną rzecz, to po godzinach musielibyście to realizować. Natomiast będąc w pracy oprócz tego, że macie wynagrodzenie, to dostajecie jeszcze dodatkową wiedzę, która może okazać się na tyle fajna, że wasz szef powie OK, widzę, że warto to automatyzować, więc może zmieńmy twoje stanowisko na takie, w którym zajmujesz się tylko tym. W ten sposób awansujemy, więc to na pewno będzie fajna możliwość.
Odnośnie do low-codu/no-codu/AI-a − podpowiem tylko, na podstawie wcześniejszego przykładu, o którym mówiłem na samym początku − że umiemy tylko HTML i CSS i robimy stronę, a nie wiemy co potem z formularzem. Nagle okazuje się, że jakbyśmy przeszli do formularza, to np. w make.com, możemy zrobić trzy kafelki, które wysyłają maila, przesyłamy te dane z formularza za pomocą tego skryptu.
Albo zrobimy sobie to w teli.
I już jest. Działa. Podejrzewam, że osobie niedoświadczonej mogłoby to zająć godzinkę i gotowe. Wystarczy zapytać AI-a, zrobić to w make'u i w zasadzie to wszystko. Nie musimy mieć nawet specjalnego serwera, na którym obsługiwany jest back-end, więc naprawdę jest mnóstwo opcji, które możemy wykorzystać i jest to dodatkowy plus takich projektów, kiedy pojawia się coś, co wymusza na nas kolejne umiejętności.
Jak najbardziej.
To mamy kolejne pytanie. Jak w ogóle podejść do tematu tych projektów? Jak określić czas realizacji i wielkość wynagrodzenia przy projektach komercyjnych? Jak do tego podejść?
Co ci mam powiedzieć? Nie mam pojęcia. No naprawdę. Określanie czasu realizacji to jest chyba najbardziej skomplikowany temat, jaki w ogóle istnieje w przyrodzie. Mogę wam powiedzieć od razu z góry, że jak szacujecie czas, to pomnóżcie go od razu razy 2 albo 3. Wierzcie mi, że robią tak nawet osoby doświadczone, które znają świetnie dany temat i problemy jakie mogą się pojawić, a przy określeniu czasu pracy dla kogoś na zewnątrz i tak mnożą ten czas razy 2, razy 3, bo zawsze coś się pojawia po drodze, więc jest to po prostu strasznie trudne.
Co do wielkości wynagrodzenia − to jest w ogóle bardzo trudny temat, bo ja wiem, że wielu z was ma w ogóle taką blokadę, żeby poprosić kogoś o pieniądze. Normalne jest dla was to, że wpływa wam wynagrodzenie za waszą pracę np. u pracodawcy, ale niemożliwe wręcz wydaje się wam poproszenie kogoś obcego o pieniądze za coś, co zrobiliście. To jest kwestia psychologiczna, to trzeba po prostu przewalczyć. Ja nie potrafię powiedzieć, ile wy powinniście brać za wykonanie pewnych usług, za wykonanie pewnych rzeczy. Trzeba sprawdzać, jak wygląda rynek dla danych usług, dla danych rozwiązań. I bazując na tym oraz na tym, że jesteście początkującymi w danej dziedzinie, możecie określić swoje stawki i to ile chcecie zarabiać. Natomiast z biegiem czasu należy koniecznie te stawki podnieść i to często podwajając je, bo wierzcie mi − jeśli będziecie robili dobrze to, co robicie, to ludzie będą skłonni za to płacić dużo więcej pieniędzy.
Ja mam taki anegdotyczny przykład z życia. Jest firma, też warsztat samochodowy, tutaj niedaleko i kiedyś rozmawiałem z właścicielem i on mówi, panie, ja już nie wyrabiam − mam dobrych ludzi, robimy świetną robotę, ale po prostu się nie wyrabiamy. Mam już dziesięć stanowisk dla samochodów i pracujemy cały czas. Nie mamy kiedy spać, kiedy jeść, kiedy iść do ubikacji. Tylu klientów. Z jednej strony to super, a z drugiej strony to po prostu jest w dłuższej perspektywie trudne. Oni fizycznie nie mieli już możliwości zatrudnić więcej mechaników itd., bo nie mieli już fizycznie miejsca. Obudowali wszystko dookoła, wszystkie działki, bo robili więcej stanowisk i cały czas byli oblegani. Słuchajcie, no podwyższcie ceny razy dwa (to nie była moja rada, tylko osoby, do której ten człowiek miał ogromne zaufanie). No nie, tak nie możemy. Właściciel to zrobił i po prostu podniósł ceny dwukrotnie. Widziałem się z nim jakieś pół roku później i mówił, że no tak, podnieśli te ceny i przez 2-3 miesiące był spokój, a po tych trzech miesiącach wróciło dokładnie to samo, mimo podwyższenia stawek dwukrotnie.
Także jeśli robicie coś dobrze, to po prostu ludzie będą wam płacili tyle, ile za to będziecie chcieli. Ja wiem, że na początku jest bardzo ciężko poprosić o pieniądze i wycenić pracę − to jest ekstra trudne i na to nie ma żadnej dobrej rady. Po prostu trzeba się tego nauczyć robić samemu. Trzeba się nauczyć samemu wyceniać swój czas, swoje usługi. Mówimy też o nauce − więc tak naprawdę, przynajmniej na tym początkowym etapie, twoim głównym wynagrodzeniem jest twoja wiedza i to jest coś, czego ci absolutnie nikt nie zabierze. Po prostu nie ma takiej opcji. To jest coś, co będziesz mógł również sprzedać innym. Gdybyś np. chciał/a zmienić sobie pracę to masz tę wiedzę dodatkową, którą można zaoferować potem w CV i zaoferować sobie, nawet gdybyś nie chciał/a kontynuować tego projektu, to ta wiedza z tobą zostaje.
Dlatego ja mam propozycję dla osób, które myślą o pierwszym komercyjnym projekcie i nie wiedzą co i jak powiedzieć. Może to dziwnie zabrzmi, ale proponuję, żeby się nie męczyć tylko zapytać tego swojego potencjalnego klienta, którym podejrzewam jest twój znajomy: słuchaj, a ile masz, albo ile możesz zapłacić? Obojętnie ile to będzie, ale ważne żeby to było, nawet jeżeli to będzie 100, albo 500 złotych. OK, godzisz się na to, wiesz, że na tym nie zarobisz, ale zdobędziesz wiedzę, o której mówisz i dzięki temu, mając to doświadczenie, następnym razem będzie ci już dużo łatwiej. Będziesz wiedzieć ile mniej więcej poświęciłeś czasu. Tylko ważne jest to, żeby raportować to sobie, zapisywać, żeby planować, żeby na drugi raz wiedzieć jak jest łatwiej. Następnym razem po pierwsze zrobisz to dużo szybciej, bo jak coś się robi drugi raz, to jest łatwiej i szybciej. Za drugim razem będziesz mógł też powiedzieć więcej − ale ważny jest ten pierwszy klient, bo będziesz mu nawet mógł powiedzieć, słuchaj, ja już coś takiego robiłem, zobacz, zrobiłem to, to już działa − będzie nam łatwiej sprzedać swoje usługi. Może taka opcja będzie dobra, bo wtedy nie trzeba zastanawiać się, myśleć, liczyć na ile to trzeba wycenić, tylko zapytać a ile chcesz za to dać?
Tak, bo na resztę przyjdzie czas, a najważniejszy jest ten element mentalny − właśnie to, że poprosiło się o te pieniądze za pierwszym razem. Naprawdę, uwierzcie mi, że osoby, które tego nie zrobiły, nie zdają sobie sprawy, jaka to jest ogromna bariera i ile znaczy taka udana pierwsza sprzedaż. To może być sprzedaż nawet za złotówkę, ale są jakieś pieniądze, które wpłynęły na twoje konto, ktoś za coś zapłacił i to nie był twój pracodawca. To rozwala ogromną ilość barier w głowie i pozwala przemodelować swoje myślenie − bardzo polecam. Ja nie twierdzę, że każdemu się uda, pewnie większości się nie uda tak naprawdę, bo gdybyście chcieli wejść z projektu pobocznego do własnego biznesu, to jest to bardzo trudny kawał chleba i wiele problemów czeka po drodze.
Co do zmian mentalnych, to przyszła mi do głowy jedna rzecz, która jest z tym trochę powiązana, czyli przekonanie, że a po znajomości to taniej zróbmy. Dlaczego po znajomości nie można zrobić drożej?
Jest też właśnie taka historia − przeczytałem to akurat u kogoś, kto zadał dokładnie to samo pytanie. Ktoś otwierał nową restaurację − wiadomo, że zajmuje to kupę czasu i energii − zebranie ludzi, kupa włożonych pieniędzy, wszystkie zezwolenia, remont budynku i dostaje telefon od znajomych: no słuchaj, to ile taniej nam możesz na tym otwarciu załatwić, żebyśmy przyszli paczką? To jest po prostu dołujące, to powinno zadziałać w odwrotną stronę. Jeżeli masz paczkę przyjaciół, otwierasz restaurację, to oni powinni przyjść, nakupić co mogą i zostawić ci jeszcze stuprocentowy napiwek. I to są wtedy przyjaciele, którzy dbają o ciebie i o twój rozwój. Naprawdę pytanie o ile możesz mi dać taniej po znajomości − sorry, ale nie. Zniżki itp. to jest inna kwestia. Jest to w ogóle osobny temat i oczywiście, jeżeli klient jest dobry, wracający, to stosujemy dla niego inne stawki, jak najbardziej, ale takie podejście mentalne „na ile możesz mi dać taniej, bo my się znamy” ono jest u nas klasyczne, ale nie dawaj się w to wciągać.
To lećmy dalej – jeśli mówimy o korzyściach, to jakie korzyści płyną z realizacji projektu pobocznego?
A jakie nie płyną? Na samym początku mówiłem, że większość osób, która uczy się programowania, wchodzi na HackerRank, robi jakieś mini zadania (bo tego nie można nazwać projektami) − są to tematy stricte akademickie i uczcie się tego programowania akademickiego. Naprawdę jest ogromna różnica pomiędzy programowaniem akademickim i programowaniem takim życiowym, biznesowym. To po prostu przepaść. Przepaść w sposobie tworzenia oprogramowania, w sposobie zarządzania tym kodem, w sposobie i czasie rozwiązywania danego problemu. W Polsce w zasadzie nie uczy się programowania biznesowego. To wszystko, czego uczycie się na uczelniach, to jest programowanie akademickie. Programowanie stricte akademickie jest też na wielu kursach. Ludzie nie tłumaczą wam, jakie znaczenie ma tutaj biznes. Nie tłumaczą wam, o co w tym wszystkim chodzi − gdy tworzycie oprogramowanie, chcecie pisać kod, chcecie być programistą/programistką, chcecie być na etacie, tudzież może już jesteście na etacie i co jest w tym wszystkim najważniejsze? To, że piszesz jakiś kod, który coś tam robi np. robisz kolejne tickety − to jest bez znaczenia w dłuższej perspektywie. Znaczenie ma tylko to, co ten kod robi dla klienta, czy ten kod wykonuje to, co ten klient chciał, czy ten klient miał jakieś zalecenia biznesowe, i czy te biznesowe zalecenia zostały zrealizowane. Tylko to się w tym wszystkim liczy.
Ile przynosi korzyści.
Tak, i to korzyści podwójnej, bo z jednej strony to, co piszesz musi przynieść korzyść tej osobie, która zamawiała oprogramowanie, a z drugiej strony musi przynieść korzyść tej osobie, która zarządza tym całym projektem, która tobie płaci. Na to trzeba popatrzeć. Jest naprawdę ogromna rzesza programistów, która kompletnie tego nie rozumie i to jest ogromny błąd. Zwłaszcza dzisiaj, gdzie wchodzi AI i zacznie powoli zastępować programistów. Prędzej czy później zacznie, ale zacznie zastępować przede wszystkim takich klasycznych „klepaczy” kodu, którzy nie myślą właśnie w tych kategoriach biznesowych, którzy nie myślą w kategoriach rozwojowych. Ja liczę na to, że jeśli słuchasz tej rozmowy, to jesteś w tej drugiej kategorii, czyli w kategorii osób myślących, które chcą się rozwijać i chcą się rozwijać również biznesowo. Więc tutaj AI będzie dla ciebie tylko dodatkową nagrodą i dodatkowym sposobem na osiągnięcie swojego celu. Tutaj nie masz się czym martwić.
Może podam jeszcze przykład tego czym jest ta korzyść z takiego kodu (przynajmniej ja mam takie pierwsze wyobrażenie, jeżeli o tym mówimy): jeżeli np. poświęcimy cały tydzień na to, żeby ten nasz napisany kod działał 500 milisekund szybciej − co w ogóle nie ma żadnego przełożenia na korzyści skorzystania z tego oprogramowania − to klient w życiu nie będzie chciał za to zapłacić, a my poświęciliśmy na to czas i będziemy wymagać, żeby klient nam za to zapłacił, a klient powie: ale to jest bez sensu. Po co ja mam za to płacić, jeśli to w ogóle nie przynosi żadnych korzyści? Co mi po tych 500 milisekundach, skoro użytkownik nawet nie zauważy tej różnicy? Oczywiście w różnych przypadkach tak może być, prawda?
Tak − ja mam trzech użytkowników pracujących na raz i jest nam to po prostu obojętne czy to będzie 500 milisekund, czy nie. Optymalizacja to jest w ogóle osobny temat. Są takie momenty, kiedy optymalizacja jest kluczowa, krytyczna i bardzo ważna i przynosi ogromne oszczędności, ale jest mnóstwo takich sytuacji, kiedy po prostu jest tylko kosztem zbędnym, zupełnie niepotrzebnym dla nikogo. Także słuchajcie, tworzenie własnego projektu, czy własnego projektu pobocznego to jest naprawdę ogromna ilość wiedzy i nauki, której nie zdobędziesz w inny sposób. Po prostu nie jesteś w stanie. Zaczynając od planowania, od zarządzania sobą, od analizowania jakie technologie mają być potrzebne, od wyszukiwania ich słabych i dobrych stron, od nauki, pracy z pustą kartką na takiej zasadzie, że mam w głowie pomysł, siadam i zaczynam coś pisać − mam jakiś pomysł w głowie i zaczynam go rozpisywać po kolei: co ma być zrealizowane, w jakiej kolejności.
Prowadzę program mentoringowy, uczę przyszłych programistów bardzo skutecznie - udało mi się przebranżowić już kilkadziesiąt osób, więc wiem, że robię to dobrze i mogę powiedzieć, że jednym z największych problemów wśród kursantów jest ta umiejętność przeniesienia pomysłu z głowy do komputera. To jest taki naprawdę absolutnie kluczowy problem na etapie nauki języka programowania, który występuje wtedy, gdy właśnie przechodzimy na ten poziom wyżej, kiedy zaczynamy tworzyć projekty (w ramach programu „Za rączkę” oczywiście tworzymy mnóstwo projektów) i to jest ten problem pustej kartki. To jest właśnie to, czego chcę, żebyś nauczył się tworząc projekty, bo tego nie da się nauczyć inaczej.
Masz pomysł, dostajesz ogólny opis np. chcę, żebyś napisał grę w kółko i krzyżyk. Koniec. To jest całe zadanie, jakie dostajesz. Nie dostajesz nic więcej i ty musisz przejść przez cały proces, zastanowić się co to znaczy napisać grę w kółko i krzyżyk? A jak mam to zrobić? Jakich komend użyć? A jakich bibliotek użyć? A jak to ma być? Czy to ma być graficznie? Czy to ma być na konsoli? Jakiego języka? OK - nauczysz się jakiegoś języka konkretnego, to powiedzmy, że zostajemy przy tym języku. A od czego mam zacząć? Czy mam zacząć od wyświetlenia ekranu? Zaczyna się pojawiać naprawdę ogromna ilość pytań i problemów, do których w życiu nie dojdziesz kiedy, tak jak mówiłem wcześniej, rozwiązujesz zadania na HackerRanku − to jest coś zupełnie innego. I dlatego to tworzenie tych projektów jest tak ogromnie ważne. Tutaj mówimy o samej nauce, o tym elemencie edukacyjnym.
Kolejny element, ponieważ wchodzimy w tematy biznesowe, to jest ogrom wiedzy, którą musisz uzyskać dookoła związanej z marketingiem, ze sprzedażą. To są rzeczy, które też musisz opanować. Jest to rewelacyjna metoda podnoszenia swoich skilli miękkich. Przypomnę o tym − już wiele razy o tym mówiłem, może nie w czasie tej rozmowy, ale ogólnie − umiejętności miękkie to jest coś, co odróżnia ciebie od sztucznej inteligencji. To jest największa różnica pomiędzy tobą a sztuczną inteligencją. Są to twoje umiejętności miękkie, twoja kreatywność, twoje umiejętności komunikacyjne, twoja umiejętność rozwiązywania problemów, znajdowania rozwiązania, porozmawiania z drugim człowiekiem, wyjaśnienia mu, że coś można zrobić lepiej, coś można zrobić inaczej, wysłuchania drugiej osoby, wyłapania z tej wypowiedzi drugiej osoby tych elementów, które rzeczywiście są istotne w tym wszystkim. My jako ludzie bardzo często mówimy dużo, ale tak naprawdę trzeba wyciągnąć z nas, trzeba pod spodem wyłapać, o co nam naprawdę chodzi, bo jest mnóstwo takich sytuacji, kiedy rozmawia się z klientem i klient mówi: no bo nasze panie to chcą, żeby w tym systemie tutaj pojawiała się taka funkcjonalność. A ty myślisz, no super, ale to jest w cholerę zabawy. I wtedy jest ogromna różnica pomiędzy osobą, która powie OK, dobrze, to my to zapiszemy i to zrobimy, a osobą, która zapyta a po co wam to? A dlaczego tego potrzebujecie? I jak zaczniecie drążyć do czego jest to potrzebne, to nagle bardzo często okazuje się, że te panie, te użytkowniczki systemu, czy użytkownicy systemu mają jakiś malutki problem, który już dawno jest rozwiązany w systemie, a oni po prostu nie potrafili tego użyć/ zrobić tego w systemie, więc pytanie klienta „po co?” to jest kolejna rzecz, której się nauczysz. Tworzenie własnych projektów komercyjnych to jest mnóstwo wiedzy jaką będziesz mógł/mogła zdobyć, dotycząca miliona różnych rzeczy, plus oczywiście nawiążesz ogromną ilość kontaktów, które są kluczowe. Jeśli chcesz prowadzić biznes, to kontakty i znajomości są po prostu absolutnie kluczowe.
A może jeszcze taka osoba pomoże znaleźć ci pracę? Bo może to będzie prezes albo manager w pracy.
Oczywiście – jeśli nadal będzie cię to interesowało, bo jak najbardziej można prowadzić side project cały czas na spokojnie, bez wchodzenia na jakąś bardzo głęboką wodę, zbierać jakieś pieniążki na boku. W zasadzie ja tu jestem idealnym przykładem takiej sytuacji. Ja ciągle współpracuję z tym moim głównym odbiorcą i wykonuję dla niego regularnie bardzo duże rzeczy. To mi zajmuje sporo czasu, ale oprócz tego, że mam też dzieci, którymi się zajmuję, mam kochaną żonę, którą się zajmuję, mam jeszcze moje projekty na boku i te wszystkie projekty na boku mam w ramach spółki. Sama ta spółka przyniosła mi w tamtym roku grubo ponad 300 tysięcy złotych. I to są naprawdę projekty wykonane na boku. W tej chwili to są rzeczy w dużym stopniu zautomatyzowane. To są te moje projekty edukacyjne. Ludzie się uczą. Ja od czasu do czasu wchodzę, pomagam im, podpowiadam. Potrzebują mojej pomocy, to zawsze jestem, pomagam im w tym wszystkim. Ale to jest side project. To nie jest coś, co jest moim głównym źródłem utrzymania.
To jest tylko dodatkowe źródło utrzymania. I to jest właśnie fajne, że jeśli będziesz chciał/chciała być dalej na etacie, czy pracować z jakimś jednym klientem, nawet na umowie B2B to proszę bardzo, nikt ci nie zabrania. Można to przerwać, można zacząć rozwijać ten swój projekt na maksa i zobaczyć, dokąd cię to doprowadzi, ale wcale nie musisz tego robić. Tutaj Mateusz podpowiedział też bardzo fajną rzecz, że w czasie rozwijania tego projektu będziesz poznawać coraz inne osoby i być może będą takie osoby, które będą cię chciały zatrudnić u siebie. Tak, one zobaczą, co potrafisz i jak się wyróżnisz. A wierzcie mi, że szukanie człowieka, który chce się rozwijać i który potrafi zadawać pytania i który myśli, to jest jak szukanie igły w stogu siana w tej chwili. Naprawdę − rynek pracy jest niby zalewany ilością chętnych, ale większość z tych osób tak naprawdę wcale nie ma doświadczenia, które jest wymagane, chociażby do tego, żeby zostać juniorem. Nie mówimy o doświadczeniu komercyjnym − mówimy o ogłoszeniach entry na takiej zasadzie, że przyjmujemy osoby, które nie mają jeszcze doświadczenia komercyjnego jako programiści i większość z tych osób się prostu do tego nie nadaje. Wiele osób wypisuje sobie np. na LinkedInie, że już są juniorami − nie są i pewnie nigdy nie będą, bo ich poziom wiedzy jest po prostu za słaby.
Myślę, że moglibyśmy to podsumować tak, że jeżeli uznajesz, że umiesz daną technologię, to powinieneś wykonać w tej technologii przynajmniej jeden projekt albo więcej. Często słyszę, że ktoś uczy się dwa lata i jeszcze nie zrobił żadnego projektu.
Ale nawet to nie czyni z ciebie juniora. Juniora czyni z ciebie pierwsza praca jako junior developer, tak? Możesz mówić o sobie junior najlepiej po roku pracy jako junior developer. Zresztą poruszałem to też kilka razy, bo strasznie mnie to irytuje jak widzę „jestem juniorem” − no nie jesteś, dopiero kandydujesz do tego etapu i wielu z was naprawdę ma za małe kwalifikacje i potem się dziwi, że ich ktoś odrzuca.
Podałeś już parę wyzwań i kwestii problematycznych, ale może spróbujmy to teraz wszystko połączyć w jedno − z jakimi wyzwaniami i decyzjami możemy mieć do czynienia podczas realizacji tych projektów. Wspomnieliśmy, że musimy rozmawiać z klientem, czasami musimy go nakierować, czasami musimy mu powiedzieć nie. To też jest trudna umiejętność, w szczególności, jeżeli ktoś nam płaci, to boimy się, że go zrazimy do siebie. Chociaż myślę, że większość osób docenia te podpowiedzi, bo ten ktoś na pewno się nie zna, więc warto o tym powiedzieć. Co byś tutaj jeszcze zawarł odnośnie do takich tematów?
Przejdźmy znowu na szybko przez typy projektów pobocznych, o których mówiliśmy na początku, czyli najpierw mamy ten projekt open source i tutaj to wszystko zależy. Zależy to od tego, jaki to jest projekt. Czy to jest projekt jednoosobowy, czy wieloosobowy. Wcześniej poruszyłeś też bardzo ciekawy temat o tej firmie, która zapraszała do projektów open source'owych itd. Ja mogę coś powiedzieć na własnym doświadczeniu, które mam pracując z ludźmi w moim programie mentoringowym. Po pierwsze, projekty wieloosobowe są przereklamowane. Wcale nie nauczycie się na nich tyle, ile wam się wydaje, że się nauczycie. To musiałoby być naprawdę doskonale przeprowadzony projekt.
I pewnie nie open source'owy, tak? Bo często projekty open source'owe są po godzinach, gdzie ludziom zależy albo nie.
To musiałby być projekt świetnie przygotowany przez osobę bardzo doświadczoną, która postanowi, że poświęci mnóstwo czasu i energii na to, żeby nadzorować was wszystkich, pokazywać wam, co robicie źle, co robicie dobrze itd. I w większości przypadków nie ma takich osób. Ja się nie podejmuję takich rzeczy, bo nikt mi za to nie zapłaci. Ja mam mnóstwo rzeczy − w ramach moich projektów mentoringowych mogę pomagać ludziom, podpowiadam im jak mogę, ale jeśli chodzi o tak duży projekt, w ramach którego będę wszystkim nadzorował − to tak robi się projekty komercyjne, więc weźcie to pod uwagę. To jest jedna rzecz.
Druga rzecz − w programie „Za rączkę” mam projekty dwuosobowe. Są to takie projekty, które nie są wymagane, natomiast na pewnym etapie mówię, że jesteś gotowy, jest Discord, możesz się zgłosić, możesz sobie poszukać par, spróbujcie i ja będę wam oczywiście pomagał. Jak będziecie mieli jakieś problemy, nie ma sprawy, tam jest wytłumaczone jak mniej więcej to wszystko robić, jakich narzędzi używać itd., ale tutaj pojawia się problem − ja nagminnie dostaję wiadomości, słuchaj, wiesz co, ale ten drugi już nie robi tego projektu. On się podjął, chciał, ale w pewnym momencie przestał. No i to jest coś, z czego musicie sobie zdawać sprawę jak będziecie pracować z innymi ludźmi i nie ma znaczenia, czy to jest za free czy komercyjnie − mogą się zdarzać takie sytuacje i będą się zdarzały takie sytuacje, że będziecie wystawiani do wiatru.
Dlatego warto na początku określić cenę i wziąć przynajmniej 50% − wtedy ta druga strona jest już przynajmniej troszkę bardziej zaangażowana, bo jeżeli tego nie będzie, to gwarantuję, że w większości przypadków ktoś odpuści sobie temat, bo ma inne rzeczy na głowie.
Jeśli chodzi o wyzwania przy projektach edukacyjnych − już w zasadzie wszystko powiedziałem − czyli wyzwanie związane z tym, że nie wiesz co robić i jak się do tego zabrać, jakich technologii użyć i ta kwestia pustej kartki itd. Tak naprawdę przy projektach komercyjnych jest dokładnie to samo, ale dochodzi do tego jeszcze mnóstwo rzeczy, z którymi pewnie nigdy wcześniej nie miałeś/miałaś styczności związanych z marketingiem, ze sprzedażą, z dotarciem do klienta, ze znalezieniem tego klienta. To jest cały ogromny świat wiedzy, który się pojawia, który jest niesamowicie interesujący i świetnie działa. Co jest bardzo ważne − jest wiele osób, które wystrzega się tej wiedzy pracując na etacie. O nie, to mi nie jest w ogóle do niczego potrzebne − nie ma nic bardziej błędnego. Nawet jeśli w przyszłości planujesz pracować wyłącznie na etacie, nie chcesz ostatecznie przechodzić na swoje, to wiedza jak marketingować samego siebie, jak umiejętnie sprzedać swoją własną osobę swoim przyszłym pracodawcom jest po prostu absolutnie bezcenna. Jeśli np. trafisz do zarządzania jakimś większym zespołem, to wiedza jak się sprzedawać, jak się marketingować, w każdej korporacji jest bezcenna i jesteś w stanie zrobić dużo dobrego dla siebie i dla swojego zespołu. Tak że to nie jest coś, co jest potrzebne, tylko jeśli chcesz prowadzić rzeczywiście własny projekt. Nie − to jest wiedza, która jest naprawdę uniwersalna, tylko trzeba ją w umiejętny sposób przekładać na miejsce, w którym się znajdujesz. Czy to jest prowadzenie biznesu, czy to jest po prostu praca na etacie w jakiejś dużej firmie, dużej korporacji, czy szukanie pracy, bo tutaj to też się świetnie sprawdza.
Może dodałbym jeszcze taką rzecz − powiedziałaś o tych wszystkich elementach, ale miejcie też świadomość tego, że na pewno na początku będziecie popełniać błędy i polega to na tym, żeby się nie poddawać, tylko zastanowić się, co zrobiliśmy źle i następnym razem to po prostu poprawić. Nie mówię, że to od razu będzie dobrze, ale za którymś zleceniem (tym pobocznym projektem), będzie coraz lepiej, coraz szybciej i tak się do tego dochodzi. Jeżeli my od razu zrezygnujemy, bo coś nam nie wyszło, bo klient nam nie zapłacił, albo projekt wydłużył się razy dwa − to tak czasami jest. Musimy być świadomi, że to nie będzie idealnie i potem po prostu będzie lepiej.
Wracając jeszcze do problemu białej kartki − może dziwnie to zabrzmi − ale jeżeli nie wiecie, od czego zacząć, to po prostu zacznijcie. Piszcie ten kod i wraz z pisaniem kodu zobaczycie, że pojawią się rozwiązania. Czasem może trzeba będzie coś skasować, ale będziecie już wiedzieć, że ta droga nie była dobra, po prostu cofniecie się i pójdziecie inną drogą. I tak to działa − zapewniam was, że za trzecim razem będzie już dużo łatwiej. Tak to po prostu wygląda. Trzeba cały czas próbować. Ostatnio czytałem, że tak jak dziecko uczy się chodzić, to jak myślicie ile razy się przewróciło, ile razy musiało postawić źle krok, żeby zacząć chodzić? Czy wszyscy mówią temu dziecku: a raz się przewróciłeś, to już w życiu nie będziesz chodzić? Czy po prostu mówimy próbuj dalej, w końcu zaczniecie chodzić. I tutaj jest podobnie.
Dokładnie − rzeczywiście problemów może być bardzo dużo, ale to tu chodzi. Nie jesteś w stanie się rozwijać, nie popełniając błędów, po prostu nie pokonując też tych problemów, które pojawiają się na tej drodze. Bez tego po prostu nie ma rozwoju. A ja wiem, że wy chcecie się rozwijać. Zdecydowana większość osób, która trafia do moich projektów, to są osoby, którym nie zależy na tym, żeby zarabiać więcej pieniędzy. Jasne, to jest super, ale to są osoby, które trafiły na rozwojową ścianę. W swojej obecnej branży/pracy nie są one w stanie się rozwijać w jakikolwiek sposób. I jak one pomyślą, że przez najbliższe 10, 15, 20 lat będą robiły dokładnie to samo, to po prostu umierają wewnętrznie i chcą się z tego wyrwać. A IT, programowanie jest naprawdę absolutnie genialnym miejscem do tego, żeby rzeczywiście sobie zagwarantować, że ciągły rozwój będzie elementem twojej codzienności.
Ja bym jeszcze tutaj dodał taką myśl, która mi przyszła do głowy. Pamiętajcie też o tym, że lepiej zrobić tak, żeby działało, niż żeby działało idealnie. Bo czasem mam wrażenie, że chcemy zrobić za dobrze i za dużo czasu przepalamy na to.
Tak. „Better done than perfect”
To może teraz pytanie jak planować i realizować taki projekt?
Nie spieszyć się. To jest taka prawda produkcyjna, którą zaobserwowałem w wielu miejscach, przy wielu projektach. Zdecydowana większość kodu, który kiedykolwiek napiszecie pracując na etacie, to nie będzie ten kod, który trafi na produkcję, tylko to będzie kod, który zostanie usunięty. On po prostu zniknie, bo albo pojawią się jakieś nowe decyzje biznesowe, które stwierdzą, że jednak to, co robiliście jest już niepotrzebne, albo trzeba użyć nowej technologii, albo po prostu jest to nieprzemyślane i ten kod będzie po prostu usunięty przy kolejnej refaktoryzacji, tudzież cały projekt pójdzie w diabły. Musicie się na to nastawić. Tylko że jest drobna różnica, bo jeżeli pracujecie w większej firmie, to ich na to stać. To jest wliczone w cenę, to jest wliczone w cenę rozwoju oprogramowania, tak że np. docelowo 20-30% tego kodu, który wygenerujecie w życiu, jest użyty na produkcji i dla nich to jest po prostu naturalne. Tylko że ty, jeśli jesteś osobą, która sama rozwija swój projekt, nie powinieneś/nie powinnaś sobie na to pozwalać − dlatego bez pośpiechu. Naprawdę przemyśl, co chcesz zrobić, bo bez tego będzie bardzo ciężko i takie ciągłe skakanie − a to już nie, to tego nie, to robię inaczej jest złe, czyli krótko mówiąc, przemyśl, co chcesz zrobić i trzymaj się planu bez ciągłego zmieniania − a bo się pojawiła nowa technologia, a bo się pojawiło nowe rozwiązanie − to nie ma znaczenia. Masz plan, trzymaj się go. Zresztą przejdę za kilka pytań do tego tematu, bo jest mega ciekawy i mam dla ciebie ciekawe rozwiązanie.
Kolejna rzecz to MVP, czyli robisz coś, co ma w sposób minimalny spełniać oczekiwania − to nie ma być piękne, to nie ma być wspaniałe, to ma robić dobrze to, co sobie założysz i to w takiej absolutnie minimalnej wersji. Dopiero jak to jest zrobione, to jest coś, co możesz pokazać potencjalnym klientom i to jest coś, za co potencjalni klienci mogą zacząć ci płacić, bo będą widzieli, że rzeczywiście wiesz, co robisz, potrafisz coś dowieźć, podoba im się pomysł i to, co chcesz zrobić i mogą ci zacząć płacić pieniądze już na tym pierwszym etapie. Także w ten sposób trzeba planować i realizować projekt.
Dodałbym tylko dwie rzeczy. Pierwsza rzecz − gdy mówimy o planowaniu − co to znaczy planować? Zapisz sobie pomysły i potem odznacz, które wchodzą do MVP, a które nie i po prostu je realizuj. Część osób może nie być świadoma tego, że planowanie polega na zapisaniu, żeby łatwiej było to ocenić. Nie chodzi, o to, że mamy pomysł w głowie i to już jest planowanie − to często jest za mało.
Druga rzecz, która parę razy się już dzisiaj przewijała − fajnie byłoby pisać ten kod tak, żeby go wykorzystać w kolejnym projekcie i myślę, że to jest bardzo wartościowe, bo pozwoli nam to napisać kod na tyle dobrze, bo chcemy go wykorzystać potem, więc nawet jeśli projekt nie wyjdzie, to może się okazać, że te funkcje klasy wykorzystamy potem w kolejnym projekcie, więc warto o tym pamiętać.
A nawet jeśli nie użyjemy tego jeden do jednego, to dużo łatwiej nam jest napisać potem kod, jak już coś takiego wcześniej robiliśmy.
Tak jest.
To przechodzimy do pytania, o którym mówiłeś przed chwilą. Jakie błędy są najczęściej popełniane przy realizacji projektu pobocznego?
Mateusz podlinkuje wam moje media społecznościowe i jak wejdziecie na YouTube’a, to pierwszy film, który jest na moim kanale, to jest taki film, który nazwałem „Problemem pałacu i stodoły” i on idealnie opisuje to, o czym mówiliśmy przed chwileczką, czyli jak planować i realizować takie projekty i jakie błędy popełniamy najczęściej. My jako programiści mamy jeden ogromny problem. Ja nie wiem, ja nigdy o tym nie czytałem, nikt o tym nie wspominał, ale ja wiem, że to istnieje. Problem polega na tym, że jak chcesz wejść w branżę motoryzacyjną, w budowlaną, w produkcyjną, to jesteś ograniczony/ograniczona finansami związanymi z dystrybucją, towarem, z magazynami, z milionem różnych innych czynności dotyczących fizycznych obiektów. I to cię blokuje. Ty wiesz, na co sobie możesz pozwolić, a na co sobie nie możesz pozwolić. Masz jakieś pieniądze na koncie i wiesz, ile możesz zainwestować w swój projekt. Zresztą to jest właśnie ciekawy temat, którego nie poruszaliśmy, dotyczący kosztów projektów pobocznych, bo tak naprawdę nie mając żadnych środków można zacząć się bawić w projekty poboczne. Można nie mieć nic, żadnych pieniędzy, a i tak budować side project. W każdym razie to jest coś, co nas nie blokuje w żaden sposób. I to jest ogromny, niewyobrażalny problem, bo ogranicza nas wiedza i nasz czas.
Teraz gdy siadasz przed komputerem, bierzesz tę swoją klawiaturę, zaczynasz coś pisać, to ponieważ nie masz tej blokady, to w głowie budujesz pałac. Niesamowity pałac, najlepiej jeszcze w jakiejś cudownej scenerii, statki kosmiczne latają dookoła, lądowiska i w ogóle jest to coś niewyobrażalnie, absolutnie genialnego. I możesz sobie na to pozwolić, bo nie masz żadnych blokad poza twoją wyobraźnią. I naprawdę mnóstwo osób podchodząc do projektu, podchodzi do niego w ten sposób. Buduje sobie ten pałac. A potem nadchodzi szara rzeczywistość tworzenia kodu. I zdecydowana większość osób zamiast skończenia projektu ma zgliszcza, bo nie jest w stanie w ogóle dojść do tej wizji. Dlatego między innymi przed chwileczką mówiłem o MVP.
Jak ogarnąć ten problem pałacu i stodoły? Mówiłem o pałacu, a teraz opowiem ci o stodole. Chodzi właśnie o to, żeby zamiast pałacu postawić stodołę. Wypisz sobie pięć funkcjonalności, nie więcej. Pięć funkcjonalności, które chcesz, żeby twój projekt osiągnął na początek, żeby użytkownik, który usiądzie do twojego projektu, mógł zrobić te pięć rzeczy. Niech to zrobi dobrze, niech to działa tak jak należy. Jedną z nich może być logowanie użytkownika i zarządzanie użytkownikiem. Zostaną ci jeszcze cztery funkcjonalności, które chcesz, żeby użytkownik mógł w twoim systemie, w twoim MVP zrobić. To jest niesamowicie ważne.
Zdecydowanie największym wrogiem każdej osoby, która wchodzi w taki projekt jest nasza głowa i nasza wyobraźnia, która podsyła nam niestworzone wprost obrazy, które możemy zrobić, właśnie przez to, że nie jesteśmy niczym blokowani. I nawet jeśli podświadomie wiesz, że OK, nie mam wiedzy do tego, to zajmie strasznie dużo czasu, odsuwasz to i chcesz koniecznie wejść i zacząć zbudować ten pałac. I to jest taki naprawdę największy problem, jaki popełniają wszystkie osoby, które chcą zacząć budować swój projekt. Nie popełniaj go. Bardzo proszę. W moim filmie jest jeszcze parę innych rad, więc polecam, bo po prostu warto się z tym zapoznać.
To ja dołożyłbym jeszcze taki błąd, z którego wydaje mi się, że mało osób sobie w ogóle zdaje sprawę − realizując projekt dla kogoś, często musimy mieć świadomość tego, że musimy się zajmować dodatkowymi tematami. Jeżeli to jest znajomy, to pewnie nie będziemy podpisywać umowy, ale często, jeżeli to jest znajomy znajomego, to może warto o tym pomyśleć, bo potem może być problem ze ściągnięciem pieniędzy. Może się też okazać, że musimy tłumaczyć wiele rzeczy temu klientowi i nagle okaże się, że czas poświęcony na hard skile, czyli programowanie, to jest 50% (to i tak będzie dobrze), a drugie 50% to jest energia na te wszystkie telefony, dopytywanie, proszenie o materiały, o teksty, o zdjęcia.
Tak − proszenie się. Wiele osób ma też taką wizję o, to super, to on będzie chciał, to on mi wszystko opowie itd. Niestety nie − większość osób w ogóle nie wie, czego chce, trzeba to od nich wyciągać, sprowadzać ich na ziemię, punktować, a ciężko się rozmawia, jeżeli jesteś jeszcze osobą początkującą w tym temacie i nie możesz niczego pokazać. Ta osoba często traktuje cię z góry, gdy to nie jest jakiś twój znajomy, bo ty nie wiesz, o czym mówisz, ale słuchaj mnie, bo ja wiem lepiej. Jak najbardziej zgadzam się. To też jest jeden z takich błędów, gdzie, zwłaszcza na etapie pierwszego projektu, błędem są jakiekolwiek założenia, bo po prostu one wszystkie zostaną prawdopodobnie zdruzgotane i efekt będzie taki, że dowiesz się mnóstwa rzeczy i dowiesz się przede wszystkim tego, że założenia są często słabe i nie można zakładać, nie mając doświadczenia w czymś, nie można czegoś dobrze założyć. Nawet mając to doświadczenie − tak jak mówiłem wcześniej o szacowaniu czasu − to i tak zakłada się z góry, że będzie to trwało dwa, trzy razy więcej, bo te szacunki i założenia tak wyglądają.
To tak podsumowując, myślę, że na pewno warto wejść w projekt poboczny, ale trzeba się liczyć z tym, że pewnie pojawi się dużo problemów i po prostu będziemy musieli być gotowi na ich rozwiązanie.
Ale właśnie po to się wchodzi w projekt poboczny, żeby nauczyć się rozwiązywać te problemy. Myślę, że taka jest generalnie idea tego wszystkiego. Już pomijając opcje, że side project może zacząć zarabiać itd., ale właśnie cały sens wchodzenia w projekty poboczne jest taki, żeby nauczyć się działać z tymi problemami, nauczyć się je rozwiązywać, nauczyć się je zwyciężać, ale przede wszystkim dowiedzieć się, jakie to mogą być problemy, bo wielu z nas po prostu zupełnie nie zdaje sobie z tego sprawy. Bez wejścia we własny side project nie jest tego w stanie ogarnąć.
Nasunęła mi się jeszcze jedna bardzo ciekawa rzecz, jeden typ projektów, można powiedzieć pobocznych, chociaż ciężko je tak nazwać. Wiem, że są duże firmy, duże korporacje, które mają działy zajmujące się tworzeniem różnych dziwnych, mniejszych projektów eksperymentalnych. Często jest tak, że osoby, które są zatrudnione w innych działach, mogą brać udział w tych projektach. To też można potraktować jako taką formę projektu pobocznego, która ma ten plus, że ściąga z ciebie całe ryzyko tego niepowodzenia itd., a pozostawia większość plusów, czyli spotkasz się z wieloma problemami, jakie będą się pojawiały, będziesz przy rozmowach/dyskusjach jak będziecie wymyślali, jak coś rozwiązać − więc jeśli masz taką możliwość, to też jest całkiem sensowna opcja.
To może czas jeszcze na polecenie jakiejś książki osobom, które chcą lepiej realizować projekty po godzinach lub w ogóle jak do nich podejść.
W pierwszej rozmowie z Mateuszem polecałem wam chyba Mit przedsiębiorczości i tego się bardzo trzymam. Jeśli myślisz o tworzeniu projektów komercyjnych, to Mit przedsiębiorczości to jest książka do przeczytania obowiązkowo. Natomiast na dzisiaj przygotowałem inną pozycję: Rework, której autorem jest Seth Godin i to jest książka napisana przez człowieka, który stworzył wielką firmę programistyczno-informatyczną wdrażając różne ciekawe rozwiązania. Oni mają zupełnie niestandardowe podejście do biznesu. To jest firma, która jako jedna z pierwszych miała pracowników rozrzuconych po całym świecie, pracowali zdalnie wiele, wiele lat temu. Ta książka to źródło niesamowicie fajnej wiedzy, innej, wiedzy, która rozwala standardy, szablony.
Jednym z moich ulubionych tekstów z tej książki jest takie powiedzenie, że najlepiej uczyć się na własnych błędach. Natomiast ja całkowicie zgadzam się z autorem tej książki, który po prostu dewastuje to stwierdzenie, mówiąc super, ale jak popełnisz jakiś błąd, to nadal nie masz bladego pojęcia, jak to zrobić dobrze. Możesz popełnić nawet milion błędów i nadal nie wiesz, jak coś zrobić dobrze. Jedyne co wiesz, to to jak ci się nie udało. Zakładanie, że popełnianie błędów to jest sposób na dojście do celu, to wcale nie musi być dobra metoda. I właśnie to jest taka książka, która dewastuje jakiś standardowy sposób myślenia, dewastuje podejście, jakie mamy zakorzenione w naszych głowach, które jest bardzo złe. Wysysamy to naprawdę z mlekiem matki i dlatego to jest taka pozycja, którą bardzo mocno polecam, bo pozwoli ci po prostu zmienić punkt widzenia, zmienić sposób myślenia, czego ci życzę.
A czy ta firma jest twórcą Slacka, czy coś źle kojarzę? Chyba jakiegoś komunikatora?
Wiesz co, Slack to jest komunikator, nie wiem czy oni akurat mieli coś wspólnego, natomiast oni mają i CRM-y i wypuścili na rynek naprawdę mnóstwo różnych potężnych narzędzi. Wiem, że oni zajmowali się Basecampem.
Basecampa. Tak, OK.
Także naprawdę potężna firma, ogromne pieniądze. A była firemką, która zatrudniała kilka osób, bodajże osiem osób pracujących zdalnie na całym świecie w czasach, kiedy nikt nie myślał tu o pracy zdalnej. A oni pokazali, że się da, że to działa, że jest taka możliwość − więc naprawdę w tej książce jest mnóstwo bardzo ciekawych przemyśleń, które naginają rzeczywistość jaką znamy i naginają ją w taki bardzo pozytywny sposób.
Dobrze, Danielu. To w takim razie już moje ostatnie pytanie na dzisiaj, gdzie możemy cię znaleźć w sieci?
Można mnie znaleźć na YouTubie, co prawda ostatnio nagrywam rzadziej, ale jak najbardziej, ponad 200 moich filmów jest na YouTubie. Można mnie znaleźć na LinkedInie. Na Facebooku prowadzę grupę na początkujących programistów, Od zera do Juniora. LinkedIn to jest chyba w tej chwili najbardziej popularne miejsce, gdzie można mnie spotkać. Na Instagramie ostatnio praktycznie przestałem wrzucać. Zauważyłem, że takie krótkie formy to nie jest coś, co mnie kręci, co mi się podoba i na co mam czas. Po prostu, jak jestem już skoncentrowany nad czymś, to bardzo nie lubię się odrywać, żeby a, to teraz nagram, że coś robiłem. To nie jest coś, co mi sprawia frajdę i tylko mi przeszkadza. Wolę koncentrować się właśnie na tekstach pisanych na LinkedInie, czy na materiałach wideo, które wrzucam na YouTube’a. Tak jak mówię, ostatnio rzadziej to robię, ale planuję reaktywację, bo mam kilka fajnych tematów, którymi będę się chciał z wami podzielić, zwłaszcza związanych z obecną sztuczną inteligencją − z tym, jak ją sensownie wykorzystywać właśnie przy tworzeniu własnych projektów, przy nauce programowania, przy tym, żeby być lepszym programistą, bo dobrych materiałów jest bardzo niewiele. Jest mnóstwo rzeczy od ludzi, którzy po prostu teraz zobaczyli AI i w to wchodzą. Ja akurat ekspertem od AI nie jestem, ale bardzo mnie bawią te tematy i zajmuję się tym już od ponad trzech lat i po prostu bardzo intensywnie używam tych narzędzi na co dzień. Także zapraszam.
Zapraszam wszystkich do Daniela. Jeżeli chcecie go o coś podpytać, to pewnie najprościej będzie na LinkedInie albo bezpośrednio, albo przez skomentowanie postów. A ja Tobie Danielu bardzo dziękuję za tą rozmowę i podzielenie się z nami swoimi doświadczeniami.
Dzięki Mateuszu. Super rozmowa jak zwykle.
Dzięki. Trzymaj się. Hej.
Dzięki za zaproszenie. Dzięki. Trzymajcie się wszyscy. Pa pa.
Potrzebujesz cotygodniowej dawki motywacji?
Zapisz się i zgarnij za darmo e-book o wartości 39 zł!
PS. Zazwyczaj rozsyłam 1-2 wiadomości na tydzień. Nikomu nie będę udostępniał Twojego adresu email.
Chcesz zostać (lepszym) programistą i lepiej zarabiać?
🚀 Porozmawiajmy o nauce programowania, poszukiwaniu pracy, o rozwoju kariery lub przyszłości branży IT!
Umów się na ✅ bezpłatną i niezobowiązującą rozmowę ze mną.
Chętnie porozmawiam o Twojej przyszłości i pomogę Ci osiągnąć Twoje cele! 🎯