Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Workflow - poprawa wydajności - wymiana doświadczeń
Forum PHP.pl > Forum > Kontrola i zarządzanie projektami
ziolo
Zakładam temat(fajnie byłoby go przypiąć - pytanie do modów czy można) o wydajność workflow.

Jakie biblioteki, narzędzia, techniki, technologie wyraźnie poprawiły waszą wydajność podczas kariery programistycznej ? Można pisać o wszystkim co do głowy przyjdzie.

Myślę, że każdemu taka wymiana doświadczeń się przyda. W przyszłości wiadomo jak wszystko szybko ewoluje, co raz to nowe narzędzia dochodzą, też możnaby tu pisać.

Z mojego skromnego doświadczenia np są to:

1) Przesiadka z svn na git. Hostuje swój kod na bitbucket, wcześniej na swoim dedyku miałem serwer svn.
2) PhpStorm - narzędzie, które masakrycznie zmieniło moją wydajność pracy
3) Przesiadka z Windows na Linuxa(Ubuntu)
4) Praca na dwa monitory.
5) Pisanie testów jednostkowych.
6) Nauczenie się framoworka PHP(Ja np używam Symfony2)
7) Może głupie ale takie drobe rzeczy też są ważne - używanie przy ssh, git logowania za pomocą kluczy bez hasła. Dopiero od roku stosuje smile.gif
8) Dysk SSD - ciężko mi sobie wyobrazić pracę już na zwykłym dysku.
9) Pisanie zgodnie z OOP - wzorce projektowe
10) Notism.io - swietne narzędzie do pracy grupowej
11) Nie wiem może mi coś jeszcze przyjdzie do głowy to napiszę.

W najbliższej przyszłości chcę się nauczyć w praktyce:
1) vagranta
2) angulara - przerobiłem tutorial ale jeszcze nigdy nie używałem w faktycznym projekcie, zawsze radziłem sobie z udziałem jquery - ale czasem jak strona jest (że tak to ujmę) bardziej skomplikowana dynamicznie - faktycznie dużo trzeba się napisać - i potem ciężko się do tego kodu zagląda
nospor
Przydaloby się pare slow wyjasnienia dla kazdego z punktow.
Bo niby dlaczego przesiadka z windows na linuxa ma poprawic prace?
Dlaczego niby mam sie przesiadac na SSD?
itd itd...
ziolo
Chodzi tutaj bardziej o własne doświadczenia a nie przekonywanie kogoś do czegoś(np ze Linux jest lepszy od Windowsa). Każdy może się o czymś dowiedzieć a czy zacznie używać/stosować to już jego sprawa.

1) Przesiadka z Windows na Linux - chodzi o jak najbardziej podobne środowisko dev do produkcyjnego. Często miałęm taką sytuację, że potrzebowałem wykorzystać jakieś narzędzie z linii komend - jak mam podobne środowisko tu i tu to jest łatwiej a tak np może jakiegoś narzędzia nie być pod windowsem a jak jest to i tak trzeba stracić czas, żeby odpowiednio skonfigurować ścieżki tu i tu.

2) Dysk ssd - po prostu poczułem ogromną różnice w szybkości otwierania programów, tylko tyle.
PrinceOfPersia
1) kontrola wersji (GIT)
1a) od kiedy zacząłem bardziej świadomie korzystać z GITa, pracować na gałęziach itp. (kiedyś wszystko na master wrzucałem). Gałęzie niesamowicie ułatwiają organizację workflow. Można pracować nad kilkoma rzeczami naraz. Albo oddzielać "eksperymenty" od kodu produkcyjnego itp.

2) automatyzacja pracy, pisanie skryptów, które robią to, co samemu do tej pory robiłem ręcznie. Odkrycie tego, że można napisać automatyczne testy, które same będą zgłaszać błędy.

3) Odkrycie tego, że strony można budować/kompilowac. Zamiast wrzucać gołe pliki na serwer, można nastawić buildera, który np.
- skompiluje kod pośredni (np. Sass do CSS)
- zminifikuje kod wynikowy
- połączy ileś małych plików w jeden duży (przydaje się do łączenia CSS/JS czy nawet HTML).
- przekopiuje pliki w odpowiednie miejsca
etc.

4) odkrycie tego, że w wielu edytorach można tworzyć customowe snippety, które czesto są bardziej pomocne od normalnego uzupełniania składni, szczególnie jeśli pracujemy z jakimś frameworkiem, który wymaga częstego pisania tego samego w zasadzie.

5) NodeJS
pal licho, czy na backendzie będzie NodeJS, czy może Python albo PHP - ale mimo wszystko NodeJS jest fajnym środowiskiem do chociażby prototypowania/mockowania backendu.

