K napsání tohoto článku mě přivedly časté diskuze na fórech na téma „Čím chcete být?“, „Jak se stát programátorem?“, „Jakou školu vystudovat?“, „Je lepší C++ nebo C#?“. V rámci toho článku se pokusím odpovědět na dvě takové otázky, a to „Jaký jazyk zvolit?“ a „Jakou školu vystudovat?“. Článek berte jako inspiraci, varování, ponaučení nebo jak chcete.
Kdo jsem?
Jmenuji se Štěpán Bechynský a pracuji ve společnosti Microsoft na pozici Developer Evangelist. Náplní mojí práce je osvěta mezi programátory směrem k novým technologiím. Zjednodušeně řečeno, připravuji vývojáře na to, co bude na trh uvedeno za půl roku až rok. Takže .NET Framework 3.0 je z mého pohledu zastaralá technologie :). V letech 1995 až 2006 jsem pracoval jako programátor a lektor na volné noze. Pracoval jsem pro české i mezinárodní firmy a školil vývojáře ve společnosti Gopas. Podílel jsem se na projektech na různých platformách (Windows, Linux), v různých jazycích (VBA, Visual Basic 6.0, PHP, Perl, JAVA, C#) a různě velkých týmech – od „jednomužných“ až po tým o 15 lidech. Vše, o čem budu psát, vychází tedy z mnohaleté praxe, osobních zkušeností a bude, chtě nechtě, ovlivněno mým zaměstnáním. I tak ale doufám, že vám dokážu podat zajímavý pohled a předat alespoň částečně nějaké zkušenosti.
Jaký programovací jazyk zvolit?
Je v podstatě úplně jedno, jaký programovací jazyk si vyberete. Důležité je si nejdříve určit, na jaký typ aplikací se chcete zaměřit a podle toho si pak zvolit jazyk, který má pro daný typ aplikace dostatečnou podporu v knihovnách a nástrojích. Jako příklad zmíním jazyk Fortran [ http://en.wikipedia.org/wiki/FORTRAN ], který má obrovské množství knihoven zaměřených na matematiku, takže pokud bych se chtěl zaměřit na aplikace pro složité matematické výpočty, zvolil bych kvůli knihovnám právě Fortran. Být zaměřen na pouze jednu kombinaci (typ aplikace, knihovna, jazyk), je často velmi dvojsečné. Na jednu stranu máte sice šanci stát se špičkovým odborníkem v dané oblasti, na druhou stranu to ale může velmi ztížit hledání zakázek, zejména v případě, pokud zvolíte méně žádanou specializaci. Určitě je tedy dobré zaměřit se na jeden typ aplikace, které se věnujete primárně, současně je ale důležité mít i všeobecný přehled. Jedině tak totiž budete schopni zákazníkovi, to je vlastně i zaměstnavatel, vyhovět i mimo vaši hlavní specializaci a poskytnout mu celkový přehled. Příkladem může být specialista na webové aplikace, který je schopen pro editaci dat napsat i základního těžkého klienta pro off-line editaci (webové aplikace jsou super, dokud máte připojení).
Pokud si jako platformu zvolíte .NET, potom budete různé typy aplikací vyvíjet v jednom prostředí, tj. Visual Studio 2008 [ http://msdn2.microsoft.com/en-us/vstudio/default.aspx ], a budete využívat knihovny z .NET Framework. Platforma .NET umožňuje vyvíjet aplikace pro web, těžkého klienta, Microsoft Office 2003/2007, XBox 360, mobilní zařízení s operačním systémem Windows Mobile a roboty. To vám velmi zjednoduší vytvářet aplikace i mimo vaši specializaci. Kromě toho máte možnost vybrat si z několika podporovaných jazyků pro platformu .NET – C#, Visual Basic.NET, IronPython a některé další od třetích stran, jako například PHP (projekt Phalanger).
Já jsem na .NET přešel někdy v roce 2002 po předchozím projektu v jazyce JAVA. Důvodem byl nástroj, možná pro někoho překvapivě, Visual Studio 2002 [ http://en.wikipedia.org/wiki/Visual_Studio ]. V jazyce JAVA jsem psal „okénkové“ aplikace pomocí SWING. Žádné vývojové prostředí pro jazyk JAVA však v té době neumožňovalo vizuální návrh formulářové aplikace ani v kvalitě, jakou mělo stařičké Visual Studio 6.0 někdy z roku 1998. Trávil jsem proto mnoho zbytečného času laděním vzhledu aplikace místo psaní aplikační logiky. Tehdy jsem pochopil, čemu se říká produktivita práce a občas se divím, že jsem nedostal výpověď.
Co si tedy vybrat?
Záleží jen a jen na vás. V následujících odstavcích se pokusím vyjmenovat typické aplikace a nástroje od společnosti Microsoft, které budete pro vývoj daného typu aplikace potřebovat. Vždy budu uvádět nejlevnější verzi nástrojů, kterou je možné využít i pro komerční aplikace, ale rovnou říkám, že se jedná opravdu o základní verze profesionálních nástrojů (Express edice). Časem, až začnete vydělávat, doporučuji investici do MSDN Subscription [ http://www.microsoft.com/cze/msdn/produkty/ostatni/msdn/default.mspx ], díky němuž budete mít pro účely vývoje a testování přístup v podstatě ke všem produktům společnosti Microsoft, s výjimkou HW a her. O jaké produkty se bude přesně jednat, záleží na zvolené úrovni MSDN Subscription.
• Webové aplikace - Visual Web Developer 2008 Express Edition, zdarma • Těžký klient - Visual Basic 2008 Express Edition, zdarma - Visual C# 2008 Express Edition, zdarma - Visual C++ 2008 Express Edition, zdarma • Mobilní zařízení - Visual Studio 2008 Professional Edition s MSDN Subscription, cca 35 000,- Kč • Databázové aplikace - SQL Server 2005 Express Edition, zdarma - SQL Server Management Studio Express, zdarma • Hry - XNA Game Studio Express 1.0, zdarma
Všechny Express edice můžete stáhnout z adresy http://msdn.microsoft.com/express [ http://msdn.microsoft.com/express ].
Úpravy existujících aplikací
Toto téma si zaslouží trošku rozvést, protože bývá často, podotýkám, že naprosto neprávem, na okraji zájmu vývojářů. Moc dobře si pamatuji na svá mladá léta, kdy jsem měl pocit, že jsem nejchytřejší, a co si nenapíšu od začátku sám, to nemůže fungovat. Občas se tomu říká znovuobjevení kola, a že jsem jich objevil…
Začínající programátor má velkou šanci se uchytit zejména na menších projektech, které se dají „napsat za víkend“. Na těchto projektech se dá získat jedna velmi důležitá věc, a to reference, která je k nezaplacení. O té budu mluvit ještě později. Jaké aplikace mohu tedy upravovat a zákazník o to bude mít zájem? Pro začátek je asi nejvhodnější Microsoft Office. Možná byste byli překvapeni, kolik firem používá různá makra, která usnadňují každodenní rutinu v kanceláři. Napsat, resp. upravit nahrané makro, je velmi snadné pro programátora, ale pro běžného uživatele to může být značný problém. Pro některé zaměstnance se používá označení „task worker“. Je to zaměstnanec, který pracuje s počítačem a vykonává na něm pár jednoduchých a stále se opakujících úkonů. Je to něco podobného, jako by dělal u pásu v továrně. Zkuste se poptat ve svém okolí, jak využívají produkty Microsoft Office. Určitě najdete možnost, jak práci zautomatizovat pomocí maker. Budete potřebovat libovolnou verzi Microsoft Office, kterou můžete používat pro komerční úkoly (nelze použít verzi pro studenty a domácnosti). Moje první aplikace, za kterou jsem dostal zaplaceno, byla právě soustava maker pro Excel, tehdy ve verzi 97. Aplikace, které využívají Microsoft Office 2003/2007, můžete také programovat jako doplňky pomocí Visual Studio 2008 Professional Edition. Pro rozšiřování a úpravy Microsft Office mluví ještě jeden argument, který nemá v podstatě s počítači nic společného. Většina lidí, obzvláště těch starších, má problémy přijímat nové věci. Pokud jim nainstalujete novou aplikaci, kterou nikdy neviděli, narazíte na odpor. Pokud ale aplikaci postavíte na Microsoft Office, který uživatelé důvěrně znají, tak to většinou přijmou bez problémů. Navíc to projde snadněji i přes místního správce počítačů, protože nebude muset nic instalovat.
Další, co můžete upravovat, jsou SharePoint Services, SharePoint Server a aplikace z rodiny Microsoft Dynamics. To už je ale „vyšší dívčí“, i když královsky placená.
Jakou školu mám vystudovat?
Vystudujte klidně Dívčí katolickou střední školu v Kolíně [ http://dks-kolin.cz/ ]. Zákazníka, a jak jsem už psal, i zaměstnavatel je vlastně zákazník, zajímá, co umíte, ne co jste vystudovali. Jak tedy prokázat co umíte? Nejlépe tím, co jste naprogramovali pro jiné zákazníky. Jinými slovy, potřebujete reference. Doporučuji, abyste si pečlivě vedli seznam referencí, kterými nemusí být jen hotové aplikace pro nějakého zákazníka, ale i článek na uznávaném portálu, třeba programujte.com :), nebo odpovědi na fórech, účast s dobrým umístěním v programátorské soutěži (Imagine Cup [ http://www.microsoft.com/cze/education/imaginecup/default.mspx ], Build the Game [ http://www.build-the-game.cz/ ], Soutěž dětí a mládeže v programování [PDF] [ http://www.stv.cz/soutez/sdmp-v.pdf ], atd.). Psaní na různá fóra a obecně práce pro .NET komunitu vám může, kromě reference a povědomí „Zeptej se Karla, ten to bude vědět“, pomoct k získání titulu MVP - Most Valuable Professional [ http://www.microsoft.com/cze/technet/mvp/default.mspx ]. V některých zemích má tento titul větší váhu než vystudování prestižní vysoké školy, protože jasně prokazuje, že něco umíte.
Dále si můžete nechat své znalosti certifikovat přímo společností Microsoft a stát se MCP – Microsoft Certified Professional [ http://www.microsoft.com/learning/mcp/default.mspx ]. Na certifikace se můžete připravit samostudiem nebo navštívit kurz k dané certifikaci. U každé certifikace najdete knížku a kurz, který vás připraví. Knížky a kurzy jsou bohužel relativně drahé, ale je u nich uveden obsah, na základě kterého se můžete připravit z finančně dostupnějších zdrojů. Cena certifikace je cca 100 USD. V některých firmách v Česku, které se zabývají vývojem aplikací, bývají certifikace přímo vyžadovány, a pokud je zaměstnanec nemá, tak mu je firma platí jako benefit.
Co říct na závěr?
Učit se, učit se, učit se.
Autorem textu je Štěpán Bechynský.