ASP.NET x PHP aneb kde dělají soudruzi z Microsoftu chybu
Před pár lety se česká pobočka Microsoftu ptala IT firem a IT oddělení na připomínky vůči .NET platformě. Vzhledem k oslovené šíři firem nebylo mnoho připomínek, které by byly společné. Jedno z výrazných společných témat byl nedostatek kvalitních .NET programatorů (výraznější než u jiných platforem) na trhu práce.
Když bychom v Atlasu v té době sháněli PHP programátora, výběr by sice nebyl jednodušší, ale množství zájemců by bylo řádově vyšší.
Strategie Microsoft v té době byla celkem prostá : pořádání dev a IT konferencí, podpora účasti na zahraničních konferencích, MS SW pro vysoké školy a studenty zdarma (1.
Můj pocit je, že se od té doby situace spíše zhoršila. Rozhodně ne vinou Microsoftu :-), ale díky novým vývojovým centrům v Praze, Brně a Ostravě se prudce zvedl deficit IT pozic na trhu práce, platy šly prudce nahoru.
Bohužel poměr .NET x PHP programátorů se nezměnil, ne-li zhoršil.
Proč tomu tak je?
Začátečníci preferují PHP
Tohoto tématu se trochu dotkl Mads Kristensen v článku Is ASP.NET too difficult?, a v reakci na něj i i Martin a FilCon.
Hlavní problém ASP.NET je, že křivka učení (anglicky hezčeji learning curve) je u PHP mnohem plošší, než u .NET/ASP.NET, jinak řečeno - množství znalostí, které člověk potřebuje k napsání první aplikace či získání základů je u PHP výrazně nižší než u .NETu.

Trochu s nadsázky to v knížkách může vypadat takhle...

