Mikor lesz kész?

Minden melós kedvenc kérdése, kiváltképpen igaz ez a fejlesztőkre. Kicsit több, mint 3 éve foglalkozom a nap legnagyobb részében fejlesztéssel, így ezt a kérdést hallom én is a legtöbbször: Mikor lesz kész?

A fejlesztéses munkákat alapvetően 2 részre osztanám. Vannak a projekt alapú és vannak az óradíjas munkák. A valóságban ezek nem sokban különböznek egymástól. A projektmunkáknak sincs sohasem vége, az óradíjasoknak is a pénz elfogyása szokta csak a végét jelenteni. A fejleszés ilyen, minden munka végtelen. Az, hogy miért, talán megér majd egy újabb bejegyzést.

Lássuk a projektmunkákat.

A megrendelőnek van egy elképzelése, amit meg kellene valósítani. Elkülönít erre egy szerinte megfelelő összeget. Úgy gondolja, hogy ő ezért egy „dobozos” terméket fog majd kapni. Besétál a szoftver boltba, ott kiválasztja a neki megfelelőt, majd kifizeti a pénztárnál és soha többet nem vesz hozzá semmit.
Ha a fejlesztő már foglalkozott ilyesmivel, esetleg van rá kész megoldása, akkor könnyűnek tűnik a helyzet, hisz’ az igény és a kínálat találkozik. Viszont ha valaki fejlesztővel üzletel, akkor valami olyanra van szüksége, ami nem emelhető le a polcról, egyedi igényekkel rendelkezik.

Megtörténik a tárgyalás, sikeres esetben addig is sikerül eljutni, hogy megegyeznek a projekt határidejében és az anyagi lehetőségekben is. Telik az idő, hízik a kód, a megrendelő veri az asztalt már a 2. napon, hogy ő ugyan nem lát még semmit, hogy lesz ez így kész időre? Már jönnének az újabb igények, már eladta 100 ügyfelének, látni akarja, hogy történik valami a pénzéért. Jó… A fejlesztő gányol valami kezelőfelületet, ami nyilván nem működik, mert nincs mögötte semmi, de legalább látszik, hogyan is fog kinézni. Természetesen a megrendelő azonnal lecsap, már jönnek is a telefonhívások, hogy „Ezt nem így gondoltam”, „Ez ronda kéken, legyen zöld”, „Nem működik a legördülő”, „Mobilon rosszul néz ki”. Ilyenkor a fejlesztő még türelmes, próbálja megértetni, hogy ez csak egy üres váz, nem lehet mindennel egyszerre haladni.

Eltelik pár hét, a megrendelő már nagyon úgy érzi, hogy át van verve. Minden 5 percben ellenőrzi hogyan halad a projekt, de hetek óta semmi változás. Újabb telefonhívások, e-mail váltások, „nem erről volt szó” és „már működnie kellene”, „nem látom, hogy halad”. Így a fejlesztő megint félredob mindent, rámegy arra, hogy a gombok pörögjenek-forogjanak, unikornis ikon legyen a belépés ablakon, és okosórán nézve és szuper legyen. Nyilván nem működik semmi benne, csak pár szedett-vetett dolog. A megrendelő örül, hogy végre megint halad a projekt, de nem azt kapta, amire gondolt: alig működik benne valami, ami működik, az is hibásan. Úgy gondolja, hogy joggal csalódott. Azt látja a felületen, hogy a projekt 95%-kon áll, mert hát ott van minden, amit kért, csak épp nem jól működik. Valójában persze a projekt kb. 30%-kon áll.

A fejlesztő már rég feladta, hogy határidőre elkészül, mert ugyanazt legalább 3 változatban készíti el: Az első a „mockup”, ami csak egy működésképtelen váz. A második a „csak fogja be a száját végre”, amiben már kattintgatni is lehet és valami történik is. A harmadik lenne a kész változat. Természetesen a határidőt már rég elhagytuk, az emberi kapcsolatok már átmentek az anyai felmenők emlegetésébe. Mindkét fél alig várja, hogy szabaduljon végre.

