Šetření na IT v Čechách

Makovec

Re:Šetření na IT v Čechách
« Odpověď #240 kdy: 05. 12. 2013, 08:26:06 »
V diskusi k tomuto případu někteří diskutéři poznamenali že to co píše Jakub Vrána kvalitní kód podle běžných standardů prostě není
Ony jsou nějaké běžné standardy, co je to kvalitní kód? :)

Samozřejmě. Je to kód který má předpokládanou funkčnost, vykonává ji s rozumnými časovými, paměťovými a dalšími nároky. Je přehledný a udržovatelný podle psaných a nepsaných standardů použitého jazyka a frameworků, týmu/firmy/komunity a je dokumentovaný. Protikladem kvalitního kódu může být např. spagetti patlanina z copy&paste příkladů z webu, exhibice génia na minimalizaci počtu znaků a řádků nebo kreativního umělce v zarovnávání a odsazování zdrojáků.


Re:Šetření na IT v Čechách
« Odpověď #241 kdy: 05. 12. 2013, 08:49:28 »
Samozřejmě. Je to kód který má předpokládanou funkčnost, vykonává ji s rozumnými časovými, paměťovými a dalšími nároky. Je přehledný a udržovatelný podle psaných a nepsaných standardů použitého jazyka a frameworků, týmu/firmy/komunity a je dokumentovaný. Protikladem kvalitního kódu může být např. spagetti patlanina z copy&paste příkladů z webu, exhibice génia na minimalizaci počtu znaků a řádků nebo kreativního umělce v zarovnávání a odsazování zdrojáků.
Už jenom slova "rozumný", "přehledný" a "udržovatelný" ukazují na subjektivní kritéria. Dokumentace částečně taky - jsou lidi, kteří tvrdí, že kód má být natolik jasný, že dokumentaci nepotřebuje. Zkušenější programátor např. umí dobře používat list comprehension a klidně ji použije přes tři listy a s dvěma podmínkami a považuje to za self-explaining. Začátečník na to bude čučet jak puk, protože by očekával tři vnořené fory.

Vůbec nechci začínat flame ani diskutovat o list comprehensions :) Jenom jsem chtěl říct, že to, že někdo o někom říká, že se mu jeho kód nelíbí, pro mě neznamená vůbec nic. Pokud to není podložené nějakou jasnou metrikou, je to úplně o ničem. A i kdyby bylo, může ten druhý člověk právě namítat třeba že to je sice o chlup pomalejší, ale zase líp udržovatelné a srozumitelné...

Makovec

Re:Šetření na IT v Čechách
« Odpověď #242 kdy: 05. 12. 2013, 09:15:48 »
Samozřejmě. Je to kód který má předpokládanou funkčnost, vykonává ji s rozumnými časovými, paměťovými a dalšími nároky. Je přehledný a udržovatelný podle psaných a nepsaných standardů použitého jazyka a frameworků, týmu/firmy/komunity a je dokumentovaný. Protikladem kvalitního kódu může být např. spagetti patlanina z copy&paste příkladů z webu, exhibice génia na minimalizaci počtu znaků a řádků nebo kreativního umělce v zarovnávání a odsazování zdrojáků.
Už jenom slova "rozumný", "přehledný" a "udržovatelný" ukazují na subjektivní kritéria. Dokumentace částečně taky - jsou lidi, kteří tvrdí, že kód má být natolik jasný, že dokumentaci nepotřebuje. Zkušenější programátor např. umí dobře používat list comprehension a klidně ji použije přes tři listy a s dvěma podmínkami a považuje to za self-explaining. Začátečník na to bude čučet jak puk, protože by očekával tři vnořené fory.

Vůbec nechci začínat flame ani diskutovat o list comprehensions :) Jenom jsem chtěl říct, že to, že někdo o někom říká, že se mu jeho kód nelíbí, pro mě neznamená vůbec nic. Pokud to není podložené nějakou jasnou metrikou, je to úplně o ničem. A i kdyby bylo, může ten druhý člověk právě namítat třeba že to je sice o chlup pomalejší, ale zase líp udržovatelné a srozumitelné...

