kod szybciej: 53 porady od profesjonalistów

chcesz wiedzieć, jak programować szybciej, abyś mógł szybciej dostarczać oprogramowanie? Jasne, a kto nie? Internet jest pełen porad dla programistów—setek, tysięcy, a może nawet milionów. Problem w tym, że jest ich znacznie więcej, niż ktokolwiek ma czas na czytanie, więc ugotowałem je dla Ciebie.

oto 53 wskazówki reprezentujące najlepsze rady, jakie tam znalazłem. Ale zanim powiem wam, co znalazłem, muszę wyjaśnić, co mam na myśli przez” programowanie szybciej „i” porady.”

problem z „faster”

aby kodować szybciej, trzeba być wydajnym, czyli bez zmarnowanego wysiłku lub ruchu. Może to oznaczać wszystko, od pisania po narzędzia do myślenia. Ale większość naszej pracy jako programistów to nie pisanie, czy kompilowanie-to myślenie. Aby myśleć szybciej, musisz nauczyć się więcej wzorców i relacji. Jest to wiedza i mądrość, które doświadczenie buduje. To, czego potrzebujesz, aby jechać szybciej, zmieni się z czasem.

problem z „poradami”

większość porad, które przeczytałem, dotyczy tylko niektórych punktów mojej podróży i niekoniecznie dotyczy wszystkich. Wiele z nich należy do kategorii „osobista podróż” lub „to, co dla mnie działało”. Ale Moja ścieżka prawdopodobnie nie jest twoją ścieżką. Podczas gdy niektóre z mechanicznych rzeczy, które działają dla mnie, prawdopodobnie będą działać dla Ciebie, wiele z wyborów domeny i wzorców, które dokonałem, może być bezużyteczne.

mechaniczne rzeczy są dość łatwe do zoptymalizowania; opcje są ograniczone. Ale nauka nie ma granic. Nikt się nie dowie. Musisz podejmować strategiczne i taktyczne decyzje i być przygotowanym na skorzystanie z okazji, gdy się pojawią.

użyteczność końcówek odpada jako funkcja swoistości. Bardziej szczegółowe wskazówki nie dotyczą wszystkich, ale ogólne wskazówki są też, cóż, ogólne. Są o wiele trudniejsze do przerobienia w działanie. Więc czego tak naprawdę chcesz, kiedy mówisz, że chcesz ” jechać szybciej?”Powiem ci.

to czego chcesz to flow

to czego chce każdy programista, szczególnie w erze DevOps, to flow. Stan przepływu maksymalizuje przepustowość i zwiększa przyjemność poprzez włączenie tylko odpowiedniego poziomu wyzwania; jeden pozostaje w pełni zaangażowany w chwili i w pracy (nie należy tego mylić z Ballmer Peak). Utrzymanie stanu przepływu wymaga odpowiedniego środowiska i procesu bez tarcia.

stan przepływu podczas parowania jest taki, że każdy z Was ma dodatkowy mózg. Niestety, wiele środowisk programistycznych, takich jak otwarte biura, nie jest przyjaznych dla przepływu.

Twoje opcje mogą być ograniczone

kiedy znajdziesz coś poniżej optymalnego w swoim procesie lub sobie, wybór sposobu rozwiązania takich ograniczeń jest ograniczony:

  • zignoruj to. Może sam się poprawi.
  • Czy to naprawdę konieczne?
  • Niech maszyna to zrobi.
  • Rzadko jest to możliwe, to jest przepuszczanie pieniędzy. Ale jest to legalna opcja, gdy jest dostępna.
  • Wszyscy musimy to robić od czasu do czasu (codziennie). Niektóre miejsca pracy są większe od innych.

jeśli Twoje pisanie jest wolniejsze niż chcesz, poświęć trochę czasu i awansuj. Jeśli Twoje zintegrowane środowisko programistyczne jest mylące i nieprzydatne (a może zbyt pomocne), spróbuj czegoś innego lub prostszego. Jeśli nie możesz uciec od tego, Dowiedz się więcej na ten temat; Możesz znaleźć inny sposób lub przynajmniej poznać granice.

jest wiele sposobów na naukę. Google jest twoim przyjacielem, podobnie jak książki, filmy, posty na blogu, pytania dotyczące przepełnienia stosu i oczywiście inni ludzie. Niektóre rzeczy, których chcesz się nauczyć, mogą być ukryte; inne mogą być większe, niż się wydaje. Zbalansuj korzyści z wysiłku i bądź cierpliwy dla siebie. Świętuj każde osiągnięcie i ruszaj dalej.

Najważniejsze wskazówki dotyczące szybszego programowania

