Nem agile fejlesztünk, mert

Címkék

nem hallottunk még róla.
19% (41 szavazat)
kipróbáltuk és nem vált be.
4% (9 szavazat)
mindent szeretünk előre eltervezni.
5% (10 szavazat)
a környezet nem elég flexibilis. (használt szabvány, munkaadó, stb)
20% (43 szavazat)
túl bonyolultnak érezzük.
6% (13 szavazat)
egyéb
46% (99 szavazat)
Összes szavazat: 215

Hozzászólások

... mert minket kodolasert fizetnek, nem azert hogy egesz nap meetingezzunk meg grafokat huzogassunk ossze ;)

Valaki átvert, az nem Agile/Scrum volt. A napi Scrum standup (naponta max 10 perc nagy csapatnál), Sprint tervezés (1-2 óra sprintenként), Sprint zárás (max fél óra sprintenként) és Retrspective (max fél óra sprintenként) aligha viheti el az időt.

Ráadásul ezek más módszereknél is megjelennek, csak más a nevük. Pl. mikro-managel / baszogat a főnök. Valaki hőbörög, hogy nem tud dolgozni, stb. Tehát elhanyagolható a meeting, sőt, gyakran gyorsít is a Scrum.

A legtöbb agilis fejlesztés összefoglalható abban, hogy release early, release often. De tényleg, szerintem minden levezethető ebből.
Rövid, ciklikus fejlesztés, és a rövid kiadási időszak miatti priorizálás.
Minden más csak management bullshit.

Ahol fél éves, vagy hosszabb kiadási/szállítási periódus van bármilyen okból, ott ez nem működik.

> release early, release often

Ez már csak egy következmény. A kiváltó ok az, hogy az emberek hülyék. Ez az az iparban a "Som-Som-féle Agile Super-Manifesto" néven elhíresült tétel.

A megrendelő nem tudja, mit akar, aki vele elbeszélget az igényeiről (pl. product owner), az nem érti a vevő use case-eit, a specifikáció író (ha van) még kevesebbet ért az egészből és a kódoló sem érti. Ezért a kódoló készít valamit, a vevő meglátja és már jobban tudja, hogy mi is az, amit akar, meg amit nem. Gyakorlatilag minden kivitt verziót a vevő kipróbál és egyre jobban tudja, hogy mi kell neki. Közben összecsiszolódik a fejlesztőkkel és egyre inkább egy nyelvet beszélnek, értik egymást. És nem mellesleg különlegessé, értékessé válnak egymásnak. Szemben a hagyományos "Aláírtad a szerződést, most jól leverem rajtad!" hozzáállással.

Persze idővel nagyjából simán mennek a dolgok. A gyors release oka ekkor az, hogy ha egyszer valami bizonyítottan kész, akkor mi a fenének tartsák vissza. A nagy verzióváltások általában komoly fennakadásokat okoznak, míg a sok kisebb release könnyebben befogadható mindenki agyába. Ez a másik pont, hogy a kisebb dolgok jobban felfoghatóak és emiatt jobban tervezhetőek. A felfogás megint az "emberek hülyék" kategória, a tervezhetőség már csak egy következmény.

Ha megnézzük, ezzel az Agile Manifesto 4 pontját maradéktalanul le is fedtem.

Az, hogy nem tervezHETŐ, azt nem mondanám. Legfeljebb mi nem tudjuk megtervezni.

Ezt megint könnyen rá tudom húzni az emberek gyenge képességeire. És nyilván igaz is. De azért azt látni kell, hogy a szoftverek komplexitása mondjuk az 1980-as évekhez képest rendkívül megnőtt, a time-to-market és feature verseny egyre csak fokozódik. Szörnyű nagy nyomás van az embereken és még az Agile, Scrum, Lean, CI, XP, TDD stb varázsszavak, valamint az egyre hatékonyabb nyelvi eszközök, IDE-k, frameworkök és egyebek sem feltétlenül tudnak hosszú távon segíteni azon, hogy ki ne csússzon a lábunk alól a talaj.

Ez egy egyre gyorsabban pörgő mókuskerék, viszont a pofára esés egyszerű jelekből megjósolható. Ha csak hányják be az új dolgokat, refaktorálásra, esetleg már tesztelésre sem jut rendesen idő, akkor ideje lassítani és valami új utat találni vagy végleg befellegzett. Mondhatnám úgy is, hogy a refaktorálás vagy tesztlés akár pillanatnyi elmaradása is egy piramisjáték kezdete, így kérlelhetetlenül meg kell akadályozni.

Sajnos ez nem jelenti azt, hogy a gyorsítást követelő menedzsmentet figyelmen kívül lehet hagyni. Ha összeomlik egy cég és az utcára kerülsz, mindegy, hogy a kód rohadt rád vagy a cég maradt alul a feature versenyben. Technikailag kell folyamatosan fejlődni, és ezek megbeszélése pl. a Retrospective meeting.

Nem akarok filozofalni, de tenyleg nem tervezheto. Ugyanis a szoftverfejlesztes egy kreativ emberi munka es mint ilyen rengeteg veletlen illetve nehezen merheto es fokent nem tervezheto faktorral van tuzdelve. Ezert kizarolag valoszinusegi tervezes lehetseges, ez pedig rettenetesen pontatlanna valik a projekt meretevel es komplexitasaval.

Nehany ilyen faktor:
- szaktudas
- szaktudas adaptalhatosaga
- kreativitas hullamzasa
- munkamoral / szorgalom / gondossag
- motivacio
- csoportdinamika
- fluktuacio

Tehat pont annyira tervezheto, mitn az idojaras. Rovid tavon josolhato, hosszu tavon meg valami vagy barmi.

Ezek mind tervezheto tenyezok, csak profi projektmanager kell. Az se art, ha nem probalunk meg a varhato koltsegekrol hazudni egy munka elnyerese erdekeben, illetve nem ringatjuk magunkat rozsaszin almokba.
A hibahatar kerdes, de egy stabil ceg eseten egesz jo lesz az eredmeny.

Persze, ha az altalad emlitett bemeneti parameterekrol sejtelmunk sincs, akkor teljesen remenytelen a helyzet.

http://dilbert.com/strip/2002-03-11

A veletlen nem tervezheto, pont azert veletlen. Lehet bizotnsagi tenyezokkel kalkulalni, es akkor eljutunk a dilbertes kepregenyhez. Pont ez a lenyeg, hogy a bizonytalansagot olyan szorzotenyezokkel kell kifejezni a komplexitas es a projektmeret novekedesenl, amik nem vallalhatoak. Ha beismerjuk ezt a bizonytalansagot akkor elesunk a megrendelestol, ha nem ismerjuk be, akkor maris elore programoztunk egy fincsi projektkrizist.

Az agile egyszeruen transzparansse teszi ezeket a bizonytalansagokat, es ezzel nem kenyszerit olyan projektterv keszitesere, ahol a bizonytalansag vallalhatatlan merteku.

Azt hiszem, hogy en is ezt irtam. A veletlen nem tervezheto, de kezelheto. Csak ha oszinten szamitjuk a kockazatokat, akkor a fejlesztes mar a megrendelesnel elbukik.

A masik, hogy a projektmenedzserek nem biztositasi matematikusok, es plane nem erdekuk az oszinteseg. Manapsag a "termek" nem a muszaki produktum, hanem maga az eladas tenye. A tobbit majd a fejlesztesen megoldjak a mindig pampogo hulye muszakiak. Majd megint nyavajognak egy kicsit, de majd most is lesz valahogy, mint eddig mindig. Majd jol megmondjuk nekik hogy hogyan meg mit kell csinalni, mert latszik, hogy meg ezt sem tudjak.

Teljes mértékben egyetértek, a csopvezek sem a minőségben hanem az elvárások teljesítésében érdekeltek. Ha megvan az első vagy több kudarc a kollegák megvédéseben akkor ez még kiélezettebbé válik. Ahogy haladunk felfelé ez a hozzáállás hatványozottan növekszik. Az ilyen rendszerek igazából őket nyugtatják meg hogy legalább alapszinten sejtsék mi folyik alattuk.

Szerintem az egesz agile tema valahol annak besimerese, hogy a megrendelő sosem tudja mit akar. Ezért leírni sem tudja, hogy mit akar. Ehelyett adjunk neki valamit hamar, és ő közben talán rájön, hogy mit is akar, és addig szállítunk neki, amíg nem lesz a termék elég jó. Az agile arról szól, hogy e helyzet ellen ne küzdjünk, hanem fogadjuk el, és e szerint dolgozzunk

Sztem ez ilyen kis fisz-fasz appoknál működhet. Viszont ha multinak szállítasz vagy államnak és odaállítasz valami 0.1-es verzióval akkor elzavarnak a picsába.
Nem láttam még nagy rendszereket legyártani agillal. Jó öreg kőkemény szerződés és emailes trac vagy bugzilla.
Az agile egy vicc, játékra jó.

--
GPLv3-as hozzászólás.

Szia,
Szerintem meg pont nem. Kis cégnél dolgozok ( Sophos ) , ahol <sarcasm> apró termékeket fejlesztünk</sarcasm>, és tapasztalatból mondom, hogy az Agile módszer hasznosabb, mint a klasszikus waterfall.
2-3 termék párhuzamos maintainelése és közben feature development esetén meglepően kellemes tud lenni. Főleg amiatt, mivel egyértelműen elmagyarázható ezzel a managementnek, hogy az instant fixnek ára van, válasszanak, hogy mit cserélünk rá ( Mondjuk, mi tartunk fent tartalék időt a kisebb fixekre, de amikor valami nagyobb gond fut be, akkor jön a trade-off value: feature vagy fix. Management pedig szépen elmazsolázhat rajta, hogy megéri-e nekik a 2 napon belüli fix, vagy sem. )
Mondjuk, a mi módszertanunk inkább pseudo-agile, mivel Business cycle-t is alkalmazunk, illetve stabil releasek vannak, előretervezett main featurekkel. De ezen belül fixek, minor feature-ök jönnek mennek sprintenként. A major feature-t pedig tudjuk stabilabban ütemezni.
Ha csúszás várható, mert valaminek a lefejlesztése több időt követel, rövid időn belül kiderül, és a cycle-re kiható részek már hetekkel, hónapokkal előre láthatóak így ( mivel XY dolognak meg kell lenni, hogy Z implementálva legyen, és XY fejlesztője hiába akarna trükközni, egyértelműen látszani fog, hogy meg van csúszva, legkésőbb 2 héten belül. Ez kicsit nyakatekert példa, de talán elég érzékletes...)
Persze, ahol rosszul alkalmazzák, ott minden fejlesztési modell átok, és csak "játékra jó"...
Üdv,
LuiseX

Mint kollegád (és dolgoztam állami megrendelésen) kijelenthetem a sophos a piacra fejleszt és nem konkrét megrendelőnek. A piacát ő maga definiálja igen szubjektív módon szóval ez inkább az autofelláció minősített esete. A scrum/agile egy gyors visszacsataloás a saját managementnek és nem a customernek (ezt jól le is írtad). Én mint customer SEM a saját terméket preferálom és NEM a belső tapasztalatok miatt. Arról nem szeretnék beszélni. Továbbra sem látom hogy hit alapján lehetne jó szoftvert fejleszteni. Dolgoztam lean mentén autóiparban is. Ha egy termék jó volt az NEM a módszertan okán volt az... És a szart is eladtuk csak bekalkuláltuk a lehetséges visszahívást és ha belefért akkor megtettük. ugyanez megy itt is. Az ami egy helyen bevállt nem biztos hogy mindenütt jó nem, szentgrál. Józan paraszti ésszel is belátható nem kell ehhez semmi filozófia hogy elérhető célokat definiáljunk meg hogy ne meetingekkel raboljuk az időt. Szart meg így is lehet csinálni. Amúgy meg az oktatásra figyelj vaze ha már lógsz ;-)

Szia,
Igen, ezek elmondhatóak a Sophosról, és ez sokat könnyít. Bár, ilyenkor pont a management és a POk testesíti meg a megrendelőt, ami másik oldalról nehezíthetik meg a dolgot: átfogó ötletük van arról, mi lehetne jó, de hogy pontosan mi kell, kellően zavaros tud lenni...
Alapvetően, ha azt nézzük, az Agile helyett személy szerint én a jól kiépült ad-hoc jellegű fejlesztést preferálnám, de belátható, hogy az csapatmunkára nem a legjobb eszköz, mivel ,azt is mindenki másképp valósítja meg :)
Arról nem is beszélve, hogy nem győzőm kifejteni, hogy az agile-t egyértelműen nem kedvelem, de jobbat én sem tudok. Viszont látom a példát nálunk is, más cégeknél,hogy nagy méretben valahogy működik, és javít a céges folyamatokon...
Nem állítom, hogy a módszertantól lesz jó a termék, félre ne érts. Azt állítom, hogy a módszertan segítHET, hogy jobb legyen a termék. Ettől még nem 100% a siker, sőt, sokszor visszafelé sül el :)
Üdv,
LuiseX
U.i: Figyelek én, de azért van szünetünk is néha :)

"Jó öreg kőkemény szerződés és emailes trac vagy bugzilla" Agilis fejlesztes elso szabalya: Legyen Agilis a szerzodes! Ezzel nem mondtam neked ellent, sot, ha a multi ceg, vagy az allami szervezet nem ert az agilis fejleszteshez, es nem kotsz veluk agilis szerzodest (miert is kotnel, hiszen azt se tudjak mi az), addig ongyilkossag agilisen fejleszteni. De ez meg nem az agilis modszertant minositi.

-
Big Data trendek 2016