Elkészül a projekt a kiírás és megegyezés szerint, a szükséges nettó idő legalább ötszöröse után. Minden ott van, ahol lennie kell, minden akkor csipog és akkor villog, amikor annak kell. Jönne a mindenki elégedett rész, de nem. Mert közben változtak az igények. „Még nincs kész, mert ez a piros itt ronda, legyen kék”, „igen, a legördülőben ezek kellenek, viszont ha ezt kiválasztom, akkor az tűnjön el, ez jelenjen meg, a másik legördülő tartalma változzon meg, de ha a másikat módosítják, ez változzon meg”, „ezt tudnod kellett volna, hogy ez így nem életszerű”, „addig nem fizetek, amíg nincs kész”.

Az esetek nagy többségében a projektmunkák 95% készültségi állapotban döglenek meg, hatalmas pénzek és emberi energiák elégetése után. A megrendelőnek nem lesz terméke, a fejlesztő pedig nem lesz kifizetve…

Az óradíjas sem sokkal másabb…

A fejlesztő számára az óradíjas előnyösebb, mert bármilyen hiszti és értelmetlen hobbizás érkezik, ketyeg az óra. Ha a megrendelő 2 hétig újabb és újabb színkódokkal próbálkozik, akkor is. Így a megrendelőn is van nyomás, hogy úgy adja át az információkat, hogy ne kelljen rá várni semmivel. A megrendelő igyekszik mindent megtenni, hogy ne óradíjasban kelljen valamit lefejleszteni. Ha nincs más lehetőség, akkor már az első perctől kezdve úgy érzi, hogy neki valójában csak a pénzére hajt a fejlesztő. Egy olyan megélhetési formát feltételez, amihez nem kell dolgozni semmit, de folyamatosan jön a pénz.

Az egész fejlesztési idő alatt folyamatos a feszültség, nem csak hullámokban érkezik, mint a projektmunkák esetében. Így még inkább fontos az, hogy a produktum folyamatosan látványosan változzon, minden egyes órában valami jelentős változás látszódjon, akkor is ha a munka hónapokig tart. Igen, jól látod, a nettó fejlesztési idő köszönőviszonyban sincs a valós időigénnyel.

Mivel óradíjban megy a fejlesztés, a specifikálás is valósidejű, bármikor, bármit lehet kérni, mert „ki van fizetve”. Az induláskor megbeszéltekhez képest, már egy „mindent _is_ tud” termék fele megy az irány. A fejlesztőből nagyon gyorsan fogy a motiváció, mert tudja nagyon jól, hogy a „mindent _is_ tud” termék nem létezik és nem is létezhet. Ha el is készül, akkor is használhatatlanul bonyolult lesz, a készítője sem fogja tudni hogyan is működik valójában.

Az óradíjas munkák sem készülnek el soha, mert hamarabb fogy el a pénz vagy a türelem. Annyi az előnye, hogy valami működő produktum van és közben a fejlesztő sem halt éhen.

Jó-jó, de mikor lesz kész?

Az őszinte válasz az, hogy soha. Addig biztosan nem, amíg a megrendelő nem tuda megfelelően definiálni, hogy mi a kész termék iránti igény, hogyan használják ezt a való életben és nem tudja megértetni a fejlesztővel (akár mintapéldákkal), hogyan is segíti ez majd a munkájukat. Ami pedig a legfontosabb: Ne a megrendelő ossza be a fejlesztő idejét és hogy mikor, melyik résszel foglalkozik.

Nagyon sok időnek kell eltelnie, amíg a felek képesek úgy kommunikáni, hogy akár projekt, akár óra alapon egy olyan termék készüljön, amiről a megegyezés szólt.

Miért nem mond soha senki határidőt vagy árat? Hogy tervezzek így?

A prototípus fejlesztést lehetetlen tervezni. Ha minden rendelkezésre áll, fejben minden megvan, hogyan is lesz megvalósítva, akkor is jön egy rakás olyan buktató, amire senki sem számított. Nem kell életbevágó dolgokra gondolni, elég egy apróság, ami napokra meg tudja akasztani a fejlesztőt.

A fejlesztő soha nem mondhatja el azt az időt, amit ő biztonsággal tud tartani, mert így nem fogja megkapni a megbízást, elviszi majd egy olyan, aki lehazudja a csillagokat is az égről. Persze a sokadik ilyen után újra egymásra találnak, de a hozzállás már egyik fél részéről sem lesz mosolygós.

