Jak zaniedbać pupila, czyli o porażkach projektów

Każdy z nas miał co najmniej kilka pomysłów na aplikacje, które miały stać się małą cegiełką w rozwoju tego świata, a autora hucznie wprowadzić do klubu trzech przecinków (ponad miliarda na koncie).

Media faszerują nas zewsząd podobnymi success story, dlatego sami nierzadko poświęcamy swój wolny czas poza pracą oraz zaniedbujemy codzienne obowiązki żeby dać upust ambicji i przynajmniej częściowo zrealizować pojawiające się pomysły. Czasami motywacją do takiego działania nie musi być wcale pociąg do pieniędzy, a jedynie chęć bezinteresownej pomocy innym ludziom. Programy tego typu są umieszczane w sieci na zasadach wolnego oprogramowania i mogą być również aktywnie rozwijane przez społeczność. Niektóre decyzje o rozpoczęciu tworzenia oprogramowania są podejmowane tylko w celach rozwoju osobistego autora i efekty tych prac nigdy nie ujrzą światła dziennego. Nieważne jaką ścieżkę wybierzemy, wszystkie drogi do osiągnięcia celu wymagają od nas poświęcenia dużej ilości czasu. Czasami bardzo cennego, bo mógłby być poświęcony rodzinie czy znajomym. Warto podejść do tematu z odpowiednim przygotowaniem i spędzić ten czas jak najbardziej owocnie.

Statystyki wskazują, że o porażkę nietrudno. Na rynku polskich startupów 9 na 10 firm upada zanim zacznie przynosić zyski. Czy w obszarze wolnego oprogramowaniu sytuacja ma się lepiej? Na GitHubie bardzo łatwo można się natknąć na niedokończony lub nierozwijany projekt. Za tymi porzuconymi liniami kodu kryją się czasami setki przepracowanych godzin i mnóstwo wyrzeczeń. Dla niektórych może to być tylko kolejne repozytorium do przejrzenia w poszukiwaniu rozwiązania swojego problemu. Inni widzą w tym pewną historię zapisaną między wierszami. Historię o ambicji i dążeniu do realizacji swoich celów. Czas poświęcony na przekucie pomysłu w realny byt nigdy nie jest czasem straconym.

Wiele z tych historii ma zakończenie dalekie od szczęśliwego. Dlaczego projekty kończą się porażką? Powodów jest oczywiście multum. Sam na własnej skórze doświadczyłem już tego wiele razy. Cierpi na tym przede wszystkim ambicja, która zmusiła nas do podjęcia tej dodatkowej pracy. Warto jej trochę pomóc i należycie przygotować się do wykonywanej pracy. Część z wymienionych poniżej wytycznych może okazać się dosyć oczywista, ale zbyt często widziałem u siebie i w swoim najbliższym otoczeniu fatalne skutki zignorowania tych aspektów, by o tym nie wspomnieć.

Jaka droga prowadzi do sukcesu? Tego jeszcze nie odkryłem. Wiem natomiast jakimi drogami oddalamy się od ustalonego celu, a więc jeśli jesteś zainteresowany to usiądź wygodnie i poświęć kilka chwil na przemyślenie poniższych akapitów.

Zrób rzetelny research

Czy twój innowacyjny i jedyny w swoim rodzaju projekt jest pierwszym takim pomysłem w Internecie? Zapewne nie. Wiesz co jest gorsze od znalezienia podobnego projektu do Twojego w Internecie? Znaleźć taki projekt po kilku miesiącach wykonanej pracy. Postaraj się sprawdzić wszystkie prawdopodobne miejsca jego występowania w sieci i zrób to starannie. Poświęć na to więcej czasu niż planowałeś, pozwoli Ci to lepiej dopracować wizję swojego produktu oraz unikniesz nieprzyjemnego rozczarowania i poczucia bezsensu wykonanej pracy. Wydaje się banalne? Ciężko mi policzyć ile razy niszczyłem marzenia znajomych o podboju świata w jeden prosty sposób - podając im frazę jaką mają wpisać w wyszukiwarkę. Czy znalezienie podobnego projektu oznacza, że nie warto podejmować wyzwania? Oczywiście, że nie. Jeśli myślisz, że AirBnb lub Uber były pierwszymi tego typu aplikacjami to jesteś w błędzie. Przed nimi dokonano dziesiątek prób zrealizowania tego samego pomysłu. Dlaczego właśnie im się udało? To już dłuższa historia, którą ludzie związani z biznesem opowiedzą zapewne lepiej ode mnie.