Meglehet. Voltam egy-két fejtágításon de, ami lejött azt komolytalannak tartottam. Ugyan ez a véleményem ezekről a kanban-os kártyás játékokról.
Rövid 25 éves tapasztalatom alapján azt mondom nem lehet megúszni a vezető programozókat, akik csak a legritkább esetben írnak kódot és csak az alattuk levő kódereket mikro-menedzselik.
Ja igen, meg kell őket fizetni ha terméket akarsz látni...
(és mint mindig nem ilyen kis eldobható appokról beszélek, azokat bárhogyan lehet fejleszteni.)

--
GPLv3-as hozzászólás.

Pedig rohadt jo a kanban, kikenyszerit bizonyos folyamatokat, es ad egy gyors kepet a sprint allapotarol. Rogton latszik mi blokkolt, mit kell tesztelni stb. Persze a vezeto programozot nem helyettesiti, de mondjuk nem is all meg az elet, ha varatlanul elmegy 3 nap szabadsagra. Nekem nincs 25 ev tapasztalatom, de volt szerencsem ad-hoc, vizeses, masok agilis fejlesztesi modelljeihez, es sajatot is dolgoztunk ki. Megmondom oszinten legstresszmentesebben akkor haladt a munka, amikor hasznaltuk ezeket a modszertanokat, termeszetesen a legjobb az volt, amikor sajat magunk alakitottuk ki a metodikat.

- Kozos sprint tervezesnek az az elonye, hogy mindenki sajatjanak erzi a vallalast
- A rovid sprintek jok voltak, mert nem egy lehetetlen 2 ev muva bekovetkezo cel lebeg a fejlesztok elott, hibazas eseten kissebb az arcraeses, konnyu volt a folyamatokon javitani, mert 2 het mulva mar tudtuk mi nem mukodott
- A szigoru backlog alacsonyan tartotta a stressz faktort, mert nem kellett varatlan dolgoktol rettegni (persze ehhez kellett a vezeto programozo, aki nem engedte a managementnek, hogy beleronditson)
- A kanban segitett abban, hogy mindenki tudja mi a kovetkezo dolog amivel foglalkozni kell, milyen teruleten kell kepeznie magat
- Es lehetne meg sorolni

Persze tudom, hogy vannak szemelyisegek, akik szeretik a bevalt utat jarni, de most oszinten a fejtagitasokon kivul probaltatok egyaltalan? Csinaltatok valami pilot projektet, ahol hasznaltatok? Kiserleteztetek vele? Ha nem honnan a budos francbol tudnatok, hogy jo-e? Mint fentebb is emlitettem, ez nem egy egzakt tudomany, a metodologia is fejlodik, ahogy az emberek is a metodologiaban. Ha valami mukodott megtartjuk, ha nem kidobjuk, beveszunk valami mast, egeszen addig, amig ossze nem simul az egesz gepezet.

Az emberek kulonbozoek, az en termeszetemhez (es masokenak is) sokkal kozelebb all egy ilyen modszer. A valo eletben, mikor egy szoget kell beverni sem a vizesest valasztom. Kituzom a celt, reszekre bontom, mindig azzal a reszlettel foglalkozom ami epp az aktualis, minel hamarabb kiertekelem, hogy hatekony legyen a munkam, kiertekelm az eredmenyt a nagy cel tukreben, javitok a folyamaton, kiertekelek, javitok, tovabblepek... Nem tervezem meg minden egyes mozdulatot 2 hetre elore.

-
Big Data trendek 2016

Ez nem mond ellent az agilis fejlesztesnek. Kivaloan lehet otvozni a vizionarius szakembereket a junior, csillogo szemu, code-monkey letbol epphogy csak ebredezo jomunkasemberekkel, meg a koztuk levo skala nagyjabol minden elemevel. Es kivaloan tud mukodni.

Az mas kerdes, hogy eddig ahol vertek a mellkasukat, hogy ok bizony agile fejlesztenek, ott valamit mindig elcsesztek, es megsem az lett. Ugyanakkor volt szerencsem olyan helyzethez is, amikor nem volt mellkas dongetes, de agile elvek alapjan ment a fejlesztes, es meg mukodott is (fentebb emlitett szines tarsasaggal). Nem kis fiszfasz app eseten, az nyilvan nem erdekes.

Sokeves tapasztalat alapjan az agile elmeletben tok jo, gyakorlatba nagyon kevesen tudjak jol atultetni. Viszont annal tobben probalkoznak vele, rosszul, es az hazavagja az egesz megiteleset. Kb, mint az OOP. Az is pont ilyen.

--
|8]

talán azért csak nyomokban használjuk a scrum-ot, mert szinte minden sprintünket szétlőtték HIGH PRIO problémákkal.

Hát igen, a scrum is csak akkor működik, ha tudják, hogy hogyan kell csinálni.
High prio dolgok: ott kezdődik a scrum, hogy a fejlesztők nem kapnak menet közben új feladatokat, meg a story scope change sincs. Ha ilyenek vannak, akkor újra kell pár dolgot gondolni. Ha meg maintanelni is kell, meg sürgős hibajavításokat is kell csinálni, akkor van arra is néhány lehetőség. A teljesség igénye nélkül: kanban scrum helyett, külön bugfix csapat, valamennyi tartalékot meghagyni a sprintben hibajavításokra, és a legutolsó az, hogy a feladatok menet közbeni újraprioritizálása, lényegében a sprint scope változtatása.

Nálunk nagyon sok projekten követik az agilis fejlesztési elveket.

Amikor rövid idő alatt többször bejött, hogy pl. egy tender/bug/stb. miatt MINDENT eldobunk, és azt csináljuk, mert most az a fontos, akkor mondtuk azt, hogy ennek így nincs semmi
értelme. Úgyhogy egy kicsit testre szabtuk a dolgokat: a backlog maradt, mert az hasznos. A csapat csak senior fejlesztőkből áll, a termékeinket 0-ról írtuk, tehát egy új
feature-t fel tudjuk úgy bontani részekre, hogy meg tudjuk mondani, hogy hány óra alatt lesz kész nagyságrendileg, ebből a PO megmondja, hogy akkor mehet-e, vagy sem. Ő találja ki azt is, hogy minek van prioritása. A heti sprinteket megtartottuk, mert úgy könnyebb menedzselni a dolgokat, átláthatóbb a helyzet. Pontokkal nem becsülünk, burndown chart nincs. Egy ideig csináltam, de pont a blokkoló, dobjunkelmindent, holnaprajavítsukkimertcritical taskok miatt értelmét vesztette, és rajtunk kívül őszintén a kutyát sem érdekelt. Standup-ot néha szoktunk csinálni, de inkább csak akkor, amikor nagyon más-más topicon dolgozunk, hogy tudjuk, hogy a többiek min dolgoznak, és milyen új feature-t sikerült belehegeszteniük a rendszerbe, amiről nekünk fogalmunk sincs.

Bugfix csapat és hasonlók: igény volna rá ;)

Még egy dolog, ami eszembe jutott: írtátok a release early & often témát: ezzel abszolute egyetértek, most volt egy ügyfelünk, akinek úgy fejlesztettünk, hogy kb. 2 hetente kapott új verziót, és aztán elmondta, hogy mit szeretne még bele, vagy mit szeretne máshogy, stb. Ez tök jó volt, mert ő is azt kapta, amit szeretett volna, meg mi is éreztük, hogy elégedett. Aztán most van olyan, ahol 5 lépésben lehet csak elérni az ügyfelet, nyilván ott ennek megfelelően lesz kezelve a történet....

kulon maintenance csapatot nagyon nem ajanlom, okozhat vicces mellekhatasokat, pl mikor a gyapottszedo maintenance csapat kompetensebb a termekben, mint a feature fejlesztok :)

kanban-ra +1:
https://www.youtube.com/watch?v=NSJ0wpkGUYM

nem tudok elkepzelni olyan helyzetet, hogy a kanban ne segitene egy munkafolyamat atlatasaban

--
NetBSD - Simplicity is prerequisite for reliability

Pedig a panaszkodás a scrum része. Legalábbis a folyamatban résztvevő szereplőké. Erre van a retrospective.
Ha meg mások panaszkodnak, vagy hiába van panasz, mert totál leszarják, hát akkor visszakanyarodtunk oda, hogy nem tudják, hogy hogyan működik.
Meg vannak ugye a disznók és a csirkék (nem tudom magyarra is így fordították-e): A disznók olyan résztvevők, akik bőrüket viszik a vásárra, tehát nekik húsba vágóan fontos, hogy mi történik és hogyan döntenek. A csirkék azok, akik viszont csak a tojást adják a történetbe: ők nem annyira fogják a saját bőrükön érezni a meetingen megszülető döntéseket. Na most ha egy csirkének van olyan hatásköre, vagy akkora szava, hogy az jut érvényre a disznóé helyett, akkor megint csak nem lettek betartva a szabályok.
Bocsánat, hogy nem tudom pontosabban és szebben elmondani, nem vagyok scrum ninja.

A legutolsó projektemben azt mondták a fejlesztők, hogy ők agilis scrumkáosz metodológia szerint dolgoznak.
Ismeri valaki?
--
zsebHUP-ot használok!

persze. Volt olyan projekt, ahol csináltuk... XD
Olyan, hogy akiknek tudniuk kellene, hogy mi a scrum, mert irányítaniuk kéne az egészet, azoknak fingjuk sincs róla. A kulcsemberek, akiknek tudniuk kéne, hogy mit kell lefejleszteni, azok szintén csak egy rózsaszín ködöt kergetnek. A fejlesztők lógnak a levegőben és sok minden ad-hoc módon zajlik. Az egésznek köze sincs a scrumhoz.
Tipikus dolgok ilyenkor a pontatlan, nem leegyeztetett sztorikártyák, a menet közbeni igény változások (demózáskor: "de hát nem is erre gondoltunk"), az, hogy a sztorik becslése úgy megy, hogy a megrendelő megmondja, hogy mennyi idő alatt legyen kész és pont (tehát szó sincs becslésről), ...

> a kitalálója is rózsaszín ködben volt

Pont ellenkezőleg. Az Agile kitalálói láttak sok bedőlt projectet, mert pl. a különböző komponensek fejlesztői nem kommunikáltak direktben, hanem főosztályvezetőkön keresztül, határidőkor derült ki, hogy egyik csapat sincs ott, ahol kéne, amikor végre kész lettek, akkor derült ki, hogy a komponensek nem működtek együtt és mire végre együttműködtek, jött a megrendelő és szörnyülködött, hogy nem ezt akarta.

> Pár dolgot ugyan kihagyott a scrum

Azt nem hiszem. Vagy ha igen (pl. process over individuals), akkor esetleg rosszul csinálják a gyakorlatban.

egyéb: pl. agile fejlesztünk? :P

Évtizedes tapasztalat, hogy a megrendelő azt hiszi, hogy az agilis fejlesztés arról szól, hogy menet közben simán megváltoztatható a fejlesztés eredeti célja. Ők persze csak új ötleteknek látják ezeket, és nem hajlanóak felmérni, hogy sokszor az ilyen "ötletek" milyen súlyosan veszélyeztetik a fejlesztés eredeti célkitűzését. Úgyhogy inkább hosszan tervezünk, folyamatábrákat, drótvázakat eszünk reggelire, de így a végén a programozónak már nem kell azon törnie a fejét, hogy vajon "mire gondolt a költő"...

Miért lenne marhaság, ha az ügyfél meggondolja magát?

Honnan tudod te azt, hogy van-e értelme egyáltalán még pénzt ölni egy elkezdett fejlesztésbe? Lehet, hogy megváltozott ez-az. Az ügyfél / PO viszi a saját pénzét a vásárra.

Engedtessék már meg neki, hogy ő mondja meg, mire legyen az a pénz fordítva!

Természetesen kommunikálni kell, el kell mondani, hogy mi mivel jár. De ennek amúgy is a normális menet részének kellene lennie.

Ezzel most mi is a probléma? Van egy projektem házon belül, több-kevesebb megszakítással, de talán jó másfél-két évvel ezelőtt indult, utóbbi fél-háromnegyed évben jellemzően úgy ment a fejlesztés, hogy leültünk kollégákkal (kb. projekt ownerek), hogy mi a véleményük az előző fejlesztésről, mennyire tudják vele megoldani az eredeti fejlesztéseket, stb. Aztán ezek alapján eldöntjük, hogy milyen plusz fejlesztésekre van szükség. És igen, ez néha akár azzal is jár, hogy alapjaiban kell átgyurmázni egy-egy részt (a projektben talán 3-4 alkalommal volt olyan, amikor koncepcionálisan kellett módosítani valamit), aztán a feladat méretéről függően x db. "sprintre" (jellemzően hetes ciklusok) szétbontjuk, hogy akkor mikorra mit várjanak.

És igen, néha kiderül az is, hogy amit kitaláltunk gyakorlatban már nem fog működni, mert ez meg az meg amaz a baj vele. És igen, az is felvetődik, hogy valami még kell pluszba vagy tulajdonképp mégsem kell, mert mondjuk megváltozik az igénylista, mert történnek dolgok az IT-n kívül is. És igen, ez néha mozdítja a projekt célját is.

Fel kellene már fogni, hogy az IT nagyon-nagyon-nagyon sok esetben egy kisegítő szakma valami másik alatt.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Az elozo helyen vez. fejl. voltam, es az en munkamat segitette, az agilis fejlesztes. Megtanitottam a managementet, hogy hogyan szeretnenk fejleszteni a projektet, ok kepessegeik szerint tovabbadtak az ugyfelnek, akinek tetszett az otlet. Vegul leszallitottuk a projektet hataridore, mindenki elegedett volt, es nem oszultunk bele, mert az elore tervezett iteracioknak hala (amibol nem engedtem), stresszmentesen tudtunk dolgozni. Az ugyfelnek is volt lehetosege finomitani a dolgokat, a management meg virult, mert meg otszoroztek a tortaszeletunket a kovetkezo eves budgetbol. Egy nemzetkozi consumer elektronikai cegrol beszelunk.

