Ako komplikovane programujete?

Re:Ako komplikovane programujete?
« Odpověď #15 kdy: 25. 03. 2019, 08:16:35 »
Protoze se snazi prodat co nejvice lidi zakaznikovi jednak, a taky mit nejakou redundanci lidi. Jestli delas v korporatu a vadi ti tohleto, tak je pritlac ke zdi at te daji na jiny projekt kde toto neni - kazdy korporat ma dobre a i horsi projekty. Jestli ti nekde dali zbytecne 10 lidi tak si tipnu, ze to aroven bude solidni zumpa, kdyz i zakaznik je tak blby ze si tohle necha libit.


Re:Ako komplikovane programujete?
« Odpověď #16 kdy: 25. 03. 2019, 08:45:30 »
... jeden az traja schopny programatori ked vedia co robia to naprogramuju od piky omnoho rychlejsie a kvalitnejsie ako desat ludi pretoze ten overhead s komunikaciou a meetingami a preberanim nepodstatneho je tam potom obrovsky.
Kdyz mam 3 schopne seniorni programatory tak aby meli cas na programovani a nemuseli resit p******y tak k nim posadim nekoho kdo:
  • Bude reportovat zakaznikovi a starat se o rozpocet - project manager nebo tak neco +1
  • Kdo bude analyzovat business pozadavky a psat funkcni dokumentaci  +2
  • Nekoho kdo se postara o testovani (at uz manual nebo auto) +3
  • A mel bych si vychovat nejake juniory at mam priste kde brat ty seniory +2

3 + 1 + 2 + 3 + 2 = 11

Takove tymy casto vidam a prijde mi to unosne i kdyz komunikacni overhead tam znatelny je.
Jeste sem nevidel tym o deseti programatorech.

e3k

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Ako komplikovane programujete?
« Odpověď #17 kdy: 25. 03. 2019, 10:40:01 »
snazim sa programovat co najmenej komplikovane. inspiraciu a osvietenie cerpam odtialto:
https://en.wikipedia.org/wiki/KISS_principle
http://suckless.org/

Suckless sucks.
Suckless sucks less.

Re:Ako komplikovane programujete?
« Odpověď #18 kdy: 25. 03. 2019, 10:51:50 »
snazim sa programovat co najmenej komplikovane. inspiraciu a osvietenie cerpam odtialto:
https://en.wikipedia.org/wiki/KISS_principle
http://suckless.org/

Suckless sucks.
Suckless sucks less.

Suckless sucks. Terribly.

kimec

Re:Ako komplikovane programujete?
« Odpověď #19 kdy: 25. 03. 2019, 21:19:08 »
Najprv som sa bal ze to nebude vela vediet ale cuduj sa svete, ono to ani nie je treba. Co zacinam nove projekty tak zamerne programujem uplne jednoducho v cistej Jave takze som zavisly na minime externych veci a ono to na pocudovanie aj celkom funguje. Zahodil som cely Spring a zacal som pouzivat Guice a Javalin. Na JWT tokeny java-jwt z com.auth0 a tiez to uplne v pohode fici jak ma ... raketovo sa v tom programuje.[
...] vsetky tie frameworky su vela krat len uplne zbytocne nadstavby.
Nahradili ste jeden framework za druhy a pouzivate viac prostrdiekov, ktore ponuka JDK. Ci to skomplikovalo programovanie, ukaze cas, ked vas kod prejde do "maintenance modu", popripade pribudne uplne nova funkcionalita (ktora nebola sucastou provodneho zadania), projekt bude treba nadalej udrziavat funkcny a pripadne ho preberie niekto iny.

Jeden z dovodov, preco sa v korporatnom svete pouziva Spring je ten, ze su viac menej zname "naklady" na jednotlive fazy zivota projektu. Inymi slovami, ked toho jedneho cloveka, ktory Javalin vyvyja, prejde autobus, alebo ho prestane bavit vyvyjat, mozete mat problem.