jednym ze sposobów grupowania i przeglądania poniższych wskazówek jest zastosowanie kilku kategorii wysokiego poziomu jako sposobu na narysowanie interesujących uogólnień z kolekcji:

  • zastanów się. Co chcesz, co tak naprawdę robisz; obejmuje pomiar i optymalizację.
  • Brak tarcia od narzędzi, procesów, środowiska lub wiedzy; Szukaj ciągłego wyzwania, ale nie za dużo.
  • Ucz się. Podstawy: języki, narzędzia, wzorce, praktyki itp., od wszystkich (szczególnie tych chętnych do nauczania); dowiedz się, jak się uczysz i ucz się nieprzerwanie.
  • Naucz. Ucz innych. Konieczność wyjaśniania rzeczy wymusza uproszczenie, a transformacja z myśli w wyrażenia słowne lub wizualne daje wgląd.
  • ekspresu i odkrywania. Spójrz poza swoje normalne obowiązki; rysuj, pisz, bloguj, idź na spotkania, uczęszczaj i prezentuj, w razie potrzeby porozmawiaj z Wilsonem siatkarką.

poniższe wskazówki to po prostu punkty danych, rzeczy do rozważenia—nie ściąga na całe życie ani lista rzeczy do zrobienia dla kariery programisty. Zacząłem od listy 183 porad, pogrupowałem je w kategorie, przypisałem priorytet na podstawie powtórzeń i osobistych uprzedzeń i wziąłem kilka najlepszych z każdej.

to prawda, stronniczko. Wiem, co sprawia, że programista jest dobry lub szybki, więc wszystko, co przeczytałem, przefiltrowałem przez moje uprzedzenia. W szczególności jestem stronniczy wobec:

  • metody zwinne.
  • projektowanie oparte na domenie.
  • ciągłe doskonalenie.
  • Minimalne rozwiązania.
  • narzędzia bez tarcia.
  • Praca w stanie przepływu w miarę możliwości.

I zdecydowanie zgadzam się z wypowiedzią Roberta C. „wujka Boba” Martina na temat „gwałtownej przeciętności”:

„jedynym sposobem, aby iść szybko, jest iść dobrze. Za każdym razem, gdy ulegasz pokusie wymiany jakości na szybkość, zwalniasz. Za każdym razem.”

weź następujące wskazówki (i wszystko inne, które czytasz w Internecie) z przymrużeniem oka. Zachowaj i dostosuj to, co działa; odrzuć to, co jest bezużyteczne.

I oto moja wskazówka dotycząca szybszego programowania: skup się na jakości, a prędkość będzie następować.

refleksja jest kluczem

refleksja jest kluczem do samodoskonalenia:

  • nieustannie doskonal swój proces decyzyjny; ucz się na błędach bez zarzutu.
  • wyeliminuj martwe punkty w zrozumieniu całego zakresu aplikacji i środowiska jej wykonania.
  • Nie uganiaj się za ogonem; zidentyfikuj i wyeliminuj pochłaniacze czasu.

mierz obiektywnie

czasami wiesz, jakie jest twoje największe ograniczenie, a czasami musisz je zmierzyć.

  • rozważ przeprowadzenie szczegółowego audytu siebie podczas pracy przez kilka dni.
  • to tak jak optymalizacja dowolnego kawałka kodu. Rejestruj wszystko, identyfikuj hotspoty i ulepszaj je.
  • gdzie idzie twój czas? Wielu programistów spędza znacznie więcej czasu na czytaniu kodu niż pisaniu kodu; jak nauczyć się czytać kod szybciej?

praktyka, praktyka, praktyka

nie da się obejść jakiegoś poziomu praktyki, na różnych wyzwaniach.

  • napisz dużo oprogramowania.
  • Pisz większe programy.
  • Napisz recenzję – gotowy kod od samego początku.
  • jest wiele miejsc do ćwiczeń, w tym topcoder.com, projekt Euler, hackerrank.com Wybierz jedną i ruszaj.

Projektowanie na sukces

nauka technik projektowania powinna być dana, częścią opanowania narzędzi myślenia. Ponadto:

  • zrozumieć użytkownika; zrozumieć ich problem, prawdziwy problem, a następnie go rozwiązać. Znajomość domeny bardzo pomaga.
  • porozmawiaj ze współpracownikami i ekspertami ds. domen na temat problemu, rozwiązania i projektu.
  • zmniejsz obciążenie poznawcze, rysując lub pisząc, gdy myślisz i kodujesz.
  • projektując z myślą o długowieczności i konserwacji, pamiętaj, że dane przetrwają kod.
  • Wiedz, kiedy odkrywać koło na nowo, a kiedy nie (zwykle nie).
  • Nazwij rzeczy celowo; jest to jedyny link z kodu do domeny.

