Jak si zaprogramovat

Žijeme ve chmurných dobách. Skoro všechny zajímavé IT problémy, o kterých nás učili ve škole, jsou už vyřešeny. Nikdo už po nás nechce psát si vlastní spojové seznamy, třídění, parsery gramatik, operační systémy nebo databáze. Už to všechno někdo napsal za nás. Hrůza. Jediné co po nás chtějí je dodávat nějakou trapnou business hodnotu nebo nedejbože něco užitečného pro zákazníka. Na hrátky s infrastrukturou prý není čas. Jak si má člověk pořádně zaprogramovat? Slyšel jsem, že onehdy někomu dokonce nedovolili napsat si vlastní IoC framework! Neuvěřitelné.

Tento článek si bere za vznešený cíl poradit vám, jak se tomuto veskrze nechutnému trendu bránit. Za svých pár let práce v korporacích jsem se něco přiučil od zkušenějších kolegů, tak bych chtěl tuto moudrost předat dál.

Pro názornost si představme, že chceme napsat úžasný Nový Inovativni Hypernástroj (dále NIH). Je jedno jestli je to nová databáze, framework, distribuovaný systém nebo, pokud máte štěstí, vlastní operační systém. Následující rady jsou platné univerzálně.

Je to jednoduché / už jsme do toho hodně investovali

Nejlepší metoda je nikoho se neptat a pustit se do práce. Většinou se vám podaří na tom strávit pár týdnů, než si někdo všimne. Občas se ale přeci jen objeví nějaký šťoural, který se vás bude hloupě ptát proč nepoužijete něco existujícího. Zkuste ho odbít s tím, že to je jednoduchý problém, který za pár dní vyřešíte. Nejlepší na tom je, že to je pravda. Co může být těžkého na tom napsat si vlastní NIH? Člověk vašeho formátu a kvalit to musí mít hned. Když se vás za týden bude ptát, jestli už to máte, můžete mu popravdě říci, že už zbývá jen týden na vyřešení pár detailů. Už máte to hlavní, zbývá jen pár nezajímavých hraničních případů, které sfouknete levou zadní.

V této fázi nezapomeňte někoho přesvědčit, ať to začne produkčně používat. Ohromně vám tím usnadní testování. Nepotřebujete se zdržovat nudnými testy, udělají to za vás zákazníci. Navíc si tím připravujete půdu pro druhou fázi.

Ta se hodí po pár měsících vývoje, kdy už i vám začíná docházet, že jste pár věcí nedomysleli a že architektura měla být malilinko jiná. Je potřeba první verzi označit za prototyp, začít se divit že to někdo používá a celou situaci zachránit tím, že to předěláte. Málokoho napadne vám v tom bránit, vždyť už se do toho tolik investovalo. A vy můžeme v klidu začít psát verzi 2.0. Na té si většinou užijete ještě více než na té první. Při psaní první verze jste se jen tak rozkoukávali, při psaní druhé se můžete pořádně rozletět. Vždyť už jste vlastně experti. Musím ocitovat z článku o pozitivech efektu druhého systému

  • Poprvé když používáte technologii nebo stavíte nový typ systému víte, že jste začátečníci a máte sklon k tomu být konzervativní
  • Podruhé už máte zkušenosti. Víte co děláte. Už jste jednou uspěli, takže odhodíte zábrany a uděláte všechny věci, které jste se napoprvé báli udělat.

To zní jako skvělá příležitost k tomu si zaprogramovat.

Nikdo vám nedá tolik, kolik já vám můžu slíbit

Pokud pracujete ve větší firmě, je možné, že budete mít zdatné soupeře. Často se jim říká projektový manažer, architekt nebo dokonce zákazník. To je ta havěť, co nás nás nutí dělat všechny ty nezajímavé věci, které ona považují za důležité. Tito protivníci se nám často snaží bránit v naší kreativitě a snaží se nás donutit použít už existující řešení. Proti tomu je snadná obrana. Musíme využít jejich největší slabosti. Protivník totiž málokdy ví co vlastně chce. Například zákazníci jsou známí tím, že si navymýšlí spoustu věcí, které podle nich naprosto nutně potřebují. A to je naše šance. Představme si, že po nás podle chtějí analýzu toho, která stávající technologie by jim vyhovovala. S naprosto čistým svědomím můžeme říci, že žádná. Už jim nemusíme říkat, že jejich požadavky jsou nejasné, nesplnitelné nebo dokonce protichůdné.

Pokud je protivník tak záludný, že nevěří našemu slovu, stačí vyrobit jednoduchou tabulku, v které vyjmenujeme jednotlivá konkurenční řešení a u nich seznam požadavků, které nesplňují. Nevěřili byste tomu, jaká je to legrace něco takového připravovat. Je to skoro tak kreativní jako programování. První produkt je pomalý, protože všechno zapisuje na disk. Druhý produkt má moc velké paměťové nároky, protože si všechno drží v paměti. Třetí produkt dokonce nemá podporu pro psaní zprava doleva! Na tom se člověk dokáže docela vyřádit. Nemusím zmiňovat to, že váš NIH to samozřejmě bude všechno umět.