Toto samozrejme neplati pre prostriedky pochadzajuce z JDK. Tam robite velmi dobre, ked pouzivate to, co mate dostupne. Problem s vecami z JDK je casto krat casovanie, kedy tato funkcionalita do JDK pribudne. Mnohe frameworky nemohli cakat X rokov, kym vyjde JDK a preto prisli s vlastnymi rieseniami. Do JDK bola funkcionalita pridana ex post, no uzus nastoleny frameworkami sa uz nevykorenil.
Narozdiel od vyvojara, frameworky maju jasnu predstavu o zavislostiach na knizniciach 3tich stran a ocakavaju nejake konkretne prostredie - niekedy moze byt paradoxne jednoduchsie pouzivat neJDK veci, bohuzial.


kimec

Re:Ako komplikovane programujete?
« Odpověď #20 kdy: 25. 03. 2019, 21:46:41 »
Este by som rad reagoval na "sub thread" o Jave, ktory sa tiez rozbehol v tomto trheade.

Myslim si, ze aktualne sa ma Java velmi dobre.

Co sa tyka technologickej stranky, Java pravdepodobne zaziva najvacsi rozvoj za poslednu dekadu. Znacne tomu pomohol aj novy release model.
Nova funkcionalita moze pribudat iba vtedy, ked su veci v pohybe, ale dramaticke zmeny so sebou prinasaju aj rozbijanie rozhrani a starej funkcionality.

Osobne si myslim, ze treba este chvilu pockat, kym sa cely ekosystem stabilizuje, ale uz sa viac menej crta cesta:
a) staticky kompilovana depdency injection
b) nativne kompilovane binarky a la go
c) neblokujuce IO a korutiny
d) structy ako z C

Skratka, pritiahnute za vlasy, ked prach usadne, nebude treba ani Go ani node.js a trapna servletova aplikacia bude mat rovnake performance charakteristiky.

Treba si uvedomit, ze Java ma nadalej velke memomentum, samozrejem aj vdaka korportanemu svetu. Akykolvek technologicky refresh Javy ma dopad na velku cast biznis sveta.

Re:Ako komplikovane programujete?
« Odpověď #21 kdy: 26. 03. 2019, 07:47:07 »
Caute,

vela programujem v Jave a v poslednom case som sa prichytil pri tom, ze som zacal preferovat komponenty a libky ktore su v Jave samotnej. Dlho som napriklad pouzival Jackson a ekosystem okolo na JSON alebo Apache HTTP libky na HTTP klientov ale uz celkom dlho existuje JSON-B / JSON-P a Java ma v sebe HttpClient-a ... Najprv som sa bal ze to nebude vela vediet ale cuduj sa svete, ono to ani nie je treba. Co zacinam nove projekty tak zamerne programujem uplne jednoducho v cistej Jave takze som zavisly na minime externych veci a ono to na pocudovanie aj celkom funguje. Zahodil som cely Spring a zacal som pouzivat Guice a Javalin. Na JWT tokeny java-jwt z com.auth0 a tiez to uplne v pohode fici jak ma ... raketovo sa v tom programuje.

Já moc nechápu, o čem vlastně chcete diskutovat. V titulku máte „komplikovanost“, ale v samotné otázce k ní pak není ani čárka.

Co se týče knihoven, samozřejmě nemá smysl používat externí knihovnu, pokud vašim potřebám vyhovuje i vestavěná runtime knihovna.

Knihoven pro JSON vzniklo několik, Jackson je mezi nim i asi nejrozšířenější. Používá ho i spousta dalších knihoven, takže občas jste k jeho použití donucen jinou knihovnou. Na druhou stranu to, jak je ta knihovna navržená, není žádná sláva. JSON-P je dobře navržené API, bylo to standardizováno, doufám, že postupně převezme roli toho standardního API pro JSON v Javě, že ho bude implementovat i Jackson a další. JSON-B je jiný případ, sice také snaha o standardní API, ale to API je nešťastně navržené a špatně zdokumentované. Referenční implementaci jsem naposledy zkoušel krátce před verzí 1.0 a bylo to docela dobrodružné – v jednom případě se něco špatně přetypovávalo a vyhazovalo o výjimku, v druhém případě dokonce bylo evidentní, že to nikdo nikdy neotestoval na mapě s více než jedním klíčem, protože zbytek mapy se prostě zahodil.

