Ako rýchlo zistiť kvalitu firmy alebo vývojového tímu? rubrika: Folklór

2 lehotsky
položil/-a 14.5.2015

Zdravím,
osobne sa považujem za človeka, ktorému záleží na tom, čo robí. Keď už si nejaký ten modul programujem, tak chcem, aby mal určitú úroveň kvality; dobrý návrh a čistota kódu sú pre mňa veľmi dôležité. Obzvlášť potom v projektoch, kde je nutná nejaká spolupráca viacerých ľudí (väčšina), pretože čítať po niekom (aj po sebe) prasácky kód je horšie ako trieskať hlavou o stenu :).

Žiaľ doteraz všetky moje pracovné skúsenosti boli v tomto ohľade negatívne. Robil som predovšetkým v malých firmičkách, ktoré vyvíjali software na zakázku a prístup k práci bol "nejak to urob, na kvalitu kašli, my už to nejak odprezentujeme". Hlavne, aby to zákazník odkýval, a čo už bolo odkývané nemalo význam zlepšovať (napr. refaktorovať). Samozrejme ako rástol technický dlh, tak vždy s postupom času problémy narastali.

Už som popravde unavený z toho riešiť problémy spôsobené lajdavosťou a laxným prístupom k práci a viem, že do dalšej podobnej firmy už nevleziem.

V blízkej dobe si budem hľadať prácu a preto som sa chcel spýtať, aké otázky na interview by som mal klásť ja firme, aby som čo najlepšie vyradil podobné firmy, kde kvalita hrá druhé (tretie, štrvté?) husle. Našiel som 12 otázok, tzv. Joel Test (http://www.joelonsoftware.com/articles/fog0000000043.html), ktoré ma naviedli správnym smerom, ale zaujímalo by ma, čo by ste mi odporučili aj vy, na základe vašich skúseností :). Aby som to najdôležitejšie proste nezabudol (zaujíma ma všetko od manažmentu, vývoja, až po zdravé medziľudské vzťahy).

Tiež máte pocit, že takéto firmy prevládajú práve v prostredí, kde sa vyrábajú projekty na zakázku? Zdá sa mi, že firmy, ktoré vyvíjajú niečo pre seba k tomu budú pristupovať zodpovednejšie ako, keď sa to vyvíja pre niekoho iného, ale možno sa mýlim.

Díky :).

