{"id":369795,"date":"2023-04-28T13:39:00","date_gmt":"2023-04-28T10:39:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=369795"},"modified":"2023-04-28T13:39:03","modified_gmt":"2023-04-28T10:39:03","slug":"jak-zoptymalizowac-proces-rozwoju","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-zoptymalizowac-proces-rozwoju\/","title":{"rendered":"Jak zoptymalizowa\u0107 proces rozwoju"},"content":{"rendered":"\n<p>W tym artykule chcia\u0142bym podzieli\u0107 si\u0119 moim do\u015bwiadczeniem jako lidera zespo\u0142u programist\u00f3w WordPressa. To do\u015bwiadczenie obejmuje prac\u0119 nad r\u00f3\u017cnymi <a href=\"https:\/\/beetroot.se\/services\/wordpress-development\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">us\u0142ugami programistycznymi WordPress<\/a>, takimi jak motywy i wtyczki, tworzenie nowych witryn klienckich oraz zasoby dla r\u00f3\u017cnych poziom\u00f3w z\u0142o\u017cono\u015bci i obci\u0105\u017cenia.<\/p>\n<p>Podczas pracy nad projektami wielokrotnie spotyka\u0142em si\u0119 z sytuacjami, w kt\u00f3rych wykonywali\u015bmy t\u0119 sam\u0105 prac\u0119 i pope\u0142niali\u015bmy te same b\u0142\u0119dy. To zmusi\u0142o mnie do <strong>rozwa\u017cenia konieczno\u015bci optymalizacji ca\u0142ego procesu<\/strong>. Przyjrzyjmy si\u0119 najwa\u017cniejszym punktom optymalizacji zarz\u0105dzania procesem rozwoju.<\/p>\n<h2>Szczeg\u00f3\u0142owe planowanie i projektowanie<\/h2>\n<p>Zaczniemy od projektowania. <strong>Prawid\u0142owo zaprojektowany projekt wygra\u0142 ju\u017c po\u0142ow\u0119 bitwy<\/strong>. M\u0142odsi programi\u015bci ignoruj\u0105 t\u0119 cz\u0119\u015b\u0107, maj\u0105c nadziej\u0119, \u017ce wystarczy szybki szkic. To nie jest rzeczywisto\u015b\u0107. <strong>Lepiej jest po\u015bwi\u0119ci\u0107 kilka godzin na opracowanie projektu, aby lepiej zrozumie\u0107, jak b\u0119dzie dzia\u0142a\u0107<\/strong>, jakie obiekty s\u0105 potrzebne i jak b\u0119d\u0105 ze sob\u0105 wsp\u00f3\u0142dzia\u0142a\u0107. Nawet je\u015bli pracujesz nad czym\u015b prostym, jak strona internetowa z kilkoma rodzajami post\u00f3w, we\u017a kartk\u0119 papieru lub tablic\u0119 i roz\u0142\u00f3\u017c j\u0105. Zacznij od <strong>zrozumienia, w jaki spos\u00f3b te post-typy b\u0119d\u0105 oddzia\u0142ywa\u0107, jakie b\u0119d\u0105 mia\u0142y w\u0142a\u015bciwo\u015bci i metapole, jak b\u0119dzie przebiega\u0107 wymiana danych, jak u\u017cytkownik si\u0119 zarejestruje, jakie formularze b\u0119d\u0105 na stronie<\/strong>, i tak dalej. U\u0142atwi to \u017cycie, gdy Ty i Tw\u00f3j zesp\u00f3\u0142 zaczniecie pisa\u0107 kod. Zamiast zastanawia\u0107 si\u0119, co dzieje si\u0119 po drugiej stronie projektu, mo\u017cesz skupi\u0107 si\u0119 na rozwi\u0105zywaniu jednego problemu na raz.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2022\/10\/post-312398-633e4f96ef0ec.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2022\/10\/post-312398-633e4f96ef0ec.jpg\" alt=\"Jak zoptymalizowa\u0107 proces rozwoju\"><\/a><\/p>\n<h2>Podzia\u0142 zada\u0144 na podzadania<\/h2>\n<p><strong>Wszystkie zadania nale\u017cy podzieli\u0107 na podzadania<\/strong>. Im bardziej szczeg\u00f3\u0142ow\u0105 fragmentacj\u0119 mo\u017cna osi\u0105gn\u0105\u0107, tym lepiej. Nie daj si\u0119 jednak ponie\u015b\u0107 emocjom i trzymaj si\u0119 rozs\u0105dnych limit\u00f3w. Mam jedn\u0105 zasad\u0119 dla tego etapu zarz\u0105dzania procesami \u2013 <strong>je\u015bli jest zadanie globalne i nie do ko\u0144ca rozumiem, jak je wykona\u0107, dziel\u0119 je na podzadania, a\u017c stanie si\u0119 w 100% jasne<\/strong>. W praktyce to tak, jakby\u015bmy dzielili witryn\u0119 na podstrony, potem na bloki, biznesow\u0105 funkcjonalno\u015b\u0107 na funkcje i tak dalej. Dzia\u0142a to naprawd\u0119 dobrze podczas ca\u0142ego p\u00f3\u017aniejszego procesu rozwoju. Dodatkowo proponuj\u0119 skorzysta\u0107 z list kontrolnych \u2013 jest to doskona\u0142a wizualizacja podczas ustawiania i wykonywania zada\u0144. Poza tym ka\u017cdy lubi patrze\u0107, jak projekt jest realizowany, punkt po punkcie.<\/p>\n<h2>Dok\u0142adne oszacowanie czasu<\/h2>\n<p>Z mojego wcze\u015bniejszego do\u015bwiadczenia jako lidera zespo\u0142u mog\u0119 powiedzie\u0107, \u017ce szacowanie czasu projektu jest trudne do oszacowania. Zawsze (lub prawie zawsze) s\u0105 przeszacowane lub niedoszacowane ramy czasowe, podane przez deweloper\u00f3w, co powoduje cierpienie ca\u0142ego zespo\u0142u. <strong>Zbyt cz\u0119sto wyznaczane s\u0105 optymistyczne terminy<\/strong>, co ostatecznie skutkuje albo nadgodzinami, albo op\u00f3\u017anieniami w realizacji projekt\u00f3w \u2013 a to nie jest dobre dla biznesu. M\u00f3j zesp\u00f3\u0142 i ja opracowali\u015bmy w\u0142asn\u0105 metodologi\u0119 szacowania czasu projektu i jest to ca\u0142kiem proste. Po podzieleniu zadania na podzadania i znaj\u0105c dok\u0142adny czas dla ka\u017cdego podzadania, mo\u017cemy je podsumowa\u0107 i obliczy\u0107 ca\u0142kowity przewidywany czas na rozw\u00f3j.<\/p>\n<h2>Narz\u0119dzia do automatyzacji i rozwoju<\/h2>\n<p>Jak ka\u017cda inna sfera, programi\u015bci maj\u0105 w\u0142asne, dopracowane narz\u0119dzia. Naszym zadaniem jest po\u0142\u0105czenie wszystkich narz\u0119dzi (np. IDE, systemu kontroli wersji, serwera lokalnego i innych) oraz mo\u017cliwo\u015b\u0107 synchronizacji pracy zespo\u0142u. Na przyk\u0142ad u\u017cywamy PHP-Storm, Github i Open Server. Oczywi\u015bcie <strong>mo\u017cesz wybra\u0107 narz\u0119dzia, kt\u00f3re s\u0105 dla Ciebie najwygodniejsze<\/strong>, ale celem optymalizacji jest to, aby wszyscy cz\u0142onkowie zespo\u0142u korzystali z tych narz\u0119dzi i ich funkcjonalno\u015bci w 100%.<\/p>\n<p>Przy typowych projektach WordPress praca jest dzielona mi\u0119dzy 2-3 osoby. Zwykle wystarcza to do uko\u0144czenia projektu, je\u015bli wszystko jest dok\u0142adnie zaprojektowane i umieszczone na ka\u017cdej li\u015bcie kontrolnej. Powiniene\u015b tak\u017ce <strong>przypisywa\u0107 zadania i podzadania za pomoc\u0105 git i git-flow<\/strong>, aby si\u0119 nie nak\u0142ada\u0142y. Dodanie wi\u0119kszej liczby os\u00f3b nie zawsze oznacza przyspieszenie projektu. Je\u015bli ka\u017cdy cz\u0142onek zespo\u0142u kompetentnie pracuje nad swoimi konkretnymi zadaniami, z efektywnie przydzielonym czasem i zasobami, projekt mo\u017ce zosta\u0107 szybko i pomy\u015blnie zako\u0144czony.<\/p>\n<p>Je\u015bli tworzysz zrozumia\u0142y i czytelny kod, u\u0142atwia to wykonywanie kolejnych zada\u0144 i rozwi\u0105za\u0144 \u2013 nie musisz ju\u017c walczy\u0107 o kule lub niewyra\u017ane kawa\u0142ki, zamiast i\u015b\u0107 do przodu. <strong>Jako\u015b\u0107 kodu mo\u017cna rozpatrywa\u0107 z kilku punkt\u00f3w widzenia: znacz\u0105cych nazw zmiennych, funkcji, klas i og\u00f3lnej zgodno\u015bci z kodem WordPress<\/strong>. Og\u00f3ln\u0105 wskaz\u00f3wk\u0105 jest pisanie kodu tak, jakby\u015b mia\u0142 go wspiera\u0107 przez d\u0142ugi czas. Obecnie niedo\u015bwiadczeni programi\u015bci maj\u0105 tendencj\u0119 do tworzenia plik\u00f3w, nazywania ich \u201eproblem.functions.php&quot; i przesy\u0142ania tam wszystkich funkcji. W pewnym momencie plik zostaje przeci\u0105\u017cony zupe\u0142nie inn\u0105 logik\u0105 i zesp\u00f3\u0142 sp\u0119dza ca\u0142y dzie\u0144 na pr\u00f3bach jego zrozumienia. Bardziej produktywn\u0105 metod\u0105 jest <strong>podzielenie kodu na foldery i pliki, zgodnie z logik\u0105 biznesow\u0105 projektu<\/strong>. W ten spos\u00f3b mo\u017cna zaoszcz\u0119dzi\u0107 sporo czasu w samym procesie rozwoju, po\u015bwi\u0119caj\u0105c czas na usprawnienie procesu wprowadzania zmian i aktualizacji kodu.<\/p>\n<h2>Narz\u0119dzia do debugowania<\/h2>\n<p>Proces rozwoju nie zawsze przebiega g\u0142adko. Czasami musisz si\u0119 z tym pogodzi\u0107 i by\u0107 gotowym na <a href=\"https:\/\/themewp.inform.click\/pl\/jak-sprawdzic-elementy-witryny-w-przegladarce\/\" title=\"debugowanie kodu\">debugowanie kodu<\/a>. Ca\u0142o\u015b\u0107 mo\u017cna podzieli\u0107 na dwie kategorie. <strong>Debugowanie na poziomie j\u0119zyka programowania, w<\/strong> kt\u00f3rym mamy php, jest na pierwszym miejscu. Najwygodniej jest korzysta\u0107 z narz\u0119dzi wbudowanych w IDE i upewni\u0107 si\u0119, \u017ce wszyscy programi\u015bci odpowiednio je skonfigurowali i u\u017cywali. Po drugie, <strong>przygl\u0105damy si\u0119 wykorzystaniu specjalnych wtyczek, kt\u00f3re pozwalaj\u0105 nam zbiera\u0107 i przegl\u0105da\u0107 cenne informacje<\/strong>: od ilo\u015bci zapyta\u0144 w bazie, do listy hook\u00f3w u\u017cytych podczas \u0142adowania strony. W\u015br\u00f3d tych wtyczek chc\u0119 wyr\u00f3\u017cni\u0107 Query Monitor, Mail Log, Health Check, Cron Manager. Opr\u00f3cz tego m\u00f3j zesp\u00f3\u0142 i ja stworzyli\u015bmy wtyczk\u0119 Dev Studio, aby zrekompensowa\u0107 brakuj\u0105c\u0105 nam funkcjonalno\u015b\u0107. Ta wtyczka pozwala nam zobaczy\u0107 zmienne i sta\u0142e, filtry, hooki, dane itp. oraz umo\u017cliwia ustawianie punkt\u00f3w przerwania. Wszystkie te wtyczki s\u0105 bezp\u0142atne i mo\u017cna je znale\u017a\u0107 w oficjalnym repozytorium WordPressa.<\/p>\n<h2>Gdzie programi\u015bci sp\u0119dzaj\u0105 czas?<\/h2>\n<p>Przeprowadzili\u015bmy ma\u0142e badania kilku zespo\u0142\u00f3w WordPress i znale\u017ali\u015bmy przybli\u017cony harmonogram pracy programist\u00f3w (nie jest to pe\u0142ne badanie, ale wystarczy, aby zobrazowa\u0107 typowy dzie\u0144 z \u017cycia programisty):<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2022\/10\/post-312398-633e4f99556d4.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2022\/10\/post-312398-633e4f99556d4.jpg\" alt=\"Jak zoptymalizowa\u0107 proces rozwoju\"><\/a><\/p>\n<p>Typowe zadania zajmuj\u0105 wi\u0119kszo\u015b\u0107 czasu programistom. Na przyk\u0142ad rozpoczynaj\u0105 nowy projekt, tworz\u0105 nowy temat, wstawiaj\u0105 gotowe rozwi\u0105zania, haki, z kt\u00f3rych korzystali\u015bmy wcze\u015bniej. Nie zawsze tak jest, ale cz\u0119sto zdarza si\u0119 to w studiach internetowych, kt\u00f3re tworz\u0105 witryny klient\u00f3w. Dlatego, <strong>aby jak najlepiej wspiera\u0107 programist\u00f3w, powiniene\u015b przechowywa\u0107 skuteczne wzorce i rozwi\u0105zania w swojej bazie wiedzy<\/strong>. Jak na 20% czasu sp\u0119dzonego na kawie i przerwach, to s\u0105 to ca\u0142kiem normalne praktyki. Deweloperzy nie powinni sp\u0119dza\u0107 ca\u0142ego dnia w skupionym trybie pracy. Mo\u017ce to w rzeczywisto\u015bci prowadzi\u0107 do zwi\u0119kszonego zm\u0119czenia i wypalenia. Przerwa jest zdrowa dla wi\u0119kszej produktywno\u015bci. O nowych zadaniach \u2013 <strong>tworzenie unikalnej funkcjonalno\u015bci i kodu<\/strong>\u2013 zajmuje tylko 10% czasu programistom web studio. Ciekawostk\u0105 jest to, \u017ce s\u0105 to r\u00f3wnie\u017c zadania, kt\u00f3re programi\u015bci lubi\u0105 najbardziej. Te zadania pomagaj\u0105 poprawi\u0107 \u017cycie u\u017cytkownik\u00f3w i klient\u00f3w, a praca nad nimi jest ekscytuj\u0105ca.<\/p>\n<p>W idealnym \u015bwiecie chcia\u0142bym odwr\u00f3ci\u0107 ten diagram, aby nowe zadania zajmowa\u0142y wi\u0119kszo\u015b\u0107 czasu, pozostawiaj\u0105c typowe i rutynowe zadania mniej czasu. Nie jest to \u0142atwe, ale mo\u017cesz podj\u0105\u0107 kroki w kierunku tego scenariusza, u\u017cywaj\u0105c pustych miejsc (lub szablon\u00f3w, zestaw\u00f3w startowych) i zautomatyzowa\u0107 procesy. Na przyk\u0142ad nasz zesp\u00f3\u0142 stworzy\u0142 elastyczny motyw zestawu startowego. Temat ten zosta\u0142 stworzony na zasadach MVC, przy u\u017cyciu Webpacka. Jest to elastyczne narz\u0119dzie do szybkiego wdro\u017cenia projektu, a tak\u017ce gotowe do skalowania. W praktyce zacz\u0119li\u015bmy oszcz\u0119dza\u0107 40% naszego czasu na tworzeniu stron klienckich. Motyw jest open source i jest opublikowany w domenie publicznej \u2013 mo\u017cna go znale\u017a\u0107 w oficjalnym repozytorium WordPressa lub na git hubie. I oczywi\u015bcie <strong>mo\u017cesz stworzy\u0107 w\u0142asny motyw startowy lub narysowa\u0107 wtyczk\u0119, aby spe\u0142ni\u0107 swoje potrzeby<\/strong>. G\u0142\u00f3wn\u0105 ide\u0105 jest jasne zrozumienie wymaga\u0144 i stworzenie elastycznej architektury.<\/p>\n<p>Mam nadziej\u0119, \u017ce ta rekomendacja pomo\u017ce Ci na drodze do doskona\u0142o\u015bci! Fantastyczna platforma WordPress oferuje ogromne mo\u017cliwo\u015bci, wi\u0119c korzystajmy z nich kompetentnie i elegancko.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wpklik.com\" class=\"external external_icon\">wpklik.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Te wskaz\u00f3wki pomog\u0105 ka\u017cdemu, kto chce dowiedzie\u0107 si\u0119, jak zoptymalizowa\u0107 proces rozwoju i jak najlepiej wykorzysta\u0107 ka\u017cdy projekt i produkt. Sprawd\u017a to.<\/p>\n","protected":false},"author":1,"featured_media":364053,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[572],"tags":[847],"class_list":["post-369795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-podstawy-wordpressa","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/369795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=369795"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/369795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/364053"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=369795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=369795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=369795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}