Jaký jazyk a technologii zvolit pro projekt?

Kolikrát jste byli součástí diskuze ba dokonce i hádky na téma, který jazyk je lepší? Jako třeba Node.js nebo PHP, JAVA nebo C#, Angular nebo React? Nebo i technologií jako Mongo nebo SQL, AWS nebo Azure apod.? Kdo má vlastně pravdu?

Myslím, že není týden, kdybych neslyšel nebo se neúčastnil podobných rozhovorů a „válek“. Osobně mám v tomto nevýhodu, díky čemuž nejsem mezi kolegy s těmito extrémnmi názory moc oblíbený. Automaticky se totiž dobrovolně stavím do opozice a snažím se hájit konkurenční technologii, případně poukázat na to, že jejich zmíněná taky není univerální řešení všech bolístek a problémů vesmíru.

Dělám to ze dvou jednoduchých důvodů. Ten první je, že doufám, že se třeba dozvím něco nového. Lidi se stejným názorem se většinou navzájem utvrzují, jak je jejich názor skvělý a nemají potřebu ho nijak vyvíjet.

Druhým je má snaha ostatním trochu otevřít oči v tom, že programovací jazyk, technologie nebo platforma jsou pouze nástroje. Nástroje, které jsou k dispozici pro řešení problémů. Ale už není nikde psáno, že dokáží vyřešit každý problém a uspokojit každý požadavek. Tyto jednotlivé nástroje můžou být vhodné na jednu věc a v druhé můžou pokulhávat. Příklad ze života: Zkuste si sekerou vykopat studnu a lopatou naštípat dříví. Oba nástroje problém jistě nějakým způsobem vyřeší, ale naopak by to určitě bylo lepší.

Zatímco v tomto příkladu je to jasné a máme všichni zažité to správné řešení, tak při vývoji je problematika daleko komplikovanější a ne každý je schopný situaci objektivně vyhodnotit. Hlavní vinu za to dávám právě nedostatečné snaze developerů si rozšířit obzory tím, že čas od času vystoupí z komfortní zóny a vyzkouší si alternativu bez jakýkoliv předsudků.

Na začátku každého projektu musí tedy padnout rozhodnutí, jakou cestou se vydat a jakou použít technologii, protože bude pro řešení právě ta nejlepší. Toto rozhodnutí by ale nemělo plynout z osobních preferencí, ale z ideálně číselně obhajitelných podkladů. Určitě ne z vět typu „Já mám nejlepší zkušenosti s tímto, proto si myslím, že bychom měli zvolit toto„, ale raději z vět jako je „Benchmarky jasně ukazují, že pro projekty tohoto rozsahu je nejlepší jít tudy.

V praxi to může třeba znamenat, že na fulltext vyhledávací servisu použijeme elasticsearch a ne mongo. Ale opravdu to stačí takto?

Představte si firmu, ve které doposud pracovali všichni pouze v mongu a SQL. O elastiku si jenom pár lidí přečetlo před rokem článek, jak je to COOL, a pak si jeden z nich lehce pohrál s pár query na lokálně rozjeté instanci. Tento jedinec poté řekne, že je to super a měli by jít touto cestou. Ale je opravdu moudré vydat se do „neznáma“ a riskovat tím nekvalitní provedení a riziko zpoždění dodání z důvodu nedostatku zkušeností?

Tohle a mnoho dalších faktorů je třeba zvážit vždy a nejde pouze o to, že jedna technologie je lepší jen protože má víc featur. Když projekt nebude vyžadovat kód a zpracování na vysoké úrovni, můžeme klidně zvolit PHP, na který vždy lehce najdeme juniorní programátory za rozumnou cenu. Naopak pokud se přikláníme k striktnějšímu a komplikovanějšímu jazyku, musíme do rozhodnutí zahrnout také strategii, jak budeme shánět vývojáře odpovídajícího levelu a zda na ně má firma prostředky. Tedy buď finanční, pro jejich najmutí, nebo časové a kapacitní, pro jejich vychování.

Nikdy to není jenom černé a bílé a vždy záleží na kontextu celé problematiky. Například přesně kvůli problému nedostatnu kvalitních vývojářů se stále u klientů a svých opensource balíčků držím Node.js a PHP i když osobně preferuji jiné.