JavaDevMatt.pl – Mateusz Kupilas

Programista na emigracji… aktualnie po emigracji. ;) Na blogu poruszam też tematy biznesowe.

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

Pamiętam jak mój promotor narzekał, że współczesne oprogramowanie ciągle ma jakieś aktualizacje.

kuc

 

„Nikt nie robi solidnych produktów. Ciągle muszą coś naprawiać i aktualizować, zamiast zrobić porządnie. Hurr durr.”

 

 

Z czasem nauczyłem się, że nie zawsze warto dyskutować z jakąś osobą. Należy zdecydować, czy osoba która coś mówi jest w naszych oczach wartościowa i czy w przyszłości chcielibyśmy być jak ona. W moich oczach był to stary komunista, który całe życie pracował na pozycji, którą zapewniało państwo: formalna edukacja. Nigdy nie stworzył nic, co w jakikolwiek sposób zaistniało na rynku. Jednak nie przeszkadza mu to, by udzielać rad jak powinno się tworzyć oprogramowanie/produkty.

Na szczęście miałem już trochę doświadczenia opartego na realnym świecie i mogłem ignorować słowa takiego człowieka.

Jednak dla wielu osób, to straszna kula u nogi. Nigdy nie wydają swojej pierwszej gry mobilnej, nie zaczną pisać blog, prowadzić kanału na YT, bo są skażeni przez tego typu osoby. Boją się krytyki przy najdrobniejszym błędzie. Bycie perfekcjonistą to piekło i należy się jak najszybciej nauczyć z tym walczyć.

Fail fast – błędy są nieuniknione. Popełniaj je i wyciągaj wnioski

Przez ostatnie 2,5 roku sporo nauczyłem się na temat tej filozofii. Należy przyjąć za fakt, że popełnimy błędy i nie należy się ich bać. Powinniśmy się skupić na tym, na co mamy wpływ. Wpływ mamy na to jak szybko popełnimy błąd.

Jeśli popełnimy błąd szybciej, to możemy go szybciej skorygować.

Dobry przykład dla uczącego się programowania: nie bój się pokazać gdzieś swój kod i poprosić o konstruktywną krytykę. Cześć życiowych frustratów wykorzysta okazję, by trochę odreagować, ale jeśli nauczysz się ich ignorować, to trafisz co jakiś czas na pożyteczne wskazówki. Zanotuj wnioski z konstruktywnej krytyki. Zrób to drugi razi i poproś o ponowną opinię.

Pamiętam jak gadałem często przy piwie z naszym „head of product”, który opowiadał o początkach firmy i masie głupich decyzji. O ilości spotkań z inwestorami na Skype przy których się totalnie zbłaźnili, bo jeden z założycieli popisał się czarnym humorem… 😉 O rzeczach, które rozwijali paroosobowym zespołem przez rok i koniec końców całą pracę wyrzucono. Wiele rzeczy dzisiaj by zrobili inaczej, ale nie byli by tam gdzie są, gdyby nie te błędy. SpaceX też zakłada, że co któraś próba lądowania/startu się nie uda. Wszystko robią, by szybko się uczyć i nie stać miejscu.

debile

Bardzo łatwo wtedy takiego człowieka krytykować. Jednak koniec końców po 5 latach popełniania masy błędnych decyzji i wyciąganiu wniosków, firma została wykupiona przez ogromną korporację i sporo namieszała na swoim rynku.

„Chcę zrobić grę, ale nie znam 100% javy/pythona/c++”

Często dostaję to na maila, albo jako wiadomość na FB.

Przez robienie czegoś fajnego i praktycznego (jak np. prosta gra) uczymy się szybciej i mamy większą motywację, by się rozwijać. Kompletnie nie rozumiem skąd bierze się takie błędne przekonanie, że należy znać idealnie jakiś język programowania zanim zrobimy w nim coś fajnego…

Strzelam, że powodem jest obawa przed krytyką.

Radzenie sobie z krytyką – najgłośniej krzyczą osoby, które nic w życiu nie robią

Gdy wrzucisz coś do internetu, dzieje coś dziwnego. Albo ludzie Cię kochają i chwalą każdy Twój krok, albo Cię nienawidzą i życzą byś dostał raka. 😀 Konstruktywnej krytyki jest bardzo mało.

Dobrze ujął to kanał IndieYourFace, który w taki sposób proponuje sobie radzić z falą niekonstruktywnej krytyki z internetów

Stawiaj priorytety i nie bój się świadomie nie robić/ignorować niektóre rzeczy

Musisz być świadomy swoich ograniczeń. Jako mały indie developer, albo Startup, w którym pracują 3 osoby, nie jesteś w stanie zrobić wszystkiego tak jak byś sobie wymarzył.

Użytkownicy wolą częściej dostawać małą poprawkę, na którą mogą zareagować: to jest fajne, to nie niepotrzebne. Dzięki temu możesz poświęcić czas na rozbudowanie ficzerów, które się dobrze przyjmą, a rzeczy mniej przydatne mogą być zniszczone w zarodku (zanim programista poświęci kolejny tydzień, by usprawnić coś co od początku się nikomu nie podobało).