-
Big Data trendek 2016

Bocs, de ez azért volt lehetséges, mert az ügyfél értelmes volt, értelmes (=megvalósítható) igénnyel. A problémák mindig ott kezdődnek, amikor az ügyfél nem óhajtja tudomásul venni, hogy amit szeretne, az gyakorlatilag lehetetlen (mindent, de lehetőleg tegnapra), a vállalkozó viszont nem szeretné ezt cleartextben letölteni az ügyfélnek, "mert akkor nem minket választanak"...

Egy információrendszer szervezői diplomával a - privát - véleményem, hogy az agilis fejlesztés logikátlan, értelmetlen elveiben eleve ellentmondásos dolog. A rövid távú dolgokért hosszabb távon feladja a szakszerűséget és a minőséget. Semmi újdonságot nem tartalmaz, ha csak nem vesszük annak azt, hogy lehetőleg elfedi - nem akarja észrevenni - azon munkák áldatlan "eredményét", amit meg akar spórolni projekt során.

"Az Agilis Kiáltvány 12 alapelven nyugszik:
1. Ügyfél elégedettség fenntartása a használható szoftver gyors szállításaival
2. Változtatás kérések fogadása bármikor még a fejlesztés végén is
3. Működő szoftver gyakori szállítása (hónaponként helyett hetenként)
4. Szoros napi együttműködés az üzleti emberek és a fejlesztők között
5. Projektek motivált, megbízható egyénekből épülnek fel
6. Kommunikáció legjobb formája a szemtől-szembe való információcsere
7. Működő szoftver a haladás legfőbb mérőfoka
8. Fenntartható fejlesztés, állandó mértékben való fenntartás
9. Folyamatos figyelem a technikai kiválóságok és jó tervezés felé
10. Egyszerűség - az el nem végzett munka mennyiségének maximalizálása művészi fokon - elengedhetetlen
11. Önszerveződő csapat
12. Alkalmazkodás szabályos időközönként a változó körülményekhez"

1: Az ügyfél nem attól elégedett, hogy hamar kapja, hanem attól, hogy azt kapja..
Kifejezetten rossz, ha a határidő miatt kerül a rendszerbe egy hitványabb megoldás. Márpedig ennek garantáltan ez a vége. (Ha nem hiszed, akkor beszélj fejlesztőkkel, vagy néz bele a forráskódba!)

Ha hamar szállítod, akkor jól kib@..tál magaddal, mert ezentúl nem csak a fejlesztéssel kell foglalkoznod, hanem a hibajavításokkal is. Vannak akik erre külön csapatot hoznak létre. (Folyik el a lóvé...) Külön öröm, ha ilyenkor elágazik a fejlesztés. Ha sikerül is kordában tartani, külön meg kell tervezni, hogy az ügyfélnél hogyan lehet áttérni a kint lévő rendszerről az újra. Ez magában iszonyatos pazarlássá válhat. Ezt ismételgetni hétről-hétre? El sem tudom képzelni... Minden ilyen áttérés jó kis kockázat. (Pl. belegondolok, hogy az ügyfél éles adatbázisát hétről-hétre átformáljuk az újonnan felmerült követelmények alapján. Nagy meló, nagy kockázat. Ez öngyilkosság. :) Persze, amíg nem mondtak fel a fejlesztők, addig még lehet csinálni. )

2: Ez kész. Ez önmagában csődbe vihet egy céget.

5: Ez már eldőlt korábban. A cég olyan emberekkel tud dolgozni, amilyeneket sikerült felvennie. Le lehet írni, külön, de ez semmin nem változtat. Ha motivált emberei vannak, akkor felesleges ide írni. Ha nem, akkor meg ez nem változtat semmin.
Tegyük fel, hogy az emberanyag megfelelő. Ebben az esetben is jobb, ha arra számítunk, hogy a projekt során egyre kevésbé motivált fejlesztőink lesznek. Az agilis fejlesztés alapelvei szerint fix költséggel és szigorú határidőkkel dolgozunk. Ebből az fog következni, hogy sok lesz azoknak az óráknak a száma, amit a fejlesztők ugyan ledolgoznak, de nem lehet elismerni, mert az a költségeket megdobná. Ez szívás lesz a fejlesztőknek. Ha a 2-es pontot komolyan vesszük, akkor a fejlesztő lesz a kisebb ellenállás, hiszen a megrendelőt - az alapelvek szerint - kifejezetten nem lehet önmérsékletre bírni.

7: Hibás meglátás. Simán működhet egy szoftver, miközben a tervezési hiányosságok miatt zsákutcába navigál a fejlesztés. Ha ennek megoldása végül az alapjaiban való visszabontás, akkor nem jelent semmit, hogy előtte mennyi mindent tudott a szoftver.

9. Bullshit. Mi ez? :) A jó tervezést már az elején elbuktuk. Miről beszél ez? Pont azt akarja megspórolni.

10. Ez annyit mond, hogy csak annyit dolgoz, amennyit nagyon szükséges. Spórolj meg minden erőfeszítést, amit az ügyfél úgysem venne észre. Na, ebből is minőségi meló lesz... :D Agyam eldobom!

11. Nesze semmi fogd meg jól! :D

12. .... valamint világbéke! :D Egyébként pedig, ha szabályos időközönként alkalmazkodsz a szabálytalan időközönként változó valósághoz, akkor ez azt jelenti, hogy egy ideig felesleges dolgokkal foglalkozol, de legalábbis rossz irányba halad a fejlesztés. Ez pénzkidobás.

Még órákig lehetne boncolgatni ezt is és más Agilis forrásokat is.

Jelenleg nincs meg a Szoftverfejlesztés Szent Grálja: megbízhatóan olyan szoftvert előállítani, ami megbízható.

Nyugodtan kövezzetek meg érte, de én úgy látom, hogy egy szoftvercég értéke és valódi terméke nem az a szoftver, amit előállít, hanem az a módszertan, az a folyamat, az a rendszer, amivel előállítja a szoftvereket.
Ha egy cégnél van egy kialakult, jól működő módszertan arra, amely a cég által alkalmazott mérnökökkel, üzleti elemzőkkel, tesztelőkkel, szoftvereszközökkel megbízatóan tud szoftvert előállítani, akkor mindegy, hogy ők mobilalkalmazást, motorvezérlő szoftvert, operációs rendszert, vagy éppen webshopot csinálnak. Nem ez az igazi lényeg, hanem maga az a mód, ahogyan ezek a webshopok, kernelek vagy mobil appok elkészülnek. Ez az igazán nagy kincs minden szoftvercégnél, és nem az, hogy mindenáron működő szoftvert hozzunk létre.
Nem, a módszertan majd előállítja a szoftvert megbízhatóan, az egy melléktermék nagy távlatból és koncepcionálisan nézve.
Az egyik kedvenc (már régi ugyan) cikkem a témában:
http://www.fastcompany.com/28121/they-write-right-stuff

"The process is so pervasive, it gets the blame for any error — if there is a flaw in the software, there must be something wrong with the way its being written, something that can be corrected. Any error not found at the planning stage has slipped through at least some checks. Why? Is there something wrong with the inspection process? Does a question need to be added to a checklist?

Importantly, the group avoids blaming people for errors. The process assumes blame - and it's the process that is analyzed to discover why and how an error got through. At the same time, accountability is a team concept: no one person is ever solely responsible for writing or inspecting code. "You don't get punished for making errors," says Marjorie Seiter, a senior member of the technical staff. "If I make a mistake, and others reviewed my work, then I'm not alone. I'm not being blamed for this.""

Azért ezt a "módszertan az érték" gondolatot hadd egészítsem ki azzal, hogy az az igazi érték, amikor a módszertan adaptív, a feladat milyenségétől függő. Lehet agilisan fejleszteni pl. egy webes alkalmazás kezelőfelületét, ahol az ergonómiának és designnek kiemelkedő szerepe van. Ott elbírja a projekt, hogy hetente felbukkan néhány új ötlet, ami a részletek csiszolását célkozza. Nem lehet agilisan fejleszteni olyan heterogén környezetekben, ahol egyetlen komponens "újragondolása" magával rántja több másik komponens, vagy akár komplett alkalmazás vagy szolgáltatás fejlesztését. Nem is beszélve a már meglévő megoldásokra alapuló fejlesztésekről, ahol sokszor csak azzal főzhetsz, amit az alaprendszer tud. Ott csak az utolsó szögig előre tervezett fejlesztés esetén van esély a sikerre.

Szia,
Itt nem újragondolásról van szó. Ha újra kell gondolni, akkor már rég el van rontva a projekt.
Inkább gondolj a következőre : A csoportod fejleszti a konfigurációs alrendszert (konfig értékek tárolása, szinkronizálása, validálása, etc). Van egy tök jó keretrendszer, ami tud számokat, szövegeket és mondjuk struct jellegű hasheket tárolni. Ez szép és jó, és működik, de valamelyik csoport jelzi, hogy szép dolog a struct, de ő C/C++ struct blob helyett inkább json-ben szeretné megkapni.
Új ez az igén? Igen. Módosítani kell az alapokat? Igazából nem, csak bővíteni kell picit (pl. új lekérdező függvény a json pártiaknak).
Ilyen jellegű iterációkra gondolj inkább, mikor agile-ra gondolsz, mintsem arra , hogy mindent újra és újra építenek. Ez nem az a műfaj :)
Üdv,
LuiseX

Mérhető eredménye a szoftvernek van. És jó csapat, jó módszertannal határidőre elkészíti a költségkereten belül azt a szoftvert, amit a megrendelő kér. Ez a siker mércéje, de attól még a cél az a jó módszertan. Mert az tudja garantálni a sikeres szoftvert.
Mint ahogy gyógyított betegben méred az orvosok sikerességét, de valójában a lényeg az, hogy a kezelés jó legyen. Sosem a gyógyszert vagy a kezelést tartod jónak, hanem az orvost, pedig a lényeg a kezelésben (a gyógyítás módszerében) van.

Szia,
Igazából, az a gond itt szerintem, hogy te egy-egy sprintre, és fejlesztési szakasznál a teljes termékre gondolsz. Inkább nézz erre a módszertanra úgy, mintha épp házat építettnél, és 2 hetente hívnak a szakik, hogy mi a véleményed.
Először látod majd az alapozás nyomait, általában pár gödör, és semmi izgalmas, de feltűnhet az egyből, hogy eggyel több támfal helyét látod. Ekkor szólhatsz, hogy el lett rontva, mert neked bizony ott nincs támfal... A szakikkal összeültök, megbeszélitek, ki-ki megy a maga dolgára.
2 héttel később az alapozás kész van, és az első emeletik jutottak. Ekkor megnézheted, hogy jónak fest-e a földszint beosztása, és szépen megbeszélhetitek, hogy miért nem tetszik az elülső ajtó helye. Ők elfogadják, és javítanak.
Költséges javítani? Igen, de még mindig egyszerűbb az első emeletet lebontani, mint majd a fél házat lebontani egy hídért... ( Tudom erős példa, de jobb nem ugrott be :) ).
Kb. ugyanez az agilis fejlesztés, csak annyi különbséggel, hogy - a korábbi hasonlattal élve - te korábban elmondtad, mit szeretnél, mit nem. Annak vagy volt értelme, vagy nem. A szakik talán el is árulták, és megtudtátok beszélni. Legközelebb akkor mehettél oda, amikor szépen le volt vakolva minden.
Itt a gyors szállítás inkább arra vonatkozik, hogy 2 hetente legyen valami, amit fel lehet mutatni az ügyfélnek. Nem kell, hogy menjen és tökéletes legyen, de még mielőtt minden összeillesztenéd, az ügyfél láthatja , hogy valami félre fog sikerülni, vagy a fejlesztők szólhatnak még időben, hogy egy-egy komponens csúszni fog.
Persze, ha úgy kezeled, hogy 1 sprint alatt kellene egy linux kernelt írni from scratch, bukott a projekt, mielőtt elkezdenéd. De ez esélyesen Waterfallal is így jár. Ellenben, ha úgy indulsz neki, hogy kell egy kernel, és ehhez első héten legyen egy bootloader, akkor már is könnyebb abszolválni a problémát. ( Persze, kiderülhet itt is, hogy valójában arm-re kell x86 helyett, és ciki, de még mindig csak egy bootloader van kész: a projekt mehet tovább, immár arm-re célozva).