Komentáře

  • Taco : Jen bych upozornil, že brát ohled na kvalitu u jednorázových zakázek nemá smysl. K čemu je ti znovupoužitelný kvalitní kód s unittesty pro web ZOH 2014 Soči? 14.5.2015
  • arron : @Taco: Jistě by se našlo pár specifických případů, kdy se unit testy (nebo jakékoliv jiné testy) nevyplatí psát, ale i jednorázová zakázka se v průběhu vývoje musí testovat, že jo, takže i tam unit testy nutně zrychlí vývoj. Krom toho se relativně často stává, že to, co se na začátku jeví jako jednohubka, tak se nakonec změní na něco uplně jiného. A ještě bych zmínil programátorskou čest, ale chápu, že to už jsem na dost tenkém ledě ;-) 15.5.2015
  • Taco : @arron: Sorry, ale takhle se "správně" vůbec dělat nemá. Nejdřív je prototyp. Ten je bez testů. Pak je to celé přepsáno znova s testama. Ani jeden extrém není dobrej. Někdy je programátorská čest spíše honění si trika, že on to má sice blbě, ale otestovaný. 15.5.2015
  • arron : @Taco: Vždyť to říkám :-D "našlo pár specifických případů" a "na dost tenkém ledě" ;-) 15.5.2015
  • Kit : @Taco: Ty děláš prototypy bez testů? A jak je testuješ? Snad ne ručnê? 15.5.2015
  • Taco : @Kit: Ty děláš prototypy s testy? To toho naprototypuješ. Možná mi ještě řekneš, že ti ty prototypy fungují. 15.5.2015
  • kohven : Jedna otázka je, jesti má kvalita význam u jednorázových zakázek a další otázka je, jestli chci pracovat ve firmě, která se věnuje zakázkám, na kterých se může prasit. Ačkoliv i taková firma může mít na trhu neotřesitelnou pozici. Myslím, že tazatel hledá kvalitu. 15.5.2015
  • Kit : @Taco: Tvorbu prototypu začínám jeho testem. Tedy nikoli prototypy s testy, ale testy s prototypy. A ano, zpravidla fungují i samostatně. 15.5.2015
  • Taco : @kohven: Proto jsem to psal sem do komentáře vědom si toho, že se jedná o offtopic. @kit: V tom případě se bavíme každý o něčem jiném. Obvykle se od prototypu nevyžaduje funkčnost, natož bezchybnost. Naopak je kladen důraz na rychlost vývoje. Tudíž v takovém případě jsou testy překážkou. 15.5.2015
  • Kit : @Taco: Pro vývojáře, kteří píší nejprve kód a pak teprve testy, jsou testy vždy překážkou. Nejprve přece definuji, čeho chci v prototypu dosáhnout a pak ho teprve píši. 16.5.2015
  • pussy : "Nejprve přece definuji, čeho chci v prototypu dosáhnout" - Ano, nicméně tu definici nemusíte nikam psát, ale můžete ji držet v hlavě. Pokud ji přeci jen chcete někam napsat, tak to nemusí být nutně testy - mohou to být například kontrakty, typy, komentáře, vhodné názvy, externí dokumentace. 16.5.2015
  • Kit : @pussy: Tohle všechno přece mohu dát do toho testu. Nevidím důvod, proč bych to měl takto tříštit do různých komponent. 16.5.2015
  • Taco : @Kit: Nic takového jsem nenapsal. Pro někoho, kdo si chce definovat jak bude aplikace vypadat - tedy píše prototyp, je test z principu překážkou. Já se nebavím o programátorech, kteří nejdříve píší kód, a pak testy, ale narážím na programátory - @kite, kteří píší testy tehdy, kdy _nemají_. 16.5.2015
  • Kit : @Taco: Aha, ty říkáš prototyp tomu, čemu já říkám test. 16.5.2015
  • Taco : @pussy: Řekl bych, a to možná @kitovi uniká, že prototyp se píše v době, kdy vývojář vlastně nemá jasno, jak to bude vypadat. Zkouší, hledá slepé uličky, psaním zjišťuje důsledky atd. Tedy ta definice se teprve vytváří. 16.5.2015
  • Taco : @Kit: Někdy mi přijde, že ty říkáš test snad všemu. Tedy krom getterům a setterům, kterým říkáš porušení zapouzdření. 16.5.2015
  • Kit : @Taco: Však když píšeš testy, tak také ještě nemáš jasno, jak to bude vypadat. 16.5.2015
  • arron : @Kit: jaké přesně testy máš na mysli, když je píšeš a nemáš jasno, jak bude aplikace vypadat. Zatím jsem nepřišel na způsob, jak psát unit nebo integrační testy, když ještě nevím, co chci kde vracet a jaké chci mít parametry. 16.5.2015
  • Kit : @arron: Jsou to developer testy, ze kterých plynule přecházím na unit testy. I ty unit testy během vývoje průběžně upravuji, než jsem s jednotkou spokojen. 16.5.2015
  • Taco : @arron: @Kit bez začervenání zaměňuje TDD a Prototyping. 16.5.2015
  • Kit : @Taco: Prototyp je jen test :-) 16.5.2015
  • arron : @Kit: Můžeš něco takového ukázat, pls? Nebo si tady opravdu zaměňujeme pojmy prototyp a test? 16.5.2015
  • Tomáš Tintěra : Pánové založte si prosím vlastní otázku na tuto nekonečnou debatu. Rád se potom na ni podívám najednou. Myslím, že nejen já mám tuto otázku ve sledovaných. A váš offtopic mne lehce spamuje. Myslím, že otázka firmě je jasná. Jak píšete testy a hlavně k čemu ještě ano. A každý chce zřejmě slyšet jinou odpověď. Což je v pořádku. Navíc autor otázky se také do tohoto offtopicu už nezapojuje. Díky předem. 17.5.2015
  • Anonym : on někdo dělá testy?! 19.5.2015
odkaz
10 jiri.knesl
odpověděl/-a 14.5.2015

