Každá oblast, kde se uplatňují informační technologie, vyžaduje různé typy programátorů, kteří se specializují na různé technologie, používají jiné nástroje, jsou u nich důležité trochu jiné vlastnosti a způsob uvažování.
Prý jsou "programátoři", kteří se ani neumí oblékat, což mě docela pobavilo v jednom komentáři zde:
"Lidé, jejichž světem jsou jedničky a nuly, oblékání naprosto nerozumí a zcela svojí otřesnou prezentací devalvují svoji profesi, která by jinak mohla být společensky zajímavá. Řeči, že záleží na tom, co má člověk v hlavě, jsou liché,..."
Prý také "PHP programátor" není programátor, jak nalezl Arthur při aktuálním odchytu blbců kdesi v diskuzi:
"...ten kdo nyni pise scripty v PHP neni ve skutecnosti programator, ale jen si na nej hraje a na nic jineho nema. Jak si vlastne muze programator rikat nekdo, kdo ani poradne nevi co je to kompilace..."
Pominu teď to, že každá profese může být společensky (ne)zajímavá a to bez ohledu na nějaký "vohoz". Stranou zatím nechám i zaslepené odsuzování nějaké technologie, jež se používá k tvorbě aplikací, tedy k programování, což dělá právě a "ve skutečnosti" ten programátor a ne třeba realitní makléř.
Takové "zaslepení" může vzniknou asi jen tou zimou, která zpomaluje všechny procesy nebo když chybí "takové to oné"...
Lidé, jejichž světem jsou jedničky a nuly...
Všichni programátoři, chcete-li vývojáři, mají něco společné a v mnohém se zásadně liší, ať je to nějaký hard-core céčkař na Unixu s mnoha lety praxe, junior po škole, který umí (zatím) jen základy C/C++ nebo Java jazyka, systémový programátor, aplikační vývojář,...
Někdo preferuje práci v týmu, který se zabývá low-level programováním operačního systému, systémových utilit, dalšímu se líbí programování obecných vertical applications pro nejrůznější nasazení, někoho baví vývoj uživatelských aplikací "na míru" pro koncového zákazníka. Někdo rád píše kód ručně, neboť mu třeba povaha práce a oblast daného vývoje nic jiného neumožňuje, další třeba využívá výkonné vývojové nástroje, tvořené jinými programátory.
Všechno je potřeba a všechno má něco do sebe, kdy na světě existují různé vývojové firmy, které vyhledávají specifické typy, druhy a (šlechtěné) odrůdy programátorů pro rozdílné programátorské práce, neboť se zabývají vývojem různých produktů pro různé trhy a rozdílné zákazníky.
Jiné vývojáře najdeme v Google, jiné v Microsoftu, jiné u systémových integrátorů tvořících uživatelské implementace nějakého konkrétního řešení, něco trochu jiného je také např. programátor "na volné noze" nebo contractor pracující na různých zakázkách dle své specializace.
Jak se pozná dobrý programátor?
Je to ten, co scriptuje, kompiluje, testuje, debugguje, ladí, Céčkuje, Sharpuje, vaří Kawu, ujíždí na Javě, Jazzuje, Pascaluje a modlí se v Delphi, Netuje, templejtuje, kliká, designuje HUI-GUI, parsuje, vi-čkuje, wc-čkuje, P-háčkuje, Py-thonuje nebo dokonce Perluje?
- Pozná se dobrý programátor podle programovacího jazyka, který využívá pro svou práci? Může si někdo dovolit odsoudit nějakou technologií nebo vývojové nástroje, které nějaký vývojář používá?
Ne, dobrý programátor se pozná jen dle toho, že tvoří dobré programy, funkční aplikace, kvalitní kód, a že výsledek jeho práce dobře slouží svému účelu (kolegům vývojářům, mateřské firmě, jiným IT firmám, koncovým zákazníkům). Nezáleží vůbec na technologiích, záleží jen na jejich správném použití.
- Pozná se dobrý programátor podle toho, že píše kód ručně v nějakém editoru nebo že debugguje každý kousek svého nečitelného kódu, aby vůbec zjistil, co ten kód vlastně dělá a zda dělá, co dělat má?
Ne, dobrý vývojář může psát kód ručně, když je to potřeba vzhledem k tomu, co programuje. V plno oblastech jde ale použít i výkonné vývojové nástroje, které plno ručního kódu (50-99%) udělají automaticky dle vizuálního návrhu. Jsou aplikace a nástroje, kde není ani nutno používat debugger, aby se vytvořil kvalitní kód.
- Pozná se dobrý programátor dle toho, že používá na vývoj jen nějaké vizuální nástroje, generátory kódu, či výkonné CASE / RAD nástroje, a ručnímu kódu nerozumí nebo se mu vyhýbá?
Ne, záleží na povaze vývojové práce a vhodnosti využití podobných development tools, které ocení hlavně programátor se zkušenostmi, který dokáže ocenit zvýšenou produktivitu a kvalitu vývoje. V rukou začátečníka nebo při špatném a nevhodném použití některých nástrojů můžou napáchat mnohem více škody (tu škodu může ale způsobit i obyčejný příkaz rm -R).
Navíc, kdo žádným cizím nástrojům nevěří, buď z neznalosti nebo z dřívější špatné zkušenosti, tak stále píše kód ručně, kdy je sice méně produktivní a dělá častěji chyby, ale stále může být dobrým programátorem.
Jak dělat Web stránky rychle a produktivně?
Jak uvedeno výše, tak podobně i vývoj Web stránek se může dělat několika způsoby, s použitím různých technologií a nástrojů. Žádný není dobrý nebo špatný a každý přístup je k něčemu méně nebo více vhodný. Záleží jen na zaměření a prioritách každého projektu.
Někdo píše Web stránky ručně jen v HTML jazyce, píše JavaScripty, PHP kód, sám si vytváří šablony, ručně vytváří CSS definice, sází jednu Web stránku za druhou, ručně programuje formuláře a aplikační kód na kontrolu vyplněných hodnot, ručně píše všechny SQL scripty, procedury nebo triggery na práci s databází,...
Každý takhle začínal a takové ruční psaní kódu je asi ta nejlepší škola, jak se naučit dobře programovat. Dříve nebo později ale každý vývojář zjistí, že je nutno práci optimalizovat a zvýšit produktivitu vývoje, tj. eliminovat rutinní kroky, které se opakují na každém novém projektu.
Někdo si "jen" vytvoří vlastní sadu obecných komponent, někdo si vyvine vlastní vývojový framework, další si pořídí nějaké komplexní IDE (Integrated Development Environment) nebo výkonný RAD (Rapid Application Development) nástroj, jiný třeba deleguje veškerou nudnou monkey work někomu za levný peníz.
Zvedá se výkon, kvalita i rychlost vývoje, eliminují se chyby spojené s ručním psaním kódu (kromě toho outsourcingu). Každému ale může vyhovovat jiný způsob přístupu, kdy záleží jen na konkrétní práci, jaká je nejvhodnější použitá technologie a metodologie.
"Since Rapid Application Development is an iterative and incremental process, it can lead to a succession of prototypes that never culminate in a satisfactory production application. Such failures may be avoided if the application development tools are robust, flexible, and put to proper use."
Viz také - 2080 (software concept)
Jeden z několika nástrojů, které používám já osobně na tvorbu Web stránek, zmiňuji v následujícím příspěvku...
3 comments :
Mě z toho vyplívá, že dobrý programátor je ten, který zadá práci někomu šikovnějšímu než je on sám.
No, plynou z toho různé věci, ale z čeho konkrétně "vyplývá", že dobrý programátor má zadávat práci šikovnějšímu?
Pro mě je dobrý programátor ten, po kom se mi kód dobře čte. A nemusím se dívat ani na komentáře.