Původní HTTP klient v Javě byla tragédie a nemohl ho použít nikdo, kdo alespoň z rychlíku zaslechl něco o tom, jak má vypadat programování síťové komunikace. Nešlo tam nastavit nic, ani tak základní věc, jako timeouty. Proto se používaly externí knihovny. Teď už má Java HTTP klienta, který vypadá podstatně lépe, ale abych pravdu řekl, je to snad jediná věc z nových vlastností Javy, na kterou jsem se ještě víc nedíval – protože ta původní implementace byla opravdu tragédie, a být „podstatně lepší“ než to pořád ještě nezaručuje, že to bude alespoň dobré. Ale pokud už má vlastnosti, které potřebujete, a nepotřebujete podporu starších verzí Javy, proč to nepoužít?

To samé se týká i Springu – pokud ho nepotřebujete, tak proč ho používat? Spring spoustu věcí také implementuje tak, že akorát zabalí nějakou externí knihovnu tak, aby se používala stejně, jako ostatní komponenty Springu. Tak pokud potřebuju jenom funkcionalitu dané knihovny, použiju tu knihovnu a ne celý Spring.

Pouzivate externe libky aj ked nemusite? Zacal som to brat z uplne ineho konca, co najmenej externalit a vyuzit platformu na 100% a zatial sa mi nestalo, ze by mi tam nieco chybalo. Podla mna sa da vela krat dosiahnut ten isty ciel aj jednoduchsie, vsetky tie frameworky su vela krat len uplne zbytocne nadstavby.
Ta zbytečnost není vlastností frameworku ale jeho použití. Mne by spíš zajímalo, jak se vám stalo, že používáte externí knihovnu, i když nemusíte, nebo používáte zbytečně nějaký framework. Já se s takovými případy nesetkávám a moc si nedovedu představit, jak to vznikne.

Re:Ako komplikovane programujete?
« Odpověď #22 kdy: 26. 03. 2019, 09:16:45 »
Tak a je to tu, pan Jirsak zde dal opet erudovanou odpoved, ale pointu diskuze uz moc nepochopil, jak sam nekolikrat zminuje. Jak tradicni u pana Jirsaka. Ja jsem to treba pochopil a myslim si, ze mnozi dalsi taky, pane Jirsaku.

Tazatele stve overhead frameworku a importovani hromady externich knihoven, klade si spravnou otazku, proc se neda vystacit se zakladnimi vecmi, ktere poskytuje Java. Normalni jeste zdravy clovek si totiz kladu otazku, proc se neco dela slozite, kdyz to jde jednoduse.

No v Jave to bohuzel moc dobre nejde a to kvuli tomu, ze zakladni knihovna nedisponuje dostatecne kvalitne udelanymi vecmi. Pokud nekdo nevi jak to myslim, tak at se podiva jak to maji vsechno pekne vyresene v .NETu. Tak by to melo vypadat, kdyz se majitel platformy o ni stara.

Ja treba pridam jeste naprosto vtipny Unzip v JDK, ktery nejenom ze je pomaly jako snek, ale jeste navic v podstate zcela znemozni odzipovavat vnorene zipy kompletne v pameti - mezirozbalovacky se musi vzdycky ukladat na hdd.

JurajP

  • ****
  • 326
    • Zobrazit profil
    • E-mail
Re:Ako komplikovane programujete?
« Odpověď #23 kdy: 26. 03. 2019, 09:21:02 »
.NET je uz daleko pred JAVOU. Nakolko sa rozbieha v plnej krase .NET Core, je dost mozne, ze JAVA bude pomalicky vytlacana aj z miest, kde prevlada JAVA.

Re:Ako komplikovane programujete?
« Odpověď #24 kdy: 26. 03. 2019, 09:30:48 »
.NET je uz daleko pred JAVOU. Nakolko sa rozbieha v plnej krase .NET Core, je dost mozne, ze JAVA bude pomalicky vytlacana aj z miest, kde prevlada JAVA.

