<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Tomas Maconko - Tekstai</title>
  <link>https://maconko.tech/lt/blog/</link>
  <description>Praktiniai tekstai apie programinės įrangos architektūrą, veiklos srities modeliavimą, modernizavimą ir techninę lyderystę.</description>
  <language>lt</language>
  <item>
    <title>Ką supratau dirbdamas konsultantu ir komandos viduje</title>
    <link>https://maconko.tech/lt/blog/contractors-enter-employees-live-with-it/</link>
    <guid isPermaLink="true">https://maconko.tech/lt/blog/contractors-enter-employees-live-with-it/</guid>
    <pubDate>Wed, 26 Aug 2026 09:00:00 GMT</pubDate>
    <description>Dirbdamas konsultantu ir komandos viduje pamačiau, kodėl žmonės iš šalies greičiau pastebi problemas, o darbuotojai geriau supranta jų kontekstą.</description>
    <content:encoded><![CDATA[<img src="https://maconko.tech/blog-images/contractors-veni-vidi-vici.webp" alt="Išorės specialistas išeina pro vartus, o darbuotojas lieka prižiūrėti kelią ir jo įrangą" loading="lazy"/><p>Didelę savo karjeros dalį derinau konsultavimą su darbu įmonių viduje. Į kai kurias organizacijas atėjau kaip žmogus iš šalies. Kitose dirbau pakankamai ilgai, kad pats gyvenčiau su komandos sprendimais, incidentais ir laikinais sprendimais.</p>
<p>Todėl išorės specialistų ir darbuotojų skirtumą mačiau iš abiejų pusių. Pokalbis apie juos dažniausiai prasideda nuo kainos. Konsultanto dienos įkainis dar iki pietų atrodo didelis. Darbuotojo kaina pasislepia atlyginime, atrankoje, mokymuose, įrangoje, vadovų laike ir keliuose skirtinguose biudžetuose. Palyginti lengva. Tikrovė, kaip visada, kiek kitokia.</p>
<p>Tada prasideda stereotipai. Išorės specialistai dirba greitai, kalba tiesiai ir siekia rezultato. Darbuotojai geriau žino veiklos sritį ir lieka pakankamai ilgai, kad gyventų su savo sprendimų pasekmėmis.</p>
<p>Abiejuose teiginiuose yra tiesos. Tačiau nė vienas nepasako visko.</p>
<blockquote>
<p>Mano patirtis tokia: išorės specialistai dažnai geriau moka įeiti į sistemą. Darbuotojai – joje gyventi.</p>
</blockquote>
<p>Tai nėra žmonių vertinimas. Skirtingos pozicijos tiesiog leidžia matyti skirtingus dalykus. Kaip konsultantas atsinešu kitose organizacijose matytą patirtį. Kaip komandos narys prisimenu būtent šios organizacijos istoriją.</p>
<p>Vieno požiūrio neužtenka.</p>
<h2>Ką pamatau atėjęs iš šalies</h2>
<p>Atėjęs į naują organizaciją turiu vieną nesąžiningą pranašumą: ji man dar neatrodo normali. Dvylika patvirtinimų, diegimas su šešiais žmonėmis viename skambutyje, paslauga, kurios niekas nenori liesti, ir per tris vadovų grupes keliaujantis sprendimas vis dar atrodo keistai.</p>
<p>Dirbdamas įmonės viduje galiu matyti tas pačias problemas. Tačiau jau žinau, kurias verta kelti, kurios pareikalaus mėnesio pokalbių, o kurias visi išmoko apeiti. Vakarykštis laikinas sprendimas tampa šiandienos procesu. Dar kiek laiko – ir procesas gauna trumpinį bei tampa oficialus.</p>
<p>Darbas skirtinguose projektuose padeda greičiau atpažinti pasikartojančius dalykus. Eiles, neaiškią atsakomybę, architektūros ribas ar procesą, kurio paskirties jau niekas gerai neprisimena.</p>
<p>Žinoma, kiekviena organizacija yra unikali. Tik tas unikalumas stebėtinai dažnai atrodo pažįstamas.</p>
<p>Greitai pastebėti modelį yra naudinga. Bet tada turiu sulėtėti.</p>
<p>Modelis dar nėra paaiškinimas. Keista tikrinimo taisyklė gali saugoti svarbią sutarties išimtį. Rankinis patvirtinimas gali būti atsiradęs iš realios patirties. Paini sistemos riba gali atitikti verslo ribą, kurios kode nesimato.</p>
<p>Galiu greitai atpažinti problemą ir vis tiek nežinoti viso sprendimui reikalingo konteksto.</p>
<p>Su sistema ilgai dirbę žmonės turi tai, ko mano plati patirtis nepakeis. Jie prisimena, kuriam klientui reikia keisto veikimo, kokia migracija jau buvo bandyta ir kodėl gražus techninis pasiūlymas pasikeitė susidūręs su kasdieniu darbu.</p>
<p>Dalis šių žinių vis dar svarbios. Dalis tėra senas įprotis. Sunkiausia atskirti viena nuo kito.</p>
<h2>Iš šalies galiu kalbėti tiesiau</h2>
<p>Mano komanda vertinama ir už tai, kad kalbame tiesiai. Keliame klausimus, prie kurių kiti jau priprato. Peržiūrime seniai priimtus sprendimus. Pasakome, kai siūloma kryptis neatlaiko susidūrimo su realia sistema.</p>
<p>Iš šalies tai daryti lengviau. Kaip konsultantui man reikia saugoti mažiau karjeros kelių. Turiu mažiau senų konfliktų. Ir mažiau priežasčių apsimesti, kad vadovo mėgstama idėja yra tik „perspektyvi kryptis, kurią dar reikėtų išsamiau patikrinti“.</p>
<p>Kartais naudingiausia tiesiog pasakyti: nemanau, kad ši kryptis duos mums reikiamą rezultatą.</p>
<p>Tai nereiškia, kad konsultantai savaime drąsesni, o darbuotojai atsargesni. Tiesiog skiriasi santykiai. Darbuotojai žino pasiūlymo istoriją. Jie taip pat žino, kad po šiandienos ginčo rytoj vis tiek reikės dirbti kartu.</p>
<p>Išorės specialistas turi daugiau vietos tiesumui. Tačiau vien tiesumo neužtenka. Reikia ir smalsumo. Turiu klausytis žmonių, kurie išmano veiklos sritį, žino jos ribas ir tęs darbą man išėjus.</p>
<p>Mano nepriklausomybė vertingiausia tada, kai po mano darbo organizacija gali daugiau pati.</p>
<p>Šiuo atveju tiesumas nėra charakterio savybė. Tai dalis darbo.</p>
<h2>Vienas projektas pakeitė mano požiūrį į tęstinumą</h2>
<p>Paprastas darbo su išorės specialistais modelis atrodo taip: komanda ateina, padaro sutartą projektą, pristato rezultatą ir perduoda jį darbuotojams. Projektas baigtas. Gamybinė aplinka, kaip visada nepaisanti plano datų, tik pradeda juo domėtis.</p>
<p>Esu matęs tokį modelį. Tačiau vienas nesenas projektas parodė ir kitą variantą. Mums mokėjo už faktiškai dirbtą laiką, bet atsakomybė buvo ilgalaikė. Likome su savo sprendimais. Matėme jų pasekmes. Keitėme kryptį, kai tikrovė nesutiko su planu.</p>
<p>Popieriuje buvome išorės specialistai. Praktiškai – ilgalaikiai šeimininkai.</p>
<p>Tai pakeitė mano požiūrį į tęstinumą. Jis dažnai siejamas su darbo sutartimi. Tačiau darbuotojas gali pereiti į kitą komandą, būti paaukštintas arba išeiti. Konsultantas gali likti daug metų ir prižiūrėti kelias tos pačios sistemos kartas.</p>
<p>Ženklelis puikiai atidaro biuro duris. Atsakomybę jis prognozuoja prasčiau.</p>
<p>Daugiau pasako darbo modelis. Kas atsako už rezultatą? Kas gauna žinias iš gamybinės aplinkos? Kas gali priimti sprendimus? Kas lieka šalia, kai pirmą prielaidą tenka keisti?</p>
<p>Jei konsultantai laikomi laikinomis rankomis, jų atsakomybė irgi bus laikina. Jei jie gauna kontekstą, pasitikėjimą ir atsakomybę, skirtumas tarp išorinės ir vidinės komandos tampa daug mažesnis.</p>
<h2>Greitis veikia geriau, kai yra tęstinumas</h2>
<p>Dažniausiai mane kviečia tada, kai organizacijai reikia pajudėti. Migracijai trūksta krypties. Architektūros sprendimas lieka nepriimtas. Komandai reikia gebėjimo, kurio ji negali greitai užsiauginti.</p>
<p>Toks spaudimas gali būti naudingas. Iš šalies dažniau klausiu, kurie apribojimai vis dar tikri. Dirbdamas viduje geriau matau priklausomybes, žmones, istoriją ir galimas sprendimo pasekmes.</p>
<p>Todėl <em>veni, vidi, vici</em> skamba viliojančiai. Be to, lotynų kalba puikiai atrodo vadovų skaidrėse. Tačiau tai nėra visas darbo modelis.</p>
<p>Greitis svarbus, kai reikia sprendimo ar aiškaus rezultato. Tęstinumas svarbus, kai tą rezultatą reikės prižiūrėti, paaiškinti ir vėliau keisti. Geras projektas daro abu: padeda judėti dabar ir palieka komandą pasiruošusią tęsti savarankiškai.</p>
<p>Tokia pusiausvyra padeda ir darbuotojams. Jie saugo kontekstą ir galvoja apie pasekmes. Žmogus iš šalies gali padėti šias žinias paversti laiku priimtu sprendimu.</p>
<p>Viena pusė suteikia greitį. Kita padeda jį išlaikyti.</p>
<p>Geri konsultantai neatmeta rytojaus vien todėl, kad šiandien skubu. Geri darbuotojai neatideda šiandienos vien todėl, kad galvoja apie rytojų.</p>
<h2>Šiose pozicijose kitaip matau kainą</h2>
<p>Kaip konsultantas žinau, kad mano kainą sunku ignoruoti. Valandos užrašytos. Įkainis matomas. Sąskaita ateina. Joje kiekvienas pokalbis, tyrimas ar padarytas darbas turi savo skaičių.</p>
<p>Darbuotojo kaina ne tokia aiški. Ji mėgsta paskirstytą architektūrą. Atlyginimas yra tik viena dalis. Dar yra atranka, įvedimas į darbą, įranga, vadovų laikas, vidinis derinimas ir laikas, per kurį žmogus pradeda gerai dirbti.</p>
<p>Tačiau į darbuotoją investuojama ilgam. Veiklos srities žinios, pasitikėjimas ir sistemos atmintis auga metų metus. Jų vertė retai matoma vieno projekto biudžete.</p>
<p>Naujas langelis organizacijos schemoje dar nereiškia, kad darbas pajudės. Lygiai taip pat didelis konsultanto įkainis dar nereiškia, kad jis turi reikiamą patirtį.</p>
<p>Darbuotojams reikia teisės veikti ir tinkamos aplinkos. Konsultantams reikia konteksto ir pakankamai laiko, kad jų indėlis išliktų.</p>
<p>Todėl konsultanto dienos įkainio negalima tiesiog lyginti su darbuotojo atlyginimu. Vienoje pusėje yra sąskaita. Kitoje – tik dalis visos kainos.</p>
<p>Svarbiau klausti ne kiek kainuoja viena diena. Reikia klausti, kiek kainuoja pasiekti rezultatą, kiek ilgai jis bus naudingas ir kas liks, kai darbą atlikę žmonės išeis.</p>
<p>Brangus konsultantas, padėjęs greičiau priimti svarbų sprendimą, gali kainuoti mažiau nei ilgas laukimas. Stiprus darbuotojas, kuris saugo žinias ir ilgainiui gerina tą sprendimą, gali būti vertesnis už trumpą projektą.</p>
<p>Kaina matoma. Švaistymas moka palaukti.</p>
<h2>Dabar ieškau to, ko organizacijai trūksta</h2>
<p>Kartais organizacija samdo išorės specialistus darbui, kuriam reikia nuolatinio šeimininko. Jie gali suteikti trūkstamų rankų, tačiau kiekvienam projektui pasibaigus dalis žinių išeina kartu su jais.</p>
<p>Kartais organizacija samdo darbuotojus, nors jai reikia trumpos, tikslios pagalbos arba naujo požiūrio. Darbuotojas gali tapti ilgalaikiu šeimininku. Tačiau jam reikia laiko suprasti aplinką, žmones ir istoriją.</p>
<p>Todėl pirmiausia klausiu: ko trūksta?</p>
<p>Ar reikia žmogaus, kuris tą patį modelį jau matė kitur? Žmogaus, galinčio tiesiai suabejoti tuo, kas tapo įprasta? Greičio siekiant aiškaus rezultato? O gal reikia gilių veiklos srities žinių, ilgalaikės atsakomybės ir žmogaus, kuris vis dar bus čia priimant penktą to paties sprendimo versiją?</p>
<p>Kartais reikia abiejų. Konsultantai pastebi tai, kas darbuotojams tapo įprasta. Darbuotojai paaiškina, kurios keistos sistemos vietos saugo tikrą verslo istoriją.</p>
<p>Vieni suteikia naują požiūrį. Kiti saugo kontekstą.</p>
<p>Tai veikia, kai nė viena grupė nelaikoma vieninteliu tiesos šaltiniu. Sutarties rūšis savaime negarantuoja gero rezultato. Ir konsultantai, ir darbuotojai gali dalytis žiniomis bei stiprinti atsakomybę, jei jiems leidžiama dirbti kaip vienai komandai.</p>
<p>Sutarties rūšis tėra metaduomenys. Atsakomybei vis tiek reikia architektūros.</p>
<p>Darbas abiejose pusėse mane išmokė, kad ateiti ir pasilikti yra skirtingi gebėjimai. Stiprios komandos padeda atėjusiems suprasti, ką reiškia pasilikti. O pasilikusiems – išgirsti, ką gali parodyti naujas žmogus.</p>]]></content:encoded>
  </item>
  <item>
    <title>Sistema keista ne be priežasties</title>
    <link>https://maconko.tech/lt/blog/the-system-is-strange-for-a-reason/</link>
    <guid isPermaLink="true">https://maconko.tech/lt/blog/the-system-is-strange-for-a-reason/</guid>
    <pubDate>Mon, 10 Aug 2026 09:00:00 GMT</pubDate>
    <description>Brandžioje programinėje įrangoje sukaupta daugybė sprendimų ir apribojimų. Prieš keisdami ją švaresne, turime suprasti, kokias žinias ketiname ištrinti.</description>
    <content:encoded><![CDATA[<img src="https://maconko.tech/blog-images/the-system-is-strange-for-a-reason.webp" alt="Nespalvota karikatūra, kurioje santechnikas siūlo perstatyti visą butą, nors varva tik vienas čiaupas" loading="lazy"/><p>Prie komandos prisijungia naujas inžinierius ir susiduria su nepažįstama sistema. Architektūra atrodo pasenusi, o keli sprendimai visiškai neatitinka to, kaip jis tokią sistemą kurtų šiandien.</p>
<p>Paprastai netrunka atsirasti pasiūlymui viską pakeisti švaresniu sprendimu. Sistema per sudėtinga, jos ribos neteisingos, technologijos senos. Nauja architektūra būtų lengviau suprantama ir geriau pasiruošusi ateičiai.</p>
<p>Toks pasiūlymas dažniausiai pristatomas kaip techninis patobulinimas. Kartais taip ir yra. Tačiau kartais tikroji priežastis daug paprastesnė: perkurti sistemą patraukliau nei skirti laiko jai suprasti.</p>
<blockquote>
<p>Naujas sprendimas visada atrodo švarus, nes dar nesusidūrė su realybe.</p>
</blockquote>
<h2>Santechnikas, norintis perstatyti jūsų butą</h2>
<p>Įsivaizduokite, kad jūsų bute pradeda varvėti čiaupas. Iškviečiate santechniką ir tikitės, kad jis apžiūrės čiaupą, pakeis susidėvėjusią detalę ir paliks jį veikiantį.</p>
<p>Vietoje to santechnikas paaiškina, kad visa vamzdynų sistema pasenusi. Jis siūlo pakeisti visus vamzdžius, perkelti vonios kambarį, atverti kelias sienas ir sumontuoti modernius įrenginius, apie kuriuos neseniai mokėsi. Tuo pačiu vamzdyną būtų galima padalyti į kelias savarankiškai prižiūrimas dalis.</p>
<p>Daugumai mūsų tai būtų aiškus pavojaus signalas. Paklaustume, kaip varvantis čiaupas virto viso buto rekonstrukcija, suabejotume kaina bei nepatogumais ir tikriausiai išsikviestume kitą santechniką.</p>
<p>Programinės įrangos kūrime panašaus masto pasiūlymai vertinami visiškai rimtai. Vietinė problema tampa įrodymu, kad reikia perrašyti visą programą. Sudėtingas diegimas virsta platformos iniciatyva. Nepatogi riba tampa priežastimi skaidyti sistemą į paslaugas. Siūlomas sprendimas gerokai perauga pradinę problemą, tačiau organizacija vis tiek suburia darbo grupę jam nagrinėti.</p>
<h2>Programinėje įrangoje rekonstrukcija atrodo pigi</h2>
<p>Fizinės rekonstrukcijos kaina matoma iš karto: medžiagos, leidimai, išgriautos sienos ir kasdieniai nepatogumai. Programinė įranga sukuria pavojingą iliuziją, nes kodas neturi akivaizdžios medžiagų kainos. Gali pasirodyti, kad pakanka paskirti kelis inžinierius ir palaukti keletą mėnesių.</p>
<p>Tačiau programinės įrangos perrašymas neprasideda nuo nulio. Jis prasideda nuo daugybės metų elgsenos, kurią reikia iš naujo atrasti ir atkurti.</p>
<p>Tikroji kaina apima nedokumentuotas taisykles, duomenų migravimą, lygiagretų dviejų sistemų veikimą, integracijas, veiklos procedūras ir elgseną, nuo kurios tyliai priklauso klientai. Šios išlaidos išryškėja tada, kai naujoji sistema susiduria su ta pačia realybe, dėl kurios senoji tapo sudėtinga.</p>
<p>Esama sistema atrodo netvarkinga, nes visi jos kompromisai jau matomi. Siūloma sistema atrodo elegantiška, nes daugumos jos kompromisų dar niekas neatrado.</p>
<h2>Veikianti programinė įranga nusipelno pagarbos</h2>
<p>Programinės įrangos inžinieriai metų metus kartoja dvi frazes:</p>
<blockquote>
<p>“If it works, don’t touch it.”</p>
</blockquote>
<blockquote>
<p>“Working software is good software.”</p>
</blockquote>
<p>Nė viena iš jų nėra teisinga visais atvejais. Programinė įranga gali veikti, bet būti nesaugi, nepakeliamai brangi arba nebegalėti palaikyti tolesnių verslo poreikių. Atsisakyti bet kokio pakeitimo nėra inžinerinė disciplina – kartais tai tiesiog baimė.</p>
<p>Vis dėlto abi frazės perduoda svarbų perspėjimą. Veikianti programinė įranga jau susidūrė su tikrais klientais, duomenimis, gedimais, integracijomis ir organizaciniais apribojimais, kurių joks architektūros pasiūlymas negali iki galo atkartoti.</p>
<p>Tai nereiškia, kad jos negalima liesti. Tai reiškia, kad ji yra įrodymas.</p>
<p>Prieš atsisakydami veikiančios sistemos turime paaiškinti, ką laimėsime ir kuo rizikuosime. „Naujas sprendimas bus švaresnis“ nepakanka. Švara be konteksto dažnai tėra problemos nesupratimas.</p>
<h2>Keistame kode gali slypėti pamirštos žinios</h2>
<p>Daugelį metų veikiančios sistemos kaupia ne tik techninę skolą. Jos kaupia sprendimus.</p>
<p>Tikrinimo taisyklė gali egzistuoti todėl, kad išorinė sistema kadaise atsiuntė sugadintus duomenis. Besidubliuojanti darbo eiga gali atspindėti skirtingas sutarties sąlygas. Keistas laukas gali išlaikyti suderinamumą, o ne vietoje atrodanti riba – atspindėti atsakomybę už sistemos veikimą.</p>
<p>Kai kurie iš šių sprendimų gali būti nebeaktualūs. Kiti galbūt niekada nebuvo geri. Tačiau vien perskaitę kodą ir pastebėję, kad patys būtume jį parašę kitaip, skirtumo nesužinosime.</p>
<p>Per daug tobulinimo pasiūlymų kiekvieną esamą apribojimą iš karto laiko klaida. Komanda pašalina nepatogias dalis jų neištyrusi, o vėliau sužino, kad būtent tas nepatogumas saugojo svarbią informaciją.</p>
<p>Brandžios sistemos nelaiko visų žinių viename dokumente. Jos išbarstytos kode, testuose, duomenyse, palaikymo procedūrose, klientų lūkesčiuose ir sistemą prižiūrinčių žmonių atmintyje.</p>
<p>Perrašydami tokią sistemą keičiame ne vien technologiją. Bandome perkelti organizacijos atmintį iš formos, kurios iki galo nesuprantame, į dar neišbandytą sprendimą.</p>
<h2>Naujos pradžios patrauklumas</h2>
<p>Priežiūrai reikia nuolankumo. Inžinierius turi įžengti į kitų žmonių sukurtą sistemą, pripažinti, kad daugelio sprendimų priežastys nėra akivaizdžios, ir pirmiausia skirti laiko mokymuisi.</p>
<p>Perrašymas siūlo patrauklesnį vaidmenį. Užuot tyrinėjęs esamą sistemą, inžinierius tampa naujosios architektu. Jo mėgstami modeliai tampa standartu, o jo vardas susiejamas su matomu pokyčiu.</p>
<p>Tai nereiškia, kad kiekvienas perrašymas yra sąmoningas pripažinimo siekis. Paskata subtilesnė: organizacijos daug garsiau švenčia paleidimus ir naujas platformas nei dar vienus stabilaus veikimo metus.</p>
<p>Priežiūros pakeitimas gali užkirsti kelią problemai, kurios niekas niekada nepastebės. Perrašymas sukuria diagramas, planus ir naujas repozitorijas. Vienas atrodo kaip smulki užduotis. Kitas – kaip pažanga.</p>
<p>Šis skirtumas veikia mūsų sprendimus. Asmeninis pasirinkimas tampa architektūros principu. Nepatogumas skaitant svetimą kodą tampa įrodymu, kad jo neįmanoma prižiūrėti. Noras dirbti su naujesne technologija pavirsta verslo argumentu apie būsimą mastelį.</p>
<p>Galiausiai mintis „aš taip nekurčiau“ tyliai virsta teiginiu „šios sistemos neturėtų būti“.</p>
<h2>Kartais perkurti yra teisinga</h2>
<p>Kai kurias sistemas reikia pakeisti. Perrašymas gali būti pagrįstas, kai sistema nebegali patenkinti svarbių poreikių, jos technologijos nebepalaikomos, saugumo rizikos negalima pašalinti saugiai arba prasmingi pakeitimai tapo nepagrįstai brangūs.</p>
<p>Skirtumas tas, kad pagrįstas perrašymas prasideda nuo įrodytos problemos, o ne estetinio nusivylimo. Jis paaiškina, kodėl laipsniško tobulinimo nepakanka, ir palygina visą pakeitimo kainą su tolesniu esamos sistemos vystymu.</p>
<p>Atsakingame pasiūlyme migravimas yra architektūros dalis. Jame numatyta, kaip judės duomenys ir integracijos, kaip bus lyginama elgsena ir kaip pokyčio metu veiks abi sistemos. Nebūtina išsaugoti kiekvieno istorinio sprendimo, tačiau prieš pašalinant svarbią elgseną reikia ją suprasti.</p>
<p>Perrašymas neturėtų būti pabėgimas nuo sudėtingumo. Tai turi būti apgalvotas atsakas į sudėtingumą, kurį suprantame pakankamai gerai, kad galėtume keisti.</p>
<h2>Prieš patvirtinant rekonstrukciją</h2>
<p>Dideliems kodo pertvarkymams ir perrašymams neužtenka pažadų apie švaresnį kodą bei greitesnį kūrimą. Prieš atveriant sienas komanda turi atsakyti:</p>
<ul>
<li>Kokią išmatuojamą problemą sprendžiame?</li>
<li>Ar galime ją pagerinti palaipsniui?</li>
<li>Kuriuos esamus apribojimus patikrinome, o kuriuos tik numanome?</li>
<li>Kokią elgseną naujoji sistema privalo išsaugoti?</li>
<li>Ar vertinimas apima migravimą, lygiagretų veikimą, veiklos žinių kaupimą ir senosios sistemos išjungimą?</li>
<li>Ar vis dar palaikytume šį pasiūlymą, jei nuopelnai už jo įgyvendinimą atitektų kitam?</li>
</ul>
<p>Paskutinis klausimas gali būti nepatogus. Jei dingus pripažinimui pasiūlymas tampa mažiau patrauklus, problema gali būti ne vien techninė.</p>
<p>Programinę įrangą reikia keisti tada, kai to reikalauja problema, o pakeisti visą sistemą – kai įrodymai rodo, kad tai geriau už tolesnį jos vystymą.</p>
<p>Tačiau nesupratimas nėra įrodymas, modernumas nėra verslo rezultatas, o ambicija nėra architektūros strategija.</p>
<p>Prieš perstatydami butą sutaisykite čiaupą – arba bent jau supraskite, kodėl vamzdžiai nutiesti būtent ten.</p>]]></content:encoded>
  </item>
  <item>
    <title>Sudėtingiausia dalis slypi dar iki kodo</title>
    <link>https://maconko.tech/lt/blog/hello-world/</link>
    <guid isPermaLink="true">https://maconko.tech/lt/blog/hello-world/</guid>
    <pubDate>Tue, 21 Jul 2026 09:00:00 GMT</pubDate>
    <description>Per dešimt metų skirtingose įmonėse, projektuose ir komandose vis kartojosi tas pats dalykas - dauguma IT problemų nėra technologinės.</description>
    <content:encoded><![CDATA[<img src="https://maconko.tech/blog-images/tomas-maconko-portrait.webp" alt="Tomo Maconko portretas" loading="lazy"/><p>Prieš dešimt metų dalyvavau Greg Young, Alberto Brandolini ir kitų patyrusių praktikų mokymuose. Vėliau dirbau skirtingose įmonėse, su įvairiais produktais ir komandomis. Technologijos keitėsi, tačiau sudėtingiausios problemos dažnai likdavo stebėtinai panašios.</p>
<p>Vis kartojosi vienas dalykas: dauguma IT problemų nėra vien technologinės.</p>
<blockquote>
<p>Parašyti kodą dažnai yra paprastesnė darbo dalis. Sudėtingiausi sprendimai priimami dar iki kodo.</p>
</blockquote>
<p>Jie atsiranda bandant suprasti problemą, susitarti dėl bendros kalbos, aiškiai paskirstyti atsakomybes ir nuspręsti, su kokiais kompromisais komanda pasirengusi gyventi.</p>
<h2>Tos pačios problemos skirtingose sistemose</h2>
<p>Ir augančiose įmonėse, ir didelėse organizacijose ne kartą mačiau situacijas, kai:</p>
<ul>
<li>komandos nariai sunkiai susikalba, todėl auga silosai ir priklausomybės;</li>
<li>architektūra nebeatitinka verslo realybės, sudėtingėja ir nebesukuria pakankamai vertės;</li>
<li>sprendimų priėmimas užtrunka, o jų įgyvendinimas kainuoja daugiau nei tikėtasi;</li>
<li>techninės lyderystės trūkumas sudėtingus sistemų pokyčius paverčia pernelyg rizikingais;</li>
<li>produkto ir inžinerijos kryptys pradeda tolti viena nuo kitos.</li>
</ul>
<p>Produktai buvo skirtingi. Žmonės buvo skirtingi. Požymiai dažnai buvo tie patys.</p>
<p>Turėjau galimybę ir pasitikėjimą ne tik kurti sistemas kartu su komandomis, bet ir padėti suprasti, kur iš tiesų stringa jų darbas. Kartais apribojimas slypi kode. Tačiau neretai jis atsiranda procesuose, komunikacijoje, neaiškioje atsakomybėje ar neišspręstame pasirinkime tarp kelių pagrįstų variantų.</p>
<h2>Technologija neišsprendžia kiekvieno apribojimo</h2>
<p>Ne kiekvienai sudėtingai sistemai reikia:</p>
<ul>
<li>mikropaslaugų ar įvykių šaltinio modelio;</li>
<li>DI agentų;</li>
<li>Kubernetes;</li>
<li>įmonės masto architektūros programos.</li>
</ul>
<p>Šie sprendimai savaime nėra blogi. Jie naudingi, kai atitinka problemą. Tačiau pasirinkti dar gerai nesupratus problemos jie gali sukurti dar vieną sudėtingumo sluoksnį ir nepašalinti tikrojo apribojimo.</p>
<p>Kartais geriausias sprendimas yra gerai sukurtas monolitas. Kartais reikia aiškesnės ribos, mažesnio sprendimo arba pokalbio tarp žmonių, kurie iki šiol rėmėsi skirtingomis prielaidomis.</p>
<h2>Apie ką rašysiu</h2>
<p>Šiame tinklaraštyje nagrinėsiu sudėtingąją programinės įrangos kūrimo dalį, kuri retai telpa į vieną įgyvendinimo užduotį:</p>
<ul>
<li>architektūrą ir veiklos sričių ribas;</li>
<li>paskirstytas sistemas ir realaus laiko duomenis;</li>
<li>modernizavimą be nereikalingų perrašymų;</li>
<li>inžinerinę lyderystę ir bendradarbiavimą tarp komandų;</li>
<li>kur DI padeda inžineriniam darbui, o kur sukuria naujų problemų;</li>
<li>pamokas iš sprendimų, kurie pasiteisino, ir tų, kurie nepasiteisino.</li>
</ul>
<p>Pavyzdžiai bus paremti tikromis sistemomis ir realiomis darbo aplinkomis, prireikus pakeičiant atpažįstamas detales. Tikslas nėra propaguoti vieną architektūros stilių. Tikslas – aiškiau parodyti problemą, kompromisus ir sprendimą.</p>
<p>Nuo to ir verta pradėti: pirmiausia suprasti, kas iš tiesų trukdo, ir tik tada rinktis technologiją.</p>
<p>Turbūt apie tokius dalykus artimiausiu metu čia ir rašysiu: apie išspręstas (ir, dėja, neišspręstas) problemas, technologijas, komandas, architektūrą, DI ir pamokas iš realių projektų.</p>
<p>O jus kviečiu sekti, klausti, komentuoti ar tiesiog dalintis savo istorijomis.</p>]]></content:encoded>
  </item>
  <item>
    <title>Nustokite laukti, pradėkite prisidėti – kaip spartinti rezultatų pristatymą peržengiant komandų ribas</title>
    <link>https://maconko.tech/lt/blog/stop-waiting-start-contributing/</link>
    <guid isPermaLink="true">https://maconko.tech/lt/blog/stop-waiting-start-contributing/</guid>
    <pubDate>Tue, 21 Jul 2026 09:00:00 GMT</pubDate>
    <description>Kaip tarpkomandinių perdavimų pakeitimas tiesioginiu prisidėjimu padidino pristatymo spartą, sustiprino atsakomybę už visą rezultatą ir padėjo dalytis žiniomis.</description>
    <content:encoded><![CDATA[<link rel="preload" as="image" href="/blog-images/customer-journey-railway.webp"/><p>Kai kurios rezultatų pristatymo problemos atrodo kaip pajėgumų trūkumas. Komanda negali judėti pirmyn, nes kita komanda dar nepridėjo API metodo, nepaskelbė įvykio ar neatvėrė reikalingo lauko. Antroji komanda užsiėmusi darbais, svarbesniais jos pačios tikslams, todėl prašymas laukia darbų sąraše.</p>
<p>Įprasta reakcija – eskaluoti, derėtis dėl prioritetų arba keisti planą. Kartais tai būtina. Tačiau keliose organizacijose radau kitą būdą, kuris buvo ir greitesnis, ir sveikesnis:</p>
<blockquote>
<p>Užuot prašę kitos komandos sukurti trūkstamą dalį, įgyvendinkite pakeitimą jos sistemoje patys ir paprašykite jį peržiūrėti.</p>
</blockquote>
<p>Tai nėra istorija apie bendradarbiavimo atsisakymą. Tai istorija apie eilėmis pagrįstų perdavimų pakeitimą bendru prisidėjimu.</p>
<p>Toliau pateikti pavyzdžiai yra sudėtiniai. Industrijos, sistemų ribos, įvykių sekos ir organizacinės detalės sąmoningai sujungtos arba pakeistos. Pats pristatymo modelis yra tikras, tačiau aprašymas nėra skirtas jokiai įmonei ar asmeniui atpažinti.</p>
<h2>Priklausomybė buvo eilė</h2>
<p>Įsivaizduokite produkto komandą, atsakingą už darbo eigą, kertančią kelias sistemas. Ji valdo orkestravimo sluoksnį, tačiau jai reikia galimybės iš kitos komandos prižiūrimos platformos.</p>
<p>Tokia priklausomybė dažnai atrodo taip:</p>
<ol>
<li>Produkto komanda suformuluoja prašymą.</li>
<li>Platformos komanda jį patikslina ir įvertina.</li>
<li>Prašymas konkuruoja su platformos komandos prioritetais.</li>
<li>Kažkas jį įgyvendina turėdamas tik dalį pradinio poreikio konteksto.</li>
<li>Produkto komanda integruoja pakeitimą ir pamato, kas buvo suprasta neteisingai.</li>
</ol>
<p>Nė vienas šio proceso žingsnis nėra nelogiškas. Kiekviena komanda optimizuoja savo darbo krūvį. Vėlavimas atsiranda tarp komandų: kontekstas perduodamas per užduotis, grįžtamasis ryšys ateina vėlai, o už visą rezultatą neatsako niekas.</p>
<p>Techninė priklausomybė yra reali, tačiau pristatymą labiausiai lėtina prisidėjimo modelis. Tik viena komanda turi teisę – arba jaučiasi turinti teisę – keisti konkretų kodą.</p>
<h2>Geležinkelis, optimizuotas jo operatoriams</h2>
<p>Įsivaizduokite visą kliento kelią kaip kelionę geležinkelių tinklu.</p>
<p>Keleivis yra kliento siekiamas rezultatas. Kiekviena stotis – sistema arba aiški veiklos srities riba, o skirtingi geležinkelių operatoriai – inžinerijos komandos – valdo skirtingas bėgių atkarpas. Kiekvienas operatorius prižiūri savo infrastruktūrą, nustato veiklos taisykles ir atsako už savo tinklo dalies saugumą.</p>
<p>Dabar įsivaizduokite, kad keleivis privalo persėsti kaskart, kai pasikeičia bėgių savininkas. Vienas operatorius nuveža jį iki savo ribos, perduoda kelionę ir laukia, kol kitas operatorius suplanuos kitą traukinį. Bėgiai fiziškai sujungti, tačiau veiklos modelis suskaldo kelionę.</p>
<p>Taip dažnai atrodo tradicinis darbas tarp komandų. Funkcionalumas juda iki vienos komandos sistemos ribos, tuomet tampa prašymu kitos komandos darbų sąraše ir keliauja toliau tik tada, kai ši komanda pasirengusi įgyvendinti savo dalį. Kiekviena vietinė atkarpa gali būti valdoma efektyviai, nors visa kelionė nuo pradžios iki pabaigos lieka lėta.</p>
<p>Prisidėjimo modelis labiau primena galimybę traukiniui tęsti kelionę kelių operatorių bėgiais pagal sutartas taisykles. Bėgių nuosavybė nesikeičia. Kiekvienas operatorius vis dar nustato savo saugumo standartus ir išlaiko sprendimo teisę dėl infrastruktūros. Tačiau kito operatoriaus traukinys gali naudotis bėgiais, jei atitinka šiuos standartus.</p>
<p><img src="/blog-images/customer-journey-railway.webp" alt="Geležinkelių tinklas, kuriame vienas kliento kelias kerta trims komandoms priklausančias sistemas, o jų nuosavybė ir veiklos taisyklės lieka vietinės"/></p>
<p>Programinėje įrangoje pull request yra prašymas įvažiuoti į bėgius. Automatiniai testai, architektūrinės taisyklės ir prižiūrėtojų peržiūra atlieka veiklos bei saugumo patikrų vaidmenį. Prisidedantis inžinierius perneša kliento rezultatą per ribą, užuot prašęs kitos komandos pradėti atskirą kelionę.</p>
<p>Keleiviui nesvarbu, kam priklauso kiekviena bėgių atkarpa – jam svarbu pasiekti tikslą. Taip pat ir klientui nesvarbu, kiek komandų valdo sistemas, veikiančias už konkrečios galimybės. Nuosavybė gali likti vietinė, net kai atsakomybė už visos kelionės užbaigimą apima kelis savininkus.</p>
<h2>Pasikartojantis modelis skirtingomis formomis</h2>
<p>Pirmą kartą šį modelį pastebėjau dirbdamas su kelių kanalų turinio platforma. Viena komanda valdė centrą, sinchronizuojantį įrašus su keliomis išorinėmis paskirties sistemomis. Reikėjo prijungti naują vidinę paskirties sistemą, tačiau ją kurianti komanda negalėjo suteikti prioriteto reikalingam API.</p>
<p>Laukiant viena komanda būtų likusi be darbo, o kita būtų turėjusi perprasti reikalavimus, už kuriuos pati neatsakė. Todėl pasiūlėme paprastesnį susitarimą: mūsų komanda įgyvendins API paskirties sistemos kode, o jos prižiūrėtojai paaiškins vietines taisykles ir išlaikys sprendimo teisę per kodo peržiūrą.</p>
<p>Pirmasis pull request užtruko ilgiau nei pakeitimas savo repozitorijoje. Reikėjo perprasti nepažįstamus modelius, reaguoti į peržiūros pastabas ir pataisyti klaidingas veiklos srities prielaidas. Vis dėlto tai buvo greičiau nei laukti kitos komandos eilėje. Dar svarbiau – integraciją įgyvendinantis žmogus galėjo keisti abi jos puses ir patikrinti visą veikimą.</p>
<p>Tokį patį modelį mačiau keičiant seną platformą. Su nauja paslauga besiintegruojanti komanda pastebėjo, kad pakaitiniame modelyje trūksta dalies informacijos, reikalingos esamai darbo eigai. Įprastas sprendimas būtų buvęs registruoti prašymus pakaitinę sistemą kuriančiai komandai.</p>
<p>Mes pasirinkome prisidėti patys. Patvirtinimas nebuvo momentinis – ir neturėjo toks būti. Prižiūrėtojai kėlė klausimus dėl pavadinimų, ribų ir migravimo elgsenos. Šios pastabos pagerino pakeitimą ir kartu padėjo prisidedančiai komandai suprasti, kaip veikia naujoji platforma. Senosios sistemos elgseną išmanantis inžinierius galėjo pernešti šį kontekstą į jos pakaitalą ir prisiimti atsakomybę už visą rezultatą.</p>
<p>Trečią šio modelio versiją sutikau beveik realiuoju laiku veikiančiame duomenų produkte. Vienai klientui matomai galimybei pristatyti reikėjo suderintų pakeitimų duomenų surinkimo, apdorojimo ir peržiūros sistemose. Jos priklausė skirtingoms grupėms, turinčioms skirtingus prioritetus. Kiekvieną ribą traktuojant kaip perdavimą, galutinis terminas priklausė nuo trijų atskirai planuojamų darbų sąrašų.</p>
<p>Pristatanti komanda dirbo peržengdama šias ribas: įgyvendino tiksliai apibrėžtus pakeitimus, kūrė pull request kiekvienoje kodų bazėje ir anksti įtraukė jų prižiūrėtojus. Sistemų nuosavybė nepasikeitė. Pasikeitė atsakomybė už rezultatą.</p>
<h2>Nuo perdavimų prie bendro prisidėjimo</h2>
<p>Šiuo pokyčiu nesiekėme pašalinti kitų komandų iš proceso. Atskirų įgyvendinimo eilių grandinę pakeitėme tiesioginiu prisidėjimu ir prižiūrėtojų peržiūra.</p>
<p>Esminis pokytis subtilus: kodo bazės nuosavybė nebereiškia išskirtinės teisės joje ką nors įgyvendinti.</p>
<p>Prižiūrėtojai lieka atsakingi už savo sistemos būklę ir kryptį. Prisidedantieji prisiima atsakomybę pakankamai gerai ją suprasti, kad galėtų atlikti saugų pakeitimą. Peržiūra tampa vieta, kurioje keičiamasi veiklos srities ir inžinerinėmis žiniomis, o ne paskutiniu barjeru po kelių laukimo savaičių.</p>
<h2>Kas pagerėjo</h2>
<h3>Atsakomybė už rezultatą nuo pradžios iki pabaigos</h3>
<p>Problemą sprendžiantis žmogus gali sekti ją per sistemų ribas, išbandyti visą kelią ir reaguoti į naujai atrastus dalykus nepradėdamas dar vieno tarpkomandinio prašymo ciklo. Darbas organizuojamas aplink rezultatą, o ne repozitoriją.</p>
<h3>Greitesnis grįžtamasis ryšys</h3>
<p>Nedidelis pull request sukuria konkretų pagrindą diskusijai. Prižiūrėtojai gali pataisyti įgyvendinimą, nurodyti esamą abstrakciją arba atmesti klaidingą prielaidą anksčiau, nei galėtų tai padaryti turėdami tik išsamią užduotį.</p>
<h3>Bendros veiklos srities žinios</h3>
<p>Prisidedantieji sužino, kaip veikia gretimos sistemos ir kodėl jos turi konkrečius apribojimus. Prižiūrėtojai geriau supranta sistemą naudojančią darbo eigą. Šios žinios pagerina būsimus abiejų pusių sprendimus.</p>
<h3>Geresnės techninės praktikos</h3>
<p>Tarpkomandinės peržiūros supažindina komandas su skirtingomis testavimo strategijomis, diegimo metodais, stebimumo taisyklėmis ir kodo struktūravimo būdais. Naudingos praktikos plinta per realų darbą, o ne standartų dokumentą.</p>
<h3>Mažiau koordinavimo eilių</h3>
<p>Priklausomybė visiškai neišnyksta. Prisidedančiai komandai vis dar reikia peržiūros, o kartais ir prižiūrėtojų pagalbos. Tačiau didelę priklausomybę – laukimą, kol kita komanda suplanuos ir įgyvendins darbą – pakeičia mažesnė: laiku suteiktos gairės ir peržiūra.</p>
<h2>Šiam modeliui reikia saugiklių</h2>
<p>Prisidėjimas peržengiant komandų ribas nėra leidimas savavališkai keisti nepažįstamas sistemas. Be kelių sąlygų jis gali sukurti daugiau darbo, nei sutaupo.</p>
<ul>
<li><strong>Galutinį sprendimą išlaiko prižiūrėtojai.</strong> Jie atsako už sistemos vientisumą ir gali prašyti pataisymų arba atmesti pasirinktą kryptį.</li>
<li><strong>Prisidedantieji anksti įtraukia prižiūrėtojus.</strong> Trumpas pokalbis apie sprendimą prieš jį įgyvendinant apsaugo nuo didelių, klaidinga kryptimi nuėjusių pull request.</li>
<li><strong>Į kodo bazę saugu įžengti.</strong> Vietinės aplinkos paruošimas, testai, informacija apie savininkus ir prisidėjimo gairės turi būti lengvai randamos.</li>
<li><strong>Peržiūra laikoma suplanuotu darbu.</strong> Jei prižiūrėtojai negali skirti laiko gairėms ar peržiūrai, eilė tik pakeitė formą.</li>
<li><strong>Pakeitimai lieka nedideli.</strong> Trūkstamas laukas ar API metodas yra gera pradžia. Platesniam perprojektavimui reikia išsamesnio bendro planavimo.</li>
<li><strong>Atsakomybė už veikimą yra aiški.</strong> Prieš sujungiant pakeitimą reikia sutarti, kas jį diegs, stebės, palaikys ir taisys.</li>
</ul>
<p>Yra ir atvejų, kai toks prisidėjimas nėra tinkama priemonė: griežtai ribojamos sistemos, itin specializuoti komponentai, aktyvūs incidentai arba pakeitimai, kurių rizikos prisidedanti komanda negali atsakingai įvertinti. Tikslas nėra visuotinė prieiga. Tikslas – padaryti ribas pralaidžias ten, kur tai saugu.</p>
<h2>Komandos požiūrio keitimas</h2>
<p>Sunkiausia kliūtis retai buvo repozitorijos prieigos teisės. Dažniau tai buvo įsitikinimas, kad „jų sistema“ reiškia „jų darbą“. Komandos buvo išmokusios nuosavybę tapatinti su riba, nurodančia, ką joms leidžiama suprasti ar keisti.</p>
<p>Buvo ir asmeniškesnis rūpestis. Įžengti į kitos komandos sritį reiškia vėl tapti naujoku. Savo sistemoje užtikrintai besijaučiantys inžinieriai nerimavo, kad užduos akivaizdžius klausimus, nesupras vietinių taisyklių arba atrodys mažiau kompetentingi nepažįstamiems vertintojams. Vien pasakymas „tiesiog prisidėkite“ šios socialinės rizikos nepašalino.</p>
<p>Šį įsitikinimą bandžiau pakeisti dviem idėjomis:</p>
<ol>
<li><strong>Jūs atsakote už rezultatą, net kai kelias iki jo kerta kitos komandos kodą.</strong></li>
<li><strong>Turėti sistemą reiškia prižiūrėti kitų indėlį, o ne patiems įgyvendinti kiekvieną pakeitimą.</strong></li>
</ol>
<p>Tačiau pakeisti žodžius nepakako. Žmonės turėjo pamatyti, kad peržengti ribą ir įmanoma, ir saugu.</p>
<h2>Kaip padarėme pirmąjį prisidėjimą saugų</h2>
<p>Mūsų metodas ilgainiui tapo paprasta mokymosi seka.</p>
<h3>1. Parodykite pavyzdį</h3>
<p>Pirmąjį pakeitimą atlikau pats. Įžengiau į nepažįstamą kodų bazę, uždaviau paprastus klausimus, mokiausi, kaip veikia jos veiklos sritis ir pristatymo procesas, ir pateikiau savo darbą prižiūrinčios komandos peržiūrai.</p>
<p>Tai buvo svarbu, nes prašiau komandos priimti riziką. Parodydamas tokį elgesį padariau riziką matomą ir parodžiau, kad pradžioje visko nežinoti yra normalu. Peržiūros pastabas traktavome kaip sistemos pažinimo dalį, o ne įrodymą, kad žmogus neturėjo bandyti prisidėti.</p>
<h3>2. Kitą pakeitimą atlikite poroje</h3>
<p>Kai jau pakankamai gerai supratau kelią, dirbau poroje su vienu komandos inžinieriumi. Kartu tyrinėjome kitą sistemą: radome susijusį kodą, aiškinomės testus, paleidome ją vietinėje aplinkoje ir aptarėme pakeitimą su prižiūrėtojais.</p>
<p>Darbas poroje sumažino įstrigimo kainą ir sukūrė saugią erdvę klausimams dar prieš pull request tampant viešu. Tikslas nebuvo man programuoti kitam stebint. Norėjome, kad nepažįstamą darbo eigą galėtų pakartoti dar vienas žmogus.</p>
<h3>3. Leiskite inžinieriui prisidėti savarankiškai</h3>
<p>Kitą pakeitimą tas pats inžinierius atliko be manęs ir pats sukūrė pull request. Buvau pasirengęs padėti, jei prireiktų, tačiau atsakomybė jau buvo perėjusi jam.</p>
<p>Prižiūrėtojų pastabos vis dar buvo laukiamos. Sėkmės matas nebuvo pull request be komentarų. Svarbu buvo tai, ar inžinierius gali suprasti pastabas, atnaujinti pakeitimą ir nuvesti jį iki integravimo.</p>
<h3>4. Paprašykite jo įtraukti kitą žmogų</h3>
<p>Vėliau šis inžinierius dirbo poroje su kitu komandos nariu. Žinios nebesklido iš vieno centrinio eksperto – jos judėjo per komandą po vieną darbinį ryšį.</p>
<p>Kartojant šią seką, prieiga tapo gebėjimu:</p>
<p><strong>Parodykite &gt; dirbkite poroje &gt; prisidėkite savarankiškai &gt; išmokykite kitą.</strong></p>
<p>Po kelių ciklų komanda gretimų sistemų nebelaikė svetima teritorija. Ne visi tapo kiekvienos sistemos ekspertais – ir toks nebuvo tikslas. Komanda sukaupė pakankamai bendro konteksto, kad galėtų sekti kliento rezultatą per visą kelią.</p>
<h2>Tai investicija, o ne trumpesnis kelias</h2>
<p>Prisidėjimo modelis nėra universalus sprendimas ir retai veikia tobulai iš pirmo karto. Pirmasis pakeitimas nepažįstamoje kodų bazėje gali užtrukti ilgiau nei užduoties parašymas. Reikia laiko paruošti aplinką, išmokti taisykles, o pirmiesiems pull request paprastai prireikia daugiau diskusijų ir pataisymų.</p>
<p>Kai terminas itin trumpas, šią mokymosi kainą gali būti sunku pateisinti. Jei patyręs prižiūrėtojas gali padėti iš karto, paprašyti jo atlikti vienkartinį pakeitimą gali būti greičiausias vietinis sprendimas.</p>
<p>Ilgalaikis skaičiavimas kitoks. Užduotis išsprendžia vieną trūkstamą galimybę. Sėkmingas prisidėjimas taip pat sukuria dar vieną žmogų, gebantį orientuotis sistemoje. Kitam pakeitimui reikia mažiau pagalbos, peržiūra tampa tikslesnė, o žinios pradeda sklisti nepriklausydamos nuo pirminio prisidėjusiojo.</p>
<p>Todėl šio modelio nevertinčiau pagal pirmojo pull request greitį. Vertinčiau kelių kitų pakeitimų laikotarpiu: ar eilės trumpėja, ar daugiau inžinierių gali diagnozuoti visą darbo eigą ir ar atsakomybė už rezultatą tampa mažiau suskaidyta.</p>
<h2>Optimizuokite srautą, o ne vietinę nuosavybę</h2>
<p>Griežtos ribos gali sukurti aiškių atsakomybių įspūdį, kartu paslėpdamos tarp komandų susidarančių eilių kainą. Kai kliento rezultatas kerta šias ribas, vietinės optimizacijos nepakanka. Geležinkelis gali optimizuoti kiekvieną stotį atskirai ir vis tiek suteikti keleiviams siaubingą kelionę.</p>
<p>Prisidėjimo modelis išsaugo sistemų priežiūrą, tačiau leidžia atsakomybei už rezultatą keliauti per architektūrą. Mano patirtis rodo, kad toks pokytis sutrumpino pristatymo kelią, pagerino integracijų kokybę ir suteikė inžinieriams aiškesnį supratimą apie keičiamą veiklos sritį.</p>
<p>Kitą kartą, kai jūsų komandą blokuos kitos komandos darbų sąrašas, nepradėkite nuo eskalavimo. Užduokite kitą klausimą:</p>
<p><strong>Kas turėtų būti tiesa, kad šį pakeitimą galėtume įgyvendinti patys?</strong></p>]]></content:encoded>
  </item>
  <item>
    <title>Sėkmingas projektas dar nėra sėkmingas produktas</title>
    <link>https://maconko.tech/lt/blog/successful-project-is-not-a-successful-product/</link>
    <guid isPermaLink="true">https://maconko.tech/lt/blog/successful-project-is-not-a-successful-product/</guid>
    <pubDate>Tue, 21 Jul 2026 09:00:00 GMT</pubDate>
    <description>Komanda gali įgyvendinti visus reikalavimus ir pristatyti kokybišką sprendimą, tačiau produkto sėkmei to nepakanka.</description>
    <content:encoded><![CDATA[<img src="https://maconko.tech/blog-images/building-a-product.webp" alt="Produkto kūrimo iliustracija, kurioje inžinerija dirba, o kitos organizacijos funkcijos laukia aplinkui" loading="lazy"/><p>Per savo karjerą mačiau bent keturis projektus, kuriuos būtų galima vadinti sėkmingais.</p>
<p>Reikalavimai įgyvendinti. Kokybė gera. UX neblogas. Komanda padarė tai, ką pažadėjo.</p>
<p>Tik nė vienas iš jų netapo sėkmingu produktu.</p>
<p>Visi pasiekė maždaug tą pačią ribą – „Go-Live“ – ir kažkur aplink ją sustojo.</p>
<p>Vienu atveju marketingas ilgai derino, kaip produktą pristatyti rinkai. Kitu projektas įstrigo teisiniuose procesuose. Dar kitur per kūrimo laiką pasikeitė verslo prioritetai, todėl iniciatyva buvo sustabdyta.</p>
<p>Komanda gali nepriekaištingai įgyvendinti projektą, bet tai dar nereiškia, kad produktas pasieks klientą.</p>
<p>Galbūt problema ta, kad produkto kūrimą pernelyg dažnai įsivaizduojame kaip nuoseklią estafetę: product suformuluoja poreikį, engineering parašo kodą, o tuomet prisijungia marketing, sales, legal, finance, operations ir support.</p>
<p>Tik realybėje produktas nėra estafetė. Tai bendras darbas, kuriame visos šios funkcijos turi judėti ta pačia kryptimi gerokai anksčiau nei ateina laikas spausti „Go-Live“.</p>
<p>Todėl didžiausias iššūkis dažnai nėra parašyti kodą. Jis prasideda bandant susitarti, ką statome, kodėl tai darome, kaip produktas pasieks rinką ir kas turi nutikti, kad klientai iš tiesų galėtų juo naudotis.</p>
<p>Dėl to konsultavime nemažai laiko skiriu ne technologijoms. Tenka padėti skirtingoms pusėms susikalbėti, iškelti nutylėtas prielaidas, suderinti lūkesčius ir rasti bendrą kryptį.</p>
<p>Nes geras produktas nėra vien geros inžinerijos rezultatas.</p>
<p>Jis atsiranda tada, kai visa organizacija sugeba kartu nuvesti jį iki kliento.</p>]]></content:encoded>
  </item>
</channel>
</rss>
