Nový projekt vs. cizí kód

Kit

  • *****
  • 708
    • Zobrazit profil
    • E-mail
Re:Nový projekt vs. cizí kód
« Odpověď #75 kdy: 12. 09. 2020, 16:00:17 »
Refactoring se pri novem vyvoji nedela?

Dělá. Což nic nemění na skutečnosti, že refactoring obvykle není moc tvůrčí/zábavný, etc.

Jak pro koho. Refaktoring mě náhodou docela baví a často při něm najdu hromadu chyb, které udělal předchůdce.

Na druhou stranu, já třeba mám ten pocit ozdravování celkem rád, našel jsem se v tom.

Jsou to prostě dva naprosto různé pocity: Možnost odejít z kuchyně, která je vyfintěná; nebo položit na stůl voňavou večeři. Vyřešit a rozmotat špagety, a vyhodit z kódu špatné věci, pročistit a učesat API, zrychlit kód; versus adoptovat novou webovou službu na stávající api, kdy vám všechno krásně hraje do noty, všechno přesně zapadá, pomocí pár řádek kódu.

Nepopisuješ refactoring, ale redesign.


Re:Nový projekt vs. cizí kód
« Odpověď #76 kdy: 13. 09. 2020, 01:08:47 »
Ja teda nevim, kolik jste kdo za svuj zivot prebiraly projektu ja par jo a muzu vam rict ze je to vzdy nocni mura. Jednou jsem treba dostal za ukol "doladit" program po slavnych Andersen Consulting ( docela znama "
banda nachytrovacu"  kolem roku 2000 ). Byl to nejaky reportovaci system napsany v pro*c, bezici nad oracle db pod hp-uxem. Moc dobre se cisti kod, ktery bezi 16hodin nez to slitne na core dump. Vy na to kouknete, je vam jasny proc to slitlo ale vite ze pricina je ukryta nekde jinde a tak tu chybu huntite nekolik dni. A takovych chutovek jsem za svoji karieru par resil a muzu vam rict, never more. Proste nejsem genius abych se kouknul a hned mi bylo vsechno jasne, jak vsem tady ve vlaknu :-) a vedl tady filosoficke debaty o refactoringu, ucesani api, pridani webove sluzby a zvyseni vykonu odladenim a to vsechno behem 10ti minut :-).

BoneFlute

  • *****
  • 1 987
    • Zobrazit profil
Re:Nový projekt vs. cizí kód
« Odpověď #77 kdy: 13. 09. 2020, 01:45:03 »
Ja teda nevim, kolik jste kdo za svuj zivot prebiraly projektu ja par jo a muzu vam rict ze je to vzdy nocni mura. Jednou jsem treba dostal za ukol "doladit" program po slavnych Andersen Consulting ( docela znama "
banda nachytrovacu"  kolem roku 2000 ). Byl to nejaky reportovaci system napsany v pro*c, bezici nad oracle db pod hp-uxem. Moc dobre se cisti kod, ktery bezi 16hodin nez to slitne na core dump. Vy na to kouknete, je vam jasny proc to slitlo ale vite ze pricina je ukryta nekde jinde a tak tu chybu huntite nekolik dni. A takovych chutovek jsem za svoji karieru par resil a muzu vam rict, never more. Proste nejsem genius abych se kouknul a hned mi bylo vsechno jasne, jak vsem tady ve vlaknu :-) a vedl tady filosoficke debaty o refactoringu, ucesani api, pridani webove sluzby a zvyseni vykonu odladenim a to vsechno behem 10ti minut :-).

No, a pak přijdu já, a řeknu, ok, tak já vám to udělám. Ale samozřejmě to nebude hned. Pochopitelně to nebudu dělat deset minut. Já totiž žádný génius nejsem. Ale pár zkušeností mám, a když to zákazník chce, a chce to zaplatit, tak fajn.

Re:Nový projekt vs. cizí kód
« Odpověď #78 kdy: 13. 09. 2020, 09:38:38 »
Nekdo potrebuje zakony a nekomu staci ze se nestydi vecer podivat do zrcadla, protoze vi ze odvedl kvalitni praci.
Kdyz se zeptas plynare, proc kontroluje jestli nekde neutika plyn tak co ti rekne?
A. Protoze podle zakona musim.
B. Protoze nechci nekoho zabit.
A kdyz ti dva plynari daji takove odpovedi, ktereho si radsi pozves domu?

Doporucuju odejit z teplicka bodyshopu a zkusit delat zakazky. To bude rozcarovani. Proste ti plynari maji ze zakona dany nejaky postupy, ktere museji dodrzovat. Predpokladam ze ty postupy jsou zalozena na nejake zkusenosti a maji nejlepsi pomer vynalozene usily / bezpecnost. Takova revize kotle bude stat +- stejne at ji udela kdokoliv. Protoze proste maji jasne dany postup co takova revize kotle znamena. To je ale neco co se v pri zakazkovem vyvoji SW vubec nevidi. Nikde nejsou dane zadne postupy. Ceny se muzou lisit v desitkach i stovkach procent. Pokud si firma co dela zakazky tak mas jedinou motivaci. Udelat ten projekt co nejlevneji, ale furt dost dobre na to, aby si u tebe zakaznik znovu objednal. Ale uz vubec nemas motivaci do toho projektu investovat z dlouhodobeho hlediska. Protoze vsechno co do toho investujes navic, tak pro tebe potencionalni ztrata - napriklad se za dva roky zakaznik rozhodne, ze ten projekt predava nekomu jinemu a tvoji investici slizne nekdo jiny. Je to docela zajimave prostredi.

Re:Nový projekt vs. cizí kód
« Odpověď #79 kdy: 13. 09. 2020, 11:28:06 »
Nekdo potrebuje zakony a nekomu staci ze se nestydi vecer podivat do zrcadla, protoze vi ze odvedl kvalitni praci.
Kdyz se zeptas plynare, proc kontroluje jestli nekde neutika plyn tak co ti rekne?
A. Protoze podle zakona musim.
B. Protoze nechci nekoho zabit.
A kdyz ti dva plynari daji takove odpovedi, ktereho si radsi pozves domu?

Doporucuju odejit z teplicka bodyshopu a zkusit delat zakazky. To bude rozcarovani. Proste ti plynari maji ze zakona dany nejaky postupy, ktere museji dodrzovat. Predpokladam ze ty postupy jsou zalozena na nejake zkusenosti a maji nejlepsi pomer vynalozene usily / bezpecnost. Takova revize kotle bude stat +- stejne at ji udela kdokoliv. Protoze proste maji jasne dany postup co takova revize kotle znamena. To je ale neco co se v pri zakazkovem vyvoji SW vubec nevidi. Nikde nejsou dane zadne postupy. Ceny se muzou lisit v desitkach i stovkach procent. Pokud si firma co dela zakazky tak mas jedinou motivaci. Udelat ten projekt co nejlevneji, ale furt dost dobre na to, aby si u tebe zakaznik znovu objednal. Ale uz vubec nemas motivaci do toho projektu investovat z dlouhodobeho hlediska. Protoze vsechno co do toho investujes navic, tak pro tebe potencionalni ztrata - napriklad se za dva roky zakaznik rozhodne, ze ten projekt predava nekomu jinemu a tvoji investici slizne nekdo jiny. Je to docela zajimave prostredi.

A nebo se zakaznik nerozhodne to dat nekomu jinemu...
A ja si pak budu vyzirat, ze sem neinvestoval.
Pravda je, ze se to pravdepodobne nestane, protoze kdyz zakaznik uvidi, ze se mi to rozsejpa pod rukama a udrzba je cim dal tim drazsi tak se s vyssi pravdepodobnosti rozhodne ze sem neschopa a bude mu lip s nekym jinym.

Ale hlavni je, ze ta investice se vyplati i ve strednedobem horizontu.

A btw. Bodyshop neni zas takovy teplicko jak se muze zdat.


Re:Nový projekt vs. cizí kód
« Odpověď #80 kdy: 14. 09. 2020, 11:06:03 »
Vrtal jsem se v kódu od jedné nejmenované konzultační společnosti (abych nezakládal hate, nebudu jmenovat firmu ani národnost, ale byla to velká firma z velké země, která je proslulá low cost vývojem). Architektura stála na dvou vrstvách. JSP stránky a PL/SQL procedury v oracle databázi.

Kde začít? .jsp byly opravdu velké. Copy-paste by šlo, ale tohle bylo rafinovanější. Tady se konzistentně uplatňovalo x krát rewrite téhož, s různými implementacemi (a chybami). V JSP se samozřejmě řešily takové ty typicky front endové věci,  například nějaké query nebo reporty nad strukturami, které se před tím celé stáhly z databáze do paměti.

Databáze (PL/SQL) zase často skládala HTML výstup (!), přes SOAP někam posílala data (!!) a posílala i třeba e-mailové notifikace. PL/SQL procedury byly také obrovské ("mít jich víc by bylo škoda, stačí nám jedna"), a v podstatě šlo o propletenec milionu IFů. Když se to člověk snažil formátovat a rozparsovat, tak zjistil, že některé podmínky si i v zájemně odporují (tj v IFu byl zanořený IF s "mrtvým kódem" se stovkami řádků, které se neprovedly,).  Někdy to bylo vidět až okatě (IF fieldX = 3 a uvnitř zanořený IF fieldX = 5).  Prostě bylo vidět, že už v základu zkoněná implementace byla mockrát dolepena quick fixy stylu ("když je na vstupu jednička, má to vrátit dvojku -- ok, přidám tam IF a jdu na další ticket").

Nejlepší na celé věci (a to podle mne hází vidle do sena i těm největším masochistům, co by se chtěli vrhnout na "ozdravování" tohoto výtvoru) bylo, že nikdo vlastně (už) nevěděl, jak to má přesně fungovat. K čemu slouží funkcionalita A, proč na výstup B mám dostat C atd, . Nevěděl to business, nevěděl to analytik. Dokumentace a business analýza měla podobnou strukturu a kvalitu jako kód. Původní implementátoři (spolu s analytiky apod.) už z firmy, co to implementovala, samo sebou odešli (protože tahle firma drží jen low cost lidi a kdo je schopnější, přesunuje se jinam, často do jiného světadílu). Pokud už někoho chytíte, bude problém se domluvit na komunikačním protokolu, protože evidentně používá jinou angličtinu, než je ta vaše.

Protože v té Bance rotují lidé v manažerských postech podobně rychle, jako low cost pracovníci v těchto consultancy companies, a celé se to řídí principem "čím víc teď ušetřím, tím víc bonusů a po mě potopa", evidentně to nemůže a nebude vypadat jinak. Může to znít jako offtopic, jen jsem chtěl říct, že jen o refaktoringu kódu (což je samo sebou v tomto případě ultra challenge) to není, jsou tam ještě daleko vyšší výzvy.

Stále chápu, že ozdravit tuhle mizérii pro někoho to může být opravdu výzva. Lidé dělají různé věci, třeba běhají ultramaratony do kopce, chodí po horkém uhlí nebo v největší zimě plavou ve Vltavě, tak co já vím...

Re:Nový projekt vs. cizí kód
« Odpověď #81 kdy: 14. 09. 2020, 12:48:56 »
...

Ten software "tam" uz vznikal? Nebo "tam" byl predan na udrzbu (a rozvoj)?

To byva taktika jak donutit zakaznika aby zaplatil prepis...
  • Poradim at si snizi naklady offshoringem
  • Az zjisti, ze naklady jsou o trosku nizsi, ale nic mu nefunguje tak mu nabidnu, ze to predelam...
  • profit

To je prave to co tady resim.
Jednak to vede k tomu, ze se snizuje tlak na kvalitu tady, protoze "stejne to budeme za chvilku predelavat"...
a jednak to dela spatnou povest vyvojarum tam... protoze, z toho za par susni proste bic neupletes.... Nic se nenaucis... renome si nezlepsis... a priste zas nic nevydelas...

Je to takovy moderni kolonialismus.


Re:Nový projekt vs. cizí kód
« Odpověď #82 kdy: 14. 09. 2020, 13:57:46 »
...
To je prave to co tady resim.
...
Ale ty jsi se ptal na preference vývojářů. Tahleta špinavá taktika je spíš manažerské rozhodnutí.

Re:Nový projekt vs. cizí kód
« Odpověď #83 kdy: 14. 09. 2020, 14:01:32 »
Ten software "tam" uz vznikal? Nebo "tam" byl predan na udrzbu (a rozvoj)?

100% to nevím - byl to starý projekt, ale z toho co jsem slyšel se domnívám, že řízení projektu a snad i nějaká analýza byly "tady" a implementace předána "tam".

Re:Nový projekt vs. cizí kód
« Odpověď #84 kdy: 14. 09. 2020, 14:10:25 »
...
To je prave to co tady resim.
...
Ale ty jsi se ptal na preference vývojářů. Tahleta špinavá taktika je spíš manažerské rozhodnutí.

Pravda ze sem chtel resil predevsim tu motivaci odspodu.
To manazerske rozhodnuti je ale vyvojari vitano a podporovano (vetsinou) a proto tam vidim souvislost.

Nevim uplne co je pricina a nasledek...
Jestli programatori nechteji delat na legacy a proto nejdou sehnat lidi a tak se porad offshoruje...
Nebo jestli manazeri tlaci na offshoring kvuli vetsim ziskum za vyvoj noveho a proto vyvojari zanedbavaji kvalitu, protoze vedi ze to nebudou muset udrzovat...



Re:Nový projekt vs. cizí kód
« Odpověď #85 kdy: 14. 09. 2020, 14:15:17 »
řízení projektu a snad i nějaká analýza byly "tady" a implementace předána "tam".

Očividně to zde budoucí vlastník kódu moc neřídil, když dopustil takovou implementaci.

BoneFlute

  • *****
  • 1 987
    • Zobrazit profil
Re:Nový projekt vs. cizí kód
« Odpověď #86 kdy: 14. 09. 2020, 14:45:55 »
Dovolte mi menší offtopic, ze zvědavosti:

Architektura stála na dvou vrstvách. JSP stránky a PL/SQL procedury v oracle databázi.

...

Databáze (PL/SQL) ... přes SOAP někam posílala data (!!) a posílala i třeba e-mailové notifikace.
V čem vidíš zrovna v tomto problém?

Re:Nový projekt vs. cizí kód
« Odpověď #87 kdy: 14. 09. 2020, 14:48:45 »
...
To je prave to co tady resim.
...
Ale ty jsi se ptal na preference vývojářů. Tahleta špinavá taktika je spíš manažerské rozhodnutí.

Pravda ze sem chtel resil predevsim tu motivaci odspodu.
To manazerske rozhodnuti je ale vyvojari vitano a podporovano (vetsinou) a proto tam vidim souvislost.

Nevim uplne co je pricina a nasledek...
Jestli programatori nechteji delat na legacy a proto nejdou sehnat lidi a tak se porad offshoruje...
Nebo jestli manazeri tlaci na offshoring kvuli vetsim ziskum za vyvoj noveho a proto vyvojari zanedbavaji kvalitu, protoze vedi ze to nebudou muset udrzovat...
Ještě je tu třetí možnost. O nějaký tlak na vývoj nového nejde. A je to akorát důsledek krátkodobého tlaku na minimální cenu, bez nějaké dlouhodobější vize.

Re:Nový projekt vs. cizí kód
« Odpověď #88 kdy: 14. 09. 2020, 15:12:08 »
...
To je prave to co tady resim.
...
Ale ty jsi se ptal na preference vývojářů. Tahleta špinavá taktika je spíš manažerské rozhodnutí.

Pravda ze sem chtel resil predevsim tu motivaci odspodu.
To manazerske rozhodnuti je ale vyvojari vitano a podporovano (vetsinou) a proto tam vidim souvislost.

Nevim uplne co je pricina a nasledek...
Jestli programatori nechteji delat na legacy a proto nejdou sehnat lidi a tak se porad offshoruje...
Nebo jestli manazeri tlaci na offshoring kvuli vetsim ziskum za vyvoj noveho a proto vyvojari zanedbavaji kvalitu, protoze vedi ze to nebudou muset udrzovat...
Ještě je tu třetí možnost. O nějaký tlak na vývoj nového nejde. A je to akorát důsledek krátkodobého tlaku na minimální cenu, bez nějaké dlouhodobější vize.

Ale to uz potom nema nic spolecneho s tou spinavou managerskou taktikou ne?

Re:Nový projekt vs. cizí kód
« Odpověď #89 kdy: 14. 09. 2020, 15:22:54 »
Dovolte mi menší offtopic, ze zvědavosti:

Architektura stála na dvou vrstvách. JSP stránky a PL/SQL procedury v oracle databázi.

...

Databáze (PL/SQL) ... přes SOAP někam posílala data (!!) a posílala i třeba e-mailové notifikace.
V čem vidíš zrovna v tomto problém?

Za me teda:
1. (subjektivne) Nemam rad ani JSP ani PL/SQL ... nechtel bych s tim pracovat takze bych to tak ani nenavrhoval... ;-)
2. (Snad objektivne) Vendor lock-in. Business logika by mela byt implementovana v prenositelne forme jinak to prodrazi prechod na jinou DB.