.NET je pred Javou, ale .NETisti ne, chlapce. A o tom jestli .NET stihne Javu prevalcovat bych se hadal, protoze Windows a MS veci jsou utter crap a dokud nebude .NET plne nezavisly na Win, coz se podle me nikdy nestane, tak ma utrum.


Mlocik97

  • *****
  • 830
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Ako komplikovane programujete?
« Odpověď #25 kdy: 26. 03. 2019, 09:45:07 »
Java je umierajúci <píp>... čo kecá kimec kecá totálne <píp>, skôr by som povedal že práve Golang a Node.js nahrádzajú Javu v plnej sile, a nie naopak... Ešte bych k tej dvojici pridal Scalu... Java ako platforma skvelá vec, ale ako programovací jazyk totálne <píp> <píp>... A áno .NET a MS vieme jak je na tom kvalitou, ale i tak je pred Javou.

Re:Ako komplikovane programujete?
« Odpověď #26 kdy: 26. 03. 2019, 09:58:40 »
Tazatele stve overhead frameworku a importovani hromady externich knihoven, klade si spravnou otazku, proc se neda vystacit se zakladnimi vecmi, ktere poskytuje Java. Normalni jeste zdravy clovek si totiz kladu otazku, proc se neco dela slozite, kdyz to jde jednoduse.
Já jsem se ptal na otázku, která tomuhle ještě předchází – jak se stane, že to někdo začne dělat složitě, když to jde dělat i jednoduše. Vy řešíte případ, že někdo už začal špatně a pak se ptá, jestli to nejde lépe. Já se ptám, jak se stane, že někdo začne špatně.

Určitou teorii na to mám – že lidé neznají JDK a neznají různé knihovny, znají akorát Spring (v téhle souvislosti se vždy objevuje jen Spring, často dotyčný píše o Javě a najednou píše o Springu, jako by to bylo jedno a to samé). Tím pádem se snaží vše dělat ve Springu.

No v Jave to bohuzel moc dobre nejde a to kvuli tomu, ze zakladni knihovna nedisponuje dostatecne kvalitne udelanymi vecmi. Pokud nekdo nevi jak to myslim, tak at se podiva jak to maji vsechno pekne vyresene v .NETu. Tak by to melo vypadat, kdyz se majitel platformy o ni stara.
V základní knihovně Javy existují i dobře udělané věci, například kolekce – nejspíš těch věcí dokonce bude většina, když se Java tak rozšířila. A cílem samozřejmě není mít vše narvané v základní knihovně, naopak je dobře, že máte spoustu specializovaných knihoven a vyberete si tu, která vám vyhovuje nejlépe.

Ja treba pridam jeste naprosto vtipny Unzip v JDK, ktery nejenom ze je pomaly jako snek, ale jeste navic v podstate zcela znemozni odzipovavat vnorene zipy kompletne v pameti - mezirozbalovacky se musi vzdycky ukladat na hdd.
Otázkou je, proč by zrovna propracovaný unzip měl být v základní knihovně Javy. Jaký podíl Java aplikací asi potřebuje rozbalovat zip v zipu? Není lepší, když takové aplikace použijí externí knihovnu, která může mít rychlejší vývojový cyklus a poskytovat toho mnohem víc?

Re:Ako komplikovane programujete?
« Odpověď #27 kdy: 26. 03. 2019, 10:10:55 »
A ty externi knihovny zpusobi, ze musite pouzivat Maven. A ze se musi pouzivat Maven zpusobi, ze se musi pouzivat i Gradle. A ze se musi pouzivat Gradle zpusobi, ze se bude pouzivat i Ant. Vsechno se na sebe vrstvi a pak toho je hromada.

Ja se ptam, kdyz nekomu prijde Spring moc velky overhead pro jeho aplikaci, tak v cem jinem to ma potom fidlat? (Doufam ze tu nejaky debil nenapise ze mam zkusit Play Framework a Scalu) O cehokoliv jineho nez Springu si uz budu klast otazku, jestli si ten backend nemam rovnou udelat v Node.js - protoze frontend uz asi dneska tezko budu fidlat na backendu a tak proste rovnou udelam i ten backend javascriptovy. A u veci slozitejsich uz se zase dobre hodi ten Spring, protoze ten overhead se ztrati.