Bez těch subjektivních záležitostí to nejde, optimalizuje se příliš věcí najednou - je o to mít všechy dost dobré na to aby aplikace fungovala a dala se udržovat. Já bych položil důraz na to aby styl kódu odpovídal zvyklostem jazyka a platformy (používal např. systémové funkce a ne vlastní náhrady) a ten tým/firmu/komunitu. To nejsou úplně subjektivní kritéria: jazyky a frameworky mívají vlastní styl, stejně jako týmy a firmy. Málokdy programátor pracuje sólo a každý musí být nahraditelný.

Podobně komentáře. Žádný kód není jasný bez dokumentace, protože cílem není ten kód, ten je napsaný aby dělal něco za nějakým účelem. Nemá smysl psát jinými slovy že ve funkci se prochází pole cyklem a srovnávají se podle výšky, šířky a aspect ratio odkazovaných obrázků. Komentář má napsat že následujíc kód vybírá optimální velikost obrázku pro zobrazení tam a tam a že přednost má mít aspekt ratio - to aby mohl někdo další ten aloritmus zkontrolovat když se aplikace nebude chovat podle očekávání. To z čistého kódu nevyčtete (v tomhle ilustrativním případě možná částečně ano, ale jsou případy kdy opravdu není jasné proč byla zvolena taková a na jiná kriteria), a nebo jenom částečně.

Nemyslím si že věci nepodložené jasnou metrikou jsou o ničem. Dovedu si představit nějaké "metriky kvalitního kódu", příslušné excelové tabulky a metodiky jak to zavádějí a měří a odměňují podle toho programátory. Asi se shodneme že by to ve výsledku ke kvalitnímu kódu a aplikacím opravdu nevedlo.

Re:Šetření na IT v Čechách
« Odpověď #243 kdy: 05. 12. 2013, 09:27:18 »
Opravdu o tomhle tématu nechci diskutovat - jednak nejsem profesionální programátor, jednak tady tohle téma bylo mockrát. Šlo mi čitě jenom o tohle:
Bez těch subjektivních záležitostí to nejde, optimalizuje se příliš věcí najednou

Makovec

Re:Šetření na IT v Čechách
« Odpověď #244 kdy: 05. 12. 2013, 09:40:55 »
Opravdu o tomhle tématu nechci diskutovat - jednak nejsem profesionální programátor, jednak tady tohle téma bylo mockrát. Šlo mi čitě jenom o tohle:
Bez těch subjektivních záležitostí to nejde, optimalizuje se příliš věcí najednou

Ano, to je klíčové - a od toho je tam management, od nejnižších team leadrů, aby moudře rozhodl kde je v daných podmínkách ta správná rovnováha, a co je tedy kvalitní kód :-)

Díky za výměnu názorů, taky jdu dělat a i když za oknem jak koukám bude hezký den, tak toho asi za chvíli nechám, využiji benefit OSVČ a půjdu se projet na kole :-)


txt

Re:Šetření na IT v Čechách
« Odpověď #245 kdy: 05. 12. 2013, 09:45:29 »
V diskusi k tomuto případu někteří diskutéři poznamenali že to co píše Jakub Vrána kvalitní kód podle běžných standardů prostě není
Ony jsou nějaké běžné standardy, co je to kvalitní kód? :)

Samozřejmě. Je to kód který má předpokládanou funkčnost, vykonává ji s rozumnými časovými, paměťovými a dalšími nároky. Je přehledný a udržovatelný podle psaných a nepsaných standardů použitého jazyka a frameworků, týmu/firmy/komunity a je dokumentovaný. Protikladem kvalitního kódu může být např. spagetti patlanina z copy&paste příkladů z webu, exhibice génia na minimalizaci počtu znaků a řádků nebo kreativního umělce v zarovnávání a odsazování zdrojáků.
Takže dodržování formátovacích konvencí, názvů ve jmenném prostoru a návrhových vzorů.

K dokumentaci - z hlediska programátora: u OOP je to jednoduché, necháš si vygenerovat Class diagram. Z hlediska analytika: měl bys zdůvodnit použití konkrétních návrhových vzorů.

...
a není dostatečnou metrikou spokojenost zákazníka [Kč] popř. [$]?

Jakub Galgonek