Já se domnívám, že toto je jeden z hlavních důvodů, proč základní, střední (a bohužel i vysoké) školy obvykle vyučují jako první jazyk pro web aplikace PHP
A řekněme si narovinu - první setkání je nejdůležitější. A další pozitiva a jistoty s PHP následují:
- obrovská knihovna funkcí, knihoven, aplikací zdarma
- široká a ochotná komunita
- velké množství "Úvodů do PHP" v čestině na webu - zdarma
- pro psaní mi stačí notepad, anebo některý z mnoha editorů s podporou PHP (opět zdarma)
- hromada lokálních PHP hostingů zdarma
- pro "deploy" aplikace na web stačí znát FTP, často ani to ne
- PHP je open source, což je u mladých trendy a oblíbené
A teď si udělejme malé srovnání s ASP.NET:
- množství funkcí a komponent menší, mnohem vyšší podíl pouze komerčně dostupných
- komunita výrazně (řádově) menší, kvalitní komunitní servery by se dali spočítat na prstech jedné ruky
- kolik "Úvodů do ASP.NET" v čestině na webu znáte ? Já žádný neznám a jediný rozumný seriál o .NETu obecně (resp. o C#) vycházel na Živě. (na tuhle hrůzu zapomeňte)
- Po 5-ti letech je k dispozici zdarma vývojové prostředí (Express edice), ale pouze anglicky. Mohu použít notepad, ale narovinu......
- 2 zdarma ASP.NET hostingy
- Deploy ASP.NET aplikace nic moc jednoduché a 3 různé režimy fungování ASP.NET 2.0 aplikace jednoduchosti rozhodně nepřidávájí
- Obliba Microsoftu je rozhodně horší.
Nechci komentovat podporu začátečníků v ASP.NET a .NET na stránkách Microsoftu (to nechme na jindy), ale více triumfů je na straně PHP.
Před dvěma týdny jsem měl možnost 2 hodiny diskutovat s Ericem Rudderem (nástupce Gatese v roli software architekta). Jako jedno z témat jsem otevřel i otázku nedostatku programátorů a ptal jsem se na plány MS v tomto směru. Jestli chcete vědět, co odpověděl, přečtěte si třetí odstavec tohoto článku. Bohužel za 3 roky - žádný posun. (S výjimkou skvělého MSDN Connection, což je moc prima iniciativa, ale přijde mi že zajímavá hlavně pro již přesvědčené vývojáře)
Začátečníci anebo pokročilí
Současná strategie Microsoftu se snaží dostat .NET k začátečníkům. Triumfy v rukou má však PHP. A já se nemohu zbavit dojmu, že tato strategie se nesetkala s úspěchem. Většina lidí stále začíná s PHP a ne s .NETem.
Podle mne je nejvyšší čas začít pracovat s vývojáři ostatních platforem. Ale ne formou bezcenných prezentací, konferencí či přednášek.
Největší blok pro přechod na jinou platformu - a to platí jak pro jednotlivce, tak firmy - jsou náklady spojené s přechodem. Ať finanční, tak hlavně časové a lidské. Svým způsobem je to start znovu od začátku. Naprogramované aplikace jsou passé, knihovny i firemní frameworky jsou k ničemu, existující know-how je zbytečné.
Základním předpokladem pro úspěch je minimalizace těchto nákladů a problémů. Pokud v této oblasti zvolí Microsoft správnou/chytrou taktiku (a ne obvyklou cestu "silnější vyhraje"), budu jen rád.
Phalanger - most mezi PHP a ASP.NET
Phalanger je PHP Language Compiler for .NET Framework. Je to unikátní projekt a to z několika důvodů:
- dynamické, netypové (a přiznejme si návrhem mizerné) PHP kompiluje do IL
- PHP kód je možné použít v .NET aplikacích
- .NET třídy je možné volat z PHP běžícího pod Phalangerem
Tento projekt velmi elegantně umožní postupný přechod vývojářů na .NET platformu, aniž by musely ze dne na den vyhodit práci předchozích několika let. To je jeden z příkladů, kudy se vydat.
Nenutit vývojáře k těžkému přechodu, ale jemně a elegantně je seznámit s .NETem, ukázat výhody. A čím více bude takto získaných "přeběhlíků", kteří k tomuto názoru dojdou sami, tím více právě tito lidé přesvědčí další, že je to správná cesta.
(PS: Phalanger je projekt, který je český. Vznikl na MFF UK v Praze, hlavní autoři už dělají pro Microsoft v Redmondu - bohužel na jiném projektu v CLR teamu, a štafetu převzal Tomáš Petříček a další)
Budoucnost
Zpět na zem. V již výše zmíněné diskuzi s Ericem Rudderem jsem tento projekt zmínil, i základní princip. Po celou dobu byl Eric sebejistý, vtipný, ale po této mojí poznámce (uvozené slovy "A co třeba vice integrovat/napojit konkureční platformy jako PHP") se v jeho očích poprvé a naposledy objevilo prázdno, nepochopení a svým způsobem určitý nezájem. Jeho reakce byla neutrální a nic neříkající. Snad taková nebude i realita.
Abych jen nekritizoval, nabízím pár rad, na co se zaměřit, co udělat (v náhodném pořadí): 2)
- Skutečná, ideálně bezplatná podpora pro začátečníky (Úvod do ....).
- Zkuste jít na msdn.microsoft.cz (český MSDN server) očima začátečníka. Skončíte na této stránce, odkud je pouze 1 (!!!) odkaz na český zdroj, zbytek pouze na anglické.
- Maximálně odkazovat na české servery a tuto komunitu reálně podporovat (zde mluvím i o vývojáři a podpoře pro mne) a spoluvytvářet.
- Vyhledávat, aktivně iniciovat a podporovat projekty jako Phalanger (vzal bych si příklad z Googlu)
- Poznat a spolupracovat s PHP, Perl, Phyton a Java komunitou a provazovat tyto komunity navzájem.
- Přeložit Express nástroje do češtiny.
- Přeložit nápovědu do češtiny.
- Rezignovat na snahu mít vše plně pod kontrolou (support, diskuze, fóra, news).
- Nezabývat se propagací nesmyslných značek a uměle vytvořených komunit bez základu a myšlenky typu Codezone.
- Vnést mezi vývojáře nadšení z existujících technologií. Kam se podělo nadšení a radost z DevDays před 5-ti lety?
1) Nevím o všem, toto jsou oblasti, kterých jsem si všiml.
2) Na obranu DPE teamu z české pobočky musím říci, že mnoho z těchto poznámek slyšely a diskutovaly jsme je spolu, na MVP setkáních a při různých příležitostech. Bohužel jen omezené množství věcí si může DPE dělat podle svého a nemálo omezení přichází z Mnichova či Redmondu.