6) koncepcja prototypowania oraz programowanie iteracyjne. Kiedyś zanim usiadłem do programowania, to planowałem, planowałem, aż zaprojektowałem "wszystko". A potem starałem się to zaprogramować. Rezultat był taki, źe nigdy "wszystkiego" nie uwzględniłem i często mi się cały projekt rozjeżdżał, bo mój projekt okazywał się dość kiepski w praktyce. Teraz więc wolę więc często najpierw zaplanować coś, potem zrobić coś na szybko jako działający prototyp, a potem wyciągnąć wnioski ze swojego prototypu i albo zrobić projekt od nowa (już w bardziej przemyślany sposócool.gif albo zrefaktoryzować, to co już napisałem (w sytuacjach kiedy pisanie od nowa by się nie opłacało).
taki trochę pseudoSCRUM.
Dzięki tego nie kończę już w wielkiej kule błota, która wynikała z tego, że miałem tylko jedną fazę planowania a potem programowanie na całego wink.gif
no i dzieki temu szybciej widzę cos w działaniu, i potem mogę ocenić na ile coś ma sens.

No i jak przedmówca - przejście na Linuxa, który dużo ułatwia w porównaniu z Windowsami.
aniolekx
Cytat(ziolo @ 8.07.2014, 15:59:44 ) *
2) PhpStorm - narzędzie, które masakrycznie zmieniło moją wydajność pracy


A z czego się przesiadłeś? Z notatnika wink.gif ?
Turson
Szkoda, że PHPStorm kosztuje tyle ile kosztuje... Z tego powodu przesiadłem się na Netbeansa i jest w porządku, choć PHPStorma lepiej wspominam.
ziolo
PHPStorm - przesiadłem się z Eclipsa PDT. To było w momencie przejścia na php 5.3. Szukałem nowego narzędzia bo eclipse mnie już wkurzał. Problemy z instalacją różnych wtyczek, podświetlaniem twiga, tworzeniem automatycznych namespaceów, autouzupełnianiem use. Na początku zmieniłem na Aptana ale to w zasadzie było to samo, dalej te same błędy, problemy. Być może to był początek i PDT potrzebowało więcej czasu, żeby to ogarnąć. No ale wtedy zacząłem szukać i trafiłem na PHPStorm - mogę polecić każdemu. Wszystko to czego potrzebowałem działało super, plugin do framworka(sf2) znakomity.

Kolejne usprawnienia:

1) też potwierdzam to co kolega powyżej - customowe snippety - to było w eclipsie/aptanie jest w phpstorm. To też podnosi niesamowicie wydajność. Nie musisz otwierać żadnej klasy, kopiować kawałka kodu tylko błyskawicznie uzupełniasz to co Ci często jest potrzebne.

2) Nauczenie się kluczowych skrótów klawiaturowych swojego edytora. Zdecydowanie warto, znacznie przyspiesza programowanie zamiast klikać myszką tu i tam. Jako przykład podam, że wcześniej miałem nawyk chodzenia po drzewku plików, wybierania pliku który potrzebuje, to było oczywiście bez sensu. Teraz praktycznie nie używam drzewka plików (tylko żeby zobaczyć co jest pobliżu danego pliku alt+f1 i 1 w phpstorm), tak samo nie klikam po zakładkach, wstukuję skrót klawiaturowy, pierwsze nazwy pliku i już go mam.

3) Korzystanie z/pisanie generatorów kodu. Mam swój panel administracyjny dla wielu projektów. Często to tak wygląda, że frontendy się różnią, panel jest taki sam w podstawowych funkcjonalnościach. I tutaj warto korzystać z generatora cruda który na podstawie prostej konfiguracji wygeneruje wszystko co nam jest potrzebne. Wcześniej w sf1.4 korzystałem z domyślnie wbudowanego generatora, ale i tak musiałem w widokach robić troche pozmieniać parę copy/paste, żeby wszystko było ok.
Dużym krokiem do przodu było napisanie własnego generatora. Wtedy mamy już pełną kontrolę i na podstawie paru linijek w konfiguracji mam już wszystko wygenerowane co chciałęm cały kontroller i wszystkie widoki. I potem dopiero możemy zająć się rzeczami niestandardowymi.



Xirtam
Cytat
1) Przesiadka z Windows na Linux - chodzi o jak najbardziej podobne środowisko dev do produkcyjnego. Często miałęm taką sytuację, że potrzebowałem wykorzystać jakieś narzędzie z linii komend - jak mam podobne środowisko tu i tu to jest łatwiej a tak np może jakiegoś narzędzia nie być pod windowsem a jak jest to i tak trzeba stracić czas, żeby odpowiednio skonfigurować ścieżki tu i tu.


