Java zabije Twój startup, PHP go uratuje?
Zachowaj spokój - to nie jest kolejny artykuł typu „Java lub PHP jest lepszy/gorszy od języka, który najbardziej lubisz". Tak naprawdę chodzi o jakąkolwiek technologię enterprise, taką jak Java Enterprise, i to, w jaki sposób mogłaby zabić Twój internetowy startup albo małą lub średnią firmę. Ponadto warto rozważyć, w jaki sposób jakaś sensowna technologia, typu PHP, Ruby, Python, Perl itp., może go uratować i ulepszyć. Mógłbym wybrać dowolne dwa języki lub technologie i dokonać na ich podstawie mojej analizy. Wybrałem dwa, które, moim zdanie, najlepiej to obrazują.
Nie jest to wpis dla specjalistów technicznych, ale komentarz biznesowy i operacyjny (dla specjalistów nietechnicznych) na temat tego, czego potrzebują młode, małe lub średnie firmy internetowe i co może je ostatecznie zabić.
LAMP jest tym, czego potrzebuje każdy mały internetowy biznes, bez względu na to, jak duży się stanie. Dla tych, którzy nie wiedzą, LAMP to skrót określający system operacyjny, serwer WWW, bazę danych i język programowania.
W tym przypadku chodzi o Linux, Apache, MySQL i PHP. Jeśli jesteś założycielem, który nie orientuje się za bardzo w sprawach technologicznych i polegasz na innych w tej kwestii, prawdopodobnie słyszałeś, że LAMP (konkretnie część PHP lub MySQL) jest passe, niezbyt dobry, „zbyt prosty” i nie ma wymaganej wydajności. To kompletny nonsens. A teraz fakty:
- Większość dużych firm eCommerce, social media i stron wiki, w tym Amazon, Facebook i Wikipedia, zaczęły się od PHP (lub podobnym) i nadal z niego korzysta. Ponad 80% z najlepszych 10 milionów stron internetowych używa PHP.
- PHP ma ogromny udział na rynku i sporą bazę użytkowników, 10 razy więszką niż baza Javy (pamiętaj, że mówimy tu tylko o aplikacjach internetowych, a nie o programowaniu ogólnym).
- Programiści PHP są liczniejsi i tańsi niż programiści Javy.
- PHP ma doskonałą wydajność i stale się poprawia, a w praktyce łatwo rywalizuje z językami kompilowanymi.
- Czas potrzebny na wprowadzenie aplikacji PHP na rynek to ułamek czasu potrzebnego do wprowadzenia Java EE.
- PHP nie jest językiem „skryptowym” (cokolwiek to znaczy), a raczej w pełni funkcjonalnym i obiektowym powerhousem webowym.
- PHP 7.x to znaczna poprawa w stosunku do poprzednich wersji, a wersja 8.0 ma przekroczyć wszelkie oczekiwania.
- PHP ma wiele frameworków o dużych możliwościach. Popularność i dominacja Symfony i Laravel są niezaprzeczalne.
- Word Press (oparty o PHP) to dominujący system zarządzania treścią z prawie 60% udziałem na rynku. Wszystkie następne najlepsze CMS-y są również oparte na PHP. W rzeczywistości firmą numer jeden finansowaną ze środków prywatnych w Teksasie w 2017/2018 był WP Engine, który teraz dominuje w świecie CMS-ów - razem z PHP.
- PHP jest stworzony dla internetu. Nie potrzeba żadnych dodatkowych serwerów, procesorów, hacków, czy sztuczek. PHP i Twój serwer internetowy tworzą jedność.
- WooCommerce, Magento, OpenCart, PrestaShop, ZenCart, Drupal, Joomla, OsCommerce itd. Wszystkie są napisane w PHP. Same Magento i WooCommerce mają udział w ponad 1/3 rynku eCommerce.
Poza powyższymi punktami, każdy założyciel i lider nieznający się na technologii, musi rozumieć następujące kwestie dotyczące języków programowania, rozwiązań dla przedsiębiorstw i rozwoju.
Architektura i projekt systemu są najważniejsze
Są o wiele ważniejsze niż wybór języka lub cokolwiek innego. Wybór „właściwego” języka jest bez znaczenia, jeśli masz złą architekturę systemu.
Java jest w pewnym sensie językiem kompilowanym i ogólnie szybszym od PHP. W praktyce jednak PHP jest szybszy w Internecie, ze względu na to, że jest dla niego przeznaczony. Frameworki PHP są zaprojektowane, by działać w środowisku webowym.
Rozwiązania enterprise dotyczą architektury, a nie technologii czy języków. Pozwolenie komuś na przekonanie Cię do takiego języka jak Java, bez pełnej oceny oraz dyskusji na temat architektury i projektowania, jest jak zakup domu, którego nigdy się na oczy nie widziało.
Języki to narzędzia
Które wybierasz razem z architekturą i designem. Mają Cię doprowadzić do celu.
Słyszałem, jak wielu rzuca absurdami typu: „PHP nadaje się jedynie do lombardu”. To nieprawda. PHP dobrze działa w rękach wyszkolonego inżyniera oprogramowania, który wie, jak projektować. PHP nie ma wad, które by to uniemożliwiały, a w przypadku zastosowań webowych ma nawet sporą przewagę nad innymi językami.
Jeśli skupisz się na narzędziach zamiast na architekturze, możesz skończyć wbijanie gwoździ taranem (Java), podczas gdy młotek (PHP) w zupełności wystarczy. Szybko też stracisz pieniądze, inwestując w niepotrzebne narzędzia i personel. Dobre rozwiązania dla przedsiębiorstw są budowane z dobrą architekturą i designem, a nie określonym językiem.
Ważna jest prostota
Aby wprowadzić pomysł na rynek, potrzebujesz prostego, szybkiego i niedrogiego rozwiązania, które będzie działać teraz, a później procentować. Wszystko inne może być szkodliwe i łatwo doprowadzić do śmierci Twojego startupu. O ile nie będziesz mieć witryny wielkości Amazon w momencie startu, najlepszym rozwiązaniem jest mocna architektura i PHP (lub podobne) w środowisku LAMP, a nie monstrualne, rozdęte rozwiązanie Java Enterprise.
Buduj teraz dla skalowania, ale w rzeczywistości skaluj później
Nie pozwól, aby ktoś powiedział, że musisz budować teraz przy użyciu dokładnych narzędzi, których będziesz potrzebować później, ponieważ pewnego dnia będziesz mieć rozmiar Amazonu lub Facebooka (obydwa nadal intensywnie korzystają z PHP i podobnych języków). Czego naprawdę potrzebujesz w danej chwili, to dobrze zaprojektowanych i niedrogich narzędzi. Jeśli poprawnie wykonałeś swój design, z łatwością będziesz mógł się później rozwijać. Facebook zaczął od PHP i nadal się na nim opiera i wygląda na to, że dobrze się skalował. Wikipedia też opiera się na PHP i również nie miała z tym problemu.
Niezbędne działania dla założycieli i właścicieli prowadzących firmy internetowe, którzy nie znają się na sprawach technologicznych
Najpierw zainwestuj w architekturę
Będzie to oznaczało, że Twój pierwszy zatrudniony nie jest przeciętnym programistą ani przyjacielem siostry, który „dobrze zna się na komputerach”. Znajdź dobrze wyszkolonego informatyka z doświadczeniem, który najpierw mówi o projektowaniu i architekturze, a potem o kodzie i języku.
Nie ma nic gorszego dla długoterminowej rentowności Twojej platformy internetowej niż programista, który zaczyna wystukiwać kod pierwszego dnia. Już tyle razy słyszałem, jak menedżerowie mówili o kimś „ależ on jest niesamowitym programistą”, a kiedy pytam dlaczego, odpowiadają „bo jest szybki!”. Na początku wydaje się to pozytywne, ale rok później toniesz w długu technicznym, a ten komiksowy Flash programowania już dawno znikł i rujnuje inne firmy.
Trzymaj się technologii
Widziałem wiele katastrof, które wynikają z programowania w Java Enterprise, ponieważ ktoś wmówił firmom, że Java jest szybka i ma spore możliwości. Biznesy powinny się przede wszystkim skupić na ewaluacji potrzeb i zasobów.
Jeden lokalny startup zatrudnił 14 programistów Javy i personel pomocniczy, aby założyć firmę. Byli przekonani, że potrzebują Javy, aby „konkurować w przestrzeni korporacyjnej”. Taki rozmiar zespołu to propozycja rzędu 2 milionów dolarów rocznie w USA.
Nie było ich na to stać, więc zatrudnili swój personel w Indiach za łączną kwotę 100 000 dolarów rocznie, wbrew temu, co radziłem. Krótko mówiąc, nastąpiła pięcioletnia katastrofa, która kosztowała firmę miliony i spowodowała duży bałagan na poziomie przedsiębiorstwa.
Co gorsza, zanim zakończyli swoją działalność, myśleli, że innym właściwym językiem był Python. To, czego potrzebowali, mogło zostać zrobione przy pomocy dwóch dobrych LAMP-ów (w tym przypadku P może być dla Pythona) i jednego mocnego lidera architektury i programowania.
To propozycja 300 tysięcy dolarów rocznie, która mogłaby szybko wprowadzić produkt na rynek i zapewnić dalszy rozwój.
Ostrożnie dobieraj swoich pracowników technicznych
Nie ma nic ważniejszego. W ciągu 20 lat pracy nad tworzeniem oprogramowania widziałem programistów, którzy byli geniuszami i takich, którzy byli okropni, zarabiając te same pieniądze i mając te same tytuły.
Nie ma nietechnicznego kierownika, który potrafiłby ich odróżnić, a menedżerowie techniczni też czasem nie są w stanie. Widziałem najgorszych programistów reklamowanych jako „najlepsi” dlatego, że są szybcy, ale gdy spojrzysz na ich kod, to wychodzi z tego nieprawdopodobny bałagan.
Jeśli jesteś nietechnicznym założycielem lub liderem i musisz wybrać programistów, poproś kogoś o pomoc. Doradca, którego szukasz, ma trzy kwalifikacje: dyplom z informatyki, duże doświadczenie w pracy jako inżynier oprogramowania oraz doświadczenie w pracy z głównymi inżynierami oprogramowania.
To sprawdzeni technologowie. Nie akceptuj nikogo poniżej poziomu. Nie zadowalaj się rekruterami lub doradcami technicznymi, którzy pracowali w IT, ale nigdy nie napisali linijki kodu. Umieją się dobrze sprzedać, ale jeśli nie mają konta Githubie lub Bitbucketcie wypełnionego kodem i wykształcenia, które może go poprzeć, nie są tymi, których szukasz.
Podsumowanie
To nie artykuł o Javie i PHP, bo aby wyciągnąć powyższe wnioski, można je zastąpić dowolnymi technologiami. Chodzi o to, żeby nie poddać się hype'owi i pamiętać o skupieniu się na elementach fundamentalnych. Chodzi o prawidłowe projektowanie i o to, aby pamiętać, że jeśli chcesz wbić gwóźdź, możesz użyć spychacza i materiałów wybuchowych, ale prawdopodobnie powinieneś po prostu użyć młotka.