poświęcamy dużo czasu na procesy własnej konstrukcji, nie bój się ich zmieniać.

  • projekt uniemożliwia błędy. Fail fast, use exceptions zamiast null checks, use the type system to prevent data errors, and use automated testing.
  • jeśli nie wiesz od czego zacząć, zacznij od części, którą najlepiej rozumiesz.
  • napisz kod, który faktycznie sprawi, że produkt będzie pierwszy, bez względu na to, jak głupi lub mały jest ten produkt.
  • nie ignoruj błędów; każdy błąd coś znaczy.
  • stosuj zwinne podejście do rozwoju.
  • wyciągnij abstrakcje tylko wtedy, gdy mają sens i faktycznie będą ponownie użyte.
  • stań na barkach gigantów; używaj bibliotek open source, rozwiązań innych firm i tak dalej.
  • Optymalizuj dla prostoty; najlepszy kod to kod, którego nie musisz pisać.
  • automatyzacja testów i practice test-driven development (TDD)
  • używaj inteligentnych narzędzi, takich jak IDE, narzędzia do generowania kodu itp. ale nie bój się, jeśli wchodzą Ci w drogę.
  • bądź bardzo zaznajomiony ze swoim językiem i biblioteką standardową. Im mniej czasu spędzasz na grzebaniu w dokumentacji, tym lepiej.
  • użyj kontroli źródła – nawet samodzielnie.
  • użyj profilera. Optymalizuj tylko to, co jest konieczne
  • Naucz się pisać dotykowo. Programiści piszą dużo, a nie tylko kod; zmniejsza to poznawcze obciążenie pisania do zera, a także poprawia szybkość i dokładność

tworzenie odpowiedniego środowiska pracy

ciągłe przerwy, niewygodne okoliczności i niekończące się spotkania zniechęcają do przepływu.

  • upewnij się, że jesteś w środowisku, które nie będzie cię rozpraszać; uniemożliwić rozpraszanie Cię.
  • Poznaj siebie i pracuj w szczytowym czasie – nie kogoś innego.

Przeglądaj poza pracą

nie wszystko, co chcesz wiedzieć, znajduje się w biurze lub w Internecie.

  • zapoznaj się z nowymi narzędziami i technikami. Zachowaj to, co działa.
  • pracuj nad projektami pobocznymi i projektami open source.

dbaj o zdrowie

zmarli nie piszą kodu. Chorzy piszą zły kod. Uważaj na siebie.

  • poznaj wartość odejścia od kodu.
  • więcej snu, lepiej jeść i pracować mniej godzin.
  • medytuj.

rozwijaj dobre nawyki uczenia się

uczenie się jest procesem trwającym całe życie dla programistów, ale ostrzegaliśmy: internet jest pełen błyszczących rzeczy.

  • opanuj podstawy: paradygmaty i praktyki programowania, takie jak DRY (nie powtarzaj się) i SOLID (pojedyncza odpowiedzialność, Otwarte-Zamknięte, podstawienie Liskova, segregacja interfejsów i inwersja zależności)dla OOP), wzorce i anty-wzorce, algorytmy, teoria danych, teoria grafów itp.
  • Ucz się robiąc. Zawsze baw się kodem podczas nauki.
  • Znajdź mentora.
  • Poznaj różne sposoby nauki, aby zobaczyć, co działa dla ciebie.

jakość nie jest stała

jakość obejmuje wiele obszarów, od czytelności kodu przez jego modułową strukturę i złożoność, po to, jak dobrze wyraża intencje domeny.

  • skup się na jakości, a nie szybkości.
  • zaakceptuj, że kod „jakość” w danym momencie jest ” najlepszym, co możesz zrobić z tym, co masz i wiesz.”
  • zawsze staraj się jak najlepiej, to dobra praktyka.
  • tylko w ekstremalnych (tzn. prototypowanie/odkrywanie / odrzucanie kodu) i tymczasowe okoliczności, jeśli pozwolisz, aby jakość Twojego kodu spadła poniżej poziomu „najlepszego, co możesz zrobić” (i powinieneś czuć się trochę zawstydzony robiąc to.)

umiejętności miękkie mają znaczenie

nie znalazłem zbyt wielu wskazówek na temat umiejętności ludzi, ale ludzie są raczej nieuniknieni; te, które znalazłem, były bardzo pomocne.

  • umiejętność interakcji z ludźmi pozwoli Ci uczyć się od i uczyć tych wokół ciebie z mniejszym tarciem i większą radością.
  • Nauka jasnego pisania i mówienia pomoże Ci szybciej zrealizować Twoje pomysły.

Idź i koduj

więc to tyle, moje podsumowanie najlepszych porad na szybsze programowanie. Postępuj zgodnie z tymi wskazówkami, a będziesz na dobrej drodze do poprawy swoich umiejętności programowania-i kodowania szybciej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.