És, akkor rendre a reagálnék a felvetéseid egy részére:
1., Az ügyfél előbb látja, mit fog kapni, vagyis, még időben szólhat, mit értettél félre/volt képtelen elmagyarázni. Nem a kész terméket kapja előbb, csak látképet arról, mi is lesz ebből.
2., Változtatni azért tudsz, mivel elvileg a korábbi dolgok már fixáltak, az előtted állók pedig épp formálódnak ( nem az egész szerkezetet módosítod ilyenkor, jól tervezve a korábbi alapok maradhatnak stabilan. Ha minden jól vezényeltek, legfeljebb egy sprint munkája mehet kárba. Ez is költség, de még mindig jobb, mint azt látni, hogy az ügyfél képtelen volt elmondani, hogy a beléptető rendszer alatt nem MS alapú SSO-ra LDAP alapokon, hanem egy szimpla user/password jellegű auth-ra gondolt MySQL-ből... )
5., Motiválhatja az is a fejlesztőt ám, ha annak, amit csinál, van nyoma. Azért, nem mindegy, hogy 200 kicsit feladatot old meg, mindegyikről látja, hogy szépen készen vannak, vagy egy baromi nagyot, aminek a felénél sem jár, de legalább az sem biztos, hogy jól csinálja. Ez utóbbi erősen demotiváló tud lenni például.
7., A tervezési hibák időben kiszűrése miatt iterálunk. Ideális esetben a tervezési hibákat lehet minimalizálni, és igazolható, hogy a korábbi munkában nem volt eddig. Itt megint gondolj arra, hogy a sprintek alatt a teljes feladat részleteit értelmezzük, és azokkal haladunk, nem az egész feladatot mérlegeljük mindig újra. A működés itt is azt fedi, hogy amit abban a két hétben csináltatok, a _saját_ specifikációinak megfelelően üzemel, és ezáltal illeszkedik a korábbi munkára.
9., Mindenben van némi bullshit, és... managerek is olvassák ezeket :D Bár tény, inkább arra utal, hogy a kis részletekre való fókuszálás miatt előbb meglátszanak a nagyobb hibák :)
10., Pontosan :) Csak, megint arra kell gondolni itt, hogy jelenleg kis feladatokkal dolgozol, és pl. ha az auth-ot már leimplementálta egy másik csoport, neked ezen felesleges erőlködni. Integrálhatjátok az ő megoldásukat is, arra törekedve, hogy az auth fejlesztéseket simán behúzzátok a saját kódotokhoz is.
11., Az önszerveződő csapat kicsit bullshit, kicsit nem. A lényege az, hogy magától tudja mindenki, mi a dolga és a többiek is tudják róla, mi a feladata pontosan. Ha valaki kiesik, kétségbe esés helyett maguktól szerveződnek a pótlására - ez vagy effektív lesz, vagy kevésbé - így a csoport nem hal meg nélküle. És.. itt ne csak egy 1 devre gondolj, lehet a QA-s, a lead dev, vagy a PO... Igazából, azt nem fogom megérteni soha, hogy ez a kitétel miért nem alap mindenhol...
12., Itt arra gondolj, hogy pl., kéthetente újratervezés, vagy a csoportba a felmerülő töblet időígény miatt 2 plusz fejlesztőt beraknak a következő sprintre.
Remélem ,sikerült érthetően megfogalmaznom :)
Üdv,
LuiseX
U.i: Fejlesztő vagyok, és nem lelkes agile fan. Személy szerint tetszik a módszer, de ez is csak egy módszer :) Lehet kis baltával is assembly-t írni, de úgyis maga a feladat mondja meg, hogy érdemes-e :)

Nekem úgy tűnik, hogy amit pontokba szedve leírsz, az csupán a részletes és gondos tervezés helyetti pótcselekvés. Ha már ott bukdácsol a projekt, hogy a megrendelő menet közben jön rá, mire is van szüksége, az azt jelenti, hogy valahol valaki meg akarta spórolni annak az üzleti elemzőnek, folyamatfejlesztőnek és/vagy rendszerszervezőnek a munkáját, aki képes megérteni, mire vágyik a megrendelő, és ehhez képest tudja, hogy mire képes a programozó.

Mondjuk amig nincs definialva, hogy ki melyik szegmensere gondol az IT-nak, addig nehez is lesz zoldagra vergodni :)

Nyilvan motorvezerlo elekronikat nem igy fognak csinalni (de mondjuk implementacional akar haladhatnak agilisan is - fogalmam sincs, ehhez nem ertek), addig eCommerce-ben a waterfall az ongyilkossag. Nem hogy a havi, vagy a ketheti release, meg a heti release is tul ritka lehet a konverzioert vivott harcban.

Viszont azt tudnod kell a heti, meg kétheti releaseben, hogy mit csinálsz. Mint ahogy a scrumon belül is: egy-egy sprinten belül egy mini waterfall megy le.
Az agilitásnak tényleg a lényege semmi más, minthogy sokkal kisebb szeletekben adnak ki szoftvert, perpetual beta van, a szoftver hetente változik stb. Semmi más.
Az, hogy van unit teszt, van CI és egyebek, az nem az agilitás velejárója, hanem a jó szoftverfejlesztési praktikáké, attól függetlenül, hogy kéthetente vagy félévente van release.

Ma valahogy mindig felreertessz :)

Itt leginkabb arra akartam utalni a fentebbi gondolathoz, hogy eleg sok helyen nincs olyan, hogy "gondos tervezes, hogy fel ev mulva mit akarunk", hanem, hogy egy-egy dolog kiporog otlettol a megvalositasig 1 het - 1 honap alatt. AB teszt megmutatja, hogy volt-e ertelme, annak fuggvenyeben meg vagy modosul a terv, vagy marad ez. Nyilvan vannak hosszutavu strategiai elemek is, de azokat pont a scrum miatt lehet tervezni idoben.

Nem értelek félre. Az 1-2 hét alatt elkészítendő featue-ökre még inkább igaz, hogy jó szoftvermérnöki módon kell elkészíteni (clean code, unit teszt), mivel lehet, hogy 2 hetet dolgoztatok csak rajta, de utána már sok feature erre fog épülni, és a termék része lesz sok éven át.
És épp ezért kell gondosan megcsinálni a komponenst.
Az, amiről te beszélsz, az nem szoftvermérnöki szint, hanem business (tervezni, hogy mit is akarunk). Az üzleti tervezésnek sok köze nincs ahhoz, hogy az agile fejlesztés arról szól, hogy "release early, release often". Nincs mögötte semmi magic. ÉS azért van a sok kis releasre szükség, mert sok cég képtelen előre tervezni üzletileg. Ott nem is fér bele az, hogy 1-1 sprintben ne adjunk ki business value-t. Ami persze sokszor hosszútávon hátrányokkal is járhat: egy korai sprint architekturális döntése miatt valamit később már nem lehet 1 sprint alatt megcsinálni. A release early, release often csak akkor működik, ha minden szoftverfejlesztő betartja a clean kódolási elveket, ha mindenre vannak unit tesztek stb. Mert akkor tényleg nem fáj módosítani, eldobni dolgokat.

Az, hogy vannak cégek, akik képesek arra, hogy akár 1-2 évre előre tervezzenek üzletileg, még nem jelenti azt, hogy számukra az agile módszertanok nem megfelelőek. Modern szoftverfejlesztési eszközöket (unit tesztek, CI, stb.) ők is használnak, csak éppen ott belefér az, hogy ha 1-2 hónapig nem adsz ki új business value-t, hanem megalapozod a jó architektúrát, ledokumentálsz mindent stb. De attól még ugyanúgy vannak heti release-k (például regressziók ellenőrzése miatt), heti telepítések, csak éppen nem a végső célközönség számára, hanem belső használatra.

Az a baj, hogy az agilitást (release early, release often) sokan összekeverik a modern szoftverfejlesztési eszközökkel, módszerekkel (TDD, CI és társai).

Na ez az, amit én még soha nem láttam jól megcsinálva, mármint hogy egy teljes,a megbízó igényeit teljesen lefedő, üzleti logikával teljesen szinkronban lévő user interface tervvel ellátott specifikációt kaptak volna a fejlesztők, amit csak le kellett volna kódolni. A valóság az, hogy amikor egy ilyen specifikációt kapnak, az olyan 20-30%-ban fedi le azt, amit a megrendelő akar, a többit meg lehet kitalálni...

Nekem már sikerült egy olyan produkálnom egy kb. 3-4 hónapos projektnél a megrendelő és a fejlesztők felé. ;) (Másfél-két hónapos késésben lévő projektet ezzel egy nap csúszással sikerült szállítani.)

Viszont nagyobb projektre hááát... Volt egy hasonlóan káoszosan indult projekt, ami az alapjaitól el lett cseszve, amit egy ideig ugyanolyan szörnyen kellett tovább vinni, majd kénytelen volt nagyjából az összes fejlesztő az asztalra csapni, hogy kedves management, ezt így ti sem gondoljátok komolyan... Nagyjából onnan tudott megindulni a projekt, mikortól elkezdtük kezelhető méretekre lebontani és egyszerre egy max két részt kidolgozva valami agilisebb modell felé elvinni az egészet.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Nem tudsz mindenre részletesen és gondosan tervezni. És legesleginkább: a megrendelő sem jövőbe látó, neki is adódhat olyan igénye, ami miatt változtatni kell. Tudnék mondani hosszú-hosszú listát arról, amit a saját fejlesztéseinkben megcsináltunk, kiraktuk, terveink is voltak arra, hogy akkor hogyan tovább, majd kiderült, hogy gyakorlatban nem működik (mert az userek nem haraptak rá, nem fenntartható, túl költséges, túl sok a humán igénye, időközben jött egy jobb alternatíva, akármi), holott maga a rendszer teljesen jól le lett fejlesztve. (Ergo, szoftverfejlesztési szempontból hibátlan munka volt.)

De mondhatok egy egészen konkrét példát is, ahol a megrendelő oldalon voltunk/vagyunk: van az ERP-nkben egy funkció, kb. másfél éve fejlesztettük két cégünk közé. Aztán felvetődött, hogy ha még ezt meg azt is tudná (ami messze nem volt célja az eredeti fejlesztésnek!), akkor nekünk még ennyi meg annyi munkát és pénzt tudna spórolni, illetve a vevőket is egyszerűbb lenne kiszolgálni.

Nos, ez a rendszer teljesen jól működött, míg a harmadik cégünknek nem lett egy új telephelye, ahol szintén akartuk használni csak épp a rendszer nem volt felkészítve arra, hogy több telephelyet kezeljen, mert igény se volt rá és hibázott néhány dolog.

Aztán most a az első cégben lesz egy fontosabb változás a raktárban, ami ismételten érinteni fogja ezt a modult. Hogyan akartál volna olyan igényekre "részletes és gondos" tervezéssel előre gondolni, amik egy-másfél éve nem is voltak igények?

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Szia,
Nem pótcselekvés, abszolúte nem.
Ha dolgoztál már olyan projektben, ami nem megoldható 2 hét alatt 4 emberrel, te is beláthatod, hogy elég sok fájdalmat okozhat, ha a backendesek által kínált interface a frontendeseknek kevés lehet. Ilyenkor Waterfall esetén jönnek a frontendes workaroundok, mivel nincs official mód arra, hogy a backendtől új eszközt kérhess. ( Workaround jelen esetben a backenedesek győzködése, hogy fejlesszék le, de az is, hogy ha alternatív úton érik el a hatást... )
Ezt lehet tervezési hibának is hívni, és végeredményben az is. Viszont, ez pont olyan probléma, ami megfelelően nagy komplexitású feladatnál hatványozottan jön elő. Az agile ad egy keretet, amivel ez részben vagy egészében áthidalható.
Viszont, ne hidd azt, hogy egy 40 komponenses rendszerben, ahol 100-150 fejlesztő dolgozik, előre mindent meg tudsz tervezni. Sajnos ez pont az álom kategória.
Kis rendszereknél ( szimpla weblapoknál, blog motorra húzható webshopoknál, RAD fejleszthető alkalmazásoknál, stb-nél ) ez a probléma kisebb eséllyel jelentkezik. Nem azért, mert jobban tervezik, hanem pont azért, mivel kevesebb apróság van, ami felett át lehet siklani. És, mindemellett ezen a komplexitáson még lehet teljesen rutinból dolgozni.
Üdv,
LuiseX

Ezeknek semmi köze az agilitáshoz. Aki nem agilisan fejleszt, hanem mondjuk jó előre, 1 éves releasekben gondolkodik (pénzügyi szektorban, de EÜ-ben, és sok más helyen is így megy, vagy mondjuk kormányzatnál), ott is természetes a magas igényességű szoftver előállítása. Ahhoz ezek a minőségi feltételek (tesztelések), illetve kódminőség-javító intézkedések (refactoring) szükségesek. Az agilitás nem erről szól egyáltalán. Az viszont igaz, hogy ezek nélkül nincs igazán agilitás. De valójában: ezek nélkül nincs minőségi szoftver. Szükséges, de nem elégséges feltétel.

Először is érdemes elolvasni a magyarra ferdített változat helyett az angol verziót, aminek több értelme van:

1, Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2, Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

3, Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4, Business people and developers must work together daily throughout the project.

5, Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6, The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7, Working software is the primary measure of progress.

8, Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9, Continuous attention to technical excellence and good design enhances agility.

10, Simplicity--the art of maximizing the amount of work not done--is essential.

11, The best architectures, requirements, and designs emerge from self-organizing teams.

12, At regular intervals, the team reflects on how to become more effective, then tunes and adjusts ts behavior accordingly.

Illetve ezt javaslom olvasásra:

https://www.linkedin.com/pulse/12-agile-manifesto-principles-simply-exp…

1-es pont: ezt szokták nagy sokan szigorúan venni, és akkor be is bukik minden. Amikor elindul egy projekt, akkor a hagyományos modellben van egy speckó, lefejleszted,
fél év múlva a megrendelő kap egy sw-t, tehát a kezdeti specifikáció és a végső termék közötti olló baromi nagy. Egy alternatíva erre, hogy gyorsan kap release-eket valami
pl. egy teszt szerverre, ahol szépen meg tudjátok mutogatni, hogy ez így meg úgy fog működni. Ennek az előnye az, hogy a felhasználó vissza tud jelezni, hogy bocsi, bár
ebben egyeztünk meg, de rájöttem, hogy ez így ebben a formában nem lesz jó, nem-e lehetne másképp? A szoftver tehát időben konvergál ahhoz, amit a felhasználó valóban szeretne,
nem pedig egy "specifikációhoz" ami teljesen biztosan hiányos, hibás, és nem végiggondolt.