Re:Šetření na IT v Čechách
« Odpověď #246 kdy: 05. 12. 2013, 09:49:52 »
Už jenom slova "rozumný", "přehledný" a "udržovatelný" ukazují na subjektivní kritéria.

Dobrý programátor (z pohledu zaměstnavatele) by se měl umět přenést přes svá subjektivní kritéria. Například je zcela na budku, když vám programátor řekne, že on bude kód zarovnávát jinak než zbytek týmu, protože mu to tak přijde lepší. Stejně tak je šílené, když jeden den máte čtyřhodinovou schůzi, kde se dohodne společné API, a na druhý den zjistíte, že to API udělal úplně jinak, protože ho prý v noci osvítilo.

Ctirad

Re:Šetření na IT v Čechách
« Odpověď #247 kdy: 05. 12. 2013, 10:13:22 »
Už jenom slova "rozumný", "přehledný" a "udržovatelný" ukazují na subjektivní kritéria.
Subjektivní neexaktní hodnocení je běžná věc. Třeba i v potravinářství se potraviny hodnotí jak laboratorně, tak senzoricky - subjektivně. Pokud hodnotiteli salám smrdí, tak smrdí a je jedno, že je mikrobiologicky v pořádku, je to součástí hodnocení. Nežijeme v ideálním světě, všechno nejde hodnotit exaktně.

Makovec

Re:Šetření na IT v Čechách
« Odpověď #248 kdy: 05. 12. 2013, 10:22:38 »

K dokumentaci - z hlediska programátora: u OOP je to jednoduché, necháš si vygenerovat Class diagram. Z hlediska analytika: měl bys zdůvodnit použití konkrétních návrhových vzorů.


Já myslím že tohle nestačí. Mám třeba property pro nějaký seznam položek. Mohu ji konkrétně implementovat jako array, set, nebo ordered set. Nemusí být na první pohled zřejmé proč jsem se rozhodl pro ordered set - ze schematu ani obecné funkčnosti to nevyplývá, stačila by array - to je přesně místo kde má být komentář že je to třeba z důvodu nějaké optimalizace při nějaké operaci, za nějakým konkrétním účelem, a jakým.

Re:Šetření na IT v Čechách
« Odpověď #249 kdy: 05. 12. 2013, 10:30:54 »
Pánové, abysme neztratili kontext, zopakuju, jak tohle začalo: Několik anonymů v diskusi napsalo, že Jakub Vrána nepíše pěkný kód, aniž by oni ukázali svůj. Já jsem k tomu tady jenom dodal, že pro mě osobně takové štěky nejsou argument, že Jakub Vrána je špatný programátor. Názory anonymů pro mě mají obecně malou váha a zvlášť v tak subjektivní věci jako je kvalita programátora.

Škoda že už na začátku někdo neuvedl odkaz. V té diskusi [1] se argumentuje kódem [2]. Jelikož se PHP vyhýbám jako čert kříži, neumím jeho kvalitu posoudit. Navíc nevím, proč bych se měl nějak víc zabývat tím, jaký kód píše nějaký Jakub Vrána, když ho nechci ani zaměstnat, ani od něj žádný kód kupovat :)

[1] http://www.lupa.cz/clanky/jakub-vrana-proc-jsem-opustil-facebook-nechci-ridit-lidi-me-bavi-psat-kod/nazory/
[2] https://github.com/vrana/adminer/

Ctirad

Re:Šetření na IT v Čechách
« Odpověď #250 kdy: 05. 12. 2013, 10:36:10 »
Dobrý programátor (z pohledu zaměstnavatele) by se měl umět přenést přes svá subjektivní kritéria. Například je zcela na budku, když vám programátor řekne, že on bude kód zarovnávát jinak než zbytek týmu, protože mu to tak přijde lepší. Stejně tak je šílené, když jeden den máte čtyřhodinovou schůzi, kde se dohodne společné API, a na druhý den zjistíte, že to API udělal úplně jinak, protože ho prý v noci osvítilo.

Zažil jsem jednoho, co si uvnitř programu začal bastlit vlastní framework, aby se mu "líp pracovalo".

Jakub Galgonek

