Ohlédnutí se za prací pro DámeJídlo

Více než rok jsem se podílel na vývoji Dámejídla. Seznámil jsem se s Doctrine 2, naučil se hodně o testování a nadchl jsem se pro čistý kód.

S odstupem času se pokusím zhodnotit co mi práce pro Dámejídlo dala a co naopak dát nemohla.

$article->getLanguage()} 2. 12. 2016
DámeJídlo.cz

Když jsem nastoupil…

Když jsem nastoupil do DámeJídlo jako vývojář, uměl jsem Nette, pracoval jsem s Nette/Database. Testy jsem psát uměl, ale v praxi je moc nepsal, takže mi chyběly praktické zkušenosti a návyky. Debugger jsem znal, ale byl jsem líný jej konfigurovat a používat. Kvalita kódu byla tak průměrná, nebyl jsem vyloženě čuně, ale do něčeho, co by se dalo nazvat Clean-Code, to mělo rozhodně daleko.

Zkrátka a dobře, nebyla to žádná hitparáda.

Když jsem posílal životopis a šel na pohovor, měl jsem pocit, že mířím trochu moc vysoko. Avšak ani jedna z firem, které jsem do té doby navštívíl, mě vůbec nenadchly. I s tím vším, co jsem (ne)uměl, se mi nepodařilo najít společnost, jejíž nabídka by mne oslovila. Nejčastějším problémem bylo, že nepsali testy (já je začít psát chtěl), netlačili moderní technologie (několikrát jsem narazil na Nette 0.9), anebo prostě dělali hrozně nezajímavou práci plus často nenabízeli moc peněz.

Do čeho jsem se to namočil…

Codebase Dámejídla není žádný prcek. Skládá se z eshopu (každý jistě zná) a logistického systému, který je mozkem celého rozvozu Dámejídla.

Dev stack vypadal takto:

Pro mě to bylo tenkrát krutě cool. A teď je to cool ještě víc. Upřímně, neznám (v PHP světě) firmu, která by po technologické stránce byla víc cool.

Pokud znáte, dejtě vědět *wink* *wink*.

A přístup teamu k vývoji je super:

  • Code Review je pěkně přísný.
  • Testy jsou must-have. Přibližně 50% codebase je pokryto testy. (Legacy kód se postupně refaktoruje a doplňuje o testy.)
  • Vydat něco jako opensource jde, pěkné příklady jsou (PermissionsModular-Testcase). I když býval bych si přál, aby to šlo snadněji a vydávalo se toho mnohem víc.
  • Štábní kultura v teamu je trochu zvrhlá, ale strašně přátelská. Pokud máte rádi černý, ale opravdu černý humor, sledujete WTF sekci 9GAG-u a nebojíte se nekonvečních a politicky nekorektních vtipů, budete nadšeni. (Když jsem nastoupil, hrála nám v kanclu asi dva měsíce v kuse Morčata na Útěku.)

Tak jsem se s tím tedy pral…

Naučil jsem se Doctrine 2, zápasil jsem se s legacy kódem, zrefaktoroval hromadu šílenstí a napsal tunu testů. Trvalo tři měsíce, než jsem se do toho dostal, ale pak už to šlo raz dva. Anebo ne? Uběhl totiž celý rok, než jsem mohl říct: "Už jsem v codebase viděl všechno." Pobrat technologii a chytit krok bylo rychlé. Pochopit celou doménu a vědět "kde která páčka" je znalost draze zaplacená časem. A smutné na tom bylo, že si to mimo vývojový tým nikdo neuvědomoval.

Co mi Dámejídlo dalo…

  • Zkušenost, že o testy se dá opírat a že se na ně dá spolehnout.
  • Zkušenost, že není čuňárna, která by se nedala zrefaktorovat.
  • Zkušenost, že napsat něco úplně znova (a hlavně to pustit ven až na konci jako big-bang) je většinou špatný nápad.
  • Zkušenost, že pouštět do produkce (i velké věci) se dá 5x denně, během špičky a bez problémů.
  • Zkušenost, že nasazovat v pátek je hloupý nápad. ;)
  • Zkušenost, že sloužit dvěma (a více pánům) v jedné firmě nefunguje. A že je opravdu důležité, aby práci prioritizoval a zadával jen jeden člověk.
  • Zkušenost, že odspodu se velké věci (skoro) měnit nedají.
  • Zkušenost, že outsourcovat věci jako datovou analytiku nebo účetnictví je dobrý nápad, a že řešit inhouse věci, které už vyřešil někdo jiný, (a lépe), je naopak vyhazování peněz.
  • Zážitek, kdy jsem si vyzkoušel, jaké to je být na zákaznické podpoře.
  • Zkušenost s tím být on-call a (i o víkendu) řešit fuck-upy.
  • Zkušenost, že je možné mít distribuovaný team a zkušenost, jak v takovém teamu fungovat.
  • Pokoru, že každý kód, který napíšu, je vždy suboptimální a že code review a kritika je něco, zač je třeba být vděčný. (A iluzi, že takto to chápe v tom širém světě každý.)

Takže, díky @DameParky :)

Co mi Dámejídlo nedalo…

DISCLAIMER: Článek vznikl s poměrně velkým časovým odstupem a tak některé věci mohou být dnes už úplně jinak. Avšak v době, kdy jsem se rozhodl, že se budu věnovat vývoji sofwaru jinde, jsem je viděl takto.

Pocit, že firmě na vlastních lidech záleží. - To, že nejsem jen snadno nahraditelná pracovní síla vážená platem. V pracovním prostředí trávíme velkou část svého života a pro mne bylo naprosto zásadní, že nebyl nikdo, kdo by se staral o to, aby mi bylo v práci, jako člověku, dobře.

Že se věci (rychle) mění k lepšímu. - Spousta věcí byla super, ale mnohem důležitější než aktuální stav je, zda se to co není super, mění (dostatečně rychle) k lepšímu.

  • Věci, kde byla změna v naší moci, jsme změnili - na pankáče. Kluci ve vývojí mají obrovský drive a jsou zapálení. Vývojáře v Dámejídlo produkt baví.
  • Bohužel věci, které jsme změnit nemohli, byly dost zásadní:
    • Růst vývojového teamu (jak do počtu, tak do zastoupení rolí / skill-setů),
    • implementace Scrumu,
    • práce s technickým dluhem na úrovni projektového plánování,
    • 2nd level support - který zatěžoval vývojáře věcmi jako generování reportů.

Závěrem

Pokusil jsem se tu nějak sesumírovat svou zkušenost. Odnáším si především:

  • Na firmě a managementu záleží mnohem víc než jsem si myslel. Jsou věci, které jsou hrozně moc důležité a přitom se nedají odspodu změnit.
  • Vývojový team, co má zápal a trochu punku v krvi, je k nezaplacení. :)

Punkáč upgradující Dámejídlo na PHP 7.