2-es pont: ez nem azt jelenti, hogy kávédarálónak indult, és űrhajó lesz belőle. Ez azt jelenti, hogy lehetőséget adunk a felhasználónak a fent említett változtatásokra ésszerű keretek között.

5-ös pont, az emberek azért lesznek motiváltak (mert ha nem fizeted meg őket, akkor nem fognak nálad dolgozni) mert hagyják őket békén dolgozni, nem pedig végtelen mennyiségű szükségtelen adminisztrációs baromsággal kell foglalkozniuk, illetve nem fentről valaki kiosztja a melót hogy ki mit csináljon, hanem a csoport önszerveződik. Igy önállóan egymás között el tudják dönteni, hogy ki mit szeretne csinálni a következő sprintben.

7-es pont: az eredetiben egyébként az van, hogy "emphasis on working software over comprehensive documentation". Tehát fontosabb a működő program, mint hogy le legyen dokumentálva, amit egyébként a kutya sem fog elolvasni.

9-es pont: Continuous attention to technical excellence and good design enhances agility. Igy máris van értelme...

10-es pont: 80-20 szabály. Az eredményeid 80%-a a melód 20%-ából fog jönni. Ezt kell jól megcsinálni. Csinálj jó, ügyes könyvtárakat, toolokat, stb. amik segítik a munkád.

11-es pont: annyi, hogy bízzuk a fejlesztőkre, hogy ők hogyan szervezik meg magukat, mert ők tudják. A PM ne ugasson bele, a felsővezetés meg végképp. Én már találkoztam olyannal, hogy a felsőbb vezetésből valaki, aki korábban fejlesztő volt, osztotta az észt olyanokról, amikhez nem értett. Finoman helyre kellett rakni, hogy ad.1. ez nem az ő dolga, ad 2. hülyeséget beszél.

12-es pont: angolul megint értelmes.

---

magamról: 2001 óta java fejlesztő vagyok...

5. ponthoz kiegészítés: nálunk akkor haladtak legjobban a projekten a dolgok az előző munkahelyemen, amikor 1-2 hetente fogtuk, kilistáztuk a redmine-ből a dolgokat, mindenki átnézhette a csapatban, hogy kinek mi a szimpi, aztán aki kapja, marja alapon mindenki felosztotta maga között a feladatokat. Persze, utána még kellett egy kis simogatás a listán a PM-mel az "elárvult" feladatokat illetően, de az mondjuk a 10%-a volt.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

11. ponthoz kiegészítés: Az önszerveződés más formában is előjöhet. Pl. ha kell egy library, header vagy hasonló egy másik csapattól, akkor ne várd a csodát vagy a menedzseredet, hogy adja oda neked, hanem keress meg valakit odaát. Ez többek közt az Agile Manifesto "Individuals and interactions over processes and tools" pontjával is egybevág.

Na most ha hardhead szerint ez "Nesze semmi fogd meg jól!", akkor látszik, hogy még nem érti az Agile-t. Az Agile ugyanis semmi több, mint józan paraszti ész.

Ha a korábban megindokolt "Som-Som-féle Agile Super-Manifesto" az, hogy "az emberek hülyék", akkor a "Som-Som-féle Agile Super-Principle" az, hogy "használd a józan paraszti eszedet".

"Így önállóan egymás között el tudják dönteni, hogy ki mit szeretne csinálni a következő sprintben."
Na ez azért így nem igaz. Nem arról van szó, hogy mi mit szeretne csinálni (a legtöbben a hátuk közepére sem kívánják a programozást, csak éppen ez egy olyan szakma, ami jól fizet akkor is, ha béna vagy benne), hanem arról, hogy nem egy, a fejlesztőket és a szoftver lelkivilágát nem ismerő emberke dönti el, hogy ki mit csinál, hanem a csoport belsőleg eldönti, hogy "hú, ehhez Sanyi ért a legjobban, csinálja Sanyi". ÉS az, hogy a csoport belsőleg eldönti, az általában azt jelenti, hogy egy proaktívabb, tapsztaltabb esetleg tehetségesebb emberke vezérlésével kiosztják a feladatokat. Természetesen lesz, aki csak unottan ül, hogy "Jó, akkor a 1234-es ticketet megcsinálom", míg mások proaktívak lesznek ebben, mert őket valóban érdekli a szakmájuk, de ez általában a kisebbség.

Épp az egyik már idézett cikkben (Why “Agile” and especially Scrum are terrible) van erre egy jó gondolat:
"leaders (who may not be in leadership roles on the org-chart)"
Nem feltétlenül az a vezetője egy mérnökcsapatnak, aki a business szerint a csoportvezető. Hanem az, akire hallgatnak az emberek. Erről szól ez a pont az Agile Manifestoban: ne felülről akarja a business eldönteni, ki mit csináljon, hanem hadd döntse el a mérnöki kompetencia.

1: Az ügyfél nem attól elégedett, hogy hamar kapja, hanem attól, hogy azt kapja..

Szerintem ne próbáld meg kitalálni, hogy mi a jó az ügyfélnek, hanem bízd rá!

Nem tudom, nálatok hogyan működik, nálunk nem az van, hogy mi kitaláljuk, hogy majd agile módszertan szerint szállítunk az ügyfél meg szívjon, hanem az ügyfél kéri ezt.

Statisztika szerint az ügyfelek nagy része azért igényel agilis fejlesztést, mert a legfonosabb számukra a piacra kerülés sebessége. Vagyis de, attól elégedett, hogy hamar kapja, még akkor is, ha esetleg hitványabb megoldás kerül bele.

Persze itt felmerül a kérdés: mi az, hogy hitványabb megoldás. Ha működik a szoftver és azt csinálja, amit az ügyfél kért, akkor mi a gond? Ha a hitványabb megoldás helyett a jobb megoldás kerül bele, de tovább tart kifejleszteni = drágább + később kezd hasznot hajtani, akkor az most jó az ügyfélnek?

És légyszi ne írd azt, hogy hitvány = majd három hónap múlva az egész szarból készített vár összeomlik és nagy költséggel újra kell az egészet írni, mert annyira hitvány kódot nem szabad beletenni a rendszerbe, akár agile akár nem.

Agile esetén a 8-as pont, amit nem értettél, az pont arról szól, hogy fenntartható fejlődést kell elérni, tehát ha az első story 1 hét volt, a második hasonló story 2 hét, a következő 2 hónap, akkor rosszul csinálják. A 8-as pont a technical debt szintentartásáról, refaktorálásról, a kódbázis folyamatos javításáról és karbantarthatóságáról szól.

Kifejezetten rossz, ha a határidő miatt kerül a rendszerbe egy hitványabb megoldás. Márpedig ennek garantáltan ez a vége

A leggyakrabban használt Agile módszertanok esetén nincs olyan, hogy határidő. Olyan van, hogy becslés, hogy kb. mi lesz kész, és ami kész van addig, az mehet ki. Ha valami nincs kész "határidőre", akkor majd megy legközelebb. Vagy nem megy egyáltalán.

DSDM esetén van szoros határidő, ott máshogyan van megoldva az, hogy ebből ne legyen gond. A határidőre betervezett feladat 60%-a a kötelező, a maradék az pont azért van, hogy ne jelentsen a határidő nyomása ilyen problémát, mint amit írsz.

Illetve: az Agile nem jó mindenre. Simán el tudok képzelni olyan feladatot, ahol nincs előnye Agile-t használni, és van olyan projekt is, ahol nem is működne. Ha pl. a projektben a scope és az idő is fix, jó eséllyel nem lesz jó Agile módon fejleszteni (mondjuk waterfallal se). Ha még a pénz is fix, akkor meg végképp, mert akkor ahogy írod, a minőség az egyetlen, amivel játszani lehet. Agile esetén meg pont a minőség a fix és a scope + idő a változó.

2: Ez kész. Ez önmagában csődbe vihet egy céget.

Melyik céget? A megrendelőt? Hát ők had döntsék már el, hogy mire szeretnének pénzt költeni, és megengedhetik-e maguknak!
A fejlesztőt nem, hiszen a megrendelő az időért fizet. Vagy rugalmas az idő és addig fejlesztenek az emberek, amíg a megrendelő azt nem mondja, hogy köszönöm elég, vagy fix az idő, és akkor addig fejlesztenek, amíg el nem fogy a keret.

Az agilis fejlesztés alapelvei szerint fix költséggel és szigorú határidőkkel dolgozunk. Ebből az fog következni, hogy sok lesz azoknak az óráknak a száma, amit a fejlesztők ugyan ledolgoznak, de nem lehet elismerni, mert az a költségeket megdobná. Ez szívás lesz a fejlesztőknek. Ha a 2-es pontot komolyan vesszük, akkor a fejlesztő lesz a kisebb ellenállás, hiszen a megrendelőt - az alapelvek szerint - kifejezetten nem lehet önmérsékletre bírni.

Szerintem féleérted. A tipikus Agile projektnek sem a költsége sem a határideje nem fix. Ami fix, az a csapat költsége, mondjuk havonta x pénz.
Lehet fix költséget és ebből következő szigorú határidőt szabni, pl. van fix 6x pénzem, akkor ha havonta x a csapat, akkor 6 hónap a határidő, ott vége a projektnek, akármi is van.
Nincs olyan, hogy a fejlesztő ledolgozik egy órát de nem ismerjük el. A költségeket nem dobja meg, mert bele volt eredetileg kalkulálva, hogy napi 8 órával ennyibe kerül.

A 7-es pontra amit írsz, azzal nem vitatkozom, de az Agile Manifesztó 7-es pontja igazából nem erről szól, amit írsz, hanem arról, hogy a projekt előrehaladásának mérésére az elkészült szoftvert kell nézni. Szóval ha mondjuk kész a UX terv, az még 0. Ha kész a szoftver 90%-ig, az még 0. Ha megcsináltunk mindent, ami a definition of done-ban le van írva és a szoftver komponens fel van telepítve élesben és működik, akkor lehet számolni vele.

9. Bullshit. Mi ez? :) A jó tervezést már az elején elbuktuk. Miről beszél ez? Pont azt akarja megspórolni.

Miért buktuk el az elején? Miért akarná megspórolni?
Elméletileg arról szól ez, hogy minden egyes alkalommal, amikor valamit megtervez a csapat, akkor tessék jól megtervezni. (Nem akarja megspórolni, pont az ellenkezője).
Gyakorlatban persze lehet rosszul tervezni, de ez nem azért van, mert az Agile Manifesztó ezt írja elő.

10. Ez annyit mond, hogy csak annyit dolgoz, amennyit nagyon szükséges. Spórolj meg minden erőfeszítést, amit az ügyfél úgysem venne észre. Na, ebből is minőségi meló lesz... :D Agyam eldobom!

Igen, kb. ezt mondja. Csak annyit dolgozz, amennyit szükséges. Ha az ügyfél nem vesz észre különbséget abban, hogy te két napig reszelgetted a kódot, akkor az feleslegesen eltöltött két nap volt. Ez olyasmikre vonatkozik, ami 'felesleges' munka. Nem tudok hirtelen jobb példát mondani, mint mondjuk ne implementálj egy osztályba olyan függvényeket, amiket nem használ jelenleg senki és semmi csak azért, mert úgy lesz 'teljes' az osztály. Majd ha valamikor a jövőben szükség lesz ezek egy részére, majd akkor implementáljátok. Ha soha nem lesz rá szükség, akkor sosem.
De megint csak: itt nem arról van szó, hogy engedjünk a minőségből vagy a karbantarthatóságból.

11: ez egy koncepció. Ki lehet fejteni bővebben, a manifesztó nem megy részletekbe. Ha érdekel, utána tudsz nézni.

Egyébként pedig, ha szabályos időközönként alkalmazkodsz a szabálytalan időközönként változó valósághoz, akkor ez azt jelenti, hogy egy ideig felesleges dolgokkal foglalkozol, de legalábbis rossz irányba halad a fejlesztés. Ez pénzkidobás.

Ezt jól látod. Ha a valóság változik, mindig lesz ilyen. Agile esetén legalább hamarabb alkalmazkodsz, tehát kevesebb pénzt dobsz ki.

"Egyébként pedig, ha szabályos időközönként alkalmazkodsz a szabálytalan időközönként változó valósághoz, akkor ez azt jelenti, hogy egy ideig felesleges dolgokkal foglalkozol, de legalábbis rossz irányba halad a fejlesztés. Ez pénzkidobás."

Nem csak scrum létezik.
Vannak más agilis módszertanok is.

Fuszenecker Róbert

Vez. fejl. multtal - privat - velemenyem, hogy az agilis fejlesztes nem egy egzakt tudomany, hanem egy eszkoztar, amit az adott ceg, adott projekt, adott csapat, adott dolgaira kell hangolni, vilagosan szem elott tartva az osszes fel erdeket. Azt elkepzelhetonek tartom, ha az osszes agilis modszertant osszerakod, akkor lesz benne ellentmondas, de ha az iment emlitett modon kialakitod a fejlesztesi modellt, akkor rajtad mulik lesz-e benne.

-
Big Data trendek 2016

Gyakorlatilag azt mondtad - nekem is ez az érzésem -, hogy az agilis módszertan attól működik, ami nincs benne. :) Leginkább attól, hogy a részvevők elsősorban sikerorientáltak. A sikerért képesek többet dolgozni és a végeredmény minőségéből engedni, hogy elfedjék azt, amikor nem működik a metodika.