FUD je váš přítel

Může se vám také stát, že soupeř přijde s nějakou technologií XYZ, kterou by chtěl použít a je přesvědčený, že by mu vyhovovala. To je trochu těžší oříšek, ale v zásadě se dá použít předchozí rada. Vzhledem k tomu, že máte jenom jednoho konkurenta, je dokonce snazší najít nějaké ty objektivní důvody, proč se nedá použít. Můžete strávit víc času hledáním hrůzostrašných historek o tom jak XYZ sežrala server i s uklízečkou, jak dva roky stará verze zaměňovala zavináče za znak pro bž a podobně. Jelikož žádná technologie není dokonalá, takových historek najdete dost a dost. Nesmíte se samozřejmě zmínit o tom, že ty problémy už jsou dávno vyřešeny. Hodně vám v tom pomohu lidé, kteří XYZ použili na něco na co není dělaná nebo ji špatně nakonfigurovali. Tito lidé jsou pak obvykle autory nejužitečnějších článků. V tom je asi největší výhoda NIHu. Když někdo na internetu bude hledat jeho nevýhody, nic nenajde. Co by také mohl najít, NIH je přeci dokonalý!

Pokud se vám přeci jen negativní reference nepodaří najít, můžete použít jednoduchou fintu. Vždy když zaslechnete XYZ se musíte uchechtnout a obrátit oči v sloup. To v soupeři potřebnou nejistotu také vzbudí.

Obvyklé protiútoky

Pokud se vaši soupeři pohybují v oboru delší dobu, budou na vás zkoušet různé finty. Na to si dejte pozor, následující protiargumenty jsou opravdu záludné. Jsou totiž pravdivé. Kromě osvědčeného FUD můžete zkusit i následující:

  • Proč nepoužijeme stejnou technologii jako všichni ostatní? – NIH nám přinese konkurenční výhodu. – To je moje nejoblíbenější, proti této obraně se těžko hledá další protiútok.
  • Proč nepoužijeme relační databázi? – Zkoušeli jsme Oracle a ten je moc složitý a drahý. – Všimněte si prosím geniálního úkroku stranou, málokdo si uvědomí že existuje hromada dalších relačních databází, které by tyto nevýhody mít nemusely.
  • Proč jste neudělali analýzu možných alternativ? – Na to nám nikdo nedá čas, musíme začít programovat. – Klasická variace na téma měsíc v laboratoři vás uchrání od týdne v knihovně.
  • Proč když je XYZ dost dobré pro Twitter, není to dost dobré pro nás? – Právě Twitter kvůli tomu měl dvě hodiny výpadek. – Rozhodně se nezmiňujte o tom, že to tam i nadále spokojeně používají.
  • Na existující technologii snáze seženeme zaměstnance. – V ČR určitě nikoho kdo by znal XYZ neseženete.
  • Na XYZ si můžeme zaplatit podporu. – Platit? Pch, já vám to udělám zadarmo.

Pár slov závěrem

Doufám, že se vám tyto rady budou hodit. Spousta lidí totiž nechápe jak je ten váš problém unikátní. Nerozumí tomu, že je vaše firma tak odlišná od ostatních, že si všechno musíte řešit sami. Požadavky jaké mají vaši zákazníci ještě nikdo nikdy neviděl. Nikdo také ještě neřešil problémy jaké máte vy. A pokud je řešil, tak to dělal naprosto, ale naprosto špatně. Doufám také, že vám tento článek pomůže v psaní dalších unikátních produktů, které tento svět posunou k světlejším zítřkům.

6 thoughts on “Jak si zaprogramovat

  1. Jan Machacek

    Skvely pocteni, zvlast pak

    “…Můžete strávit víc času hledáním hrůzostrašných historek o tom jak XYZ sežrala server i s uklízečkou, jak dva roky stará verze zaměňovala zavináče za znak pro bž a podobně. Jelikož žádná technologie není dokonalá, takových historek najdete dost a dost. Nesmíte se samozřejmě zmínit o tom, že ty problémy už jsou dávno vyřešeny…”

    Tesat do kamene!

  2. Martin

    Opravdu parádní čtení. Nezávislé na technologii i velikosti týmu (zvětšiny) i mocnosti zákazníka (tam často čím větší, tím ještě lepší).

  3. Pingback: Java crumbs » Blog Archive » NIH objektivně

  4. kamtar

    ” Skoro všechny zajímavé IT problémy, o kterých nás učili ve škole, jsou už vyřešeny. Nikdo už po nás nechce psát si vlastní spojové seznamy, třídění, parsery gramatik, operační systémy nebo databáze.” … pokud mám takové choutky a schopnosti tak nebudu tvrdnout někde u firmy ale pudu na doktorát a do výzkumu ne?.. 😀

Comments are closed.