Mondhatom én azt, hogy „Nézd, ez másfél év”, neked az nem fog megfelelni, mert „ez nem olyan nagy valami”. Úgy tapasztaltam, hogy átlagosan 2.5x az a mérték, ami beígért idő és a valódi befejezés közötti különbség. Ez is csak abban az esetben, ha minden jól specifikálva van és a fejlesztő érti is, hogy a megrendelő mit akar ezzel megvalósítani, milyen események hatására minek kell történnie.

Örök ellentét lesz a két üzleti fél között. Lehet törekedni ennek a minimalizására, de ez inkább az emberi tényezőkön műlik, nem technikai dolog.

Ez csak nagyképűség tőled, egyszerűen csak alkalmatlan vagy a munkára…

Naná. Engem is érnek kudarcok az Életben. A legtöbb megbízásom úgy keletkezik, hogy kifejezetten engem keresnek. Vagy korábbi munkám miatt, vagy más ajánlására. Van, amiben sikeresen együttműködünk, van ami indulatokkal fűszerezve készül el és van ami sohasem készül el, nem is válunk el barátságban.

Én sem vagyok mindenható. Egy junior-medior webes vagyok, aki mindenhez egy kicsit ért, de semmihez sem eléggé. Nem tudok ügyviteli rendszert fejleszteni 2 nap alatt, nekem is nagyon sokat kell tanulnom. Minden feladatban van olyan, amivel még sohasem foglalkoztam. Sokat költök olyan dologra, amit csak akkor az egyszer fogok használni, soha többé. A fröccsöntés lenne a kifizetődő, egy dologhoz érteni, és azt ontani ezerszám. Bármi módosítás kell bele „keress meg mást”.

A megoldás az lett, hogy nem a megbízásokat kell megszűrni, hanem a megbízókat. Vannak, akik végtelenül elégedettek velem és vannak akik csalódottak. Túlságosan a lelkemre veszem, ha valami nem sikerül, hetekig rosszul alszom, mert egy ígéretem nem tudtam teljesíteni, egy egyszerűnek tűnő munka 2 napos helyett fél éves lett. Te pedig arra hivatkozol, hogy olyan szokott lenni, hogy 2 hetet mondasz, és 5 perc alatt készen van. 15 éve hallgatom, hogy „A Józsi ügyes gyerek, úgyis megoldja valahogy”. Hja, a Józsi is ember, korlátosak a képességei, nem polihisztor, szeret aludni, élni…

Jó, akkor hogyan csináljuk?

Ha mégis azt szeretnéd, hogy én valósítsam meg az elképzeléseidet, a következők alapján bízz meg:

  • nem csak neked dolgozom, ne tervezd meg helyettem az időbeosztásom
  • tegyél meg mindent azért, hogy lássam a valós életben, mi az amiben az általam elkészített megoldás segíti a munkád, ha kell beülök melléd az autóba, odaállok a villanyszerelő mellé, lemegyek az aknába, csak ne álomképeket lássak, hanem valós igényeket
  • amire a megoldást adom, ahhoz nagy valószínűséggel nem értek, nem vagyok könyvelő, nem vagyok adminisztrátor, nem vagyok munkaszervező, humán erőforrás igazgató, nem vagyok értékesítő, szakács, … Adj mintapéldákat, mutasd meg mit akarsz látni, mire van szükséged
  • viszonylag sok technológiába belelátok, nagyon sokkal dolgoztam is, de lehet, hogy a te igényeid tartalmaznak olyan technológiát, amivel kísérletezni kell, fogadd el, hogy lehet 5 perc eljutni a jó megoldásig, és lehet fél év is, még akkor is ha egy 20 éve létező blokknyomtatóról van szó, ami 15 éve létező bluetooth kapcsolatot használ
  • ha kikéred a véleményem valamiről, utána ne oktass ki ugyanarról
  • már fontosabbnak tartom azt, hogy éjszaka aludjak, minthogy mások által készített terméket próbáljak gyorsan megjavítani, miközben előtte fél évig azt mondtam, hogy „vagy használd ezt, vagy keress mást” és te mást kerestél.
  • 2 másodperces memóriám van, de ha korábban minden kérésemre az volt a válaszod, hogy „a legolcsóbbtól olcsóbb kellene, de tudjon mindent, tegnapra”, akkor fel se hívj, amikor összedől minden és ne is mondd, hogy „végtelen pénz, örökélet ha megoldod” – nem fogom, akkor sem, ha korábban mindig megtettem (és meg sem köszönted)