Van olyan módszertan - pl. SDM - ahol a módszertanban eleve szerepel a hangolás. Nem neked kell kitalálni. Nem értem miért lenne jó egy olyan módszertan, ahol az alkalmazóinak kell kitölteni a hiányzó réseket, áthidalni az ellentmondásait? A jobb módszertanoknál a hangolás nem úgy megy, hogy kitalálsz a módszertanban nem létező dolgokat, hanem úgy, hogy adott esetben a projektnél, miket hagyhatsz el a készletből úgy, hogy nem okoz gondot.

Miért nem mondjuk ki, hogy ez egy vacak és jobb kell? Azt érzem, hogy az elmúlt 20 évben az informatikai társadalom kritikai képessége - élükön a (felső)oktatásban tevékenykedő tanárokkal - egy nagy nulla lett. Helyette azon megy a versengés, hogy az aktuális őrületnek ki áll hamarabb az élére.

Ha jól tudom, akkor az SDM, az a tipikus waterfall, SDM2 annyival több, hogy iterálja, ami meg már az agilis módszertanok előfutára.

"Miért nem mondjuk ki, hogy ez egy vacak és jobb kell?"

Épp ez ellen lázadozol. Kimondták, hogy vacak a hagyományos és most az újak keresése zajlik. Az agilis az nem egy módszertan, az módszertanok halmaza, csak az alapelvek vannak lefektetve.

Van rengeteg praktikája, gyakorlata (practice), - pl. unit teszt, folyamatos integráció (CI), páros programozás, refaktorálás, - amik nélkül nem igazán beszélhetünk agilis fejlesztésekről, amiket már átvettek többé kevésbé a hagyományos fejlesztéseknél is, mivel már ezek használatával is jelentősen növelhető a rendszerfejlesztés minősége.

A legfőbb gond, az agilis módszerek használatával, hogy nagyon nehéz jól csinálni. Ha az alapelvek közül egy-kettő is hiányzik, vagy nem jól érvényesül, akkor megy a levesbe az egész. Vannak viszont részei, amiket önmagukban is lehet használni és nem jelentenek kockázatot, pl. amiket korábban is kiemeltem.
Ha a buktatókat szeretnénk elkerülni, akkor érdemes elolvasni ezt a minikönyvet: Kanban és Scrum mindkettőből a legjobbat, rengeteg hasznos tanácsot ad!

"az agilis módszertan attól működik, ami nincs benne" nem, nem ezt mondtam, tobb van benne, es attol mukodik, hogy kitalaljuk adott szituacioban mit erdemes alkalmazni. Ehhez kell az az ember, aki jartas tobb modszertanban, es vitt sikerre tobb projektet.

"sikerért képesek többet dolgozni" azert kepesek tobbet dolgozni, mert a sprint elejen kozos volt a vallalas, es nem egy olyan celelrt dolgoztunk, amit valaki kituzott, hanem a sajat vallalasunk betartasaert, a csapatert. "és a végeredmény minőségéből engedni" nem engedunk a vegeredmeny minosegebol, sot javitjuk a minoseget, hogy ha valami nem jo/nem felel meg az ugyfelnek/whatever, akkor szepen betervezzuk a kovetkezo iteracioba, hogy azt is meg kell javitani/at kell alalkitani, es nem csak a vegen derul ki, amikor mar 30 masik featurat epitettunk ra.

"SDM - ahol a módszertanban eleve szerepel a hangolás" csak az SDM az egy modszertan, az agile meg egy szemlelet (8-10 modszertan gyujto neve). ne keverd mar a szezont a fazonnal legyszi.

"Nem neked kell kitalálni." hat konyorgom ki tudja kitalalni, ha nem en?? ki ismeri a csapatot?? ki ismeri a fejlesztendo cuccot?? ki ismeri a megrendelo igenyeit?? ki ismeri a managementet?? ki ismeri a ... Nincs ultimate modszertan, nem lehet taviranyitani. Vannak projektek, ahol mukodik a reggeli standup vannak ahol nem (fugg attol, hogy tipikusan mindenki beer-e reggel, mennyien home officolnak, hany orszagban zajlik a fejlesztes, mekkor az idoeltolodas, stb). Es masik 40 dologrol ugyanez elmondhato.

"A jobb módszertanoknál a hangolás nem úgy megy, hogy kitalálsz a módszertanban nem létező dolgokat, hanem úgy, hogy adott esetben a projektnél, miket hagyhatsz el a készletből úgy, hogy nem okoz gondot" az a nagy bajod neked, hogy azt hiszed az agilis fejlesztes az egy modszertan. Persze vannak alapelvek, de az egyes implementaciok elternek egymastol, vagy egyes implementaciok nem fedik le a teljes fejlesztesi folyamatot, ezert masokkal szimbiozisban mukodnek.

"hogy ez egy vacak és jobb kell" ha lesz jobb kidobjuk, addig meg toljuk ;) Egyenlore nekem/nalunk sokkal jobban bevalt mint az elodjei, es ennel fogva beszelgethetunk itt az elmeletrol, a gyakorlatban sokkal stresszmentesebben tudom vegezni a munkamat alkalmazva az agilis elveket, es a termek is jobb lett mindig. Nekem csak ez a 2 dolog szamit.

-
Big Data trendek 2016

Én is túl vagyok már jó pár projekten. Nekem mindig az vált be, ha minél hamarabb felfedtem a projektben a gyenge pontokat és az ellentmondásokat és ezeket minél előbb megoldottam. Csak ezután kezdtem neki a valódi feladat "fizikai" megvalósításának.

Mindemellett láttam jó pár - mások által vezetett - projektet elvérezni a "majd megoldjuk, ha odaérünk" hozzáállással. Nekem az agile erre nagyon hasonlít, így képtelen vagyok hinni benne.

Az agilis fejlesztés nem jelent ad-hoc fejlesztést. Úgy érzem te ez utóbbiról írtál.
Agilis fejlesztés esetén is szűkséges a nagyobb távlatú célok eldöntése és ha kell akkor ennek megfelelően tervezni az alkalmazás felépítését. Amit te mondasz az akkor áll elő, ha csak nagyon rövid távon gondolkodnak és terveznek.

En a jozan paraszt eszet hasznalom; en nem iszok, es paraszt vagyok.

egyéb:
mert tervezőmérnök vagyok, nem fejlesztő.

Van egy tervnek 5-10-15-30-40 iterációja. Egy iteráció lehet hogy néhány óra, az is lehet hogy több nap. Minden iteráció valamiféle ellenőrzésen megy keresztül, ezek jelentős része usability teszt, valós felhasználókkal.

Egy termék akkor van kiadva fejlesztésre, amikor ezek az iterációk elég éles képet rajzolnak ki, hogy mit is kell csinálni.

Oka: a fejlesztő baromi drága, és néha pixeles dolgok is baromi nagy architekturális változtatásokat jelentenek.

Egy végleges, állapotgépes, százszor átbeszélt, errorcheckelt, mit-miért csinálunk tervvel a fejlesztő is nyugodtabban fejleszt, akár agilisen, akár anélkül.

Nyilván a terv sose lesz tökéletes. Nincs tökéletes terv. De óriási változtatásokra azért ritkán kerül sor, sz.rrá vannak kutatva a felhasználói célok, tudjuk, mit miért csinálunk, miért kell az nagyon oda, és innentől kezdve általában az ügyfélnek is édesmindegy, mennyibe kerül csak jó legyen.

Szóval egyeztetünk, a terv változik, esetleg a fejlesztők eltérnek - hogy még a jó úton vagyunk-e, arra jó ha ők Agile-ban vannak, mert akkor a kéthetente készült belső release-t (haha, vicceltem: még nem láttam olyan csapatot ahol a belső sprint release képes lett volna 3 kattintást kibírni összeomlás nélkül) elvisszük tesztelni, ellenőrizzük hogy ez továbbra is egy síkban van a felhasználói és üzleti célokkal.

Mondok egy példát: fail-safe törléstechnika UI-t terveztünk egy listányi valamihez. A programozók önkényesen gondoltak egyet, és hogy lecsökkentsék a projektidőt (Memento pattern implementálásához gondolkozni kell, azt nem mindegyik szeret), helyette "do you want to delete yesno" alert-et varázsoltak a UI-ba (de szó szerint, JS confirm). Semmi gond, mert deleted flag-ot is terveztünk, csak épp az adatbázis team UPDATE deleted=1 helyett DELETE utasítást csinált lustaságból... Semmi gond, van napi backup, de abból meg nem tudtak gyorsan (48 órán belül) visszaszedni, mert ez a team is lusta volt... Na itt pl. már jeleztük, hogy ez tipikusan olyan dolog, amit a user véletlenül is törölhet, mi lenne, ha mindenki azt csinálná, amit mondtunk.

Nyilván a prototípusokon már láttunk random törléseket. A supporttól tudtuk, hogy az előző rendszerben is gyakran voltak random törlések (amikre széttárták a kezüket, ezért lett itt feature a safe delete).

De a programozó az olyan, mint holmi tékozló Ádám és Éva a Paradicsomban, érezni akarja az önálló döntés szabadságát - s ha meg van mondva, hogy egy dolgot kétféleképp lehet megcsinálni, de ott van mellette az értékítélet is, hogy az egyik rossz, a másik meg jó, hát csak úgy érezheti hogy él, hogy nem egy fogaskerék egy rendszerben, hogy rosszul csinálja.

Ecce homo.

A programozók a kreativitásukat nem a termékben kell, hogy kiéljék, hanem a szoftverfejlesztési módszertan tökéletesítésében.
Nálunk sem azzal foglalkoznak a programozók, hogy megmondják az ügyfélnek, mit akarjon, és hogyan akarja, hanem azon, hogy profibb automatizált tesztkörnyezetet írunk, tökéletesítjük a tesztrendszert, a CI-t stb. Hogy jobban írjuk azt a szoftvert, amit az ügyfél akar.
Mert ez a szoftvermérnöki value.
Hogy még mindig az egyik legjobb cikket idézzem:
"And that is precisely the point — you can't have people freelancing their way through software code that flies a spaceship, and then, with peoples lives depending on it, try to patch it once its in orbit. "Houston, we have a problem," may make for a good movie; it's no way to write software. "People have to channel their creativity into changing the process," says Keller, "not changing the software.""
http://www.fastcompany.com/28121/they-write-right-stuff

Aki abba akar beleszólni, hogy az ügyfél mit akarjon, az business analyst valójában, és nem szoftvermérnök. Használja ki ott a kreativitását.

Az oké, hogy az ügyfél/business analyst eldönti, hogy mit tudjon a szoftver.
Mi garantálja, hogy a business analyst a lehető legkönnyebben fejleszthető és karbantartható megvalósítási lehetőséget (hogy hogyan legyen egy funkció megvalósítva) választja az ügyfélnek megfelelő lehetőségekből?

A hogyannak mi köze ahhoz, hogy mit akar a felhasználó?
Ez úgy működik, hogy a BA és az ügyfél megbeszélik, hogy az ügyfél mit akar.
Majd a BA prezentálja ezt a mérnököknek, ők meg megmondják, ez mennyibe kerül.
Az ügyfél ezt vagy elfogadja, vagy nem, és módosít az igényein.

Amúgy nem a legkönnyebben fejleszthetőt kell választani, hanem azt, ami a legjobban közelíti az ügyfél igényeit és belefér a keretbe.

"ami a legjobban közelíti" pont itt van a kutya elasva, az okosok mikor megbeszelnek egy adott featuret, akkor szambaveszik, hogy mit szeretne az ugyfel, megnezik, hogy a rendszer hogy mukodik, mire hasonlitana leginkabb az uj feature, aztan az alapjan kitalalnak egy olyan megoldast, ami a rendszer konzisztenciahoz is hu, meg az ugyfel igenyt is kielegiti. Viszont innentol mar kompromisszum van a rendszerbe. De vannak esetek, ahol a koderek szintjen derul ki, hogy ezeket a kompromisszumokat masikokra cserlve harmadara lehet csokkenteni a fejlesztest/komplexitast/stb. Persze megvan ennek is a modja, hogy hogyan lehet ezt visszafele kommunikalni, de mindenesetre az nem feltetlen jo szemlelet, hogy nesze itt van csinald meg, es ne abban eld ki a kreativitasod, hogy beleszolsz a nagyok dolgaba, mert mi azt a meetingen mar kitalaltuk, hogy lesz jo, managers uber alles. En azt mondom, hogy bizni kell a programozok lustasagaba, es kell nekik idoablakot biztositani, hogy fitogtassak eme erenyuket, sokszor meglepo eredmenyek szuletnek, mert ok elnek egyutt a fejlesztessel, nem az oltonyos urak.

-
Big Data trendek 2016

Ha megnézitek a videót amit linkeltem, ott a fickó elmondja, hogy a customert olyan közel kell hozni a csapathoz, amennyire lehet. Magyarán ez azt is jelenti, hogy
a fejlesztő KÖZVETLENÜL beszél az ügyféllel, nem pedig 3 proxy-n keresztül. De ehhez ugye az egész céges gondolkodást át kell alakítani, lezúzni a manager szinteket.
Ez meg már politika.

A business analyst nem oltonyos ur, nem manager. Az egy feladatkor a projekten belul. Nem managel senkit, nincs alatta ember.
A feladata, hogy megertse, hogy mit akar az ugyfel. A programozok mellett dolgozik. Ha nekem peldaul problemam van egy spec megertesevel, szolok a BA-nak. Es nem kussolok, mert az oltonyos ur mar ugyis eldontotte.
De peldaul nekem nem kell tudnom azt, hogy mondjuk milyen PSAZF-kovetelmeny miatt kell a feature, de a BA-nak tudnia kell, o az adott terulet (egeszsegugy, penzugy, epiteszet) szakertoje. Az a dolga, hogy megertse, hogy az adott funkcionalitas business domain szempontbol mit jelent, es a programozok tole kerdezhessenek.