Za me, Java se proste bohuzel nehodi na mensi veci, nez na ktere uz je vhodny Spring. Si myslim. Schvalne uvedte nejaky jiny priklad z praxe.

Jo a mluvim o vyvoji inf. systemu, stejne se dneska skoro nic jineho nedela.
« Poslední změna: 26. 03. 2019, 10:13:14 od prihlaseny_uzivatel »

Re:Ako komplikovane programujete?
« Odpověď #28 kdy: 26. 03. 2019, 10:38:16 »
no ja som sa dostaldo tazkej depky z tohoto, nepomaha ani chlast :D zistujem ze najlepsie sa mi pracuje samemu, ono ked je nejaky korporatny projekt tak paradoxne najrychlejsie a najlepsie to spravi minimum az jeden clovek od zaciatku do konca pretoze akonahle sa na to nasadi skupina ludi tak to je uplny chaos. fakt nechapem, preco si manazeri myslia ze medzi produktivitou a poctom ludi je priama umera. prave naopak. jeden az traja schopny programatori ked vedia co robia to naprogramuju od piky omnoho rychlejsie a kvalitnejsie ako desat ludi pretoze ten overhead s komunikaciou a meetingami a preberanim nepodstatneho je tam potom obrovsky.
To je tvoj pohlad. ale co ked sa ten jeden programator jedneho dna zdvihne a pojde prec. Prebrat projekt nie je otazka 10 minut, zvlast, ked sa vyvijal niekolko rokov. Preto sa casto vyuziva parove programovanie, alebo je do toho zapojenych viac ludi.
Nejde len o naprogramovanie, ale co v pripade problemov v produkcii, ak hlavny programator bude niekde na dovolenke. To bude firma cakat kym sa nevrati? Radsej si to nechaju nakodit v systeme, ktoremu rozumie viac ludi a vedia sa kedykolvek nahradit.
Casto tie meetingy su strata casu, ale na druhej strane velakrat sa tam dozvies "nepodstatne malickosti", ktore dost podstatne zasiahnu do vyvoja. napr. ze zabudli na nejaku funkcionalitu, alebo hlanicne situacie v urcitych pripadoch.
Programator sa casto pozera len zo svojho pohladu - ja to nakodim takto a bude to dobre. Ale z pohladu bussinnessu tam ide aj o to, aby sa o ten sw mal kto postarat, fixnut chybu, pripadne rozsirit nielen teraz, ale aj o 1, 2, 5 rokov (taky interny firemny system zije aj 10 rokov).

kimec

Re:Ako komplikovane programujete?
« Odpověď #29 kdy: 26. 03. 2019, 11:05:24 »
A ty externi knihovny zpusobi, ze musite pouzivat Maven. A ze se musi pouzivat Maven zpusobi, ze se musi pouzivat i Gradle. A ze se musi pouzivat Gradle zpusobi, ze se bude pouzivat i Ant. Vsechno se na sebe vrstvi a pak toho je hromada.

Ja se ptam, kdyz nekomu prijde Spring moc velky overhead pro jeho aplikaci, tak v cem jinem to ma potom fidlat? (Doufam ze tu nejaky debil nenapise ze mam zkusit Play Framework a Scalu) O cehokoliv jineho nez Springu si uz budu klast otazku, jestli si ten backend nemam rovnou udelat v Node.js - protoze frontend uz asi dneska tezko budu fidlat na backendu a tak proste rovnou udelam i ten backend javascriptovy. A u veci slozitejsich uz se zase dobre hodi ten Spring, protoze ten overhead se ztrati.

Za me, Java se proste bohuzel nehodi na mensi veci, nez na ktere uz je vhodny Spring. Si myslim. Schvalne uvedte nejaky jiny priklad z praxe.

Jo a mluvim o vyvoji inf. systemu, stejne se dneska skoro nic jineho nedela.
Uvediem dva aktualne prilady z mojej praxe:
1) vyvoj nativnych rychlych command line toolov s minimom zavislosti na dynamickych knizniciach tretich stran v systeme
2) vyvoj nativnych mockovanych REST serverov s okamzitym startom a sub milisekundovym response time