Najważniejsze do zapamiętania z tego punktu to żeby konfrontować swój pomysł z rzeczywistością jak najszybciej i możliwie rzetelnie. Warto to również robić później, w trakcie realizacji projektu. Pisałem kiedyś dosyć nietypową wyszukiwarkę do lotów i po 2-3 miesiącach pracy okazało się, że jeden z wiodących tego typu serwisów wprowadził funkcjonalność, która była bardzo podobna do mojej. W efekcie zaniechałem dalszych prac nad projektem. Z jednej strony czułem smutek, natomiast z drugiej strony byłem zadowolony, że udało mi się to odkryć w miarę wcześnie. Nie miałem nawet poczucia, że był to czas stracony. Przynajmniej nauczyłem się nowego frameworka w Javascripcie. Wspomniałem, że od tamtego czasu przestał być trendy i nie jest już rozwijany?

Skup się na osiągnięciu celów

Moim głównym problemem przy pisaniu małych projektów po godzinach było to, że chciałem do nich zaprząc całe stado nowych frameworków oraz rozwiązań, które szumnie były chwalone na konferencjach. Z racji tego, że ma to być projekt pisany po godzinach to oczywistym jest dla nas, że będziemy mieli na niego ograniczoną ilość czasu. Zdajemy sobie również sprawę z tego, że może być pisany w nieregularnych odstępach czasu i część pomysłów może być okrojona. Co według mnie często jest bagatelizowane to dbanie o motywację. Dla niektórych użycie nowej biblioteki ze słabą dokumentacją może być samo w sobie motywujące do dalszej pracy, co poniekąd rozumiem. Ja natomiast jestem nastawiony na widoczne rezultaty swojej pracy. To one napędzają ten motor, który nie pozwala odstawić projektu na bok i utrzymuje wysokie zaangażowanie.

Każdy nowy framework, każde nowe podejście do wytwarzania oprogramowania przynosi oczywiście benefity w postaci wiedzy i doświadczenia, ale przede wszystkim opóźnia moment, w którym będzie można zobaczyć efekty pracy. Może zdarzyć się tak, że zabraknie paliwa na trasie. Że motywacja skończy się, zanim program będzie realizował podstawową funkcjonalność. Przechodziłem przez to wiele razy. Dlatego w następnym projekcie mam jasno określone cele i postaram się zrealizować MVP (Minimum Valuable Product) stosując wiele kompromisów w kodzie. Użyję w pierwszej kolejności technologii, które znam. Nie będę spędzał wieczorów nad zastanawianiem się, czy mój schemat bazy jest dobrze rozpisany, albo czy domena została dobrze zamodelowana. Postaram się wyeliminować wszystkie niepotrzebne rzeczy, które będą opóźniały realizację celu. A później? Kod można przepisać na nowo, dane przenieść do innej bazy, a domenę zamodelować ponownie. Z tą różnicą, że mamy już działający kod, który realizuje określoną funkcjonalność. Dla mnie różnica jest znacząca.

Staraj się być niezależnym od innych

Platforma Windows Phone poza swoimi paroma zaletami boryka się również z istotnymi problemami, z których największym wydaje się mała ilość aplikacji w markecie. Utrzymująca się ciągle na niskim poziomie popularność tego systemu nie wróży zmian w tym obszarze w najbliższym czasie. Pole do popisu mają tutaj programiści, ponieważ sporo pomysłów nie zostało jeszcze przeniesionych ze świata Android i iOS, jak również wiele firm nie zdecydowało się wypuścić dedykowanej aplikacji na system Microsoftu. Czy jednak faktycznie jest to obszar, w który warto inwestować swój czas?