Az, hogy mondjuk egy PSZAF-megfeleloseg miatt le kell programozni valamit, ott semmi keresnivaloja annak, hogy a programozo azt mondja, hogy "de hat ha maskent lenne, akkor gyorsabban, olcsobban megcsinalnank". Nem, ilyen nincs. Vagy hasonloan, ha modosul az AFA-torveny, akkor a programozonak nagyon sok beleszolasa nincs abba, hogy mit kell leprogramozni a szamlazoszoftverben.

Es egyaltalan nem arrol van szo, hogy a programozo beleugat a nagyok dolgaba. Van, amit meg KELL csinalni es kesz, nincs mas valasztas. A programozoknak meg dolga az, hogy a rendszer legyen annyira rugalmas, hogy ne sertsen konzisztenciat a dolog. Ha nem rugalmas annyira az architektura, akkor nem jol eltek ki a szoftvermernoki kreativitasukat es rossz szoftvermernokok.
Hogy ertsd maskent: ha az ugyfel hulye igenyekkel jon mindig, akkor a programozonak nem az a feladata, hogy megmondja, mit lehet megcsinalni a mostani rendszerrel. Hanem az a dolga, hogy olyan szoftverarchitekturat alakitson ki, ami mindent kibir. Es ez a szoftvermernoki feladat, nem az, hogy megmondjuk az ugyfelnek, hogy a lustasagunk miatt mit nem akarunk megcsinalni.

Mert altalaban akkor akarnak a programozok beleszolni abba, hogy mit akarjon az ugyfel inkabb, ha szar architekturat csinaltak, es nem tudjak refactoralni konnyen, mert spagettikod, es nincs sok unit test, ami ellenorizne a refactoralast. Azaz akkor, amikor a multban megsporoltak a mernoki eroforrast, es a gondolkodast (a valodi szoftvermernoki kreativitast), aztan most meg az ugyfelre akarjak kenni az egeszet.

"A business analyst nem oltonyos ur, nem manager." de nem is hard core coder/architect, nem is lehet, hiszen "az adott terulet (egeszsegugy, penzugy, epiteszet) szakertoje" elmletben persze minden szep es jo, de a gyakorlatban szamtalanszor elofordul, hogy az ugyfel targyalojaban a BA rabolint valamire, amirol aztan kiderul, hogy nem az optimalis megoldas (karbantarthatosag/komplexitas/koltsegek/... szempontjabol). Ezeket a dolgokat az latja, aki tervezi/fejleszti aktivan a rendszert.

"Van, amit meg KELL csinalni es kesz, nincs mas valasztas" bocsi ha a sorok kozul nem volt egyertelmu, nyilvan azert irtam arrol a szituaciorol, amikor kompromisszumok vannak. Ha meg kell csinalni valamit akkor azt meg kell.

"Es egyaltalan nem arrol van szo, hogy a programozo beleugat a nagyok dolgaba" en eppen arra reflektaltam, hogy "A programozók a kreativitásukat nem a termékben kell, hogy kiéljék", hiszen az mar "legjobban közelíti az ügyfél igényeit". Csak annak eldontesehez, hogy mi a "legjobban" minden szegmenst figyelembe kell venni, amibe a programozas is beletartozik.

"nem jol eltek ki a szoftvermernoki kreativitasukat es rossz szoftvermernokok" vagy annyit valtozott a sw az evek alatt, hogy nem alkalmas az uj fejlesztesre. Megint csak konkret eset, gyonyoruen megtervezett OSGi architekturank volt, aztan jottek az ugyfel keresie, es egy ido utan az tortent, hogy 20 perc valtoztatas 8 senior oraba kerul, mire eltunt minden korkoros hivatkozas. Ne felejtsuk el, hogy nem csak 0-ro fejlesztenek programokat

"nem az a feladata, hogy megmondja" de az feladata, hogy felterjessze, hogy az hulyeseg, es jartam mar ugy nem 1x, hogy a megrendelo is belatta. Mert nekik sem mindig kristaly tiszta, hogy mit szeretnenek (valami olyasmi, legyen a szamlafordulo vasarnap 24 orakkor, nevetni fogsz, de lejott fejlesztoi szintig a keres), kulonbozo reszlegek nem tudnak egymas dolgairol, stb. Akar hiheto akar nem, ezek konkret esetek.

"olyan szoftverarchitekturat alakitson ki, ami mindent kibir" az ugye megvan, hogy ilyen nincs.

"a programozok beleszolni abba, hogy mit akarjon az ugyfel inkabb, ha szar architekturat csinaltak" mivel nincs mindent vivo architektura, es elofordulnak legacy fuggosegek is, es egymasnak ellentmondo mukodesek (az uj BA meg az ugyfel nem emlekszik ra, hogy XY almudulban 6 honapja valami total mas volt az igeny), szerintem elofordulhat es elo is fordul olyan eset, hogy vezeto fejlesztoi szinten ki tudnak olyan alternativat talalni, aminek mondjuk a fejlesztese harmad annyiba kerul. Business is changing.

Persze szuz uj projektnel, ahol meg minden shiny, ott konnyebb a helyzet, de agilis modszertant nem csak ilyen projektekre alkalmaznak csak. En sem azt mondtam, hogy minden egyes embernek minden egyes pixelbe bele kell szolnia, mert a demokraciaban nem hiszek, ha sw fejlesztesrol van szo ;) de egyszeruen kell hagyni nekik is lehetoseget, hogy a velemenyuket elmondjak, mert neha tudnak okosat is mondani, es neha a lustasaguk jo sok penzt tud megsporolni (aztan ezt a sporolast nem is feltetlen kell realizalni az ugyfelnel)

-
Big Data trendek 2016

Meganagy -1.
Sőt, orbitálisan, gigantikusan, őrületesen, bombasztikusan, horrorisztikusan batár nagy -1.

Mondd, neked mindegy talán, hogy követ zúzol vagy madárfüttyös, medencés lakóparkhoz készíted elő a talajt? Pedig a munka pontosan u.a. De egészen más lelki állapotban végzed el, motivációt ad.

És mellesleg egy fejlődési lehetőség, ha valaki évtizedek alatt belefáradna a kódolásba, de van tehetsége a BA területhez.

A feladata, hogy megertse, hogy mit akar az ugyfel

Ezen már továbbléptünk, a user experience-esek feladata megérteni, mire van szüksége a usernek, és ezt egyeztesse a műszaki lehetőségekkel meg az üzleti környezettel.

De ilyen legoptimálisabb kód, karbantarthatóság... bocs, ilyenekkel nem foglalkozunk. Nem a mi dolgunk.

A mi dolgunk az, hogy amit a user elé raksz, azt a user tudja használni arra, amire neki kell.

Általában ennek kivitelezhetőnek és gazdaságosnak kell lennie, adott esetben pl. termelnie kell a lóvét.

Másik oldalon meg pl. van hogy 100msec-es meg 1 másodperces válaszidők kellenek, ha kell, szemét trükkökkel (pl. instagrammos dupla filterezés szerver-és kliensoldalon).

A usernek nem feltétlenül a legolcsóbb (legkevesebb programozással járó) program kell hanem az ami funkcionalitásában, megbízhatóságában, használhatóságában, konzisztenciájában és logikusságában a legjobb.

Persze, segítek azzal a spagettikód elkerülésében, hogy EGYSZER mondom meg, mit kell csinálni, és hogy MIÉRT. Ez a spagettikód elkerülésének egy jó módja, mert ha benne van 40-80 óra terepkutatás hogy mit kell megcsinálni és miért azt, abban már olyan meglepetések amik miatt átírjuk a komplett szoftvert nincsenek.

Olyan van, hogy egy külső szereplő - pl. egyszerűség kedvéért egy security-s - előjön, hogy mondjuk jelszóellenőrizni minimum 1mp alatt kell, hiába voltak nekünk más ötleteink. Vagy hogy amit a user akar az törvénybe ütközik.

Ezeket igyekszünk lefuttatni a fejlesztési körök előtt, a prototípusokkal, amiket viszünk ki userekhez, véleményeztetünk a fejlesztőkön kívül security-sokkal, jogászokkal, marketingesekkel stb, tehát amire a fejlesztőhöz kerül már a lehető legpontosabban tudjuk, mi kell.

De ez egy össznépi politikai játék. Mi politikusok vagyunk, akiket azért fizetnek, hogy a user érdekeit képviseljük.

A BA-knak meg az UX-eknek semmi koze egymashoz. Az UX feladata megmutatni, hogy amit akar az ugyfel,azt hogyan akarja latni.
Csak egy pelda: mondjuk van egy torvenyi megfeleloseg, teszem azt, a bankszamlanyito szoftverben tamogatni kell a TFTP (Terrorist Finance Tracking Program) megfeleloseget.
A BA ismeri a terepet, szakertoje, elolvassa a torvenyt, megerti, pontosan mi kell (hany mezo, milyen mezok, stb), az UX-es kitalalja, hogyan jo ezt prezentalni (hol legyen, milyen modon epuljon be a meglevo folyamatba).
Ket tok kulon feladatkor ez.
Az UX-eseknek nem feladata, hogy megertsek, mi kell a usernek. A feladata, hogy kitalalja, hogy ami kell a usernek, azt hogyan kell prezentalni.

Általában olyan helyeken dolgoztam, ahol ez a két szerep nem létezett egyszerre - egyszer dolgoztam egy helyen másfél hónapot, ott a bulinak azzal lett vége, hogy a BA-k elmentek a HR-hez, hogy szerintük az átfedés szinte teljes, és hogy döntsék el, ki csinálja a feladatot.

Az ilyen hány mező meg milyen mező, ezeket is egy UX Researchernek elő kell tudnia ásnia, ez mondjuk egy Object-Oriented UX vagy Information Architecture feladat, és rendszerint az interjú fázisból jön.

Az UX-eseknek nem feladata, hogy megertsek, mi kell a usernek. A feladata, hogy kitalalja, hogy ami kell a usernek, azt hogyan kell prezentalni.

De, egy UX-esnek pontosan ez az egy soros feladatkör leírása. A másik fele (pláne egy research UX-es esetén) a UI designer feladata, aki egy másik ember, más skillekkel. A UX-esek rendszerint párban, néha triumvirátusban (UX Research, UX Design és külön UI Design) dolgoznak, ebből én a research-csel, UX design-nal, meg ezeknek a magas szintű integrációjával (UX Strategy, UX Architecture, néha product management) foglalkozom, UI designnal gyakorlatilag egyáltalán nem.

Tehát a UX-es térképész (mert mondjuk az ügyfél azt kéri, hogy legyen minden EPSG dataset beli elem támogatva), bankár (mert az ügyfél azt kéri, hogy legyen támogatva a TFTP vagy a CISA vagy a Basel-II), esetleg orvos (mert azt kéri, hogy legyen támogatva a DICOM teljesm értékben)?
Na ne.

A BA igenis külön szerepkör, ő az ügyfél szakterületéhez ért.
Az UX-nek ehhez semmi köze.

Ezen kár veszekedni. Valahol a BA is külön személy és a UX is az, valahol egész csoport a BA és a UX, valahol a kettő egy személy, valahol meg a BA, UX, a tervező, a fejlesztő, a tesztelő és a rendszergazda is egy személy. Ez főként a vállalat méretétől függ.

Ezek nem egzakt szerepkörök, utólag lettek felcímkézve az egyes feladatkörök, de nehéz ezeket szétválasztani és pontosan behatárolni, hogy most melyik micsoda. Ráadásul nagyon függ az elvégzendő munkától és fejlesztési modelltől.
Pl. fejlesztő, de lehet backend, frontend, játék-, unit teszt készítő, ... fejlesztő.
A tesztelőt is szétbonthatjuk ezer félére, mint ahogy mindenféle adott munkát végző személyre mondhatunk egy szerepkört. Asztalos, de lehet, bútorasztalos, vagy bútor összeszerelő, vagy élfóliázó, ...

"nem a cég méretétől, hanem az adott személy tehetségétől, képességeitől függ."

Ezek szerint a nagyon tehetséges és jó képességűek a mikrovállalkozásoknál dolgoznak, mivel rendszerint ők több "feladatkört" látnak el egyszerre, a tehetségtelen kutyaütők pedig a nagyvállalatoknál.

A jó minőséghez kell az, hogy szét tudd választani a feladatköröket.
Az, hogy utólag lettek felcímkézve, ez természetes: ez egy 70 éves szakma, még tanuljuk ezt.
Az építészeknél sem lett egyből külön villamos tervező, statikus stb.
Vagy az orvosoknál altatóorvos, sebész, belgyógyász.
Csak éppen azok a szakmák kicsit idősebbek, mint 70 év.

Viszont a mi szakmánk az, ami a leggyorsabban tette a legnagyobb hatást az emberiségre, ezért nagyon fontos azzal foglalkozni, hogy hogyan is kell megbízhatóan megbízható szoftvert készíteni. Épp ezért el
KELL tudni különíteni a feladatköröket.

A UX-es ha kell, térképész: a Nokia Maps-en belül egy időben UX-esként én voltam a térképész részleg UX-ese, és én voltam az egyetlen nem térképész végzettségű. Ebből csináltam két térképészeti (1, 2) előadást (meg egy programozósat), és a választások idején megjelentettem egy szakcikket, amit néhány online hírportál figyelembe vett a 2014-es választási térképük idején. Szerencsére az ügyfél általában nem hülye, és nem akar mindent, de még felismerek néhány EPSG szabványszámot.