Re:Šetření na IT v Čechách
« Odpověď #251 kdy: 05. 12. 2013, 10:39:04 »
Pánové, abysme neztratili kontext, zopakuju, jak tohle začalo: Několik anonymů v diskusi napsalo, že Jakub Vrána nepíše pěkný kód, aniž by oni ukázali svůj.

A já si myslel, že to začalo tak, že několik anonymů si myslelo, že jsou finančně podhodnocení, aniž by ukázali, co umí  ;)

Ctirad

Re:Šetření na IT v Čechách
« Odpověď #252 kdy: 05. 12. 2013, 10:45:40 »
Pánové, abysme neztratili kontext, zopakuju, jak tohle začalo: Několik anonymů v diskusi napsalo, že Jakub Vrána nepíše pěkný kód, aniž by oni ukázali svůj.

A já si myslel, že to začalo tak, že několik anonymů si myslelo, že jsou finančně podhodnocení, aniž by ukázali, co umí  ;)

Jistě, několik humorných citací, které mě rozesmály:

Citace
Máme :D Už před deseti lety mi nabízeli to stejné, co dnes by možná po přemlouvání dali. Raději vemou nějakého vola hned po škole za 25 a ještě bude šťastný. Kvalita se vůbec necení. Maximálně praxe, která nic ale nevypovídá o kvalitě. Já se divím poslední rok a stále chodím na pohovory a stále si nerozumíme, protože já říkám obvykle dvojnásobek jejich maxima. Nevím, ale počítat snad ještě umím a vím, co je reálné. Fakt nevím, ale potřebuju to rychle vyřešit, protože mi přijde, že v ČR ztrácím čas a nikdo nemládneme.

Citace
Je to tak, ale problém je že to firmy ví, takže se někdo kdo je ochoten zaplatit, hledá čím dál tím obtížněji. A tím že se takto tlačí dolů celý trh a troubové to berou, to firmám navíc prochází... Tzn. že za někoho kdo umí s Linuxem, scritpuje v BASHI a má slušnou angličtinu nabídnou 25.000,- Aktuálně považuji situaci za velice špatnou.

Citace
Nabidky opet zacly chodit, ale platy jsou mimo realitu. Provedl jsem pomerne zevrubny pruzkum na pozicich kde jsem zacinal jako junior/student. Zivotni naklady od te doby stouply, avsak platy v IT jsou stale stejne nerkuli nizsi.

Kolemjdoucí

Re:Šetření na IT v Čechách
« Odpověď #253 kdy: 05. 12. 2013, 10:49:37 »
Samozřejmě. Je to kód který má předpokládanou funkčnost, vykonává ji s rozumnými časovými, paměťovými a dalšími nároky. Je přehledný a udržovatelný podle psaných a nepsaných standardů použitého jazyka a frameworků, týmu/firmy/komunity a je dokumentovaný. Protikladem kvalitního kódu může být např. spagetti patlanina z copy&paste příkladů z webu, exhibice génia na minimalizaci počtu znaků a řádků nebo kreativního umělce v zarovnávání a odsazování zdrojáků.
Už jenom slova "rozumný", "přehledný" a "udržovatelný" ukazují na subjektivní kritéria. Dokumentace částečně taky - jsou lidi, kteří tvrdí, že kód má být natolik jasný, že dokumentaci nepotřebuje.

Samozřejmě že kód má být natolik jasný aby nepotřeboval dokumentaci k tomu co dělá. Ale rozhodně by mělo být dokumentováno proč to dělá, protože to z toho kódu rozhodně vidět být nemusí! Například v Javě je v dokumentaci k java.util.Collections.sort napsáno toto:

This implementation dumps the specified list into an array, sorts the array, and iterates over the list resetting each element from the corresponding position in the array. This avoids the n^2 * log(n) performance that would result from attempting to sort a linked list in place.

Tu první větu by si teoreticky mohli odpustit, to je z toho kódu rovnou vidět. Ale ta druhá věta je v dokumentaci povinná!

Re:Šetření na IT v Čechách
« Odpověď #254 kdy: 05. 12. 2013, 11:01:31 »
A já si myslel, že to začalo tak, že několik anonymů si myslelo, že jsou finančně podhodnocení, aniž by ukázali, co umí  ;)
Neee. Začalo to tím, že se Eva nechal ukecat hadem, blbka jedna ;)