W każdym zawodzie niezwykle ważnym elementem wykonywanej pracy jest warsztat. Warsztat w rozumieniu narzędzi oraz metodyki. Naturalnym jest, iż nie ma uniwersalnego rozwiązania, zadowalającego wszystkich programistów. Każdy z nas ma inne przyzwyczajenia, doświadczenie a nawet tok myślowy prowadzący do rozwiązania problemu. Niemniej kilka powtarzających się obszarów można wyodrębnić i stworzyć z nich warsztat programisty PHP. Powinien on składać się z:
- IDE – współczesne IDE posiadają szereg narzędzi przyspieszających prace nad projektem. Te niewielkie oszczędności czasu w perspektywie całego dnia potrafią znacząco zwiększyć wydajność programisty. Wystarczy wspomnieć o generowaniu szablonów klas, automatycznym deploy’u na serwer, wbudowanej konsoli, wbudowanych narzędziach systemów kontroli wersji, integracji z systemem zadaniowym czy podpowiadaniu składni.
- testy – każdy duży projekt potrzebuje testów. Wiem, zajmują dużo czasu, wymagają samodyscypliny i są nudne. Jednak bez nich późniejsze utrzymanie projektu to koszmar, a każda zmiana w kodzie może spowodować nieprzewidziane konsekwencje.
- debuger – debugowanie aplikacji jest integralną częścią życia zawodowego programisty. Od sposobu debugowania uzależniony jest czas potrzebny na wykrycie “wąskich gardeł” oraz sprawdzenie przepływu aplikacji. Debugować można na dwa sposoby – var_dump (bardzo popularny i dający mierne efekty) lub Xdebug (albo coś podobnego) dostarczający pełni informacji o badanym projekcie. Co więcej, debuger pozwala wykonywać kod wiersz po wierszu i na każdym kroku sprawdzić aktualny stan aplikacji.
- framework – nie ma projektu, który nie rósłby z czasem. Im większy projekt, tym więcej jest potrzebnych ludzi do jego utrzymywania. Jeśli od początku będzie stosowany popularny framework, czas wdrożenia nowej osoby znacząco się skróci. Ponadto korzystanie z frameworka wymusza stosowanie przyjętych zasad programowania co z kolei przekłada się na wyższą jakość kodu.
- system kontroli wersji – czasy, w których programista przechowywał na dysku “historię” projektu, minęły bezpowrotnie. Wersjonowanie pozwala w błyskawiczny sposób przywrócić projekt do dowolnego stanu oraz prześledzić wprowadzane zmiany. Niezaprzeczalną zaletą systemu kontroli wersji jest możliwość podzielenia dużego projektu na podprojekty i utrzymywanie ich jako osobne repozytoria.
- system zadaniowy – miejsce do spisywania zadań do wykonania. Jeśli nad projektem pracuje więcej osób, jest to doskonały sposób na śledzenie zmian w projekcie oraz informowanie innych członków zespołu o postępie prac.
- wiki – często zapomniany element układanki, mimo iż tak samo ważny jak poprzednie. Centralne miejsce do dokumentowania projektu, będące jednocześnie obowiązkową lekturą nowoprzybyłych członków zespołu.
Do powyższych punktów należy dodać jeszcze jeden, należący do tzw. umiejętności miękkich – brak klapek na oczach lub bardziej profesjonalnie – otwarty umysł. Świat się nie kończy na PHP i jeśli można zrobić coś szybciej/lepiej/taniej w innej technologii, to nie ma powodu, aby tego nie zrobić.
Brak klapek na oczach, to najważniejsze narzędzie z tego tandemu
Ostatnio u nas w firmie na siłę chcieliśmy udostępnić webservice(SOAP) w php który serwował by dane pobrane z zewnętrznej bazy Oracle, po wielu próbach nie udało nam się nawet zmusić PHP do połączenia z Oracle(Niestandardowa konfiguracja + VPN i Proxy po drodze pomiędzy bazą a aplikacja
)… i postanowiliśmy przenieść się na Jave, wszystko ruszyło niemal z palca a pisanie webservices w Javie to niemal poezja
Gdybyśmy nie brnęli ślepo w PHP to zaoszczędzilibyśmy masę nerwów i przede wszystkim roboczo godzin
Skoro nie udało Wam się połączyć z serwerem Oracle, to chyba sam PHP nie ma tu nic do rzeczy – program w Javie ruszył tak „sam z siebie”? Jakoś nie chce mi się wierzyć.
Problem był i jest w sterowniku Oraclowym do PHP, działającym na Linuksie x64, nie w samym PHP. Ogromne problemy były nawet z zainstalowaniem Clienta Oracle na takim systemie.
W Javie to sprowadziło się do dodania jara ze drivere jak zależnośc w mavenie, i wpisaniu odpowiedniego DNS w jdbc, ruszyło bez problemów.
Ja kiedyś musiałem połączyć aplikację Apache + PHP + MySQL dodatkowo z bazą MSSQL zainstalowaną na innym serwerze w Windowsie XP wyizolowanym w VirtualBoxie via VPN – i dało radę, ale to tak tylko na marginesie.
Co do tematu samego wpisu to fajnie że wymieniłeś co przydałoby się uwzględnić, ale to same takie ogólniki. Napisałbyś czego Ty używasz, co polecasz, czego radzisz unikać a tak to takie lanie wody byle jakiś wpis dodać.
@bigzbig
U mnie tak to wygląda (w przypadku PHP):
- IDE: PhpStorm
- testy: PHPUnit
- debuger: Xdebug
- framework: ZF
- system kontroli wersji: Git, czasami SVN
- system zadaniowy: zależy od projektu
- wiki: j.w.
Wszystko opiszę dokładniej w jednym z kolejnych wpisów.
Dobrze napisałeś o otwartym umyśle, niestety cały czas spotka się programistów, którzy kierują się zasadą „ten kto ma młotek widzi wszędzie gwoździe”.