Alexander Katrompas
Alexander KatrompasAssociate Professor Of Computer Science / Executive Technical Consultant

Java zabije Twój startup, PHP go uratuje?

Sprawdź, jakie czynniki należy wziąć pod uwagę przy rozwijaniu startupu technologicznego oraz czego przy tym unikać.
28.08.20217 min
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:

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.

<p>Loading...</p>