Pisałem kiedyś w okresie zimowym pierwszą polską aplikację do sprawdzania warunków na stokach narciarskich dla platformy WP. Działają już w Polsce firmy, które mają zgromadzone informacje o stanie pokrywy śnieżnej z wielu ośrodków, natomiast nie oferowały takiej aplikacji oraz nie udostępniały API. Pojawił się więc problem skąd pobierać dane. Dość szczegółowe dane pogodowe można uzyskać od instytucji rządowych, natomiast dostęp do nich to koszt rzędu kilkuset złotych miesięcznie, co zdecydowanie wykluczało to rozwiązanie. Ostatecznie postanowiłem zbierać rzadziej aktualizowane dane udostępniane bez licencji z kilku mniejszych serwisów poprzez zwykłe parsowanie HTML. Śniegi stopniały, wiosna zawitała na nasze podwórka, a moja aplikacja została skończona i wypuszczona do marketu. Ilość ściągnięć była oczywiście mała z uwagi na porę roku. Dodatkowo pojawił się duży koszt dostępu do danych, ponieważ parsery stron co chwilę zgłaszały błędy w pobieraniu danych pogodowych. Co gorsza, dwa tygodnie później została wypuszczona do marketu całkiem rozbudowana aplikacja korzystająca z komercyjnych danych pogodowych. Pogrzebało to zupełnie moje dalsze plany na rozwijanie tego projektu.

Wnioski? Traktować z najwyższym priorytetem dane, z których korzysta nasz projekt. Nie uzależniać się tylko od jednego API, które w każdym momencie może być całkowicie zmienione lub nawet zamknięte (takie przypadki też są mi znane). Podchodzić bardzo ostrożnie do projektu, bo jeśli konkurencja ma jakościowo dużo lepsze dane to może się skończyć tak jak w moim przypadku. Dane kosztują, a te udostępniane za darmo obarczone są sporym ryzykiem. Nawet jeśli ma to być aplikacja pisana tylko w celu poznania platformy - warto brać to pod uwagę.

Podejdź do tematu psychologicznie

"Nie mam czasu" to według mnie najczęściej powtarzane kłamstwo XXI wieku. Kłamstwo, w które ludzie głęboko wierzą i dzięki niemu pozostają w swojej strefie komfortu. "Nie wychylać się" - informuje naklejka na szybie w tramwaju. Zawsze widząc ten napis w czasie porannej drogi do pracy zastanawiałem się co ostatnio zrobiłem, żeby owa fraza nie stała się moim mottem życiowym.

Wystawienie głowy poza obszar codziennej rutyny to pierwszy (i najtrudniejszy) krok na drodze do zrealizowania swojego pomysłu. Natomiast jak później utrzymać motywację i zaangażowanie przez dłuższy czas? W moim przypadku najlepiej sprawdza się technika presji społecznej. Warto opowiedzieć znajomym (najlepiej po fachu) o swoich planach i liczyć na to, że będą pamiętać o tej rozmowie. Możliwe nawet, że sami będą nam o niej przypominać. Jeśli spotkamy się z pozytywnymi opiniami już na etapie samego opowiadania o pomyśle, to oprócz dodatkowego ładunku energii do pracy na projektem, wygenerujemy również dodatkową presję w postaci śledzących nas znajomych. Presja z zewnątrz często jest wręcz konieczna. Znam dosłownie garstkę ludzi, którzy sami z siebie potrafią wykrzesać wolę do zrobienia czegoś nadprogramowego. Jeśli w swoim kręgu znajomych nie znaleźliśmy osób zainteresowanych tematem to oczywiście można skorzystać z Githuba. Im więcej osób patrzy nam na ręce, tym większa szansa, że sami będziemy traktować ten temat priorytetowo. Dodatkowo tego typu serwisy pozwalają na aktywne uczestnictwo osób trzecich w rozwijaniu naszego projektu. Kto wie, może właśnie w ten sposób poznamy współpracownika? Chomikowanie kodu na lokalnym komputerze do czasu wyprodukowania stabilnej wersji 1.0 nie sprawdziło się w moim przypadku. Prawdopodobnie dlatego, że żaden z tych projektów wersji stabilnej nie osiągnął. Czas to zmienić.

Wkrótce na tym blogu pojawi się seria wpisów związana z moim nowym projektem. Projektem, który ma być wolny od błędów poprzedników. Jeśli jesteś zainteresowany jak tym razem potoczy się ta historia to zapraszam do częstszych odwiedzin. A co Ty poprawiłbyś w swoim kolejnym projekcie?

Share this post

comments powered by Disqus