5 sposobów na naprawienie entropii oprogramowania dla start-upów
Opublikowany: 2019-01-21Startupy zużywają większość swoich zasobów, aby jak najszybciej trafić na rynek
Osiągnięcie dobrej jakości wymaga dużo czasu i kosztów, a na tym cierpi większość startupów
Napisz i przepisz na nowo integralną część kodu i spraw, by robienie tego stało się nawykiem w miarę postępów
„«Startup» to firma, która jest zdezorientowana – 1. Jaki jest jej produkt, 2. Kim są jego klienci 3. Jak zarabiać”. – Dave McClure, założyciel 500 startupów
Podczas swojej podróży startup technologiczny kieruje się trzema dźwigniami sukcesu: kosztem, szybkością i jakością.
Niestety możesz wybrać tylko dwa na raz. Jeśli więc wybierzesz szybkość i koszt, być może będziesz musiał poświęcić jakość. Lub, jeśli wybierzesz szybkość i jakość, prawdopodobnie będzie to kosztować miliony. Ten wybór dwóch do trzech prowadzi do entropii oprogramowania, co jest przypadkiem „tego, co zostało zrobione, nie da się cofnąć”, jak mówi Lady Makbet, lub w kategoriach technicznych, powiedziałbyś: „W zamkniętym systemie, takim jak technologia oprogramowania, pogarszającej się jakości produktu nie można poprawić z upływem czasu.”
Omówimy więcej na temat entropii oprogramowania, czynników do niej prowadzących i możliwych rozwiązań. Wcześniej ważne jest, aby zrozumieć, co prowadzi do entropii oprogramowania.
Trzy dźwignie startupów
Prędkość
Gdy wejdziesz do wody startupów, zdasz sobie sprawę, że czas jest najbardziej ograniczonym zasobem ze wszystkich trzech wymienionych czynników. Dopóki startup nie zacznie dostrzegać pewnej trakcji pod względem przychodów, nigdy nie nazywa się go firmą.
Aby jak najlepiej wykorzystać zainwestowaną kwotę, szybki produkt zwykle nazywany „wersją beta” i często o „słabszej jakości” (w porównaniu z produktem docelowym), jest wypuszczany, aby jak najszybciej zdobyć rynek.
Startupy zużywają większość swoich zasobów, aby jak najszybciej dotrzeć na rynek, wkładając cały wysiłek w osiągnięcie „szybkości”, która w większości przypadków jest najpopularniejszą dźwignią z tych trzech.
Koszt
W porównaniu z czasem koszt jest namacalny pod każdym względem. To bicie serca startupu.
„Są tylko dwa priorytety dla startupu: Zwycięstwo na rynku i brak gotówki”. – Ben Horowitz
Im większe saldo na Twoim koncie, tym dłużej przeżyjesz. W początkowej fazie startupu większość zasobów jest przeznaczana na organizowanie ważnych aktywów (czytaj także zobowiązań) dla Twojej organizacji, takich jak płacenie za biuro, meble, internet, pensje i wiele więcej.
Najczęściej start-upy mają trudności z utrzymaniem najlepszych programistów z branży z powodu ograniczeń budżetowych. Zwykle najlepsi programiści lub menedżerowie wyższego szczebla są zostawiani na później, z zamiarem zatrudnienia ich, gdy napłyną pieniądze.
Jakość
Dobra praca jest kosztowna, świetna praca jest droższa, a wysokiej jakości praca wiąże się z wyjątkowymi kosztami. Jakość jest najtrudniejsza do osiągnięcia. Dobra jakość wymaga dużo czasu i kosztów. I na tym cierpi większość startupów.
Większość startupów zaczyna z ograniczonymi środkami i dąży do jak najszybszego osiągnięcia zysków. Dążą do przygotowania produkcji i sprzedaży, zanim zabraknie im kapitału. Dopóki firma nie jest na etapie rozwoju, przedsiębiorca dąży do szybkiej produkcji i penetracji rynku. Pozwala to tym start-upom zdobywać udział w rynku i współpracować w oparciu o opinie klientów.
Większość firm zaczyna od „wersji beta”, która może wygenerować pewną atrakcyjność i sfinansować ich potrzeby, gdy wspinają się po drabinie na rynku charakteryzującym się silną konkurencją o ich produkt.
Startupy zazwyczaj zatrudniają nowych programistów i inżynierów (niewielu ma budżet na zatrudnienie starszych programistów), którzy rozumieją ich wymagania, mają poczucie rozwoju i potrafią stworzyć produkt przy jak najmniejszych zasobach. I bez wątpienia ci programiści mają niższy koszt. Są łatwe do formowania i często mogą pracować w nieparzystych zmianach.
Raghav Chandra, współzałożyciel/CTO, Urbanclap, mówi
„Jakość jest często postrzegana jako kompromis w kwestii szybkości (dłuższe sprinty, więcej pisania/testowania kodu itp.) i kosztów (więcej inżynierów, lepsza jakość infrastruktury itp.). Jednak na młodszych etapach dobra jakość to ogromny wzrost szybkości i kosztów.
Jakość ma wiele aspektów: to projekt architektoniczny (!= infra) odgrywa największą rolę na początku.
Największe straty czasu zdarzają się przy znajdowaniu błędów (przechodzenie przez łańcuch połączeń) lub budowaniu funkcji w źle zaprojektowanym kodzie – zarówno w wyniku złej segregacji, jak i utrzymania oprogramowania”.
Gdy firma zaczyna się rozwijać i przynosić zyski, pojawia się wymóg zbudowania stabilnego produktu. Poprzednia wersja stworzonego produktu musi zostać ulepszona, a kody przerobione.
W miarę pojawiania się klientów jakość szybko staje się priorytetem. Aby poprawić tę jakość, do zespołu dołączany jest pracownik z większym doświadczeniem i lepszym zrozumieniem rynku. Do pracy nad istniejącym produktem zatrudniani są starsi programiści, których koszty są wyższe. Deweloperzy ci spędzają większość czasu na ulepszaniu starych linii kodu, jednocześnie szybko rozwijając nowe, najwyższej jakości funkcje.
Naprawiając stare wiersze kodu w celu rozwijania nowych funkcji, większość programistów ma problemy z uzyskaniem pożądanego rezultatu. Ale w miarę upływu miesięcy i przy wszystkich wysiłkach zespołów zmierzających do ulepszenia produktu, jakość nie chce się poprawić.
Ten czynnik nazywa się entropią oprogramowania .
Co to jest entropia oprogramowania?
W oparciu o definicję Wikipedii, w odniesieniu do drugiej zasady termodynamiki w systemie zamkniętym (gdzie nie ma danych wejściowych ani wyjściowych), zaburzenia nie można zredukować w czasie.
To prawo wydaje się być istotne nawet w przypadku systemów oprogramowania; ponieważ system jest modyfikowany przez pewien czas, jego nieporządek ma tendencję do zwiększania się, a nie zmniejszania z całym wysiłkiem.
Ponieważ nowi programiści próbują ulepszyć istniejący fragment kodu, aby poprawić jakość, jakość produktu oddala się od pożądanych wyników. Ponieważ wprowadzane są modyfikacje mające na celu poprawienie istniejących linii kodu, „entropia” stale rośnie, prowadząc do bardziej złożonego kodu, który jest trudny do naprawienia. To często prowadzi do frustracji wśród programistów i inżynierów oprogramowania. Przez większość czasu rozwijające się startupy wybierają trudną drogę pisania kodów od zera, aby naprawić tę entropię.
Polecany dla Ciebie:
W książce The Pragmatic Programmer: From Journeyman to Master Andrew Hunt i David Thomas piszą:
„Entropia oprogramowania jest zaraźliwa i jeśli nie jest kontrolowana, staje się epidemią”.
Następnie, jak możemy rozwiązać problem i jakie byłyby najlepsze środki, aby zatrudnić programistę, który może wykonać wysokiej jakości pracę w krótszym czasie i mniejszym budżecie?
Czy więc startupy powinny skupić się na kosztach, szybkości czy jakości?
Anand Thaker, dyrektor generalny i założyciel Intelliphi mówi:
„Jakość systemu powinna osiągnąć minimalny próg, aby nie powodował ciągłego bólu głowy z wrażeniami użytkownika”
Istnieją wyjątki, w których systemy obsługują operacje krytyczne lub prowadzące do śmierci.
Na tych wczesnych etapach startupy wciąż zastanawiają się nad dopasowaniem produktu do rynku. W hałaśliwym i wysoce konkurencyjnym świecie opartym na SaaS dopasowanie do rynku produktu powoduje lub psuje start-up. Ponadto dynamika zespołu i przywództwo zespołu są również na szybko rozwijającym się etapie. Z tego powodu szczupły start-up szybko i tanio jest dobrą filozofią. Potraktuj to jako pierwsze wyzwanie entropii.
W miarę umacniania się rynku produktów startup planuje całkowicie odbudować jakość części lub całej platformy. Na tym etapie działania wysokiej jakości, które przekładają się na lepsze doświadczenia klientów, wpływają na wzrost. Dobry wzrost zapewnia większe finansowanie i utrzymanie klientów.
Osobiście wolę startupy oparte na produktach i założycieli startupów. Zazwyczaj rozwiązania i wizja są solidne, a ich podejście obejmuje odporność… a ich wyjścia i wielokrotności są znacznie większe (3 do 5 razy więcej niż w przypadku innych typowych startupów). W przypadku tego typu startupów/założycieli bardzo prawdopodobne jest, że szanują entropię, jednak nawet ich zrozumienie wcześniejszych etapów dotyczy szybkości i dopasowania, aby uzyskać krytyczny początkowy impet”.
Jak startupy mogą zmniejszyć entropię oprogramowania?
Zacznij od minimalnej technologii
UrbanClap CTO mówi o wykorzystaniu minimalnej i wielokrotnego użytku technologii jako o „niemożności prawidłowego segregowania problemów, co prowadzi do złych i rozdętych projektów zespołu oraz zawyżonych kosztów infrastruktury. Aby go dobrze rozwiązać, największą i najważniejszą dźwignią jest kultura celowego projektowania architektonicznego.
- silna kultura projektowania i przeglądu skupiająca się na modułowości i celowym projektowaniu do ponownego wykorzystania
- ramy ponad wytyczne – w małych zespołach ewangelizowanie najlepszych praktyk jest procesem powolnym. Lepiej jest „zautomatyzować” najlepsze praktyki inżynierów budujących struktury i narzędzia do standaryzacji różnych elementów inżynierii”.
Większość startupów zaczyna od określonego pomysłu, który ewoluuje z biegiem czasu, dodając nowe pomysły, funkcje, a czasem zamienia się w zupełnie nowy produkt. Upewnij się, że technologia A, z której korzystasz w pierwszych dniach istnienia fundacji, jest zgodna z technologią B, która może łączyć się z technologią C, z której możesz korzystać w przyszłości.
Wraz z ewolucją wizji firmy, podobnie jak produkt i różne technologie są wprowadzane (lub zakłócane) podczas tej podróży. Upewnij się, że korzystasz z minimalnej technologii, dopóki produkt nie będzie stabilny i gotowy do użycia. Zoptymalizuj swój kod.
Rozważ optymalizację kodu
Napisz i przepisz na nowo integralną część kodu i zrób to w miarę postępów. Pomaga to śledzić cały kod, który pojawia się na zapleczu błyszczącego produktu.
Napisanie integralnej części kodu pomaga nowemu pracownikowi zweryfikować ważne części przed wysłaniem nowego zatwierdzenia. Części integralne pomagają odróżnić dobrą część kodu od złej.
Sprawdź ponownie zobowiązania
Czy kiedykolwiek popełniłeś kod? Jeśli nie, umieść go na swojej liście wiader.
Jest to miara wysiłku i zaangażowania programistów w organizację. W większości startupów świętuje się pierwszy zatwierdzony kod. Nadszedł czas na ponowne sprawdzenie tych zatwierdzeń. Nie pierwszy, nie ostatni, ale wszystkie.
Obowiązkowe jest, aby użytkownicy przeszli przez wszystkie zatwierdzenia kodu, aby upewnić się, że żaden kamień nie zostanie odwrócony w celu uzyskania kodu najlepszej jakości.
Nie zapomnij o narzędziach oceny podczas zatrudniania
Po pewnym czasie zdasz sobie sprawę, że nie możesz usprawiedliwiać złej jakości kodów swoim klientom, obwiniając ją o czas i koszty.
Korzystanie z oprogramowania do oceny technologii od pierwszego pracownika gwarantuje, że masz do czynienia z pracownikami, którzy rozumieją Twoje wymagania i są w stanie uzyskać wyniki pod presją.
Każde niewłaściwe zatrudnienie w startupie kosztuje blisko 18 000 USD, od wynagrodzenia i dodatków po wszystkie procesy związane z zatrudnianiem — co najważniejsze, godziny rozmów kwalifikacyjnych i oceny spędzane przez mały zespół przy pracy nad ważnymi projektami.
Techniczne oprogramowanie do rekrutacji zawiera takie funkcje, jak wiele języków programowania, automatyczne tworzenie testów i szczegółowe raporty kandydatów. Rozbudowane funkcje plagiatu pomagają zespołom pozostać wolnym od zwykłych kłopotów z „pilnowaniem”.
Zadania takie jak „Projekt Java” (część istniejącego projektu, który jest udostępniany jako zadanie) mogą być dzielone z kandydatami, którzy pracują w prawdziwym środowisku kodowania, wprowadzając rzeczywiste kody, co daje właściwy obraz pracy, która ma zostać wykonana.
Odrób swoją pracę domową
Na koniec odrób swoją pracę domową. Śledź influencerów, czytaj książki, łącz się z ludźmi z podobnej dziedziny.
Jest wielu ludzi, którzy ciężko pracowali nad poprawą entropii oprogramowania w swojej organizacji.
Anand Thaker mówi:
„Wiedza i komunikacja mają kluczowe znaczenie dla poprawy entropii. Doświadczyliśmy entropii, gdy odchodzi członek zespołu, który miał głęboką wiedzę na temat części systemu.
Innym jest sytuacja, gdy pewne części oprogramowania pozostają nietknięte przez kilka miesięcy lub lat. Zapewnij regularne przeglądy tych możliwości i bazowego kodu/logiki.
Rozważ także nadanie tonu/kultury filozofii rozwoju.
Entropia będzie istniała zawsze, jednak ograniczając jej rozwój, tak samo jest ze sztuką. Jako kierownik techniczny lub wykonawczy możesz już o tym wiedzieć, ale tworzenie oprogramowania to zdyscyplinowany proces. Dobrzy członkowie zespołu są dumni ze swojej pracy. Uznanie tego wysiłku ze strony rówieśników ma długą drogę”. Rozmawiaj i dyskutuj o tym, czego ludzie nauczyli się z biegiem czasu.
Wniosek
Czy w początkowej fazie startupy powinny koncentrować się na jakości?
Zła jakość kodu była głównym powodem niepowodzeń wielu startupów. Przez pewien czas tracono wiele czasu, pieniędzy i wysiłków na ulepszanie tego. Proste komentarze, takie jak „kod jest zły”, aby „ulepszyć tę linię”, są lepsze niż nie robienie niczego w celu ulepszenia kodu.
Startupy to ekonomiczne zjawisko, które otwiera nowe tereny i zmienia świat.
Sugestia Raghav Chandra dla startupów cierpiących na entropię brzmi: „Dla mniejszych zespołów znalazłem lepszą dźwignię w posiadaniu większej liczby zespołów i utrzymywaniu płaskiej organizacji, w której wszyscy są zaangażowani.
Jako liderzy techniczni / menedżerowie ważne jest, aby przygotować zespół do lepszego „myślenia”. Wysiłek włożony w lepsze myślenie jest tym, co pomaga, co skutkuje krótszym czasem naprawiania rzeczy później.
A burza mózgów i głębokie myślenie przed wdrożeniem nie są kompromisem pod względem czasu ani kosztów – to rzeczywiście najtańszy sposób budowania pod kątem jakości na poziomie systemu”.
Czas zadbać o entropię i zatrudnić najlepszych programistów, którzy pomogą zredukować ją z tworzonych przez nas produktów.