Niemal każdy programista napotkał kod napisany przez kogoś innego, który dowodzi banału „każdy może kodować”. Ale czy kiedykolwiek natknąłeś się na rzekomo mitycznego „10x Developera?”. Bycie 10x developerem ma mniej wspólnego z doskonałością w pisaniu kodu, a więcej z wiedzą, jaki dokładnie kod napisać.
Wielu z nas zaczęło programować w określonym celu. Na przykład, zacząłem pisać kod do automatycznego odtwarzania tekstowych gier MUD dla mnie, kiedy spałem i byłem w szkole. Byłem script kiddie w wieku 13 lat i nawet o tym nie wiedziałem. Mogłem wpaść na pomysł, napisać kod i przetestować go – wszystko samodzielnie.
Rozwój oprogramowania jest trudny, gdy robimy to dla kogoś innego, ponieważ często brakuje nam tego samego rodzaju motywacji i podniecenia, które napędza nas, gdy realizujemy własną wizję. Nie wpadamy na pomysły, spędzamy godziny na spotkaniach próbując je zrozumieć, a potem spędzamy większość czasu modyfikując czyjś kod – lub przynajmniej wnosząc do niego swój wkład. To może prowadzić do poziomu oderwania, który zmniejsza produktywność.
Aby być programistą 10x, musisz nauczyć się doskonalić w tym środowisku lub nawet założyć własną firmę, aby poprowadzić szarżę.
Każdy może być programistą 10x, przynajmniej przez część dnia, każdego dnia. Uważam, że są trzy rzeczy, na których wszyscy programiści powinni się skupić, aby stać się bardziej produktywnym i lepszym członkiem zespołu.
Trzy rzeczy
Aby być programistą 10x, potrzebujesz kilku lat doświadczenia w pracy z dowolnym językiem programowania i zestawem narzędzi, których używasz. Musisz być dobry w rozwiązywaniu problemów i pisaniu kodu; to jest oczywiste.
Ważne jest, aby zrozumieć, że to, jak piszesz kod, nie jest tym, co czyni cię 10-krotnym programistą, 10-krotnym inżynierem, 10-krotnym programistą lub jakkolwiek chcesz to nazwać.
Znasz 5 W: „Kto, co, gdzie, dlaczego, kiedy”. Podczas gdy wszystkie one odnoszą się do rozwoju oprogramowania, ja chcę się skupić na trzech cechach, które definiują programistów 10x.Te trzy rzeczy odróżniają przeciętnego programistę od programisty 10x:
- Co
- Dlaczego
- Kiedy
Wiedząc co
W świecie korporacyjnym programiści mają tendencję do pracy nad projektami, do których nie mają zbyt wiele pasji i których nie rozumieją. Dla większości programistów nie stanowi to dużego problemu, o ile otrzymują bardzo dobre wskazówki, a oczekiwania są jasno określone.
Problem polega na tym, że programiści zazwyczaj nie otrzymują odpowiednich instrukcji. Zamiast tego używamy tego czegoś, co nazywa się „zwinnym rozwojem”. Dostajemy karteczkę Post-it z kilkoma słowami na niej i oczekuje się od nas, że będziemy dokładnie wiedzieć, co trzeba zrobić.
Rozwój oprogramowania polega na komunikacji. Programiści muszą wiedzieć, nad czym pracujemy, jakie problemy próbujemy rozwiązać i jak dokładnie ma wyglądać rezultat. Im więcej wiemy z góry, tym szybciej możemy działać. Co najważniejsze, znajomość intencji pracy i tego, co sprawi, że praca zakończy się sukcesem, jest kluczowa dla osiągnięcia sukcesu.
Złośliwi programiści będą spędzać godziny idąc w złym kierunku na projekcie, nie zadając żadnych pytań. Nazywam ich deweloperami -10x, ponieważ nic nie osiągają i marnują czas wszystkich swoich współpracowników. Prawie każdy spotkał się z takimi programistami i praca u ich boku może być frustrująca. I musisz uważać, aby nie przejąć ich nawyków!
Niektórzy programiści pracują dobrze nawet bez dużej ilości szczegółów. Wykorzystują dużą kreatywność i zadają właściwe pytania. Te jednorożce są prawdopodobnie 10x programistami. Wiedzą, jak rozgryzać rzeczy i często podnoszą poziom całego zespołu pracującego wokół nich.
Podsumowaniem jest to, że programiści 10x są naprawdę dobrzy w szybkim określaniu, co trzeba osiągnąć i jakie pytania zadawać.
Zrozumienie dlaczego
Prawdopodobnie największą przeszkodą w rozwoju oprogramowania jest zrozumienie dlaczego. Jeśli nie rozumiesz problemu, który próbujesz rozwiązać, naprawdę trudno go rozwiązać.
Dlaczego hakowałem razem skrypty terminala, żeby grać w moją grę MUD, kiedy spałem i byłem w szkole? Chciałem osiągnąć najwyższy poziom w grze, oczywiście. Wiedziałem dokładnie dlaczego, i robiłem wszystko, co mogłem, aby tak się stało.
To samo podejście stosuje się do każdego projektu rozwoju oprogramowania. Programiści, którzy rozumieją branżę, w której działają i problemy, które próbują rozwiązać, będą o wiele bardziej produktywni. Wiedza o tym, dlaczego i zrozumienie pionu również pomaga uniknąć niepotrzebnej pracy, uwalniając czas, aby skupić się na rzeczach, które uczynią produkt lub funkcję bardziej wartościową dla użytkowników.
Problem polega na tym, że wiedza o tym, dlaczego nie jest wystarczająco dobra. Trzeba mieć pasję do problemu i rozumieć go na wylot, aby naprawdę być programistą 10x. Wierzę, że większość programistów 10x to także ludzie produktu w sercu, obdarzeni dobrą wizją produktu.
Wiedza, kiedy co robić
Timing jest ważny w projektach rozwoju oprogramowania. Wybieranie kolejności pracy nad elementami w dzienniku jest pozornie łatwym zadaniem, które jest naprawdę krytyczne. Czy pracujesz nad czymś, co może pomóc Twojej firmie w zdobyciu nowego konta lub wyczyszczeniu starego długu technicznego?
Jako zespoły programistów musimy nieustannie żonglować tym, nad czym pracujemy i kiedy nad tym pracujemy.
Wszystkie elementy pracy związane z tworzeniem oprogramowania należą do tych trzech kategorii:
- Rzeczy, które musimy zrobić
- Rzeczy, które musimy zrobić
- Rzeczy, które chcemy zrobić
Musimy wykonać tę nową funkcję dla klienta. Musimy naprawić błędy w naszym oprogramowaniu. Chcemy popracować nad długiem technicznym lub jakąś fajną nową funkcją produktu. To zawsze jest balansowanie.
Powinniśmy wykonywać elementy pracy z wszystkich tych trzech kubełków jednocześnie. Nie możemy poświęcać całego naszego czasu na długi techniczne, ale być może powinniśmy poświęcać im niewielki procent naszego czasu.
Deweloperzy muszą również wiedzieć, kiedy budować złożone architektury w swoim kodzie. Wolę utrzymywać kod tak prosty, jak to tylko możliwe, dopóki nie jestem zmuszony do dodania architektury, bez której nie mogę inaczej żyć.
Deweloperzy muszą również wiedzieć, kiedy unikać pogoni za błyszczącymi obiektami. Mają tendencję do zabawy z nowymi narzędziami i technologiami, ale te rozwiązania mogą tylko spowolnić projekt, zamiast pomóc w jego szybszym wykonaniu.
Deweloperzy 10x są dobrzy w żonglowaniu priorytetami i rozumieją, kiedy zainwestować czas w architekturę, a kiedy w kod spaghetti, aby coś działało. Pamiętaj, że użytkowników nie obchodzi, jak działa twoje oprogramowanie ani jak wymyślna jest jego architektura. Oni po prostu chcą, żeby działało. Programiści 10x to rozumieją.
Opanowanie umiejętności Co, Dlaczego &Kiedy zostać programistą 10x
Teraz porozmawiajmy o tym, jak możesz opanować ważne umiejętności Co, Dlaczego i Kiedy, aby zostać programistą 10x.
Zacznij od Dlaczego
Pierwszym krokiem do zostania programistą 10x jest pasja do oprogramowania i problemów, które próbujesz rozwiązać. Musisz zrozumieć problem wewnątrz i na zewnątrz. To zaczyna się od bycia entuzjastą firmy, dla której pracujesz i jej misji jako firmy.
Nie tylko spraw, aby przycisk zrobił coś, ponieważ tak ktoś powiedział, aby zrobić. Staraj się zrozumieć, dlaczego na wyższym poziomie. Będziesz o wiele bardziej wartościowy dla swojego zespołu i firmy, jeśli pozostaniesz skupiony na tym, dlaczego.
Be a Good Developer & Excellent Problem Solver, Not the Best Programmer
Opisałbym siebie jako bardziej hakera-dewelopera. Jestem typem, który potrafi połączyć trochę brzydkiego kodu, aby bardzo szybko rozwiązać prawie każdy problem. Mój kod rzadko jest piękny, ale działa. I to się właśnie liczy.
Nie musisz pisać doskonale zaprojektowanego kodu z testami jednostkowymi, aby być 10-krotnym programistą. Musisz wiedzieć, kiedy i kiedy nie robić tych rzeczy, aby być deweloperem 10x.
Deweloper 10x jest dobry w rozwiązywaniu konkretnych problemów i zaspokajaniu potrzeb biznesowych za pomocą kodu. Najmądrzejszą rzeczą, jaką możesz zrobić, to wiedzieć, jak daleko posunąć się w projekcie, zanim przekażesz go komuś innemu, kto może być lepszy w finalizowaniu niektórych elementów architektury i innych drobnych szczegółów.
The When Is in Your Gut, or It Isn’t
Koniec z budowaniem złożonej architektury w porównaniu z hakowaniem czegoś razem przychodzi wraz z doświadczeniem i rozwojem twoich spidey senses. Albo masz to przeczucie, albo nie.
Niektórzy z najmądrzejszych programistów, z jakimi kiedykolwiek pracowałem, byli najgorsi w nadawaniu priorytetu wzorcom i architekturze nad funkcjonalnością i harmonogramem. Chcieli przesadzić z inżynierią i przepisywać rzeczy w kółko, dążąc do „doskonałego kodu”, a nie „kodu nadającego się do wysłania”.”
Deweloperzy 10x muszą wykorzystać swoje doświadczenie i instynkt, aby wiedzieć, kiedy skupić się na architekturze i perfekcji, a kiedy na zrobieniu czegoś do dupy.
Wiedzieć, co robić i o co pytać
Tak wiele w tworzeniu oprogramowania sprowadza się do umiejętności komunikacyjnych. Niestety, wiele z notatek i wymagań, które otrzymujemy dla elementów pracy, nie jest zbyt szczegółowych. Programista 10x wie, jak je czytać, stosować „dlaczego”, co wie o biznesie i zadawać odpowiednie pytania.
Najlepsi programiści wiedzą, ile czasu poświęcić na coś, zanim poproszą o pomoc. Wiedzą również, jakie pytania zadać, aby wyjaśnić, co należy zrobić, aby posunąć projekt do przodu.
Wnioski
Piszę kod od ponad 15 lat. Powiedziałbym, że jestem deweloperem 10x, a przynajmniej mogę nim być. Wiem w czym jestem dobry. Kiedy robię rzeczy, w których jestem dobry, mogę uzyskać poważną ilość pracy wykonanej szybko.
Jeśli chcesz prototypować nowy produkt, jestem twoim facetem. Jeśli potrzebujesz pomocy z Angular, React lub innym front-endem, zdecydowanie nie jestem twoim facetem. Byłbym -10x deweloperem w tych zadaniach.
10x deweloperzy nie są mitem. Oni naprawdę istnieją. Są to najprawdopodobniej menedżerowie dev, architekci, główni programiści lub założyciele firm. Jeśli nie są, prawdopodobnie powinni być. Skończyło się na byciu założycielem firmy, dwa razy teraz.
Także, nikt nie będzie 10x deweloperem każdego dnia, przez cały dzień. Nie mamy energii ani skupienia, aby pracować w tym tempie każdego dnia. Nie jesteśmy robotami.
Jeśli zrozumiesz „co, dlaczego i kiedy” tworzenia oprogramowania, możesz być bardziej produktywny i być lepszym członkiem zespołu – być może nawet 10-krotnym programistą przez kilka godzin dziennie. A to może zrobić wielką różnicę.
Jak już tu jesteś i szukasz sposobów na poprawę, sprawdź nasze narzędzie do dynamicznej analizy kodu, Stackify Prefix. Jest darmowe i pomoże ci pisać lepszy kod.