A UX-es ha kell, befektetési bankár: terveztem kötvénykibocsátó szoftvert (dealogic), ekkor öltöny-nyakkendőbe mentem dolgozni a londoni Bank District-től 100 m-re lévő irodába, befektetési banki alapokat tanultam a céges belső tanfolyamon miközben a bankárok titkáraival beszélgettem (ezekhez képest a Wolf Street Farkasa kis p.cs, külön gomb volt a "millió dollár" kifejezésre, és gyakran kellett nyomogatni).

A UX-es ha kell, PCI-DSS compliant bankkártya-kezelési folyamatokat tervez, és egyeztet a secu-sokkal (ez EPAM volt)

A kosárlabdaszövetségnél (FIBA) részt vettem a magyar kosárlabdások közösségi életében, sőt, szabálymódosítási kérelemmel fordultam a sportbizottsághoz, mert UX szempontból rosszul vette ki magát egy szabály (diszkriminálja a nőket).

Van szó róla, hogy orvosi rendszereket tervezzek - apám orvos volt, anyám tavaly ment nyugdíjba a győri gyereksebészetről, nagynéném gyógyszerész, nem alaptalan a dolog.

A szakma belső diskurzusaiban (slack üzenetváltások, meetup utáni sörözések, stb) - nyilván ebben durva job security és egyéb gazdasági érdekeink is vannak, de - a BA-t azt sokszor egy dinoszaurusz-szakmának tekintjük, ilyen elavult "previous edition" of UX. Nincs vele baj, csak módszertanilag hibásnak tartjuk a szerepet és annak hozzállását, viszonyát, módszereit (politikailag korrektül: más), kb. mint az analóg tévé, vagy programozásból a unit-tesztek és verziókezelés nélküli világ.

A test-driven designnak (csak itt a tesztek élő embereken futnak) nagyhangú szószólója vagyok, legutóbb a MÁV-nál kezdtem ilyeneket bevezetni (és igen, azóta megtanultam a térköz, fázishatár, éberségi, MFB és egyéb szavak jelentését, mert kellett).

Emlékeztek a kaméleon (The Pretender) című sorozatra? A második évad intrójában volt ez a mondat:
- Are you a doctor?
- I am today.

nesze itt van csinald meg, es ne abban eld ki a kreativitasod, hogy beleszolsz a nagyok dolgaba, mert mi azt a meetingen mar kitalaltuk, hogy lesz jo, managers uber alles

Nem is ez a szemlélet. Vannak user célok és user viselkedések. Ezeket nem az ujjunkból szopjuk, nem is a főnök mondta, mégcsak a külső kutatást (azaz: olvastuk egy könyvben) is minimalizálni próbáljuk.

Az elegáns megoldás az, amely pontos ellentétpárja a saját problémájának: se nem több, se nem kevesebb nála.

Mi azt a megoldást keressük, amely az adott műszaki környezetben (és számunkra a műszaki környezetnek a programozó is része, sőt, igazából az az) a lehető legközelebb áll egy ilyen megoldáshoz - felhasználói szempontból.

Ennek az is része, hogy a programozót viszem magammal azokra a kutatásokra, workshopokra, amelyeken a feature-öket kitaláljuk.

Sose az a cél, hogy pixelre hajtsanak végre egy tervet, az a cél, hogy ami végül kikerül, az teljesítse user szempontból a célokat és feleljen meg biológiai vagy környezeti viselkedésének - és nyugodtan lehet a programozónak is célja (könnyű kódolhatóság), egyeztetünk.

Nem hagyjuk ki a programozót, nem "felülről" jön az ukász, de azt ne várja el tőlem senki, hogy az ÉN célom legyen az hogy egyszerűen lehessen lekódolni - az az ő célja. Nincs baj vele, egyeztessünk, beszéljük meg, de én másik kapura lövök szerepem szerint.

Itt olyasmire gondolok, hogy egy mit-hez a fejlesztők kb öt hogyan-t is ki tudnak találni.
Például - a fenti példánál maradva - az ügyfél szeretné, hogy a véletlen törlések visszaállíthatóak legyenek, vagy ne történhessenek meg.
Itt lehet az, hogy csak feldobnak egy alert-et, hogy biztos, hogy törölni akarod ezt, vagy implementálnak egy mementot és megoldják a mementok DB szinkronját (meg ennek az egyéb mellékhatásait), vagy csinálnak egy felületet, ahol a törölt elemeket vissza lehet állítani. Ezek közül lehet mindegyik megfelel az ügyfélnek (mert mondjuk évente csak háromszor használná), viszont fejlesztési időben és karbantartásukban van különbség.

Nem az egyszeri Sanyi feladata eldonteni, hogy a lehetosegek kozul mit akar az ugyfel. Erre valok azok az emberek, akik a vezeto fejlesztok. Ok fel tudjak merni, mit tud a csapat, melyik megoldast mennyi idot alatt csinalna meg stb.
Az okos BA meg latja, hogy "Laci, az ugyfel akar egy ilyet. Meg tudjuk csinalni? Milyen lehetosegek vannak, es mi mennyibe kerul?". Nem arrol van itt szo, hogy a fejlesztok felett valaki eldonti, hogy "na, akkor most csinalunk egy recovery GUI-t, ennyi penz van ra".
Mert ez szervezeti problema, ilyenkor van az, hogy nem biznak a fejlesztok szakmai hozzaerteseben. Es ennek a szervezeti problemanak semmi koze a szoftverfejlesztesi modszertanokhoz (pl. TDD-hez).

Ez így van, és ez hol ütközik bármivel?
Az informatikusoknak általában az informatikával kapcsolatban vannak jó ötleteik (a safe delete informatikai probléma), mert ahhoz a business domainhez értenek.
De attól még a legtöbb informatikus például nem UX szakértő, nem pénzügyi szakértő stb. Ott semmi közük a dolgokhoz.
Egy okos BA pedig megkérdezi az informatikusokat, ha informatikai domainbe illő probléma kerül szóba. Mivel ő ahhoz nem ért, sőt, az ügyfél sem. Mert ő a pénzügy/építészet/térképészet szakértője, az pedig más business domain.

Alapelv, hogy minden feladatnál az adott feladathoz business domain szinten értő embert kérünk fel, hogy adjon tanácsot. Egy informatikus nem fog tanácsot adni térképészetben, mint ahogy egy térképész sem fog tanácsot adni data recovery témában.

erdemes lenne eldonteni, hogy "programozók a kreativitásukat nem a termékben kell, hogy kiéljék" vagy "az adott feladathoz business domain szinten értő embert kérünk fel" mert a termek szimbiozisban el a koddal, nincs egyik a masik nelkul. Szoval elkerulhetetlen, hogy olyan kreativ otlettel allnak elo a programozok, amihez a termeket is kell igazitani. Jartam ugy, hogy a megkaptam a business requirementet, es nekem jutott eszembe, hogy van egy tok masik fejlesztes, amivel csodasan ossze lehet kapcsolni az uj dolgot. Es mivel kaptam lehetoseget, hogy megbeszeljem cegen belul, ezert a cegem eladta ezt valtoztatast, ugyanannyi penzert tobbet nyujtottunk, nott a ceg megbecsulese, a termek jobb lett, a megrendelo orult. Persze ulhettem volna kussban a helyemen, es kiadhattam volna a feladatot, es meg a lelkiismeretem is tiszta lett volna.

-
Big Data trendek 2016

De ugye akkor is tartod a hátad, hogy miattad volt a dolog, amikor kiderül, hogy egy ordas nagy sechole van benne, és emiatt megtörték az ügyfél gépeit?
Ez kétoldalú dolog ám: lehetsz a sikerre büszke, de vállalnod kell a következményt is.
Ugyanúgy, ahogy az építészmérnök tervező is börtönbe megy, ha összedől egy 15 éves ház, és kiderül, hogy tervezési hiba, ami csak ennyi idő alatt derült ki. De lehet, hogy előtte besöpört az épülettel egy díjat.

Érdemes elolvasni a Túlélőkönyv programozóknak / The Clean Coder könyvet Uncle Bobtól. Felteszi benne a kérdést: a fizetésed mekkora százalékát vagy hajlandó befizetni az ügyfélnek kártérítésként, ha kiderül, hogy egy általad okozott hiba miatt lett kára? Ha egy programozó feature-t javasol, akkor azzal a terméknek a gazdájává is válik, annak minden következményével.

Az onallo hatorkorben meghozott donteseimert onalloan vallalom a felelosseget, tehat a sajat donteseimert. Ceges hatokorben meghozott dontesert a ceg tartozik felelosseggel. Es igy tovabb. Dontes <-> Felelosseg. Nyilvan nem arrol beszeltem, hogy onhatalmuan valami mast csinalok, mint amit kertek, hanem arrol, hogy kommunikaciot kezdemenyezek/kezdemenyezhetek adott dologrol. Amugy a jelenlegi szerzodesemben ott virit erre vonatkozoan egy passzus, csinos darab ilyen szavakkal, hogy "korlatlan", "anyagi", "minden", "okozott", "kar", szoval azert kepben vagyok a felelossegem sulyat illetoen.

-
Big Data trendek 2016

Itt lehet az, hogy csak feldobnak egy alert-et, hogy biztos, hogy törölni akarod ezt... Ezek közül lehet mindegyik megfelel az ügyfélnek

Ja, hát ezt ők is azt gondolták, hogy ekvivalens megoldás, de nem az: konkrétan egy confirm hatása szinte zérus.

Ha A/B tesztelnéd, és számolnád a véletlen törléseket valahogy, kevesebb mint 5% lenne a különbség a véletlen törlésekben egy olyan rendszer között ami szó nélkül töröl meg ami confirm-öt kér.

Ehhez képest egy undo rendszer nagyon magas hatékonysággal dolgozik, egy kuka pedig mégnagyobbal (általában ahol van kuka ott undo-t implementálni gyerekjáték).

Nyilván először kivették a kukát majd bevettünk egy kliensoldali mementós undo-t, ezt vették ki a programozók elfogadás után és cserélték ki confirm-re (miközben a kuka kivétele miatt a DB-sek meg törlésre cserélték az update-et)

Eredmény: user szempontból a feature 95%-a eltűnt, és tulképp védtelen a véletlen törlések ellen.

Mi garantálja, hogy a business analyst a lehető legkönnyebben fejleszthető és karbantartható megvalósítási lehetőséget (hogy hogyan legyen egy funkció megvalósítva) választja az ügyfélnek megfelelő lehetőségekből?

Semmi nem garantálja, hogy a legkönnyebben fejleszthető szoftvert találom ki. Eleve minket nem Business Analyst-nek hívnak hanem User Experience Architect-nek (a két szakma között kb. a C és a C++ közötti különbség a jellemző)

Az én dolgom a user számára legoptimálisabb terv kitalálása, és annak prezentálása, miért ez a legoptimálisabb. Abban a balansz játszmában, hogy ebből mennyit kell feláldozni a könnyű fejleszthetőség oldalán az én dolgom az, hogy meggyőzzem az embereket, a user fontosabb mint a könnyű fejleszthetőség, de természetesen elég teret kell hagynom a programozónak hogy ezt folyamatosan (akár éveken keresztül) meg tudjam tenni.

A felelősségem leginkább két dologban áll:
- Mennyire TÉNYLEG érdeke a usernek amit megterveztünk (ideértve azt is, hogy végignéztük-e az alternatívákat, tetszőleges, akár fejlesztői forrásból, és nem elnyomással dolgozunk)
- Sikerül-e a tényleges élményjelenségeket (akár pozitív behelyezését, akár negatív kiküszöbölését) keresztülvinni a végleges termékbe?

Szia,
Programozóként (is) az elejével egyetértek: a komolyabb tervezés fázisában nincs helye agile-nak, de szerintem normális helyen nem is akarnak fejlesztési módszertant a tervezőkre erőltetni. Valamiért nem oda szánták, minek kellene akkor erőltetni?

A második feléről nem tudok nyilatkozni, személy szerint a túlimplementálós típus vagyok. Ha az a feladat, hogy fail-safe delete, akkor inkább kibővítem a korábbi delete mechanizmust úgy, hogy defaultol a fail-safe-re, és paraméterezve tudjon azért nem fail-safe törölni, és inkább írok mellé egy ütemezhető folyamatot a tényleges törlésre (nem feltétlenül beütemezve, de ez specifikáció kérdés-e ), mintsem valahova besuvickoljam "mellékesen".
Amikor egy igény felmerül, annak általában oka van. Ideális esetben (amit még nem láttam, sajnos), nem az én dolgom megkérdőjelezni ezeket... Ha mégis én kérdőjelezem meg, meg van a folyamat, amin el lehet érni a tervezőket - remélhetőleg sikeresen :)
( Persze, az egész függne attól is, milyen spec-et adsz ki a kezedből, de ez már egy másik mese :) )
Üdv,
LuiseX

"Programozóként (is) az elejével egyetértek: a komolyabb tervezés fázisában nincs helye agile-nak, de szerintem normális helyen nem is akarnak fejlesztési módszertant a tervezőkre erőltetni."

Ez nem szoftverfejlesztési módszertan, hanem rendszerfejlesztési. Tehát bármilyen területen alkalmazható, akár a tervezésnél vagy az üzemeltetésnél is. (Az általam korábban linkelt minikönyvnél épp ez utóbbira van példa is benne)
Elképzelhető, hogy egy terv elkészítésénél nem a hagyományos módszert követik, hogy ügyféllel leegyeztetnek mindent, majd hónapokig tervezik a rendszert, hanem agilisen, az ügyfélnek folyamatosan, a fejlesztésre érett terveket szállítanak a fontostól a kevésbé fontos területek felé haladva.
Ennek ugye az a bónusz folyománya, hogy az elkészült részterveket már sokkal előbb el is lehet kezdeni megvalósítani.