Moim zdaniem nie trzeba od razu przesiadac sie na linuxa. My rozwiazalismy to troche inaczej:
zostala przygotowana paczka z virtualna maszyna (przed dlugi czas uzywalismy virtualbox, od jakiegos czas jest to vagrant). Stworzone srodowisko jest mirrorem produkcyjnego. Do tego administrator dba o aktualnosc naszego "zestawu". Kazdy programista moze wykonac update swojej virtualnej maszyny w dowolnym momencie i miec pewnosc ze jego lokalne srodowisko pracy jest zgodne z produkcyjnym.

Cytat
3) Odkrycie tego, że strony można budować/kompilowac. Zamiast wrzucać gołe pliki na serwer, można nastawić buildera, który np.
- skompiluje kod pośredni (np. Sass do CSS)
- zminifikuje kod wynikowy
- połączy ileś małych plików w jeden duży (przydaje się do łączenia CSS/JS czy nawet HTML).
- przekopiuje pliki w odpowiednie miejsca
etc.


Ciekawym narzedziem jest Jenkins. My uzywamy go do wielu rzeczy:
zaczynajac od monitorowania wolnego miejsca na dyskach, sprawdzanie jakosci kodu (w polaczeniu z Sonarem), deploy na rozne serwery testowe beta/delta (mamy ich ponad 40) az po release w srodowisku produkcyjnym (ten sklada sie m.in. z testow jednostkowych UnitTest, testy Selenium, kompilowanie plikow less (css), laczenie plikow js / css, deploy)
Dejmien_85
Cytat(nospor @ 8.07.2014, 17:13:45 ) *
Bo niby dlaczego przesiadka z windows na linuxa ma poprawic prace?


Windows jest dobry, ale dla programistów M$ (.NET itd), dla grafików (choć na Macu też da się Photoshopa uruchomić), no i do gier (no chyba, że woli ktoś konsole).

Przez 99% czasu korzystam z Linuxa, jednak mam też Windowsa (z przymusu, na Linuxa nie ma takiego oprogramowania firmowego jakie jest mi potrzebne), czasem i nawet z przymusu coś robię na Windzie, jednak jest to dla mnie udręka - Linux zdecydowanie lepiej sprawdza się w dev-boju - kto ma inne zdanie niech go piekło pochłonie (no chyba, że pisze gry pod Windowsa, to wybaczamy!).

Poza tym - zauważyłem, że bardziej doświadczeni programiści (przynajmniej Ci z OpenSource, który dla .NET nic nie robią), siedzą na systemach Linuxowych/Unixowych. Na windzie zazwyczaj są Ci, którzy Linuxa nigdy nie wiedzieli, albo zobaczyli i się przerazili.

Takie jest moje doświadczenie, oczywiście z pewnością jest wielu doświadczonych i hardcorowych programistów (nie .NET-a), którzy korzystają z Windowsa. Większość jednak to żółtodzioby. Do tej pory w swojej pracy miałem kilku współpracowników, którzy woleli Windowsa (bo albo jeszcze Linuxa na oczy nie widzieli, albo ich przerastał) - byli najmniej ogarnięci z teamu (najmniejsze doświadczenie). Oczywiście to mógł być przypadek, jednak... mam inne zdanie na ten temat. ; )
PrinceOfPersia
ja bym jeszcze dodał, że korzystanie z Linuxa często bywa bolesne. Dlatego pewnie tak wielu programistów korzysta z jabłek.
Pyton_000
Nie odczułem bolesności korzystania z Linuksa, wręcz przeciwnie jest to bardzo Wygodne, elastycznie. Mamy możliwość konfiguracji wedle środowiska produkcyjnego i mamy pewność że będzie działać jak chcemy.

Windows jest dla mnie gigantyczną protezą która jest źle dopasowana, nie wygodna.

Nie wyobrażam sobie teraz pracy bez i3wm, Vagranta, Git z konsoli i innych dobrodziejstw tj. skrypty bash ułatwiające pracę w różnych etapach, ssh bardziej przyjemne. Konsola która przynosi same dobroci. Każdy kto mówi że konsola jest ble bo można sobie coś wyklikać jest ograniczony. Nie wie jak to się dzieje, co się dzieje.
Dejmien_85
Cytat(PrinceOfPersia @ 2.08.2014, 17:40:55 ) *
ja bym jeszcze dodał, że korzystanie z Linuxa często bywa bolesne. Dlatego pewnie tak wielu programistów korzysta z jabłek.


Dlaczego Linux jest bolesny? Jeśli zaczynasz od popularnych dystrybucji dla początkujących i powoli zagłębiasz się w dystrybucje bardziej "pro", wtedy nie ma za dużo boleści. A OS jabłka stoi na BSD, to jeden z Unixowych systemów, także jest bardzo podobny w działaniu do Linuxa.