Jako przykład podam moją grę Note Fighter.

Byłem przekonany, że to co najbardziej przyciągnie ludzi do gry, to możliwość grania utworów. Wydałem grę z 9 utworami i pokazałem ją światu. Od razu pojawiła się burza, że gra jest strasznie trudna. 😀 To zrobiłem możliwość ćwiczenia utworów w wolniejszym tempie i przy nieśmiertelnym ludku. Troooochę lepiej, ale nadal nie był to „to”.

Często zaczął pojawiać się komentarz, że to w sumie dobra alternatywa do tak zwanych „flashcards”, gdzie na jeden stronie mamy nutę, a na drugiej nazwę „E”, „D#” etc. ale wtedy trzeba by mieć możliwość ćwiczenia losowych nut.

Wbudowałem więc taką funkcjonalność i zrobiłem pod kątem aspektu „alternatywa dla flashcards” filmik promocyjny:

Efekt?

Dałem koledze muzykowi grę: od razu załapał aspekt ćwiczenia losowych nut. Sam spędziłem więcej czasu w autobusie korzystając tylko z tego jednego aspektu mojej gry. Cała reszta stała się otoczką, bo ćwiczenia losowych nut jest dla mojej grupy docelowej (muzycy, którzy chcą poćwiczyć nuty) najbardziej przydatne.

Efekty widać też w wyświetlaniu reklam: gracze zaczęli spędzać znacznie więcej czasu z moją grą i mam nagle 3-4 razy więcej wyświetleń reklam w grze.

Zgodnie z zasadą walczenia z perfekcjonizmem nie zaimplementowałem od razu rzeczy, które bym chciał tam zamieścić: ćwiczenie klucza basowego, zmiana tempa losowych nut, czy wybór jakie nuty chcemy ćwiczyć. Na razie wydałem możliwie prosty update. Update się dobrze przyjął, więc wiem, że mogę poświęcić na następnym sprincie jakieś środki, by go jeszcze poprawić. Gdybym od razu chciał wrzucić wszystko co mam w głowie, to update opóźniłby się o kolejne tygodnie i nadal nie miałbym pewności, czy to się przyjmie u graczy.

Podobnie robię z moim ebookiem. Wcześnie dzielę się spisem treść i wysyłam pierwszy rozdział chętnym. Pierwsze 10 stron, które wysłałem zawierało masę literówek, parę błędów ortograficznych, ale nie przeszkodziło to, by ponad 450 osób wysłało mi maila z prośbą o wstępnego ebooka. Dużo ważniejsze są opinie przyszłych czytelników (co brakuje we wstępnym spisie treści – co ich nie interesuje), niż to czy piszę 100% poprawną polszczyzną. Piszę od siebie, czasami pojawia się ponglish, ale za to staram się przekazywać praktyczną wiedzę. Większości się podoba, a grupę którą to odrzuca nauczyłem się akceptować/ignorować.

Nigdy nie dogodzisz wszystkim.

banerjd

 

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

  • Umbertho napisał(a):

    O, świetny temat. Właśnie jestem w trakcie czytania książki: ‚metoda lean startup’, w której szczegółowo opisane jest takie minimalne podejście do startupów. Polecam 🙂

  • owner napisał(a):

    Dlaczego nie masz disqus jako system komentarzy ? ;/

  • Sylwester napisał(a):

    Bardzo dobry wpis, taki chorobliwy perfekcjonizm to zdecydowanie przeszkoda dla początkujących programistów o której warto mówić i warto to podkreślać w takim charakterze. W końcu człowiek najlepiej uczy się popełniając właśnie błędy. Dużo firm tak jak wspomniałeś zawdzięcza swój sukces właśnie temu, że nie bali się próbować, a w Dolinie Krzemowej panuje nawet swoisty kult porażki. Podobno tam dla inwestora to, że poprzednim razem coś Ci się nie udało, dajmy na to startup jest zaletą, a dlaczego? A dlatego, że teraz wiesz czego nie robić 🙂

    • JavaDevMatt napisał(a):

      btw. zerknalem sobie wlasnie na Twoj filmik „Android – 10 narzędzi leniwego programisty” wiekszosc znalem, ale pare ciekawych nowych rzeczy sie dowiedzialem 🙂 podziele sie filmikiem na fanpagu, by wiecej osob mialo okazje sie czegos nauczyc

  • Jotka napisał(a):

    Hej
    Dzięki za ten wpis! Może wydawać się że to ‚tylko’ parę zdań, ale dla kogoś kto dopiero poznaje świat programowania daje dużo do myślenia.
    Pozdrawiam 😉

  • fatpikaczu napisał(a):

    Matt jesteś świetnym gościem. Zaczynam przygodę z programowaniem i jestem w tym momencie w punkcie zero, ale bardzo się cieszę, że trafiłem na Twój youtube. Masz super zdrowe i szczere podejście do tematu, dzięki.

  • puoć napisał(a):

    Kawał dobrej roboty. Zarówno tutaj na blogu, jak i na Youtubie.

  • […] Dlaczego nie warto być perfekcjonistą (w kontekście startupu, indie developera, czy początkując… […]

Dodaj komentarz

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