Obvykle nejhezčí zdrojáky mívají malé firmy, které dělají produktový vývoj na vlastní službě, kterou nedistribuují k zákazníkům.

Každá firma má nějakou historii a nějaké plány pro budoucnost.

Firmy s historií obvykle s sebou táhnou legacy kód plný překonaných myšlenek, starých knihoven, mrtvého kódu.

Firmy, které dělají zakázky, obvykle plánují dostat peníze co nejdřív a tak se snaží co nejrychleji dostat k cíli za cenu toho, že omezují refaktoring, testování, apod. Takové mají třeba moderní technologie, ale v kódu je nepořádek.

Pouze ty firmy, které dokážou efektivně pracovat se svou codebase (což dokážou spíš menší firmy) a které zároveň chtějí (tzn. buď dělají vlastní produkt, nebo mají osvíceného zákazníka), můžou mít pěkný zdroják.

Komentáře

  • pussy : "kód plný překonaných myšlenek" - To i nové firmy a nové projekty. Většina myšlenek, co se používá dnes v praxi, byla zastaralá už před několika lety. Příkladem jsou věci jako MapReduce, NoSQL nebo OOP. Většina firem to totiž začne používat až poté, co se to někomu osvědčí a v té době už často existuje něco lepšího. Navíc většina firem nepoužívá kvalitní věci, ale věci, co mají dobrou reklamu. 15.5.2015
  • Taco : @pussy: zcela vážně: čím jsou překonány Map/Reduce? co je dle tebe následníkem? 15.5.2015
  • pussy : MapReduce je velmi nízkoúrovňový. IMO budoucnost je v "deklarativnějších" systémech, kde neřešíte, jak to spočítat, ale co spočítat, a které sami provedou překlad a optimalizaci třeba do MapReduce. 15.5.2015
  • voidplace1 : Úžasně shrnuto, podepisuju :). Zrovna nedávno jsem si říkal, proč vlastně velký firmy často chtějí znalost state of the art technologií, když vás pak zapřáhnou do legacy projektu, který před deseti lety napsali dva Indové a po sérií hrdinných sebevražd se ho podařilo přeportovat z PHP 4 na PHP 5. Dostávám se mimo otázku, nicméně zatím všechny dobře placený joby co jsem dělal byly krajně neuspokojivý technologicky / architektonicky, ale vlastně mi to nakonec dramaticky nevadilo, protože složitost byla většinou v tom dobře porozumět dané byznys doméně, procesům ve firmě a umět participovat tak, aby se plnily byznys cíle. V malý firmě jsem používal příjemný nový věci, ale byl jsem vlastně pořád bez přestání zavalenej prací. Ne, že by vyloženě rutinní, ale že bych si tam kdovíjak trénoval problem solving skilly, to se říct nedalo. Na velkých legacy projektech jsem viděl neskutečné prasárny, ale většinou to bylo ve stavu, kdy už loď byla postavená a plovoucí a zásahy byly mnohem víc o analýze a komunikaci a méně o celodenním bušení po dlouhé týdny a měsíce :). 16.5.2015
  • Taco : @voidplace1: Já teď dělám na jednom legacy projektu, a přijde mi to i jako docela zábava. Člověk si mentálně odpočine, a může si ověřit, jak se takové ty Kitovi poučky uplatňují na bojišti. 16.5.2015
  • voidplace1 : @Taco: :). Ale úplně vážně. Dělám taky na legacy projektu a je to do do určitý míry úleva. Nevymýšlím složitě architekturu, nějak už je to postavený , jenom dodržuju vymyšlený a snažim se dopochopit co za problémy to vlastně modeluje :). Objem práce mezi jednotlivýma releasama mi příjde podstatně víc v pohodě, než když jsem třeba vykopával projekty sám. Jenom každej zásah teď ze začátku znamená o něco sevřenější půlky, ale většinou se mi daří po 8.5h odejít s relativně čistou hlavou. 16.5.2015
  • Anonym : Každý kód se stane dřív nebo později legacy, proto je důležité umět s takovým kódem pracovat a dále ho rozvíjet. K tomuto můžu jen doporučit knihu Brownfield Application Development in .NET http://www.amazon.com/Brownfield-Application-Development-Donald-Belcham/... 25.5.2015

Pro zobrazení všech 12 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.