Jabłka to po prostu dobra marka (kosztuje swoje), więc większość ludzi kupuje ten sprzęt, bo tak jest po prostu "cool". Jak kupisz Maca, to masz się czym pochwalić i poświecić. Jest to bardziej kwestia pokazania marki, ideałów i "zamożności" - jednym zdaniem więcej w tym ideii niż rzeczywiście użyteczności.

Choć nie powiem, dla front-endowców Mac jest lepszy, bo Photoshop działa bez problemu. ; )
PrinceOfPersia
Cytat
Dlaczego Linux jest bolesny?

Bo zamiast programować / tworzyć / działać kreatywnie, to człowiek spędza czas na konfiguracji / usuwaniu problemów / reinstalacji sterowników / szukaniu w google odpowiedzi na pytanie "czemu rzecz X mi nie działa".

Ale i tak w porównaniu z Windowsami, Linux to system przy którym da się odpalić coś z konsoli, da się napisać skrypt basha, no i jak już zostało wspmniane - ma bardziej podobne środowisko do serwerowego. Gdyby tylko dystrybucje linuksa byłyby bardziej dopracowane i działałyby bezproblemowo ze sprzętem, bez specjalnego babrania się w konfiguracji...
Dejmien_85
Cytat(PrinceOfPersia @ 3.08.2014, 14:30:53 ) *
Bo zamiast programować / tworzyć / działać kreatywnie, to człowiek spędza czas na konfiguracji / usuwaniu problemów / reinstalacji sterowników / szukaniu w google odpowiedzi na pytanie "czemu rzecz X mi nie działa".


Wiesz, początku są trudne (wszędzie), ale tak jest tylko na początku (choć wydaje mi się, że popularne dystrybucje Linuxa są bardzo przyjazne, np. Ubuntu/Mint - później można iść w trudniejsze distro). Później idzie z gładka.
Pyton_000
Cytat(PrinceOfPersia @ 3.08.2014, 14:30:53 ) *
Bo zamiast programować / tworzyć / działać kreatywnie, to człowiek spędza czas na konfiguracji / usuwaniu problemów / reinstalacji sterowników / szukaniu w google odpowiedzi na pytanie "czemu rzecz X mi nie działa".


Taaa... Instalując Win7 na moim lapku myślałem że sobie włosy powyrywam, sterowniki o kant dupy otłuc, mało co działa na sterach producenta, trzeba kombinować, myśleć...

Zainstalowałem Debiana Testing... jedyne co nie działało to WiFi, ale olałem bo pracuję przy kablu.
Zainstalowałem Xubuntu 14 i nic nie instalowałem, nawet WiFi działało, stery nVidia też..

Tak więc sam mogę powiedzieć że Windows pod względem "a to nie działa" też nie jest lepszy. Wszystko zależy od sprzętu jaki mamy.
!*!
Cytat(nospor @ 8.07.2014, 17:13:45 ) *
Bo niby dlaczego przesiadka z windows na linuxa ma poprawic prace?


#linux
  1. aptitude update && aptitude upgrade


#windows
  1. dlaczego najnowsza, ściągnięta paczka z PHP5.x ZIP/MSI wywala się przy starcie apache, bo nie ma biblioteki Y... dlaczego te skrypty .sh z tutoriala nie działają?!


Cytat(nospor @ 8.07.2014, 17:13:45 ) *
Dlaczego niby mam sie przesiadac na SSD?

Cholernie to ułatwia pracę, Chociażby przy wyszukiwaniu/przeszukiwaniu plików.
sazian
Cytat(PrinceOfPersia @ 3.08.2014, 14:30:53 ) *
Bo zamiast programować / tworzyć / działać kreatywnie, to człowiek spędza czas na konfiguracji / usuwaniu problemów / reinstalacji sterowników / szukaniu w google odpowiedzi na pytanie "czemu rzecz X mi nie działa".

tak taż się z tym zgadzam że windows ma takie problemy



Cytat(Pyton_000 @ 3.08.2014, 16:14:28 ) *
Zainstalowałem Debiana Testing... jedyne co nie działało to WiFi, ale olałem bo pracuję przy kablu.

miałem podobnie, ale mi napisali że sterowniki do mojej karty są zamknięte i nie mogą ich pobrać automatycznie ale za to podali mi adres strony z której mogę je pobrać. Wystarczyło wejść na podaną stronę, pobrać jeden mały pliczek, wrzucić na pendraka i wskazać jego lokalizację instalatorowi. Ewentualnie można to pominąć i doinstalować później.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.